@kitn.ai/ui 0.20.1 → 0.21.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 +44 -45
- package/dist/components/artifact-card.d.ts +51 -0
- package/dist/components/artifact.d.ts +1 -1
- package/dist/components/attachments.d.ts +2 -2
- package/dist/components/audio-visualizer/index.d.ts +3 -3
- package/dist/components/audio-visualizer/labs/lab-choreography.d.ts +59 -0
- package/dist/components/audio-visualizer/labs/lab-shaders.d.ts +22 -0
- package/dist/components/audio-visualizer/labs/lab-visualizer.d.ts +18 -0
- package/dist/components/audio-visualizer/variant-aurora.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-bar.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-custom.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-grid.d.ts +1 -1
- package/dist/components/audio-visualizer/variant-radial.d.ts +1 -1
- package/dist/components/audio-visualizer/variant-wave.d.ts +1 -1
- package/dist/components/card-fallback.d.ts +12 -2
- package/dist/components/card-renderer.d.ts +63 -2
- package/dist/components/chat-container.d.ts +3 -0
- package/dist/components/chat-scope-picker.d.ts +2 -2
- package/dist/components/chat-thread.d.ts +68 -18
- package/dist/components/choice-card.d.ts +3 -28
- package/dist/components/composer-dom.d.ts +1 -1
- package/dist/components/composer-highlight.d.ts +1 -1
- package/dist/components/composer-history.d.ts +1 -1
- package/dist/components/composer.d.ts +1 -1
- package/dist/components/confirm-card.d.ts +3 -18
- package/dist/components/context.d.ts +8 -4
- package/dist/components/conversation-item.d.ts +1 -1
- package/dist/components/conversation-list.d.ts +4 -3
- package/dist/components/embed.d.ts +3 -3
- package/dist/components/file-tree.d.ts +11 -22
- package/dist/components/form-widgets.d.ts +1 -1
- package/dist/components/form.d.ts +3 -44
- package/dist/components/link-preview.d.ts +3 -3
- package/dist/components/loader.d.ts +30 -48
- package/dist/components/message-skills.d.ts +4 -0
- package/dist/components/message.d.ts +84 -21
- package/dist/components/model-switcher.d.ts +2 -2
- package/dist/components/prompt-input.d.ts +2 -2
- package/dist/components/response-compare-types.d.ts +11 -2
- package/dist/components/response-compare.d.ts +3 -3
- package/dist/components/source.d.ts +12 -3
- package/dist/components/tasks-card.d.ts +3 -31
- package/dist/components/thread.d.ts +17 -5
- package/dist/components/toast.d.ts +2 -2
- package/dist/components/tool-classify.d.ts +8 -0
- package/dist/components/tool-types.d.ts +29 -1
- package/dist/components/tool.d.ts +3 -3
- package/dist/components/use-card-resolution.d.ts +1 -1
- package/dist/create-tween-D3Y5qiij.js +338 -0
- package/dist/create-tween-DGKY1FDY.js +341 -0
- package/dist/create-tween-paho5Rh-.js +7 -0
- package/dist/custom-elements.json +1681 -454
- 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/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-types.d.ts +70 -10
- package/dist/elements/chat-workspace.js +1 -1
- package/dist/elements/chat.js +1 -1
- package/dist/elements/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/chunks/{Icon-Tj58ES_d.js → Icon-C-2LvGDG.js} +1 -1
- package/dist/elements/chunks/{action-icons-ns1Fnedj.js → action-icons-CaYoImEk.js} +1 -1
- package/dist/elements/chunks/arrow-left-Bb46H7w9.js +1 -0
- package/dist/elements/chunks/artifact-BBIscOxJ.js +1 -0
- package/dist/elements/chunks/{attachments-mCB5F1Fq.js → attachments-BB56zoji.js} +1 -1
- package/dist/elements/chunks/audio-visualizer-BxOx4THz.js +1 -0
- package/dist/elements/chunks/{badge-B4Zuajl2.js → badge-SxLSZ19R.js} +1 -1
- package/dist/elements/chunks/{button-ZWNif3--.js → button-CmkUkz6c.js} +1 -1
- package/dist/elements/chunks/card-renderer-Db4ffkWv.js +1 -0
- package/dist/elements/chunks/card-tags-D8lZ-C_U.js +1 -0
- package/dist/elements/chunks/chat-thread-B3Ks-cKr.js +1 -0
- package/dist/elements/chunks/check-C8desc_h.js +1 -0
- package/dist/elements/chunks/chevron-down-DKtc2HNB.js +1 -0
- package/dist/elements/chunks/chevron-right-Dw4GPhwL.js +1 -0
- package/dist/elements/chunks/choice-card-Q9cYYDyM.js +1 -0
- package/dist/elements/chunks/circle-BeokBsvB.js +1 -0
- package/dist/elements/chunks/circle-check-wJSqt859.js +1 -0
- package/dist/elements/chunks/{circle-x-B7faJFlY.js → circle-x-D0MEfxOM.js} +1 -1
- package/dist/elements/chunks/code-block-C8VzAraE.js +1 -0
- package/dist/elements/chunks/{collapsible-DM1Ckd4e.js → collapsible-Cvj61obE.js} +1 -1
- package/dist/elements/chunks/{composer-BguS0QL_.js → composer-D86ztyL0.js} +2 -2
- package/dist/elements/chunks/confirm-card-BdyDAGLw.js +1 -0
- package/dist/elements/chunks/context-WHDl-xSx.js +1 -0
- package/dist/elements/chunks/conversation-list-CdR14_Y4.js +1 -0
- package/dist/elements/chunks/create-tween-C_A_B638.js +7 -0
- package/dist/elements/chunks/{default-input-Cqqilg9t.js → default-input-CSZqUM81.js} +1 -1
- package/dist/elements/chunks/define-BzPnNsXg.js +1 -0
- package/dist/elements/chunks/{disclosure-CIZ5c8nO.js → disclosure-DVKsoc1F.js} +1 -1
- package/dist/elements/chunks/{download-Dsbg3ste.js → download-BjA54IMJ.js} +1 -1
- package/dist/elements/chunks/{dropdown-BDd1-Zgi.js → dropdown-BjVVHWXH.js} +1 -1
- package/dist/elements/chunks/{ellipsis-Dw6qrss-.js → ellipsis-BNedmqfi.js} +1 -1
- package/dist/elements/chunks/embed-DQsl4XEq.js +1 -0
- package/dist/elements/chunks/{external-link-Vt74zAoL.js → external-link-Di-dw2CU.js} +1 -1
- package/dist/elements/chunks/{file-text-CZrZF6_v.js → file-text-B3sAODCV.js} +1 -1
- package/dist/elements/chunks/{file-tree-DF4okKyo.js → file-tree-Dgto-bMn.js} +1 -1
- package/dist/elements/chunks/{folder-glP5rha4.js → folder-D6rMadFV.js} +1 -1
- package/dist/elements/chunks/form-CILxvhQ7.js +1 -0
- package/dist/elements/chunks/hover-card-BtiF4XiU.js +1 -0
- package/dist/elements/chunks/{icon-BLb8beoi.js → icon-DKkmze3y.js} +1 -1
- package/dist/elements/chunks/{info-CIsv92JK.js → info-CWRjZkuy.js} +1 -1
- package/dist/elements/chunks/{input-Dds1kFyt.js → input--QJBK6BA.js} +1 -1
- package/dist/elements/chunks/{kbd-De_xbgi9.js → kbd-C3zuKh8R.js} +1 -1
- package/dist/elements/chunks/{link-i4r_k7z4.js → link-BL5JA7Q0.js} +1 -1
- package/dist/elements/chunks/link-preview-CU37bbXh.js +1 -0
- package/dist/elements/chunks/{loader-BmQH4s3V.js → loader-XmpyxyRH.js} +1 -1
- package/dist/elements/chunks/{markdown-Zi21WhUz.js → markdown-3Gv5UZ_o.js} +1 -1
- package/dist/elements/chunks/message-CnBA2OUt.js +1 -0
- package/dist/elements/chunks/message-X5NZbq-W.js +1 -0
- package/dist/elements/chunks/message-square-CnpAm_P0.js +1 -0
- package/dist/elements/chunks/{minimize-2--ifeCGrl.js → minimize-2-DwyrUTcM.js} +1 -1
- package/dist/elements/chunks/{model-switcher-B94YAKsM.js → model-switcher-CclaJEHt.js} +1 -1
- package/dist/elements/chunks/{overlay-kD8dwRv_.js → overlay-Cepd-KcS.js} +1 -1
- package/dist/elements/chunks/{paperclip-q21dYOSK.js → paperclip-CdwKjrlu.js} +1 -1
- package/dist/elements/chunks/{progress-bar-BrAIIaaJ.js → progress-bar-DMVXBD3b.js} +1 -1
- package/dist/elements/chunks/{prompt-suggestion-Bjn2K-fR.js → prompt-suggestion-Di_WZE_5.js} +1 -1
- package/dist/elements/chunks/reasoning-D0jMch5u.js +1 -0
- package/dist/elements/chunks/{resizable-Dp4JExql.js → resizable-1znbL1Gv.js} +1 -1
- package/dist/elements/chunks/{rotate-cw-CFWWkpj2.js → rotate-cw-DVhhgx8n.js} +1 -1
- package/dist/elements/chunks/{scroll-area-Bb0kHH1j.js → scroll-area-Bs4bFS1P.js} +1 -1
- package/dist/elements/chunks/scroll-button-Bet5NLc4.js +1 -0
- package/dist/elements/chunks/{separator-9kRgr1X9.js → separator-C5Gh8qGC.js} +1 -1
- package/dist/elements/chunks/{settings-B8lmec4D.js → settings-5vmEFg0K.js} +1 -1
- package/dist/elements/chunks/{settings-group-I0hEuXiN.js → settings-group-BWLB38kz.js} +1 -1
- package/dist/elements/chunks/{share-C3lTiYGt.js → share-BZ3G_DaB.js} +1 -1
- package/dist/elements/chunks/skeleton-DafPJQTp.js +1 -0
- package/dist/elements/chunks/slots-CIw9RlAe.js +1 -0
- package/dist/elements/chunks/source-D_qj_6uJ.js +1 -0
- package/dist/elements/chunks/{star-CSJtGxgv.js → star-Cuv7j2IE.js} +1 -1
- package/dist/elements/chunks/{store-CHyW95TP.js → store-C1StPHfW.js} +1 -1
- package/dist/elements/chunks/tasks-card-EyoBZfpA.js +1 -0
- package/dist/elements/chunks/{text-shimmer-Cn9TmNpI.js → text-shimmer-D9gRSh34.js} +1 -1
- package/dist/elements/chunks/textarea-DuhtHfcm.js +1 -0
- package/dist/elements/chunks/{thumbs-up-PNVVThEF.js → thumbs-up-B9hwv43w.js} +1 -1
- package/dist/elements/chunks/{toast-store-DKbQn3Wn.js → toast-store-Bm3DUEDe.js} +1 -1
- package/dist/elements/chunks/{tool-DjTRpIpl.js → tool-CDtW7L0z.js} +1 -1
- package/dist/elements/chunks/tooltip-eB226mGK.js +1 -0
- package/dist/elements/chunks/{triangle-alert-DsHTHCPm.js → triangle-alert-C1SNzTqK.js} +1 -1
- package/dist/elements/chunks/use-card-resolution-YZh2MvI5.js +1 -0
- package/dist/elements/chunks/{variant-aurora-Dc4nQUia.js → variant-aurora-Cj1F7D0l.js} +2 -2
- package/dist/elements/chunks/{variant-custom-y_3kVQhS.js → variant-custom-T9gpt7QE.js} +1 -1
- package/dist/elements/chunks/{variant-wave-D5OR1-9Z.js → variant-wave-CxU9z-TE.js} +2 -2
- package/dist/elements/chunks/{video-B7vmenoC.js → video-CK4R7Rus.js} +1 -1
- package/dist/elements/chunks/x-D1qx0aLd.js +1 -0
- 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-list.js +1 -1
- package/dist/elements/default-input.d.ts +7 -7
- package/dist/elements/define.d.ts +1 -0
- package/dist/elements/dialog.js +1 -1
- package/dist/elements/disclosure.d.ts +1 -1
- package/dist/elements/editable-label.js +1 -1
- package/dist/elements/element-data-types.d.ts +107 -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-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/reasoning.js +1 -1
- package/dist/elements/register.d.ts +8 -6
- 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/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/slots.d.ts +16 -0
- 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/validate-messages.d.ts +25 -0
- package/dist/elements/voice-input.js +1 -1
- package/dist/elements/voice-output.js +1 -1
- package/dist/elements.d.ts +2725 -214
- package/dist/index.d.ts +163 -125
- package/dist/index.js +6336 -5802
- package/dist/index.server.d.ts +5 -0
- package/dist/index.server.js +5446 -4937
- package/dist/kai-provider.es.d.ts +5 -0
- package/dist/kai-provider.es.js +79 -77
- package/dist/kai.es.d.ts +5 -0
- package/dist/kai.es.js +1 -1
- package/dist/llms/llms-full.txt +762 -148
- package/dist/llms/llms.txt +57 -5
- package/dist/mcp.es.js +4010 -770
- package/dist/primitives/card-component-types.d.ts +11 -0
- package/dist/primitives/card-data-types.d.ts +196 -0
- package/dist/primitives/card-host.d.ts +1 -1
- package/dist/primitives/card-recovery.d.ts +3 -3
- package/dist/primitives/card-registry.d.ts +4 -14
- package/dist/primitives/card-resolution.d.ts +1 -1
- package/dist/primitives/card-routing.d.ts +1 -1
- package/dist/primitives/card-tags.d.ts +11 -0
- package/dist/primitives/card-validate-cards.d.ts +57 -0
- package/dist/primitives/card-validate-generator.testlib.d.ts +20 -0
- package/dist/primitives/card-validate-schemas.d.ts +17 -0
- package/dist/primitives/card-validate.d.ts +24 -0
- package/dist/primitives/create-kai-chat.d.ts +3 -3
- package/dist/primitives/embed-providers.d.ts +1 -1
- package/dist/primitives/link-preview.d.ts +1 -1
- package/dist/primitives/message-feedback.d.ts +2 -2
- package/dist/primitives/toast-store.d.ts +1 -1
- package/dist/react/index.d.ts +717 -299
- package/dist/react/use-kai-chat.d.ts +8 -4
- package/dist/react.d.ts +5 -0
- package/dist/react.js +417 -316
- package/dist/register-impl-bzrZ44ft.js +145 -0
- package/dist/remote/host-embed.d.ts +1 -1
- package/dist/remote/index.d.ts +2 -2
- package/dist/remote/provider-runtime.d.ts +2 -2
- package/dist/remote/provider.d.ts +2 -2
- package/dist/remote/validate.d.ts +1 -1
- package/dist/remote/wire.d.ts +1 -1
- package/dist/schemas/artifact.schema.json +92 -0
- package/dist/schemas/embed.schema.json +0 -2
- package/dist/schemas/from-tool-call.d.ts +48 -0
- package/dist/schemas/index.d.ts +48 -0
- package/dist/schemas/link.schema.json +0 -2
- package/dist/schemas/provider-subsets.d.ts +136 -0
- package/dist/schemas/registry.d.ts +140 -0
- package/dist/schemas/tool-defs.d.ts +121 -0
- package/dist/schemas.d.ts +5 -0
- package/dist/schemas.js +717 -0
- package/dist/solid-BCJUQqwS.js +22750 -0
- package/dist/solid-BdENBcEq.js +20108 -0
- package/dist/solid.d.ts +66 -0
- package/dist/solid.js +261 -0
- package/dist/solid.server.d.ts +5 -0
- package/dist/solid.server.js +261 -0
- package/dist/state/index.d.ts +14 -4
- package/dist/state/messages.d.ts +8 -3
- package/dist/state/mock.d.ts +46 -0
- package/dist/state/parts.d.ts +85 -0
- package/dist/state/stream.d.ts +15 -9
- package/dist/state.d.ts +5 -0
- package/dist/state.js +253 -84
- package/dist/ui/action-icons.d.ts +1 -1
- package/dist/ui/collapsible.d.ts +11 -6
- package/dist/ui/dropdown.d.ts +47 -42
- package/dist/ui/pane-group.d.ts +1 -1
- package/dist/variant-aurora-1wMcXRUS.js +381 -0
- package/dist/variant-aurora-BKHHiOgL.js +391 -0
- package/dist/{variant-aurora-DVtGqVH6.js → variant-aurora-DOb_o4pC.js} +1 -1
- package/dist/{variant-custom-Dif-IV4u.js → variant-custom-CJGB0Kbw.js} +1 -1
- package/dist/variant-custom-Co0CkXJF.js +200 -0
- package/dist/variant-custom-DWSSgmd2.js +170 -0
- package/dist/variant-wave-C3-45cL6.js +218 -0
- package/dist/{variant-wave-DbfNdvSi.js → variant-wave-CEODq-9q.js} +1 -1
- package/dist/variant-wave-jdXBnCUZ.js +208 -0
- package/dist/wire/chunk.d.ts +171 -0
- package/dist/wire/consume.d.ts +26 -0
- package/dist/wire/encode.d.ts +148 -0
- package/dist/wire/formats/anthropic.d.ts +2 -0
- package/dist/wire/formats/openai.d.ts +5 -0
- package/dist/wire/index.d.ts +14 -0
- package/dist/wire/read.d.ts +26 -0
- package/dist/wire/sink-helpers.d.ts +21 -0
- package/dist/wire/sse.d.ts +33 -0
- package/dist/wire.d.ts +5 -53
- package/dist/wire.js +898 -0
- package/frameworks/react/index.tsx +183 -154
- package/frameworks/react/runtime.tsx +21 -1
- package/frameworks/react/use-kai-chat.tsx +11 -1
- package/llms-full.txt +762 -148
- package/llms.txt +57 -5
- package/package.json +61 -8
- package/src/agent-tooling/archetypes.ts +96 -0
- package/src/agent-tooling/integrations/anthropic.ts +412 -0
- package/src/agent-tooling/integrations/cloudflare.ts +136 -52
- package/src/agent-tooling/integrations/langgraph.ts +67 -13
- package/src/agent-tooling/integrations/mastra.ts +120 -12
- package/src/agent-tooling/integrations/mock.ts +43 -8
- package/src/agent-tooling/integrations/ollama.ts +61 -24
- package/src/agent-tooling/integrations/openai.ts +87 -0
- package/src/agent-tooling/integrations/openrouter.ts +56 -8
- package/src/agent-tooling/integrations/pi.ts +79 -23
- package/src/agent-tooling/integrations/pydantic-ai.ts +24 -2
- package/src/agent-tooling/integrations/vercel-ai-sdk.ts +84 -13
- package/src/agent-tooling/mcp/manifest.ts +206 -25
- package/src/agent-tooling/mcp/tools/debug.ts +13 -7
- package/src/agent-tooling/mcp/tools/reference.ts +285 -6
- package/src/agent-tooling/mcp/tools/scaffold.ts +3345 -675
- package/src/agent-tooling/registry.ts +17 -0
- package/src/agent-tooling/types.ts +229 -1
- package/src/components/artifact-card.tsx +120 -0
- package/src/components/audio-visualizer/index.tsx +9 -0
- package/src/components/audio-visualizer/labs/lab-choreography.ts +187 -0
- package/src/components/audio-visualizer/labs/lab-shaders.ts +363 -0
- package/src/components/audio-visualizer/labs/lab-visualizer.tsx +102 -0
- package/src/components/audio-visualizer/shader-canvas.tsx +31 -1
- package/src/components/card-fallback.tsx +42 -10
- package/src/components/card-renderer.tsx +146 -9
- package/src/components/chat-container.tsx +4 -0
- package/src/components/chat-thread.tsx +118 -51
- package/src/components/choice-card.tsx +17 -29
- package/src/components/composer.tsx +12 -2
- package/src/components/confirm-card.tsx +24 -20
- package/src/components/context.tsx +12 -4
- package/src/components/conversation-list.tsx +18 -2
- package/src/components/file-tree.tsx +11 -22
- package/src/components/file-upload.tsx +14 -8
- package/src/components/form.tsx +14 -47
- package/src/components/loader.tsx +39 -12
- package/src/components/message-skills.tsx +4 -0
- package/src/components/message.tsx +294 -46
- package/src/components/reasoning.tsx +92 -5
- package/src/components/response-compare-types.ts +25 -0
- package/src/components/response-compare.tsx +4 -9
- package/src/components/source.tsx +50 -24
- package/src/components/tasks-card.tsx +10 -33
- package/src/components/thread.tsx +84 -42
- package/src/components/toast.tsx +11 -5
- package/src/components/tool-classify.ts +26 -0
- package/src/components/tool-types.ts +31 -1
- package/src/elements/agent-card.tsx +11 -11
- package/src/elements/artifact.tsx +15 -7
- package/src/elements/attachments.tsx +6 -4
- package/src/elements/avatar.tsx +1 -1
- package/src/elements/button.tsx +3 -3
- package/src/elements/card.tsx +2 -2
- package/src/elements/cards.tsx +109 -14
- package/src/elements/chain-of-thought.tsx +14 -10
- package/src/elements/chat-scope-picker.tsx +9 -7
- package/src/elements/chat-types.ts +59 -6
- package/src/elements/chat-workspace.tsx +50 -9
- package/src/elements/chat.tsx +64 -3
- package/src/elements/choice.tsx +8 -8
- package/src/elements/coachmark.tsx +1 -1
- package/src/elements/command.tsx +8 -23
- package/src/elements/compare.tsx +7 -6
- package/src/elements/compiled.css +1 -1
- package/src/elements/composer.tsx +8 -8
- package/src/elements/confirm-card.tsx +9 -9
- package/src/elements/context-meter.tsx +4 -18
- package/src/elements/conversation-list.tsx +14 -9
- package/src/elements/default-input.tsx +3 -3
- package/src/elements/define.tsx +178 -43
- package/src/elements/editable-label.tsx +17 -2
- package/src/elements/element-data-types.ts +112 -0
- package/src/elements/element-meta.json +1596 -304
- package/src/elements/element-types.d.ts +2636 -211
- package/src/elements/feedback-bar.tsx +1 -1
- package/src/elements/file-tree.tsx +1 -1
- package/src/elements/file-upload.tsx +1 -1
- package/src/elements/form.tsx +14 -6
- package/src/elements/input.tsx +1 -1
- package/src/elements/kbd.tsx +1 -1
- package/src/elements/menu.tsx +10 -29
- package/src/elements/message-skills.tsx +7 -9
- package/src/elements/message.tsx +200 -32
- package/src/elements/model-switcher.tsx +5 -3
- package/src/elements/pane.tsx +1 -1
- package/src/elements/prompt-dock.tsx +8 -8
- package/src/elements/prompt-input.tsx +10 -10
- package/src/elements/prompt-suggestions.tsx +7 -4
- package/src/elements/reasoning.tsx +1 -1
- package/src/elements/register.ts +9 -0
- package/src/elements/resizable.globals.d.ts +36 -0
- package/src/elements/resizable.tsx +24 -13
- package/src/elements/response-stream.tsx +1 -1
- package/src/elements/scroll-button.tsx +1 -1
- package/src/elements/search.tsx +6 -1
- package/src/elements/segmented.tsx +5 -11
- package/src/elements/separator.tsx +1 -1
- package/src/elements/slots.ts +57 -24
- package/src/elements/source.tsx +21 -22
- package/src/elements/switch.tsx +3 -3
- package/src/elements/tasks.tsx +5 -4
- package/src/elements/thread.tsx +36 -4
- package/src/elements/toast.tsx +3 -2
- package/src/elements/tool.tsx +1 -1
- package/src/elements/validate-messages.ts +76 -0
- package/src/elements/voice-input.tsx +7 -7
- package/src/elements/voice-output.tsx +4 -4
- package/src/index.ts +141 -6
- package/src/primitives/card-component-types.ts +63 -0
- package/src/primitives/card-data-types.ts +312 -0
- package/src/primitives/card-recovery.ts +13 -2
- package/src/primitives/card-registry.tsx +34 -23
- package/src/primitives/card-schemas/artifact.schema.json +92 -0
- package/src/primitives/card-schemas/embed.schema.json +0 -2
- package/src/primitives/card-schemas/link.schema.json +0 -2
- package/src/primitives/card-tags.ts +61 -0
- package/src/primitives/card-validate-cards.ts +255 -0
- package/src/primitives/card-validate-generator.testlib.ts +38 -0
- package/src/primitives/card-validate-schemas.ts +58 -0
- package/src/primitives/card-validate.ts +48 -20
- package/src/primitives/create-tween.ts +54 -2
- package/src/primitives/message-feedback.ts +3 -2
- package/src/primitives/use-audio-analysis.ts +20 -1
- package/src/primitives/use-sequencer.ts +20 -1
- package/src/schemas/from-tool-call.ts +151 -0
- package/src/schemas/index.ts +340 -0
- package/src/schemas/provider-subsets.ts +538 -0
- package/src/schemas/registry.ts +355 -0
- package/src/schemas/tool-defs.ts +492 -0
- package/src/solid.ts +150 -0
- package/src/state/index.ts +27 -1
- package/src/state/messages.ts +21 -4
- package/src/state/mock.ts +211 -0
- package/src/state/parts.ts +295 -0
- package/src/state/stream.ts +56 -58
- package/src/ui/collapsible.tsx +17 -5
- package/src/ui/dropdown.tsx +46 -12
- package/src/ui/overlay.tsx +10 -4
- package/src/wire/chunk.ts +201 -0
- package/src/wire/consume.ts +440 -0
- package/src/wire/encode.ts +474 -0
- package/src/wire/formats/anthropic.ts +267 -0
- package/src/wire/formats/openai.ts +187 -0
- package/src/wire/index.ts +52 -0
- package/src/wire/read.ts +152 -0
- package/src/wire/sink-helpers.ts +50 -0
- package/src/wire/sse.ts +140 -0
- package/dist/create-tween-hvpmSuwW.js +0 -7
- package/dist/elements/chunks/arrow-left-DQocUFvy.js +0 -1
- package/dist/elements/chunks/audio-visualizer-BqNy7dfm.js +0 -1
- package/dist/elements/chunks/card-BkHbp4BA.js +0 -1
- package/dist/elements/chunks/chat-thread-CkRN6pZ7.js +0 -1
- package/dist/elements/chunks/check-B9-gn6SS.js +0 -1
- package/dist/elements/chunks/chevron-down-BNsxc2hk.js +0 -1
- package/dist/elements/chunks/chevron-right-Hv00StBO.js +0 -1
- package/dist/elements/chunks/circle-0e3KJTDr.js +0 -1
- package/dist/elements/chunks/circle-check-BNAS0JEy.js +0 -1
- package/dist/elements/chunks/code-block-BFUHn6Va.js +0 -1
- package/dist/elements/chunks/context-Cb7k4F-v.js +0 -1
- package/dist/elements/chunks/conversation-list-CvoAkWhN.js +0 -1
- package/dist/elements/chunks/create-tween-oVvAIG8r.js +0 -7
- package/dist/elements/chunks/define-D1din7Ld.js +0 -1
- package/dist/elements/chunks/hover-card-Cmm6Q53m.js +0 -1
- package/dist/elements/chunks/message-BqyXDN3-.js +0 -1
- package/dist/elements/chunks/message-feedback-Djr3z6Yb.js +0 -1
- package/dist/elements/chunks/message-square-vFAgbDaX.js +0 -1
- package/dist/elements/chunks/reasoning-DTpCGtnY.js +0 -1
- package/dist/elements/chunks/scroll-button-B0cH5fXf.js +0 -1
- package/dist/elements/chunks/skeleton-DSXW5Yya.js +0 -1
- package/dist/elements/chunks/slots--V19HwUb.js +0 -1
- package/dist/elements/chunks/textarea-CUwqAX0G.js +0 -1
- package/dist/elements/chunks/tooltip-CgBZCVKp.js +0 -1
- package/dist/elements/chunks/use-card-resolution-BSu_XHjH.js +0 -1
- package/dist/elements/chunks/x-GRUeeQFT.js +0 -1
- package/dist/host-embed.d.ts +0 -33
- package/dist/kai-provider.d.ts +0 -2
- package/dist/origin.d.ts +0 -5
- package/dist/provider-runtime.d.ts +0 -27
- package/dist/register-impl-DQyejdfb.js +0 -145
- package/dist/validate.d.ts +0 -4
- package/dist/version.d.ts +0 -4
- package/src/components/component-meta.json +0 -4550
- package/src/elements/card-media.jpg +0 -0
- package/src/elements/resizable.d.ts +0 -27
- package/src/elements/video-poster.jpg +0 -0
|
@@ -18,28 +18,17 @@ import {
|
|
|
18
18
|
File as FileIcon,
|
|
19
19
|
} from 'lucide-solid';
|
|
20
20
|
|
|
21
|
-
/** A single artifact file the tree can show + the preview can load.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
type?: 'html' | 'pdf' | 'image' | 'other';
|
|
33
|
-
/** Lines added vs the base. Rendered as a trailing `+N` stat (success hue,
|
|
34
|
-
* tabular-nums). Only shown when present; omit for a plain file row. */
|
|
35
|
-
additions?: number;
|
|
36
|
-
/** Lines removed vs the base. Rendered as a trailing `-N` stat (error hue). */
|
|
37
|
-
deletions?: number;
|
|
38
|
-
/** Change status vs the base. Drives a small trailing status letter in the
|
|
39
|
-
* conventional VCS hue (added=green, modified=amber, deleted=red,
|
|
40
|
-
* renamed=blue, untracked=muted). Only shown when present. */
|
|
41
|
-
status?: 'added' | 'modified' | 'deleted' | 'renamed' | 'untracked';
|
|
42
|
-
}
|
|
21
|
+
/** A single artifact file the tree can show + the preview can load.
|
|
22
|
+
*
|
|
23
|
+
* AUTHORED IN ../primitives/card-data-types.ts as `ArtifactCardFile`, and aliased
|
|
24
|
+
* here rather than declared, so there is ONE shape and not a copy of one. It has
|
|
25
|
+
* to live in that `.ts` because `ArtifactCardData.files` reaches it: a type import
|
|
26
|
+
* still has to RESOLVE, and a Node/no-DOM project (tsconfig.mcp.json has no `jsx`
|
|
27
|
+
* on purpose) cannot resolve a `.tsx` at all — so leaving this declaration here
|
|
28
|
+
* would put TS6142 back on any backend that names an artifact card payload. See
|
|
29
|
+
* that file's header. */
|
|
30
|
+
export type { ArtifactCardFile as FileTreeFile } from '../primitives/card-data-types';
|
|
31
|
+
import type { ArtifactCardFile as FileTreeFile } from '../primitives/card-data-types';
|
|
43
32
|
|
|
44
33
|
/** A change status a file can carry. */
|
|
45
34
|
export type FileStatus = NonNullable<FileTreeFile['status']>;
|
|
@@ -66,16 +66,22 @@ function FileUpload(props: FileUploadProps) {
|
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
window.
|
|
69
|
+
// Captured at SETUP and closed over, never re-resolved as a global inside
|
|
70
|
+
// `onCleanup`: cleanup can run after the host removed the DOM globals (a
|
|
71
|
+
// `kai-*` release is deferred one microtask past detachment, so an
|
|
72
|
+
// environment teardown gets in between), and a bare `window` there throws.
|
|
73
|
+
// See tests/components/teardown-without-dom-globals.test.tsx.
|
|
74
|
+
const win = window;
|
|
75
|
+
win.addEventListener('dragenter', handleDragIn);
|
|
76
|
+
win.addEventListener('dragleave', handleDragOut);
|
|
77
|
+
win.addEventListener('dragover', handleDrag);
|
|
78
|
+
win.addEventListener('drop', handleDrop);
|
|
73
79
|
|
|
74
80
|
onCleanup(() => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
win.removeEventListener('dragenter', handleDragIn);
|
|
82
|
+
win.removeEventListener('dragleave', handleDragOut);
|
|
83
|
+
win.removeEventListener('dragover', handleDrag);
|
|
84
|
+
win.removeEventListener('drop', handleDrop);
|
|
79
85
|
});
|
|
80
86
|
});
|
|
81
87
|
|
package/src/components/form.tsx
CHANGED
|
@@ -44,53 +44,20 @@ import {
|
|
|
44
44
|
// Types (the JSON-Schema subset kai-form renders) — see form.schema.json.
|
|
45
45
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
maxItems?: number;
|
|
62
|
-
items?: FormField | { enum: unknown[] };
|
|
63
|
-
properties?: Record<string, FormField>;
|
|
64
|
-
required?: string[];
|
|
65
|
-
readOnly?: boolean;
|
|
66
|
-
'x-kai-widget'?:
|
|
67
|
-
| 'textarea'
|
|
68
|
-
| 'slider'
|
|
69
|
-
| 'rating'
|
|
70
|
-
| 'radio'
|
|
71
|
-
| 'select'
|
|
72
|
-
| 'checkbox'
|
|
73
|
-
| 'password'
|
|
74
|
-
| 'switch';
|
|
75
|
-
'x-kai-placeholder'?: string;
|
|
76
|
-
'x-kai-step'?: number;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** The form definition = CardEnvelope.data for type:'form'. */
|
|
80
|
-
export interface FormDefinition {
|
|
81
|
-
type: 'object';
|
|
82
|
-
title?: string;
|
|
83
|
-
description?: string;
|
|
84
|
-
required?: string[];
|
|
85
|
-
properties: Record<string, FormField>;
|
|
86
|
-
'x-kai-order'?: string[];
|
|
87
|
-
'x-kai-inlineMax'?: number;
|
|
88
|
-
'x-kai-submitLabel'?: string;
|
|
89
|
-
'x-kai-dismissible'?: boolean;
|
|
90
|
-
'x-kai-actions'?: { id: string; label: string; variant?: 'default' | 'ghost' | 'outline' }[];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export type FormCardEnvelope = CardEnvelope<'form', FormDefinition>;
|
|
47
|
+
// AUTHORED IN ../primitives/card-data-types.ts. See the note in confirm-card.tsx,
|
|
48
|
+
// or that file's header, for why they left a `.tsx` and why they are `type`
|
|
49
|
+
// aliases. `FormField` in particular CANNOT be an interface: it is
|
|
50
|
+
// self-referential, so the element-types generator can only inline it down to a
|
|
51
|
+
// `Record<string, unknown>` placeholder, and an interface is not assignable to
|
|
52
|
+
// that. Re-exported here unchanged.
|
|
53
|
+
|
|
54
|
+
import type { FormDefinition, FormField } from '../primitives/card-data-types';
|
|
55
|
+
|
|
56
|
+
export type {
|
|
57
|
+
FormCardEnvelope,
|
|
58
|
+
FormDefinition,
|
|
59
|
+
FormField,
|
|
60
|
+
} from '../primitives/card-data-types';
|
|
94
61
|
|
|
95
62
|
/** The internal widget identifiers `widgetFor` resolves to. */
|
|
96
63
|
export type WidgetKind =
|
|
@@ -24,9 +24,36 @@ export interface LoaderProps {
|
|
|
24
24
|
class?: string;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/** Props of the shape-only loader variants (no label). */
|
|
28
|
+
export interface LoaderShapeProps {
|
|
29
|
+
class?: string;
|
|
30
|
+
size?: LoaderSize;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Props of the text-based loader variants, which also take the label. */
|
|
34
|
+
export interface LoaderTextProps extends LoaderShapeProps {
|
|
35
|
+
text?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Every variant shortcut ships its own `<Name>Props` alias: a consumer typing a
|
|
39
|
+
// wrapper around `<DotsLoader>` must be able to name its props without knowing
|
|
40
|
+
// that nine components happen to share one shape.
|
|
41
|
+
export type CircularLoaderProps = LoaderShapeProps;
|
|
42
|
+
export type ClassicLoaderProps = LoaderShapeProps;
|
|
43
|
+
export type PulseLoaderProps = LoaderShapeProps;
|
|
44
|
+
export type PulseDotLoaderProps = LoaderShapeProps;
|
|
45
|
+
export type DotsLoaderProps = LoaderShapeProps;
|
|
46
|
+
export type TypingLoaderProps = LoaderShapeProps;
|
|
47
|
+
export type WaveLoaderProps = LoaderShapeProps;
|
|
48
|
+
export type BarsLoaderProps = LoaderShapeProps;
|
|
49
|
+
export type TerminalLoaderProps = LoaderShapeProps;
|
|
50
|
+
export type TextBlinkLoaderProps = LoaderTextProps;
|
|
51
|
+
export type TextShimmerLoaderProps = LoaderTextProps;
|
|
52
|
+
export type TextDotsLoaderProps = LoaderTextProps;
|
|
53
|
+
|
|
27
54
|
// --- CircularLoader ---
|
|
28
55
|
|
|
29
|
-
export function CircularLoader(props:
|
|
56
|
+
export function CircularLoader(props: CircularLoaderProps) {
|
|
30
57
|
const size = () => props.size ?? 'md';
|
|
31
58
|
const sizeClasses = { sm: 'size-4', md: 'size-5', lg: 'size-6' };
|
|
32
59
|
return (
|
|
@@ -44,7 +71,7 @@ export function CircularLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
44
71
|
|
|
45
72
|
// --- ClassicLoader ---
|
|
46
73
|
|
|
47
|
-
export function ClassicLoader(props:
|
|
74
|
+
export function ClassicLoader(props: ClassicLoaderProps) {
|
|
48
75
|
const size = () => props.size ?? 'md';
|
|
49
76
|
const sizeClasses = { sm: 'size-4', md: 'size-5', lg: 'size-6' };
|
|
50
77
|
const barSizes = {
|
|
@@ -81,7 +108,7 @@ export function ClassicLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
81
108
|
|
|
82
109
|
// --- PulseLoader ---
|
|
83
110
|
|
|
84
|
-
export function PulseLoader(props:
|
|
111
|
+
export function PulseLoader(props: PulseLoaderProps) {
|
|
85
112
|
const size = () => props.size ?? 'md';
|
|
86
113
|
const sizeClasses = { sm: 'size-4', md: 'size-5', lg: 'size-6' };
|
|
87
114
|
return (
|
|
@@ -94,7 +121,7 @@ export function PulseLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
94
121
|
|
|
95
122
|
// --- PulseDotLoader ---
|
|
96
123
|
|
|
97
|
-
export function PulseDotLoader(props:
|
|
124
|
+
export function PulseDotLoader(props: PulseDotLoaderProps) {
|
|
98
125
|
const size = () => props.size ?? 'md';
|
|
99
126
|
const sizeClasses = { sm: 'size-1', md: 'size-2', lg: 'size-3' };
|
|
100
127
|
return (
|
|
@@ -112,7 +139,7 @@ export function PulseDotLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
112
139
|
|
|
113
140
|
// --- DotsLoader ---
|
|
114
141
|
|
|
115
|
-
export function DotsLoader(props:
|
|
142
|
+
export function DotsLoader(props: DotsLoaderProps) {
|
|
116
143
|
const size = () => props.size ?? 'md';
|
|
117
144
|
const dotSizes = { sm: 'h-1.5 w-1.5', md: 'h-2 w-2', lg: 'h-2.5 w-2.5' };
|
|
118
145
|
const containerSizes = { sm: 'h-4', md: 'h-5', lg: 'h-6' };
|
|
@@ -136,7 +163,7 @@ export function DotsLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
136
163
|
|
|
137
164
|
// --- TypingLoader ---
|
|
138
165
|
|
|
139
|
-
export function TypingLoader(props:
|
|
166
|
+
export function TypingLoader(props: TypingLoaderProps) {
|
|
140
167
|
const size = () => props.size ?? 'md';
|
|
141
168
|
const dotSizes = { sm: 'h-1 w-1', md: 'h-1.5 w-1.5', lg: 'h-2 w-2' };
|
|
142
169
|
const containerSizes = { sm: 'h-4', md: 'h-5', lg: 'h-6' };
|
|
@@ -160,7 +187,7 @@ export function TypingLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
160
187
|
|
|
161
188
|
// --- WaveLoader ---
|
|
162
189
|
|
|
163
|
-
export function WaveLoader(props:
|
|
190
|
+
export function WaveLoader(props: WaveLoaderProps) {
|
|
164
191
|
const size = () => props.size ?? 'md';
|
|
165
192
|
const barWidths = { sm: 'w-0.5', md: 'w-0.5', lg: 'w-1' };
|
|
166
193
|
const containerSizes = { sm: 'h-4', md: 'h-5', lg: 'h-6' };
|
|
@@ -192,7 +219,7 @@ export function WaveLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
192
219
|
|
|
193
220
|
// --- BarsLoader ---
|
|
194
221
|
|
|
195
|
-
export function BarsLoader(props:
|
|
222
|
+
export function BarsLoader(props: BarsLoaderProps) {
|
|
196
223
|
const size = () => props.size ?? 'md';
|
|
197
224
|
const barWidths = { sm: 'w-1', md: 'w-1.5', lg: 'w-2' };
|
|
198
225
|
const containerSizes = { sm: 'h-4 gap-1', md: 'h-5 gap-1.5', lg: 'h-6 gap-2' };
|
|
@@ -216,7 +243,7 @@ export function BarsLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
216
243
|
|
|
217
244
|
// --- TerminalLoader ---
|
|
218
245
|
|
|
219
|
-
export function TerminalLoader(props:
|
|
246
|
+
export function TerminalLoader(props: TerminalLoaderProps) {
|
|
220
247
|
const size = () => props.size ?? 'md';
|
|
221
248
|
const cursorSizes = { sm: 'h-3 w-1.5', md: 'h-4 w-2', lg: 'h-5 w-2.5' };
|
|
222
249
|
const textSizes = { sm: 'text-xs', md: 'text-sm', lg: 'text-base' };
|
|
@@ -232,7 +259,7 @@ export function TerminalLoader(props: { class?: string; size?: LoaderSize }) {
|
|
|
232
259
|
|
|
233
260
|
// --- TextBlinkLoader ---
|
|
234
261
|
|
|
235
|
-
export function TextBlinkLoader(props:
|
|
262
|
+
export function TextBlinkLoader(props: TextBlinkLoaderProps) {
|
|
236
263
|
const size = () => props.size ?? 'md';
|
|
237
264
|
const textSizes = { sm: 'text-xs', md: 'text-sm', lg: 'text-base' };
|
|
238
265
|
return (
|
|
@@ -250,7 +277,7 @@ export function TextBlinkLoader(props: { text?: string; class?: string; size?: L
|
|
|
250
277
|
|
|
251
278
|
// --- TextShimmerLoader ---
|
|
252
279
|
|
|
253
|
-
export function TextShimmerLoader(props:
|
|
280
|
+
export function TextShimmerLoader(props: TextShimmerLoaderProps) {
|
|
254
281
|
const size = () => props.size ?? 'md';
|
|
255
282
|
const textSizes = { sm: 'text-xs', md: 'text-sm', lg: 'text-base' };
|
|
256
283
|
return (
|
|
@@ -270,7 +297,7 @@ export function TextShimmerLoader(props: { text?: string; class?: string; size?:
|
|
|
270
297
|
|
|
271
298
|
// --- TextDotsLoader ---
|
|
272
299
|
|
|
273
|
-
export function TextDotsLoader(props:
|
|
300
|
+
export function TextDotsLoader(props: TextDotsLoaderProps) {
|
|
274
301
|
const size = () => props.size ?? 'md';
|
|
275
302
|
const textSizes = { sm: 'text-xs', md: 'text-sm', lg: 'text-base' };
|
|
276
303
|
return (
|
|
@@ -3,8 +3,12 @@ import { cn } from "../utils/cn";
|
|
|
3
3
|
|
|
4
4
|
// --- MessageSkills ---
|
|
5
5
|
|
|
6
|
+
/** One skill badge. Also the shape of `<kai-skills>`' `skills` property and of a
|
|
7
|
+
* `<kai-skill>` light-DOM child. */
|
|
6
8
|
export interface Skill {
|
|
9
|
+
/** Stable identifier for the skill. */
|
|
7
10
|
id: string;
|
|
11
|
+
/** Human-readable skill name shown on the badge. */
|
|
8
12
|
name: string;
|
|
9
13
|
}
|
|
10
14
|
|