@kitn.ai/ui 0.26.0 → 0.28.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/README.md +25 -6
- package/bin/mcp.js +16 -3
- package/bin/route.js +23 -0
- package/bin/route.test.js +58 -0
- package/dist/{elements/chunks/Icon--Y8vsFal.js → Icon-DObhsRtm.js} +1 -1
- package/dist/action-icons-CcgNN2oT.js +1 -0
- package/dist/arrow-down-CjRU3JgV.js +1 -0
- package/dist/arrow-left-Bnpb1UEW.js +1 -0
- package/dist/artifact-Bwt7OgcR.js +1 -0
- package/dist/assets/dev-5XzXYR21.js +91 -0
- package/dist/attachments-Qr4kg-2b.js +1 -0
- package/dist/{elements/chunks/audio-visualizer-D7lB6mvR.js → audio-visualizer-DToYdfSc.js} +1 -1
- package/dist/badge-CdEu_jn2.js +1 -0
- package/dist/bash-InADTalH.js +1 -6
- package/dist/bell-DQAAOpDz.js +1 -0
- package/dist/{elements/chunks/button-flUbeufF.js → button-DkuOnGLy.js} +1 -1
- package/dist/card-renderer-Jx70m6_l.js +1 -0
- package/dist/card-routing-0YidER_3.js +1 -0
- package/dist/check-njkVdZu2.js +1 -0
- package/dist/checkbox-D7iRB3nL.js +1 -0
- package/dist/checkbox-group-B2_rpoPM.js +1 -0
- package/dist/chevron-down-B72s6PXR.js +1 -0
- package/dist/chevron-right-BatuHzUm.js +1 -0
- package/dist/choice-card-m0BYqqOK.js +1 -0
- package/dist/circle-check-B62pODB3.js +1 -0
- package/dist/circle-x-BPG0iPst.js +1 -0
- package/dist/circle-zx0ByzY9.js +1 -0
- package/dist/{elements/chunks/cn-CU7UAWzk.js → cn-DN5AWfiS.js} +1 -1
- package/dist/code-block-ClMLKb7C.js +1 -0
- package/dist/{elements/chunks/collapsible-BzbXpPzr.js → collapsible-B4DlWicL.js} +1 -1
- package/dist/components/attachment-types.d.ts +7 -0
- package/dist/components/audio-visualizer/fit-scale.d.ts +1 -1
- package/dist/components/card-renderer.d.ts +13 -0
- package/dist/components/card.d.ts +4 -0
- package/dist/components/chat-thread.d.ts +135 -2
- package/dist/components/conversation-item.d.ts +35 -7
- package/dist/components/conversation-list.d.ts +17 -5
- package/dist/components/conversation-panel.d.ts +29 -0
- package/dist/components/form-widgets.d.ts +67 -2
- package/dist/components/form.d.ts +48 -1
- package/dist/components/home-panel.d.ts +34 -0
- package/dist/components/message.d.ts +25 -3
- package/dist/components/reasoning.d.ts +6 -0
- package/dist/components/scroll-button.d.ts +11 -0
- package/dist/components/thread.d.ts +5 -0
- package/dist/components/tool-types.d.ts +9 -0
- package/dist/components/widget-tab-bar.d.ts +16 -0
- package/dist/composer-sQ0HcvyG.js +106 -0
- package/dist/confirm-card-rQWDQsnC.js +1 -0
- package/dist/construct-cli.es.js +1337 -0
- package/dist/{elements/chunks/context-VLIL3sJ-.js → context-0kg4ZX1J.js} +1 -1
- package/dist/controllable-CnGpMF6r.js +1 -0
- package/dist/conversation-item-BxwQLaFJ.js +1 -0
- package/dist/conversation-list-BCfGN1JU.js +1 -0
- package/dist/copy-n9u9rqpi.js +1 -0
- package/dist/core-AYMC6_lb.js +12 -5874
- package/dist/{create-tween-BFT6c-Y8.js → create-tween-C-q-JCM-.js} +1 -1
- package/dist/{create-tween-CJNlzoaO.js → create-tween-CRrJXxBd.js} +1 -1
- package/dist/{create-tween-CQED4T0g.js → create-tween-DZ3RRDHD.js} +1 -1
- package/dist/{elements/chunks/create-tween-c4Z8TDYz.js → create-tween-uPkArjIG.js} +2 -2
- package/dist/css-M7EaDHN_.js +1 -6
- package/dist/custom-elements.json +1433 -202
- package/dist/default-input-CaMrJkgH.js +1 -0
- package/dist/define-By-uL588.js +1 -0
- package/dist/define.d.ts +4 -0
- package/dist/define.js +510 -0
- package/dist/define.server.d.ts +5 -0
- package/dist/define.server.js +506 -0
- package/dist/{elements/chunks/disclosure-CcNbyLy0.js → disclosure-WUImBbDv.js} +1 -1
- package/dist/{elements/chunks/dropdown-BgWTthUx.js → dropdown-wZVeJOMd.js} +1 -1
- package/dist/elements/agent-card.js +1 -1
- package/dist/elements/artifact.js +1 -1
- package/dist/elements/attachments.js +1 -1
- package/dist/elements/audio-visualizer.js +1 -1
- package/dist/elements/autoloader.js +1 -1
- package/dist/elements/avatar.js +1 -1
- package/dist/elements/badge.js +1 -1
- package/dist/elements/button.js +1 -1
- package/dist/elements/card.js +1 -1
- package/dist/elements/cards.js +1 -1
- package/dist/elements/chain-of-thought.js +1 -1
- package/dist/elements/chat-scope-picker.js +1 -1
- package/dist/elements/chat-workspace.js +1 -1
- package/dist/elements/chat.js +1 -1
- package/dist/elements/checkbox-group.d.ts +1 -0
- package/dist/elements/checkbox-group.js +1 -0
- package/dist/elements/checkbox.d.ts +1 -0
- package/dist/elements/checkbox.js +1 -0
- package/dist/elements/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/coachmark.js +1 -1
- package/dist/elements/code-block.js +1 -1
- package/dist/elements/command.js +1 -1
- package/dist/elements/compare.js +1 -1
- package/dist/elements/composer.js +1 -1
- package/dist/elements/confirm-card.js +1 -1
- package/dist/elements/context-meter.js +1 -1
- package/dist/elements/conversation-item.js +1 -1
- package/dist/elements/conversation-list.js +1 -1
- package/dist/elements/define-entry.d.ts +12 -0
- package/dist/elements/dialog.js +1 -1
- package/dist/elements/dock.js +102 -8
- package/dist/elements/dropdown.js +1 -1
- package/dist/elements/editable-label.js +1 -1
- package/dist/elements/element-data-types.d.ts +37 -0
- package/dist/elements/embed.js +1 -1
- package/dist/elements/empty.js +1 -1
- package/dist/elements/feedback-bar.js +1 -1
- package/dist/elements/file-tree.js +1 -1
- package/dist/elements/file-upload.js +1 -1
- package/dist/elements/form.js +1 -1
- package/dist/elements/hover-card.js +1 -1
- package/dist/elements/icon.js +1 -1
- package/dist/elements/image.js +1 -1
- package/dist/elements/input.js +1 -1
- package/dist/elements/kbd.js +1 -1
- package/dist/elements/link-preview.js +1 -1
- package/dist/elements/loader.js +1 -1
- package/dist/elements/markdown.js +1 -1
- package/dist/elements/menu.js +1 -1
- package/dist/elements/message-skills.js +1 -1
- package/dist/elements/message.js +1 -1
- package/dist/elements/model-switcher.js +1 -1
- package/dist/elements/nav.js +1 -1
- package/dist/elements/notice.js +1 -1
- package/dist/elements/pane-grid.d.ts +1 -0
- package/dist/elements/pane-grid.js +1 -0
- package/dist/elements/pane-group.js +1 -1
- package/dist/elements/pane.js +1 -1
- package/dist/elements/popover.js +1 -1
- package/dist/elements/progress-bar.js +1 -1
- package/dist/elements/prompt-dock.js +1 -1
- package/dist/elements/prompt-input.js +1 -1
- package/dist/elements/prompt-suggestions.js +1 -1
- package/dist/elements/radio-group.d.ts +1 -0
- package/dist/elements/radio-group.js +1 -0
- package/dist/elements/reasoning.js +1 -1
- package/dist/elements/remote.js +1 -1
- package/dist/elements/resizable.js +1 -1
- package/dist/elements/response-stream.js +2 -2
- package/dist/elements/screen.js +1 -1
- package/dist/elements/scroll-area.js +1 -1
- package/dist/elements/scroll-button.js +1 -1
- package/dist/elements/search.js +1 -1
- package/dist/elements/segmented.js +1 -1
- package/dist/elements/select.d.ts +1 -0
- package/dist/elements/select.js +1 -0
- package/dist/elements/separator.js +1 -1
- package/dist/elements/setting-item.js +1 -1
- package/dist/elements/settings-group.js +1 -1
- package/dist/elements/skeleton.js +1 -1
- package/dist/elements/slider.d.ts +1 -0
- package/dist/elements/slider.js +1 -0
- package/dist/elements/slots.d.ts +1 -1
- package/dist/elements/source.js +1 -1
- package/dist/elements/status.js +1 -1
- package/dist/elements/switch.js +1 -1
- package/dist/elements/tabs.js +1 -1
- package/dist/elements/tasks.js +1 -1
- package/dist/elements/text-shimmer.js +1 -1
- package/dist/elements/thinking-bar.js +1 -1
- package/dist/elements/thread.js +1 -1
- package/dist/elements/toast.js +1 -1
- package/dist/elements/tool.js +1 -1
- package/dist/elements/tooltip.js +1 -1
- package/dist/elements/voice-input.js +1 -1
- package/dist/elements/voice-output.js +1 -1
- package/dist/elements.d.ts +380 -26
- package/dist/{elements/chunks/ellipsis-7gU33mL2.js → ellipsis-CbOpJnU3.js} +1 -1
- package/dist/embed-CrfjkbUG.js +1 -0
- package/dist/engine-javascript-vq0WuIJl.js +14 -2516
- package/dist/{elements/chunks/external-link-CSOEsNlx.js → external-link-ByXAwBBQ.js} +1 -1
- package/dist/file-text-DMib2qwt.js +1 -0
- package/dist/{elements/chunks/file-tree-zvB2i7P9.js → file-tree-CJqM2aP7.js} +1 -1
- package/dist/folder-_BAb929C.js +1 -0
- package/dist/form-DSZgZQZk.js +1 -0
- package/dist/github-dark-dimmed-DUshB20C.js +1 -4
- package/dist/github-light-JYsPkUQd.js +1 -4
- package/dist/hover-card-BQbul9eq.js +1 -0
- package/dist/html-CPZ3oZQ7.js +1 -10
- package/dist/icon-CdcfRhYI.js +1 -0
- package/dist/{elements/chunks/index-BCRhi84a.js → index-xu_pdcPi.js} +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +7474 -5857
- package/dist/index.server.js +5965 -4762
- package/dist/info-DsFjGuI_.js +1 -0
- package/dist/input-DKbmkMos.js +1 -0
- package/dist/javascript-C25yR2R2.js +1 -6
- package/dist/json-DxJze_jm.js +1 -6
- package/dist/kai.es.js +1 -1
- package/dist/kbd-PvdGhX4s.js +1 -0
- package/dist/{elements/chunks/link-preview-OQ9IEq0f.js → link-preview-DbM1866N.js} +1 -1
- package/dist/link-zF8PzWfF.js +1 -0
- package/dist/loader-BM4CEz4G.js +1 -0
- package/dist/{elements/chunks/markdown-DgBFaGAz.js → markdown-LMvmAyBk.js} +7 -7
- package/dist/mcp.es.js +1361 -81
- package/dist/message-BSsgvHvf.js +1 -0
- package/dist/message-BYZECyek.js +1 -0
- package/dist/message-circle-DruwObfX.js +1 -0
- package/dist/message-square-BG6q6mlm.js +1 -0
- package/dist/{elements/chunks/minimize-2-DPIUKTrT.js → minimize-2-BQRoBV1V.js} +1 -1
- package/dist/{elements/chunks/model-switcher-DsT8tFB0.js → model-switcher-CMpCOYcB.js} +1 -1
- package/dist/{elements/chunks/overlay-DuiwdXjm.js → overlay-Cb-MkyDa.js} +1 -1
- package/dist/panel-right-i8warFxT.js +1 -0
- package/dist/paperclip-ByY3UVO6.js +1 -0
- package/dist/play-BvKKq3fX.js +1 -0
- package/dist/primitives/card-data-types.d.ts +49 -0
- package/dist/primitives/card-routing.d.ts +1 -33
- package/dist/primitives/card-validate.d.ts +2 -2
- package/dist/primitives/chat-config.d.ts +29 -2
- package/dist/primitives/conversation-store.d.ts +54 -0
- package/dist/primitives/field-mask.d.ts +96 -0
- package/dist/primitives/field-semantics.d.ts +36 -0
- package/dist/primitives/input-mask.d.ts +46 -0
- package/dist/primitives/url-scheme-policy.d.ts +34 -0
- package/dist/primitives/use-resize-observer.d.ts +2 -2
- package/dist/progress-bar-jVAHvMUf.js +1 -0
- package/dist/prompt-suggestion-CD-qtNgC.js +1 -0
- package/dist/radio-BsoBMhkF.js +1 -0
- package/dist/react/index.d.ts +586 -19
- package/dist/react.js +223 -187
- package/dist/reasoning-4kBPtlTx.js +1 -0
- package/dist/register-impl-B1hLkrI8.js +424 -0
- package/dist/{elements/chunks/resizable-D181b4fM.js → resizable-uPmY9VY-.js} +1 -1
- package/dist/rotate-ccw-B2xn93py.js +1 -0
- package/dist/rotate-cw-CMVLoCyH.js +1 -0
- package/dist/schemas/form.schema.json +21 -1
- package/dist/schemas/tool-defs.d.ts +11 -1
- package/dist/schemas.js +81 -81
- package/dist/scroll-area-BqLUo8ZZ.js +1 -0
- package/dist/scroll-button-DslXiJyL.js +1 -0
- package/dist/select-2cLRtPGT.js +1 -0
- package/dist/{elements/chunks/separator-CeJHQqLW.js → separator-BWQtNJcM.js} +1 -1
- package/dist/{elements/chunks/settings-CqaHgJF9.js → settings-BBR63jLg.js} +1 -1
- package/dist/{elements/chunks/settings-group-CjqjLCOn.js → settings-group-B2ciy-Iw.js} +1 -1
- package/dist/{elements/chunks/skeleton-D8akBnKS.js → skeleton-CkHI-HgC.js} +1 -1
- package/dist/slider-DDR9U-i0.js +1 -0
- package/dist/{solid-BtdqNZI7.js → solid-BzCFdL25.js} +9771 -7594
- package/dist/{solid-CnavwBye.js → solid-DruVOXnf.js} +7893 -6183
- package/dist/solid.d.ts +16 -2
- package/dist/solid.js +256 -243
- package/dist/solid.server.js +256 -243
- package/dist/source-GEnFF528.js +1 -0
- package/dist/star-CilHq8GP.js +1 -0
- package/dist/state/index.d.ts +1 -1
- package/dist/state/mock.d.ts +32 -2
- package/dist/state.js +133 -108
- package/dist/store-Ciyk6eZG.js +1 -0
- package/dist/svelte--5p79yCD.js +1 -15
- package/dist/switch-KkeQIbuH.js +1 -0
- package/dist/tasks-card-BrN4bggJ.js +1 -0
- package/dist/text-shimmer-Dcj1MHuq.js +1 -0
- package/dist/textarea-Dpvbngbg.js +1 -0
- package/dist/theme.tokens.css +110 -13
- package/dist/{elements/chunks/thumbs-up-DX2Ijk3H.js → thumbs-up-CsT9Wzb9.js} +1 -1
- package/dist/toast-store-tgK6MuMv.js +1 -0
- package/dist/{elements/chunks/tool-DKQ2D1DP.js → tool-DzUjIBT8.js} +1 -1
- package/dist/{elements/chunks/tooltip-B0G99y8w.js → tooltip-Bkkg_4t0.js} +1 -1
- package/dist/trash-2-jBKxjGGQ.js +1 -0
- package/dist/{elements/chunks/triangle-alert-F9cyUEyy.js → triangle-alert-DlQ68ppf.js} +1 -1
- package/dist/tsx-B8rCNbgL.js +1 -6
- package/dist/types.d.ts +48 -3
- package/dist/typescript-RycA9KXf.js +1 -6
- package/dist/ui/checkbox-group.d.ts +83 -0
- package/dist/ui/checkbox.d.ts +40 -0
- package/dist/ui/dock.d.ts +51 -0
- package/dist/ui/icon.d.ts +3 -0
- package/dist/ui/input.d.ts +48 -2
- package/dist/ui/radio.d.ts +85 -0
- package/dist/ui/select.d.ts +71 -0
- package/dist/ui/slider.d.ts +65 -0
- package/dist/ui/switch.d.ts +9 -2
- package/dist/upload-TcAHXv9W.js +1 -0
- package/dist/url-scheme-policy-DR5DgvkM.js +1 -0
- package/dist/use-card-resolution-DaZqAdWf.js +1 -0
- package/dist/{elements/chunks/variant-aurora-qt6Zct8M.js → variant-aurora-BhLuYxJR.js} +1 -1
- package/dist/{variant-aurora-B8II3-I1.js → variant-aurora-CNmfHhcx.js} +2 -2
- package/dist/{variant-aurora-CMNWOSJR.js → variant-aurora-D6GsdTPA.js} +2 -2
- package/dist/{variant-aurora-CcuDMWwQ.js → variant-aurora-DbW_OWL2.js} +1 -1
- package/dist/{elements/chunks/variant-custom-tJp22_BQ.js → variant-custom-BRvaNHSi.js} +1 -1
- package/dist/{variant-custom-L16JLLZy.js → variant-custom-BvYHR62b.js} +1 -1
- package/dist/{variant-custom-BdvYC7af.js → variant-custom-DMTrEO5w.js} +2 -2
- package/dist/{variant-custom-C714mqKl.js → variant-custom-DV2x254s.js} +2 -2
- package/dist/{variant-wave-ecwykeyL.js → variant-wave-BNMGrDfj.js} +2 -2
- package/dist/{variant-wave-2S4La2Ka.js → variant-wave-BpDd8t3Z.js} +1 -1
- package/dist/{variant-wave-D7ruiA1W.js → variant-wave-CyBueXj9.js} +2 -2
- package/dist/{elements/chunks/variant-wave-CaQ5ti39.js → variant-wave-sp-qwsdI.js} +1 -1
- package/dist/vue-BmIZj4XD.js +1 -33
- package/dist/x-Z5UntkIJ.js +1 -0
- package/frameworks/react/index.tsx +210 -22
- package/llms-full.txt +1184 -22
- package/llms.txt +6 -3
- package/package.json +17 -4
- package/src/agent-tooling/README.md +192 -0
- package/src/agent-tooling/catalog/invariants.ts +3 -3
- package/src/agent-tooling/catalog/surfaces.ts +72 -0
- package/src/agent-tooling/construct/cli-entry.ts +8 -0
- package/src/agent-tooling/construct/cli.ts +147 -0
- package/src/agent-tooling/construct/codegen.ts +1635 -0
- package/src/agent-tooling/construct/construct.v1.schema.json +319 -0
- package/src/agent-tooling/construct/dev.ts +148 -0
- package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +7 -0
- package/src/agent-tooling/construct/fixtures/ops-console.construct.json +44 -0
- package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +32 -0
- package/src/agent-tooling/construct/schema.ts +452 -0
- package/src/agent-tooling/mcp/server.ts +2 -1
- package/src/agent-tooling/mcp/tools/construct.ts +130 -0
- package/src/agent-tooling/mcp/tools/debug.ts +126 -4
- package/src/agent-tooling/mcp/tools/reference.ts +104 -3
- package/src/agent-tooling/recipes/composed-thread.ts +714 -0
- package/src/agent-tooling/recipes/index.ts +22 -0
- package/src/agent-tooling/recipes/types.ts +32 -0
- package/src/agent-tooling/registry.ts +5 -0
- package/src/components/attachment-types.ts +7 -0
- package/src/components/audio-visualizer/fit-scale.ts +1 -1
- package/src/components/card-renderer.tsx +39 -8
- package/src/components/card.tsx +10 -2
- package/src/components/chat-scope-picker.tsx +2 -2
- package/src/components/chat-thread.tsx +602 -43
- package/src/components/choice-card.tsx +102 -37
- package/src/components/coachmark.tsx +1 -1
- package/src/components/code-block.tsx +2 -2
- package/src/components/composer.tsx +89 -15
- package/src/components/confirm-card.tsx +20 -4
- package/src/components/conversation-item.tsx +56 -9
- package/src/components/conversation-list.tsx +25 -10
- package/src/components/conversation-panel.tsx +118 -0
- package/src/components/empty.tsx +14 -3
- package/src/components/file-tree.tsx +5 -1
- package/src/components/form-widgets.tsx +257 -195
- package/src/components/form.tsx +297 -9
- package/src/components/home-panel.tsx +159 -0
- package/src/components/loader.tsx +12 -5
- package/src/components/message-skills.tsx +1 -1
- package/src/components/message.tsx +71 -11
- package/src/components/prompt-input.tsx +7 -1
- package/src/components/prompt-suggestion.tsx +4 -1
- package/src/components/reasoning.tsx +30 -3
- package/src/components/response-compare.tsx +2 -2
- package/src/components/scroll-button.tsx +56 -4
- package/src/components/source.tsx +6 -1
- package/src/components/tasks-card.tsx +58 -16
- package/src/components/thread.tsx +10 -1
- package/src/components/toast.tsx +1 -1
- package/src/components/tool-types.ts +9 -0
- package/src/components/widget-tab-bar.tsx +73 -0
- package/src/elements/attachments.tsx +3 -1
- package/src/elements/chat-workspace.tsx +1 -1
- package/src/elements/chat.tsx +115 -5
- package/src/elements/checkbox-group.tsx +164 -0
- package/src/elements/checkbox.tsx +134 -0
- package/src/elements/compiled.css +1 -1
- package/src/elements/composer.tsx +12 -1
- package/src/elements/conversation-item.tsx +62 -22
- package/src/elements/conversation-list.tsx +2 -2
- package/src/elements/define-entry.ts +12 -0
- package/src/elements/dock.tsx +11 -0
- package/src/elements/element-data-types.ts +40 -0
- package/src/elements/element-manifest.json +24 -0
- package/src/elements/element-meta.json +767 -34
- package/src/elements/element-nonscalar.json +17 -0
- package/src/elements/element-types.d.ts +380 -26
- package/src/elements/feedback-bar.tsx +5 -0
- package/src/elements/icon-names.json +29 -0
- package/src/elements/input.tsx +312 -23
- package/src/elements/message.tsx +2 -0
- package/src/elements/pane-grid.tsx +111 -0
- package/src/elements/prompt-input.tsx +8 -2
- package/src/elements/radio-group.tsx +129 -0
- package/src/elements/register-impl.ts +6 -0
- package/src/elements/scroll-button.tsx +54 -6
- package/src/elements/select.tsx +165 -0
- package/src/elements/slider.tsx +171 -0
- package/src/elements/slots.ts +1 -1
- package/src/elements/styles.css +89 -3
- package/src/elements/thread.tsx +2 -0
- package/src/elements/toast.tsx +14 -1
- package/src/index.ts +5 -2
- package/src/primitives/card-data-types.ts +49 -0
- package/src/primitives/card-host.tsx +4 -2
- package/src/primitives/card-routing.ts +7 -56
- package/src/primitives/card-schemas/form.schema.json +21 -1
- package/src/primitives/card-validate.ts +10 -2
- package/src/primitives/chat-config.tsx +33 -6
- package/src/primitives/conversation-store.ts +248 -0
- package/src/primitives/field-mask.ts +256 -0
- package/src/primitives/field-semantics.ts +115 -0
- package/src/primitives/input-mask.ts +853 -0
- package/src/primitives/toast-store.ts +66 -4
- package/src/primitives/url-scheme-policy.ts +70 -0
- package/src/primitives/use-resize-observer.ts +2 -2
- package/src/schemas/tool-defs.ts +12 -2
- package/src/solid.ts +20 -2
- package/src/state/index.ts +1 -1
- package/src/state/mock.ts +92 -6
- package/src/types.ts +45 -3
- package/src/ui/agent-card.tsx +2 -2
- package/src/ui/avatar.tsx +1 -1
- package/src/ui/checkbox-group.tsx +153 -0
- package/src/ui/checkbox.tsx +63 -0
- package/src/ui/dock.tsx +192 -7
- package/src/ui/icon.tsx +53 -0
- package/src/ui/input.tsx +249 -9
- package/src/ui/kbd.tsx +1 -1
- package/src/ui/nav.tsx +1 -1
- package/src/ui/pane-group.tsx +2 -2
- package/src/ui/radio.tsx +150 -0
- package/src/ui/select.tsx +168 -0
- package/src/ui/slider.tsx +178 -0
- package/src/ui/switch.tsx +49 -18
- package/src/utils/cn.ts +11 -5
- package/theme.css +112 -13
- package/dist/elements/chunks/action-icons-D9u3OzYW.js +0 -1
- package/dist/elements/chunks/arrow-left-CVh1TeN7.js +0 -1
- package/dist/elements/chunks/artifact-BkYcfIlZ.js +0 -1
- package/dist/elements/chunks/attachments-DwfNlubq.js +0 -1
- package/dist/elements/chunks/badge-Q0-Cmwzz.js +0 -1
- package/dist/elements/chunks/bash-InADTalH.js +0 -1
- package/dist/elements/chunks/card-renderer-3Dyl-FpN.js +0 -1
- package/dist/elements/chunks/card-routing-BK09BdmL.js +0 -1
- package/dist/elements/chunks/check-B5kBPKeo.js +0 -1
- package/dist/elements/chunks/chevron-down-DZ1GS39h.js +0 -1
- package/dist/elements/chunks/chevron-right-CvP7OUd2.js +0 -1
- package/dist/elements/chunks/choice-card-D4QUIOWZ.js +0 -1
- package/dist/elements/chunks/circle-CDf9g6MQ.js +0 -1
- package/dist/elements/chunks/circle-check-CA47Nqbz.js +0 -1
- package/dist/elements/chunks/circle-x-CJ_HVbC8.js +0 -1
- package/dist/elements/chunks/code-block-BdLiTitd.js +0 -1
- package/dist/elements/chunks/composer-Byve-n8K.js +0 -69
- package/dist/elements/chunks/confirm-card-B0flE3MN.js +0 -1
- package/dist/elements/chunks/controllable-DTwTIlwp.js +0 -1
- package/dist/elements/chunks/conversation-item-BDztezOG.js +0 -1
- package/dist/elements/chunks/copy-Nf-kqxXH.js +0 -1
- package/dist/elements/chunks/core-AYMC6_lb.js +0 -12
- package/dist/elements/chunks/css-M7EaDHN_.js +0 -1
- package/dist/elements/chunks/default-input-C2iLFq0b.js +0 -1
- package/dist/elements/chunks/define-wjHR1MkU.js +0 -1
- package/dist/elements/chunks/download-C4V7tBdb.js +0 -1
- package/dist/elements/chunks/embed-D3KewsIJ.js +0 -1
- package/dist/elements/chunks/engine-javascript-vq0WuIJl.js +0 -141
- package/dist/elements/chunks/file-text-D1G8khle.js +0 -1
- package/dist/elements/chunks/folder-WW2LGLid.js +0 -1
- package/dist/elements/chunks/form-CQirdC4W.js +0 -1
- package/dist/elements/chunks/github-dark-dimmed-DUshB20C.js +0 -1
- package/dist/elements/chunks/github-light-JYsPkUQd.js +0 -1
- package/dist/elements/chunks/hover-card-CJJkfHTK.js +0 -1
- package/dist/elements/chunks/html-CPZ3oZQ7.js +0 -1
- package/dist/elements/chunks/icon-Cfgmf4fa.js +0 -1
- package/dist/elements/chunks/info-DX3YMOt6.js +0 -1
- package/dist/elements/chunks/input-BtW9U6Sq.js +0 -1
- package/dist/elements/chunks/javascript-C25yR2R2.js +0 -1
- package/dist/elements/chunks/json-DxJze_jm.js +0 -1
- package/dist/elements/chunks/kbd-LGXwuT_V.js +0 -1
- package/dist/elements/chunks/link-2My69BqT.js +0 -1
- package/dist/elements/chunks/loader-iOxc_Tu-.js +0 -1
- package/dist/elements/chunks/message-VMZohrXx.js +0 -1
- package/dist/elements/chunks/message-circle-CpXMM-_n.js +0 -1
- package/dist/elements/chunks/message-square-DxcWtETQ.js +0 -1
- package/dist/elements/chunks/message-tZmV2A3p.js +0 -1
- package/dist/elements/chunks/paperclip-CRZVp4z_.js +0 -1
- package/dist/elements/chunks/progress-bar-DNy66e_E.js +0 -1
- package/dist/elements/chunks/prompt-suggestion-Bn64Nl7L.js +0 -1
- package/dist/elements/chunks/reasoning-Emn9N4-T.js +0 -1
- package/dist/elements/chunks/rotate-cw-CPWe37D9.js +0 -1
- package/dist/elements/chunks/scroll-area-ClZkZxIk.js +0 -1
- package/dist/elements/chunks/scroll-button-DPE-t3x_.js +0 -1
- package/dist/elements/chunks/share-CyfnNEqp.js +0 -1
- package/dist/elements/chunks/source-UWCvmVak.js +0 -1
- package/dist/elements/chunks/star-DoHFAikQ.js +0 -1
- package/dist/elements/chunks/store-Cjq0qwYN.js +0 -1
- package/dist/elements/chunks/svelte--5p79yCD.js +0 -1
- package/dist/elements/chunks/tasks-card-CmZ5xh6v.js +0 -1
- package/dist/elements/chunks/text-shimmer-DYn09zrz.js +0 -1
- package/dist/elements/chunks/textarea-skiGHURM.js +0 -1
- package/dist/elements/chunks/toast-store-CFnQpThX.js +0 -1
- package/dist/elements/chunks/tsx-B8rCNbgL.js +0 -1
- package/dist/elements/chunks/typescript-RycA9KXf.js +0 -1
- package/dist/elements/chunks/use-card-resolution-DoA2f_EU.js +0 -1
- package/dist/elements/chunks/vue-BmIZj4XD.js +0 -1
- package/dist/elements/chunks/x-B6UnOiLw.js +0 -1
- package/dist/llms/llms-full.txt +0 -2949
- package/dist/llms/llms.txt +0 -156
- package/dist/register-impl-DpE7icIb.js +0 -293
- package/dist/ui/stat.d.ts +0 -16
- package/src/ui/stat.tsx +0 -41
- /package/dist/{elements/chunks/card-tags-D8lZ-C_U.js → card-tags-D8lZ-C_U.js} +0 -0
- /package/dist/{elements/chunks/link-preview-DNILK391.js → link-preview-DNILK391.js} +0 -0
- /package/dist/{elements/chunks/slots-DaNjX0rc.js → slots-DaNjX0rc.js} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CodeRecipe } from './types';
|
|
2
|
+
import { composedThread } from './composed-thread';
|
|
3
|
+
|
|
4
|
+
export type { CodeRecipe, CodeRecipeFile } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The code-recipe registry.
|
|
8
|
+
*
|
|
9
|
+
* Registered here → served by `component_reference({ name: "<id>" })` AND
|
|
10
|
+
* compiled by `verify:scaffold` (which loads this list through the registry
|
|
11
|
+
* bundle, so adding an entry moves that gate's printed cell count by itself —
|
|
12
|
+
* the same derive-don't-list contract as the integration and surface axes).
|
|
13
|
+
*/
|
|
14
|
+
export const codeRecipes: CodeRecipe[] = [composedThread];
|
|
15
|
+
|
|
16
|
+
export function listCodeRecipes(): CodeRecipe[] {
|
|
17
|
+
return codeRecipes;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function getCodeRecipe(id: string): CodeRecipe | undefined {
|
|
21
|
+
return codeRecipes.find((r) => r.id === id);
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A CODE recipe: a complete, compiling composition the MCP serves as files.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from a `TSurfaceRecipe` (../catalog/catalog-types.ts) on purpose:
|
|
5
|
+
* the catalog record is DATA — ingredients, wiring edges, invariants, each
|
|
6
|
+
* resolved and executed by its own guards — while a code recipe is the full
|
|
7
|
+
* host module a builder pastes. The two meet on `id`: a code recipe whose id
|
|
8
|
+
* also names a surface recipe is that record's body.
|
|
9
|
+
*
|
|
10
|
+
* `verify:scaffold` compiles every `lang: 'ts'` file of every registered code
|
|
11
|
+
* recipe with a stock consumer tsconfig, resolving `@kitn.ai/ui` through the
|
|
12
|
+
* shipped exports map — the same gate the scaffolder's emitted string literals
|
|
13
|
+
* go through, because this code is string literals with the same failure mode.
|
|
14
|
+
*/
|
|
15
|
+
export interface CodeRecipeFile {
|
|
16
|
+
/** Path inside the consumer's app, e.g. `src/main.ts`. */
|
|
17
|
+
path: string;
|
|
18
|
+
lang: 'ts' | 'html' | 'css';
|
|
19
|
+
code: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface CodeRecipe {
|
|
23
|
+
/** Kebab-case id, e.g. `composed-thread`. Also the component_reference topic name. */
|
|
24
|
+
id: string;
|
|
25
|
+
title: string;
|
|
26
|
+
intent: string;
|
|
27
|
+
/** The kai-* tags the composition places. */
|
|
28
|
+
ingredients: string[];
|
|
29
|
+
/** The teaching notes served above the files — the WHY a prop table cannot carry. */
|
|
30
|
+
notes: string[];
|
|
31
|
+
files: CodeRecipeFile[];
|
|
32
|
+
}
|
|
@@ -23,6 +23,11 @@ export {
|
|
|
23
23
|
type SurfaceProbe,
|
|
24
24
|
} from './archetypes';
|
|
25
25
|
|
|
26
|
+
// The code-recipe axis, same contract as the two above: the gate loads it from
|
|
27
|
+
// this registry bundle, so registering a recipe adds its compile cells without
|
|
28
|
+
// touching the verify script.
|
|
29
|
+
export { listCodeRecipes, getCodeRecipe, type CodeRecipe, type CodeRecipeFile } from './recipes';
|
|
30
|
+
|
|
26
31
|
// Order is the order a scaffolding agent reads them in. `openai` and `anthropic`
|
|
27
32
|
// lead because they are the two keys a developer is most likely to already hold.
|
|
28
33
|
export const integrations: Integration[] = [
|
|
@@ -5,6 +5,13 @@ export interface AttachmentData {
|
|
|
5
5
|
type: 'file' | 'source-document';
|
|
6
6
|
filename?: string;
|
|
7
7
|
mediaType?: string;
|
|
8
|
+
/** A `data:` URI or an https URL — this is the field the wire encodes, so it
|
|
9
|
+
* is what reaches the model. NEVER `URL.createObjectURL`: an object URL
|
|
10
|
+
* resolves only inside the tab that minted it, so a `blob:` URL renders a
|
|
11
|
+
* flawless preview and is meaningless to any provider —
|
|
12
|
+
* `toOpenAIMessages`/`toAnthropicMessages` refuse it rather than send an
|
|
13
|
+
* address the model cannot fetch. Read picked files with
|
|
14
|
+
* `FileReader.readAsDataURL` instead (see `elements/default-input.tsx`). */
|
|
8
15
|
url?: string;
|
|
9
16
|
title?: string;
|
|
10
17
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSignal, onCleanup, type Accessor } from 'solid-js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Fit-to-container scaling
|
|
4
|
+
* Fit-to-container scaling: the size tiers are fixed
|
|
5
5
|
* px by design (`sizes.ts`), so a container narrower than a tier's natural
|
|
6
6
|
* footprint used to CLIP the picture at its edges. The dispatcher now scales
|
|
7
7
|
* the WHOLE visualization down proportionally to fit, and renders byte-equal
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
// Invalid data → two-tier validation, mirroring the remote transport; see below.
|
|
6
6
|
import { createEffect, createMemo, untrack, Show, type JSX } from 'solid-js';
|
|
7
7
|
import { Dynamic } from 'solid-js/web';
|
|
8
|
-
import type { CardEnvelope } from '../primitives/card-contract';
|
|
8
|
+
import type { CardContext, CardEnvelope, CardHost } from '../primitives/card-contract';
|
|
9
9
|
import { useCardHost } from '../primitives/card-host';
|
|
10
|
+
import { emitCardEvent } from '../primitives/card-routing';
|
|
10
11
|
import { BUILTIN_CARD_COMPONENTS, mergeCardComponents, type CardComponentMap } from '../primitives/card-registry';
|
|
11
12
|
import type { JsonSchema } from '../primitives/card-validate';
|
|
12
13
|
import { cardValidationMessage, validateCardData, type CardValidationReport } from '../primitives/card-validate-cards';
|
|
@@ -63,6 +64,35 @@ export interface CardRendererProps {
|
|
|
63
64
|
* supplied through `schemas` — is never validated either way.
|
|
64
65
|
*/
|
|
65
66
|
validateCards?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The custom-element host node to emit off when no `CardProvider` is above this
|
|
69
|
+
* renderer: events leave as the bubbling, composed `kai-card` CustomEvent
|
|
70
|
+
* (`emitCardEvent`), so `listenForCardEvents(element)` — or a plain
|
|
71
|
+
* `addEventListener('kai-card', …)` on the element — receives them.
|
|
72
|
+
*
|
|
73
|
+
* This is what makes cards INSIDE `<kai-chat>`/`<kai-message>`/`<kai-thread>`
|
|
74
|
+
* interactive: those facades pass their own host element down here, and
|
|
75
|
+
* with neither this nor a `CardProvider` every emit — ready/action/submit/
|
|
76
|
+
* dismiss/reopen and the contract `error` — used to be silently discarded.
|
|
77
|
+
* An ambient `CardProvider` still wins when present.
|
|
78
|
+
*/
|
|
79
|
+
hostElement?: HTMLElement;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The effective CardHost: an ambient `CardProvider` when present, otherwise a
|
|
84
|
+
* bubbling-`kai-card` host over `hostElement`, otherwise none (a truly bare card).
|
|
85
|
+
*
|
|
86
|
+
* The fallback's `context()` mirrors the remote transport's `defaultContext()`
|
|
87
|
+
* (`remote/provider-runtime.ts`): the contract return is non-optional, but no
|
|
88
|
+
* native card reads it today — the element facades own theme/locale through
|
|
89
|
+
* `ChatConfig`, not through card context.
|
|
90
|
+
*/
|
|
91
|
+
function resolveHost(ctxHost: CardHost | undefined, hostElement: HTMLElement | undefined): CardHost | undefined {
|
|
92
|
+
if (ctxHost) return ctxHost;
|
|
93
|
+
if (!hostElement) return undefined;
|
|
94
|
+
const context = (): CardContext => ({ theme: { mode: 'light' }, locale: 'en' });
|
|
95
|
+
return { context, emit: (event) => emitCardEvent(hostElement, event) };
|
|
66
96
|
}
|
|
67
97
|
|
|
68
98
|
/**
|
|
@@ -84,7 +114,8 @@ export function hasConsumerSchema(schemas: CardSchemaMap | undefined, type: stri
|
|
|
84
114
|
}
|
|
85
115
|
|
|
86
116
|
export function CardRenderer(props: CardRendererProps): JSX.Element {
|
|
87
|
-
const
|
|
117
|
+
const ctxHost = useCardHost();
|
|
118
|
+
const host = createMemo(() => resolveHost(ctxHost, props.hostElement));
|
|
88
119
|
const map = createMemo(() => mergeCardComponents(props.types));
|
|
89
120
|
const entry = createMemo(() => map()[props.envelope.type]);
|
|
90
121
|
|
|
@@ -139,18 +170,18 @@ export function CardRenderer(props: CardRendererProps): JSX.Element {
|
|
|
139
170
|
const message = cardValidationMessage(r);
|
|
140
171
|
if (message === lastEmitted) return;
|
|
141
172
|
lastEmitted = message;
|
|
142
|
-
host?.emit({ kind: 'error', cardId: props.envelope.id, message });
|
|
173
|
+
host()?.emit({ kind: 'error', cardId: props.envelope.id, message });
|
|
143
174
|
});
|
|
144
175
|
|
|
145
176
|
return (
|
|
146
|
-
<Show when={entry()} fallback={<UnknownCard envelope={props.envelope} />}>
|
|
177
|
+
<Show when={entry()} fallback={<UnknownCard envelope={props.envelope} hostElement={props.hostElement} />}>
|
|
147
178
|
{(comp) => (
|
|
148
179
|
<Show
|
|
149
180
|
when={report()?.tier === 'hard'}
|
|
150
181
|
// SOFT and valid both take this branch: the card renders exactly as it
|
|
151
182
|
// does today. The soft failure is reported through the effect above and
|
|
152
183
|
// changes nothing on screen, which is the whole point of the tiering.
|
|
153
|
-
fallback={<Dynamic component={comp()} envelope={props.envelope} host={host} />}
|
|
184
|
+
fallback={<Dynamic component={comp()} envelope={props.envelope} host={host()} />}
|
|
154
185
|
>
|
|
155
186
|
{/* HARD: there is nothing to draw, so name the field instead. */}
|
|
156
187
|
<CardFallback type={props.envelope.type} cardId={props.envelope.id} reason={report()!.summary} />
|
|
@@ -161,10 +192,10 @@ export function CardRenderer(props: CardRendererProps): JSX.Element {
|
|
|
161
192
|
}
|
|
162
193
|
|
|
163
194
|
/** Renders the fallback and emits exactly one `error` (untracked, on first render). */
|
|
164
|
-
function UnknownCard(props: { envelope: CardEnvelope }): JSX.Element {
|
|
165
|
-
const
|
|
195
|
+
function UnknownCard(props: { envelope: CardEnvelope; hostElement?: HTMLElement }): JSX.Element {
|
|
196
|
+
const ctxHost = useCardHost();
|
|
166
197
|
untrack(() =>
|
|
167
|
-
|
|
198
|
+
resolveHost(ctxHost, props.hostElement)?.emit({
|
|
168
199
|
kind: 'error',
|
|
169
200
|
cardId: props.envelope.id,
|
|
170
201
|
message: `Unsupported card type: ${props.envelope.type}`,
|
package/src/components/card.tsx
CHANGED
|
@@ -20,6 +20,10 @@ export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
20
20
|
/** Stable id for the heading (so composing cards can `aria-labelledby` it).
|
|
21
21
|
* Auto-generated when omitted. */
|
|
22
22
|
headingId?: string;
|
|
23
|
+
/** Stable id for the description (so composing cards can `aria-describedby` it
|
|
24
|
+
* — e.g. `kai-choice`'s radiogroup points at its prompt). Auto-generated when
|
|
25
|
+
* omitted, mirroring `headingId`. */
|
|
26
|
+
descriptionId?: string;
|
|
23
27
|
/** Render a dismiss (×) button that hides the card and calls `onDismiss`.
|
|
24
28
|
* Opt-in, OFF by default — the contract cards never set it, so they are
|
|
25
29
|
* unaffected. */
|
|
@@ -67,6 +71,7 @@ export function Card(props: CardProps): JSX.Element {
|
|
|
67
71
|
'errorMessage',
|
|
68
72
|
'dense',
|
|
69
73
|
'headingId',
|
|
74
|
+
'descriptionId',
|
|
70
75
|
'dismissible',
|
|
71
76
|
'onDismiss',
|
|
72
77
|
'href',
|
|
@@ -80,6 +85,7 @@ export function Card(props: CardProps): JSX.Element {
|
|
|
80
85
|
|
|
81
86
|
const autoId = createUniqueId();
|
|
82
87
|
const headingId = () => local.headingId ?? `kai-card-heading-${autoId}`;
|
|
88
|
+
const descriptionId = () => local.descriptionId ?? `kai-card-description-${autoId}`;
|
|
83
89
|
const hasError = () => local.errorMessage !== undefined && local.errorMessage !== '';
|
|
84
90
|
const hasHeader = () => Boolean(local.heading) || Boolean(local.description);
|
|
85
91
|
|
|
@@ -123,13 +129,15 @@ export function Card(props: CardProps): JSX.Element {
|
|
|
123
129
|
<Show when={local.heading}>
|
|
124
130
|
<h3
|
|
125
131
|
id={headingId()}
|
|
126
|
-
class="text-
|
|
132
|
+
class="text-title font-semibold tracking-tight text-foreground"
|
|
127
133
|
>
|
|
128
134
|
{local.heading}
|
|
129
135
|
</h3>
|
|
130
136
|
</Show>
|
|
131
137
|
<Show when={local.description}>
|
|
132
|
-
<p class="text-
|
|
138
|
+
<p id={descriptionId()} class="text-body text-muted-foreground">
|
|
139
|
+
{local.description}
|
|
140
|
+
</p>
|
|
133
141
|
</Show>
|
|
134
142
|
</div>
|
|
135
143
|
</Show>
|
|
@@ -36,7 +36,7 @@ export function ChatScopePicker(props: ChatScopePickerProps) {
|
|
|
36
36
|
<DropdownContent class="min-w-[180px]">
|
|
37
37
|
<DropdownItem onSelect={() => local.onScopeChange(undefined)}>All Content</DropdownItem>
|
|
38
38
|
<Show when={local.availableAuthors?.length}>
|
|
39
|
-
<div class="px-2 py-1 text-
|
|
39
|
+
<div class="px-2 py-1 text-micro uppercase tracking-wider text-muted-foreground">Authors</div>
|
|
40
40
|
<For each={local.availableAuthors}>
|
|
41
41
|
{(author) => (
|
|
42
42
|
<DropdownItem onSelect={() => local.onScopeChange({ authors: [author] })}>{author}</DropdownItem>
|
|
@@ -44,7 +44,7 @@ export function ChatScopePicker(props: ChatScopePickerProps) {
|
|
|
44
44
|
</For>
|
|
45
45
|
</Show>
|
|
46
46
|
<Show when={local.availableTags?.length}>
|
|
47
|
-
<div class="px-2 py-1 text-
|
|
47
|
+
<div class="px-2 py-1 text-micro uppercase tracking-wider text-muted-foreground">Tags</div>
|
|
48
48
|
<For each={local.availableTags}>
|
|
49
49
|
{(tag) => (
|
|
50
50
|
<DropdownItem onSelect={() => local.onScopeChange({ tags: [tag] })}>{tag}</DropdownItem>
|