@kitn.ai/ui 0.28.0 → 0.30.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 +11 -7
- package/dist/{Icon-DObhsRtm.js → Icon-BzBET3E-.js} +1 -1
- package/dist/{action-icons-CcgNN2oT.js → action-icons-DaW2pU6m.js} +1 -1
- package/dist/agent-tooling/construct/public.d.ts +15 -0
- package/dist/agent-tooling/construct/schema.d.ts +111 -0
- package/dist/arrow-down-D783iMJj.js +1 -0
- package/dist/arrow-left-0VLM5kyg.js +1 -0
- package/dist/artifact-DGjzHYUT.js +1 -0
- package/dist/{attachments-Qr4kg-2b.js → attachments-YvXHlg88.js} +1 -1
- package/dist/{audio-visualizer-DToYdfSc.js → audio-visualizer-9lz5IHsL.js} +1 -1
- package/dist/{badge-CdEu_jn2.js → badge-Dh_vp8A5.js} +1 -1
- package/dist/{bell-DQAAOpDz.js → bell-CT7_WUwS.js} +1 -1
- package/dist/{button-DkuOnGLy.js → button-C_3te6fm.js} +1 -1
- package/dist/{card-renderer-Jx70m6_l.js → card-renderer-DZVaGH2e.js} +1 -1
- package/dist/check-CiEOVnEN.js +1 -0
- package/dist/{checkbox-D7iRB3nL.js → checkbox-Bu2T2e0U.js} +1 -1
- package/dist/{checkbox-group-B2_rpoPM.js → checkbox-group-BiryEXPQ.js} +1 -1
- package/dist/chevron-down-CSobuZRG.js +1 -0
- package/dist/chevron-right-DR9ZAP-2.js +1 -0
- package/dist/{choice-card-m0BYqqOK.js → choice-card-CM6IjkmL.js} +1 -1
- package/dist/circle-BC66EYF7.js +1 -0
- package/dist/circle-check-BqmahW0O.js +1 -0
- package/dist/{circle-x-BPG0iPst.js → circle-x-Bk-dA5Wf.js} +1 -1
- package/dist/{code-block-ClMLKb7C.js → code-block-B26t-Q7q.js} +1 -1
- package/dist/{collapsible-B4DlWicL.js → collapsible-Bhc636Cf.js} +1 -1
- package/dist/components/builder-composer-triggers.d.ts +62 -0
- package/dist/components/builder-layout.d.ts +54 -0
- package/dist/components/builder-message-actions.d.ts +72 -0
- package/dist/components/builder-panel.d.ts +189 -0
- package/dist/components/builder-preview.d.ts +11 -0
- package/dist/components/builder-shell-controls.d.ts +69 -0
- package/dist/components/builder-skeleton.d.ts +58 -0
- package/dist/components/builder-start.d.ts +75 -0
- package/dist/components/builder-workspace-variants.d.ts +23 -0
- package/dist/components/captions.d.ts +66 -0
- package/dist/{composer-sQ0HcvyG.js → composer-DMI85B6j.js} +1 -1
- package/dist/{confirm-card-rQWDQsnC.js → confirm-card-B0YIAwXp.js} +1 -1
- package/dist/construct-cli.es.js +3 -3
- package/dist/construct.d.ts +5 -0
- package/dist/construct.js +327 -0
- package/dist/{context-0kg4ZX1J.js → context-DWgfhqWp.js} +1 -1
- package/dist/controllable-BagRpyHv.js +1 -0
- package/dist/{conversation-item-BxwQLaFJ.js → conversation-item-BsOsVGmT.js} +1 -1
- package/dist/{conversation-list-BCfGN1JU.js → conversation-list-aX3Vtc7L.js} +1 -1
- package/dist/{copy-n9u9rqpi.js → copy-BmEwsNhJ.js} +1 -1
- package/dist/core-C8fzo39E.js +1 -12
- package/dist/{create-tween-uPkArjIG.js → create-tween-CNOAU3Fx.js} +1 -1
- package/dist/{create-tween-C-q-JCM-.js → create-tween-WfqiENls.js} +1 -1
- package/dist/{create-tween-CRrJXxBd.js → create-tween-wlFtW9Kh.js} +1 -1
- package/dist/{create-tween-DZ3RRDHD.js → create-tween-zt79ba32.js} +1 -1
- package/dist/{default-input-CaMrJkgH.js → default-input-DMV5Eaze.js} +1 -1
- package/dist/define-CI0y3eE4.js +1 -0
- package/dist/define.js +40 -40
- package/dist/define.server.js +45 -45
- package/dist/{disclosure-WUImBbDv.js → disclosure-NnACBxsC.js} +1 -1
- package/dist/{dropdown-wZVeJOMd.js → dropdown-DT7G0RGR.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/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.js +1 -1
- package/dist/elements/checkbox.js +1 -1
- 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/dialog.js +1 -1
- package/dist/elements/dock.js +1 -1
- package/dist/elements/dropdown.js +1 -1
- package/dist/elements/editable-label.js +1 -1
- 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.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/radio-group.js +1 -1
- 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 +1 -1
- 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.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/slider.js +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/{ellipsis-CbOpJnU3.js → ellipsis-6pJ7SxYT.js} +1 -1
- package/dist/{embed-CrfjkbUG.js → embed-BMje-nxj.js} +1 -1
- package/dist/engine-javascript-C1x7zo1_.js +1 -141
- package/dist/{external-link-ByXAwBBQ.js → external-link-Beh9DKeR.js} +1 -1
- package/dist/{file-text-DMib2qwt.js → file-text-D1GPfZ8Q.js} +1 -1
- package/dist/{file-tree-CJqM2aP7.js → file-tree-Dwj2lqg-.js} +1 -1
- package/dist/{folder-_BAb929C.js → folder-b6D8x1DY.js} +1 -1
- package/dist/{form-DSZgZQZk.js → form-DWgdxDXu.js} +1 -1
- package/dist/{hover-card-BQbul9eq.js → hover-card-CWRkqm40.js} +1 -1
- package/dist/{icon-CdcfRhYI.js → icon-CL0jdhsf.js} +1 -1
- package/dist/index.js +1741 -1725
- package/dist/index.server.js +1582 -1566
- package/dist/{info-DsFjGuI_.js → info-0cOUherQ.js} +1 -1
- package/dist/{input-DKbmkMos.js → input-BH6Ru91Q.js} +1 -1
- package/dist/kai.es.js +1 -1
- package/dist/{kbd-PvdGhX4s.js → kbd-DRAnVtNX.js} +1 -1
- package/dist/{link-zF8PzWfF.js → link-Dlr0vssB.js} +1 -1
- package/dist/{link-preview-DbM1866N.js → link-preview-DODgRyV9.js} +1 -1
- package/dist/loader-KvJB6NrT.js +1 -0
- package/dist/{markdown-LMvmAyBk.js → markdown-DX9tuJVj.js} +1 -1
- package/dist/mcp.es.js +9 -5
- package/dist/{message-BYZECyek.js → message-BqQ7Ot5q.js} +1 -1
- package/dist/{message-BSsgvHvf.js → message-DkaGfBd8.js} +1 -1
- package/dist/message-circle-BPpp5QKv.js +1 -0
- package/dist/message-square-BLbsd9BJ.js +1 -0
- package/dist/{minimize-2-BQRoBV1V.js → minimize-2-CyOHJwcN.js} +1 -1
- package/dist/{model-switcher-CMpCOYcB.js → model-switcher-0hrKDiK2.js} +1 -1
- package/dist/{overlay-Cb-MkyDa.js → overlay-DBMFXie6.js} +1 -1
- package/dist/{panel-right-i8warFxT.js → panel-right-t8SWJL6e.js} +1 -1
- package/dist/{paperclip-ByY3UVO6.js → paperclip-CdzuOjbU.js} +1 -1
- package/dist/play-BXy1u7rW.js +1 -0
- package/dist/primitives/use-auto-resize.d.ts +11 -0
- package/dist/{progress-bar-jVAHvMUf.js → progress-bar-CiBtxMWT.js} +1 -1
- package/dist/{prompt-suggestion-CD-qtNgC.js → prompt-suggestion-I_DHP21i.js} +1 -1
- package/dist/{radio-BsoBMhkF.js → radio-C_p3n39l.js} +1 -1
- package/dist/{reasoning-4kBPtlTx.js → reasoning-BDwy_tIe.js} +1 -1
- package/dist/register-impl-DvEnhIxx.js +424 -0
- package/dist/{resizable-uPmY9VY-.js → resizable-SYC-fStM.js} +1 -1
- package/dist/{rotate-ccw-B2xn93py.js → rotate-ccw-B1nwmwuY.js} +1 -1
- package/dist/{rotate-cw-CMVLoCyH.js → rotate-cw-CLAnBcm1.js} +1 -1
- package/dist/{scroll-area-BqLUo8ZZ.js → scroll-area-zRyXoLhI.js} +1 -1
- package/dist/{scroll-button-DslXiJyL.js → scroll-button-jzrbYCG9.js} +1 -1
- package/dist/{select-2cLRtPGT.js → select-DM-0nEe0.js} +1 -1
- package/dist/{separator-BWQtNJcM.js → separator-BToOOoOt.js} +1 -1
- package/dist/{settings-BBR63jLg.js → settings-PaGo_S4U.js} +1 -1
- package/dist/{settings-group-B2ciy-Iw.js → settings-group-BFXGIfXq.js} +1 -1
- package/dist/{skeleton-CkHI-HgC.js → skeleton-DYpmFnnm.js} +1 -1
- package/dist/{slider-DDR9U-i0.js → slider-ebutAmkQ.js} +1 -1
- package/dist/{solid-DruVOXnf.js → solid-15v_3WVL.js} +3563 -3412
- package/dist/{solid-BzCFdL25.js → solid-5P-otgdi.js} +4502 -4296
- package/dist/solid.d.ts +6 -0
- package/dist/solid.js +259 -254
- package/dist/solid.server.js +259 -254
- package/dist/{source-GEnFF528.js → source-c1gpRl9h.js} +1 -1
- package/dist/{star-CilHq8GP.js → star-pcV_3LqF.js} +1 -1
- package/dist/{store-Ciyk6eZG.js → store-CSgbFFCg.js} +1 -1
- package/dist/{switch-KkeQIbuH.js → switch-Bh2OdLV2.js} +1 -1
- package/dist/{tasks-card-BrN4bggJ.js → tasks-card-CbqQAn2S.js} +1 -1
- package/dist/text-shimmer-BSzgEnDH.js +1 -0
- package/dist/textarea-DrYNt_0z.js +1 -0
- package/dist/theme.tokens.css +22 -21
- package/dist/{thumbs-up-CsT9Wzb9.js → thumbs-up-BL3-NenK.js} +1 -1
- package/dist/{toast-store-tgK6MuMv.js → toast-store-DkOlYczt.js} +1 -1
- package/dist/{tool-DzUjIBT8.js → tool-CeIWUVUe.js} +1 -1
- package/dist/{tooltip-Bkkg_4t0.js → tooltip-GA-nmg06.js} +1 -1
- package/dist/{trash-2-jBKxjGGQ.js → trash-2-CT66QWlm.js} +1 -1
- package/dist/{triangle-alert-DlQ68ppf.js → triangle-alert-CeHLWxhD.js} +1 -1
- package/dist/ui/color-field.d.ts +48 -0
- package/dist/ui/textarea.d.ts +4 -0
- package/dist/ui/toggle-chip.d.ts +40 -0
- package/dist/{upload-TcAHXv9W.js → upload-9Csb0F0J.js} +1 -1
- package/dist/{use-card-resolution-DaZqAdWf.js → use-card-resolution-Zg0a08Z-.js} +1 -1
- package/dist/{variant-aurora-DbW_OWL2.js → variant-aurora-4VBQHIKV.js} +1 -1
- package/dist/{variant-aurora-CNmfHhcx.js → variant-aurora-DBeCAQNk.js} +2 -2
- package/dist/{variant-aurora-D6GsdTPA.js → variant-aurora-FzHVXHby.js} +2 -2
- package/dist/{variant-aurora-BhLuYxJR.js → variant-aurora-LE3fqxgw.js} +1 -1
- package/dist/{variant-custom-BvYHR62b.js → variant-custom-AFRGcOBS.js} +1 -1
- package/dist/{variant-custom-DV2x254s.js → variant-custom-BQkNuPpE.js} +2 -2
- package/dist/{variant-custom-BRvaNHSi.js → variant-custom-DI5R0rln.js} +1 -1
- package/dist/{variant-custom-DMTrEO5w.js → variant-custom-WWnrrRHS.js} +2 -2
- package/dist/{variant-wave-CyBueXj9.js → variant-wave-DUCbH5oI.js} +2 -2
- package/dist/{variant-wave-BNMGrDfj.js → variant-wave-DuQV7DhQ.js} +2 -2
- package/dist/{variant-wave-BpDd8t3Z.js → variant-wave-nSI2sfII.js} +1 -1
- package/dist/{variant-wave-sp-qwsdI.js → variant-wave-wTP5v_jU.js} +1 -1
- package/dist/x-eiO9V6J6.js +1 -0
- package/{src/elements/styles.css → kit-base.css} +27 -44
- package/package.json +32 -17
- package/solid.css +33 -0
- package/theme.css +39 -23
- package/bin/route.test.js +0 -58
- package/dist/arrow-down-CjRU3JgV.js +0 -1
- package/dist/arrow-left-Bnpb1UEW.js +0 -1
- package/dist/artifact-Bwt7OgcR.js +0 -1
- package/dist/check-njkVdZu2.js +0 -1
- package/dist/chevron-down-B72s6PXR.js +0 -1
- package/dist/chevron-right-BatuHzUm.js +0 -1
- package/dist/circle-check-B62pODB3.js +0 -1
- package/dist/circle-zx0ByzY9.js +0 -1
- package/dist/controllable-CnGpMF6r.js +0 -1
- package/dist/define-By-uL588.js +0 -1
- package/dist/loader-BM4CEz4G.js +0 -1
- package/dist/message-circle-DruwObfX.js +0 -1
- package/dist/message-square-BG6q6mlm.js +0 -1
- package/dist/play-BvKKq3fX.js +0 -1
- package/dist/register-impl-B1hLkrI8.js +0 -424
- package/dist/text-shimmer-Dcj1MHuq.js +0 -1
- package/dist/textarea-Dpvbngbg.js +0 -1
- package/dist/x-Z5UntkIJ.js +0 -1
- package/src/agent-tooling/README.md +0 -192
- package/src/agent-tooling/archetypes.ts +0 -205
- package/src/agent-tooling/catalog/README.md +0 -676
- package/src/agent-tooling/catalog/catalog-types.ts +0 -231
- package/src/agent-tooling/catalog/fabrications.ts +0 -96
- package/src/agent-tooling/catalog/invariants.ts +0 -284
- package/src/agent-tooling/catalog/labs-titles.ts +0 -114
- package/src/agent-tooling/catalog/scenarios.ts +0 -87
- package/src/agent-tooling/catalog/surfaces.ts +0 -347
- package/src/agent-tooling/construct/cli-entry.ts +0 -8
- package/src/agent-tooling/construct/cli.ts +0 -147
- package/src/agent-tooling/construct/codegen.ts +0 -1635
- package/src/agent-tooling/construct/construct.v1.schema.json +0 -319
- package/src/agent-tooling/construct/dev.ts +0 -148
- package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +0 -7
- package/src/agent-tooling/construct/fixtures/ops-console.construct.json +0 -44
- package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +0 -32
- package/src/agent-tooling/construct/schema.ts +0 -452
- package/src/agent-tooling/integrations/anthropic.ts +0 -442
- package/src/agent-tooling/integrations/cloudflare.ts +0 -218
- package/src/agent-tooling/integrations/langgraph.ts +0 -133
- package/src/agent-tooling/integrations/mastra.ts +0 -182
- package/src/agent-tooling/integrations/mock.ts +0 -148
- package/src/agent-tooling/integrations/ollama.ts +0 -97
- package/src/agent-tooling/integrations/openai.ts +0 -95
- package/src/agent-tooling/integrations/openrouter.ts +0 -82
- package/src/agent-tooling/integrations/pi.ts +0 -176
- package/src/agent-tooling/integrations/pydantic-ai.ts +0 -108
- package/src/agent-tooling/integrations/vercel-ai-sdk.ts +0 -398
- package/src/agent-tooling/mcp/css-raw.d.ts +0 -12
- package/src/agent-tooling/mcp/manifest.ts +0 -422
- package/src/agent-tooling/mcp/server.ts +0 -116
- package/src/agent-tooling/mcp/stdio.ts +0 -18
- package/src/agent-tooling/mcp/tools/construct.ts +0 -130
- package/src/agent-tooling/mcp/tools/debug.ts +0 -621
- package/src/agent-tooling/mcp/tools/reference.ts +0 -980
- package/src/agent-tooling/mcp/tools/scaffold.ts +0 -6708
- package/src/agent-tooling/mcp/tools/theme.ts +0 -456
- package/src/agent-tooling/mcp/tools/types.ts +0 -14
- package/src/agent-tooling/mcp/validate-args.ts +0 -141
- package/src/agent-tooling/recipes/composed-thread.ts +0 -714
- package/src/agent-tooling/recipes/index.ts +0 -22
- package/src/agent-tooling/recipes/types.ts +0 -32
- package/src/agent-tooling/registry.ts +0 -132
- package/src/agent-tooling/route-emit.ts +0 -305
- package/src/agent-tooling/types.ts +0 -390
- package/src/components/artifact-card.tsx +0 -120
- package/src/components/artifact.tsx +0 -914
- package/src/components/attachment-types.ts +0 -66
- package/src/components/attachments.tsx +0 -536
- package/src/components/audio-visualizer/audio-visualizer.voice-fixture.ts +0 -257
- package/src/components/audio-visualizer/aurora.glsl.ts +0 -330
- package/src/components/audio-visualizer/fit-scale.ts +0 -112
- package/src/components/audio-visualizer/index.tsx +0 -528
- package/src/components/audio-visualizer/labs/lab-choreography.ts +0 -187
- package/src/components/audio-visualizer/labs/lab-shaders.ts +0 -363
- package/src/components/audio-visualizer/labs/lab-visualizer.tsx +0 -102
- package/src/components/audio-visualizer/shader-canvas.tsx +0 -876
- package/src/components/audio-visualizer/sizes.ts +0 -54
- package/src/components/audio-visualizer/variant-aurora.tsx +0 -305
- package/src/components/audio-visualizer/variant-bar.tsx +0 -175
- package/src/components/audio-visualizer/variant-custom.tsx +0 -344
- package/src/components/audio-visualizer/variant-grid.tsx +0 -175
- package/src/components/audio-visualizer/variant-radial.tsx +0 -163
- package/src/components/audio-visualizer/variant-wave.tsx +0 -130
- package/src/components/audio-visualizer/wave.glsl.ts +0 -130
- package/src/components/card-fallback.tsx +0 -60
- package/src/components/card-renderer.tsx +0 -220
- package/src/components/card.tsx +0 -212
- package/src/components/chain-of-thought.tsx +0 -348
- package/src/components/chat-container.tsx +0 -89
- package/src/components/chat-scope-picker.tsx +0 -57
- package/src/components/chat-thread.tsx +0 -1014
- package/src/components/checkpoint.tsx +0 -88
- package/src/components/choice-card.tsx +0 -743
- package/src/components/coachmark.tsx +0 -249
- package/src/components/code-block.tsx +0 -181
- package/src/components/composer-dom.ts +0 -159
- package/src/components/composer-highlight.ts +0 -242
- package/src/components/composer-history.ts +0 -82
- package/src/components/composer.tsx +0 -1075
- package/src/components/confirm-card.tsx +0 -402
- package/src/components/context.tsx +0 -377
- package/src/components/conversation-item.tsx +0 -241
- package/src/components/conversation-list.tsx +0 -429
- package/src/components/conversation-panel.tsx +0 -118
- package/src/components/dismissed-stub.tsx +0 -80
- package/src/components/embed.tsx +0 -200
- package/src/components/empty.tsx +0 -177
- package/src/components/feedback-bar.tsx +0 -166
- package/src/components/file-tree.tsx +0 -530
- package/src/components/file-upload.tsx +0 -167
- package/src/components/form-widgets.tsx +0 -525
- package/src/components/form.tsx +0 -1296
- package/src/components/home-panel.tsx +0 -159
- package/src/components/image.tsx +0 -65
- package/src/components/link-preview.tsx +0 -195
- package/src/components/loader.tsx +0 -367
- package/src/components/markdown.tsx +0 -162
- package/src/components/message-skills.tsx +0 -40
- package/src/components/message.tsx +0 -765
- package/src/components/model-switcher.tsx +0 -132
- package/src/components/prompt-input.tsx +0 -188
- package/src/components/prompt-suggestion.tsx +0 -150
- package/src/components/reasoning.tsx +0 -293
- package/src/components/response-compare-types.ts +0 -152
- package/src/components/response-compare.tsx +0 -455
- package/src/components/response-stream.tsx +0 -109
- package/src/components/screen.tsx +0 -181
- package/src/components/scroll-button.tsx +0 -93
- package/src/components/source.tsx +0 -192
- package/src/components/tasks-card.tsx +0 -801
- package/src/components/text-shimmer.tsx +0 -37
- package/src/components/thinking-bar.tsx +0 -50
- package/src/components/thread.tsx +0 -228
- package/src/components/toast.tsx +0 -503
- package/src/components/tool-classify.ts +0 -26
- package/src/components/tool-types.ts +0 -49
- package/src/components/tool.tsx +0 -190
- package/src/components/use-card-resolution.ts +0 -44
- package/src/components/voice-input.tsx +0 -222
- package/src/components/voice-output.tsx +0 -242
- package/src/components/widget-tab-bar.tsx +0 -73
- package/src/components/workspace-shell.tsx +0 -285
- package/src/diagnostics/hook.ts +0 -352
- package/src/diagnostics/index.ts +0 -82
- package/src/diagnostics/report-request.ts +0 -296
- package/src/elements/agent-card.tsx +0 -67
- package/src/elements/artifact.tsx +0 -194
- package/src/elements/attachments.tsx +0 -140
- package/src/elements/audio-visualizer.tsx +0 -227
- package/src/elements/autoloader.ts +0 -89
- package/src/elements/avatar.tsx +0 -33
- package/src/elements/badge.tsx +0 -32
- package/src/elements/button.tsx +0 -149
- package/src/elements/card.tsx +0 -133
- package/src/elements/cards.tsx +0 -266
- package/src/elements/chain-of-thought.tsx +0 -141
- package/src/elements/chat-scope-picker.tsx +0 -65
- package/src/elements/chat-types.ts +0 -102
- package/src/elements/chat-workspace.tsx +0 -188
- package/src/elements/chat.tsx +0 -304
- package/src/elements/checkbox-group.tsx +0 -164
- package/src/elements/checkbox.tsx +0 -134
- package/src/elements/checkpoint.tsx +0 -47
- package/src/elements/choice.tsx +0 -100
- package/src/elements/coachmark.tsx +0 -90
- package/src/elements/code-block.tsx +0 -60
- package/src/elements/command.tsx +0 -197
- package/src/elements/compare.tsx +0 -111
- package/src/elements/compiled.css +0 -2
- package/src/elements/composer.tsx +0 -162
- package/src/elements/confirm-card.tsx +0 -76
- package/src/elements/context-meter.tsx +0 -107
- package/src/elements/conversation-item.tsx +0 -120
- package/src/elements/conversation-list.tsx +0 -203
- package/src/elements/css.ts +0 -5
- package/src/elements/default-input.tsx +0 -392
- package/src/elements/define-entry.ts +0 -12
- package/src/elements/define.tsx +0 -563
- package/src/elements/diagnostic-events.ts +0 -114
- package/src/elements/dialog.tsx +0 -145
- package/src/elements/disclosure.ts +0 -95
- package/src/elements/dock.tsx +0 -215
- package/src/elements/dropdown.tsx +0 -123
- package/src/elements/editable-label.tsx +0 -140
- package/src/elements/element-data-types.ts +0 -152
- package/src/elements/element-diagnostics.ts +0 -392
- package/src/elements/element-manifest.json +0 -354
- package/src/elements/element-nonscalar.json +0 -187
- package/src/elements/element-types.d.ts +0 -4353
- package/src/elements/embed.tsx +0 -35
- package/src/elements/empty.tsx +0 -29
- package/src/elements/feedback-bar.tsx +0 -66
- package/src/elements/file-tree.tsx +0 -62
- package/src/elements/file-upload.tsx +0 -44
- package/src/elements/form.tsx +0 -94
- package/src/elements/hover-card.tsx +0 -80
- package/src/elements/icon.tsx +0 -41
- package/src/elements/image.tsx +0 -32
- package/src/elements/input.tsx +0 -492
- package/src/elements/kbd.tsx +0 -45
- package/src/elements/link-preview.tsx +0 -34
- package/src/elements/loader.tsx +0 -25
- package/src/elements/markdown.tsx +0 -38
- package/src/elements/menu.tsx +0 -241
- package/src/elements/message-skills.tsx +0 -83
- package/src/elements/message.tsx +0 -361
- package/src/elements/model-switcher.tsx +0 -121
- package/src/elements/nav.tsx +0 -87
- package/src/elements/notice.tsx +0 -53
- package/src/elements/pane-grid.tsx +0 -111
- package/src/elements/pane-group.tsx +0 -119
- package/src/elements/pane.tsx +0 -129
- package/src/elements/popover.tsx +0 -81
- package/src/elements/progress-bar.tsx +0 -39
- package/src/elements/prompt-dock.tsx +0 -82
- package/src/elements/prompt-input.tsx +0 -240
- package/src/elements/prompt-suggestions.tsx +0 -113
- package/src/elements/radio-group.tsx +0 -129
- package/src/elements/reasoning.tsx +0 -71
- package/src/elements/register-impl.ts +0 -148
- package/src/elements/register.ts +0 -76
- package/src/elements/remote.tsx +0 -225
- package/src/elements/resizable.globals.d.ts +0 -36
- package/src/elements/resizable.tsx +0 -704
- package/src/elements/response-stream.tsx +0 -40
- package/src/elements/screen.tsx +0 -90
- package/src/elements/scroll-area.tsx +0 -33
- package/src/elements/scroll-button.tsx +0 -179
- package/src/elements/search.tsx +0 -185
- package/src/elements/segmented.tsx +0 -129
- package/src/elements/select.tsx +0 -165
- package/src/elements/separator.tsx +0 -36
- package/src/elements/setting-item.tsx +0 -50
- package/src/elements/settings-group.tsx +0 -37
- package/src/elements/skeleton.tsx +0 -45
- package/src/elements/slider.tsx +0 -171
- package/src/elements/slot-text.ts +0 -73
- package/src/elements/slots.ts +0 -787
- package/src/elements/source.tsx +0 -126
- package/src/elements/status.tsx +0 -42
- package/src/elements/switch.tsx +0 -118
- package/src/elements/tabs.tsx +0 -95
- package/src/elements/tasks.tsx +0 -103
- package/src/elements/text-shimmer.tsx +0 -28
- package/src/elements/thinking-bar.tsx +0 -43
- package/src/elements/thread.tsx +0 -139
- package/src/elements/toast.tsx +0 -106
- package/src/elements/tool.tsx +0 -78
- package/src/elements/tooltip.tsx +0 -85
- package/src/elements/validate-messages.ts +0 -76
- package/src/elements/voice-input.tsx +0 -100
- package/src/elements/voice-output.tsx +0 -82
- package/src/index.ts +0 -430
- package/src/primitives/audio-bands.ts +0 -174
- package/src/primitives/card-component-types.ts +0 -63
- package/src/primitives/card-contract.ts +0 -80
- package/src/primitives/card-data-types.ts +0 -361
- package/src/primitives/card-host.tsx +0 -37
- package/src/primitives/card-recovery.ts +0 -160
- package/src/primitives/card-registry.tsx +0 -78
- package/src/primitives/card-resolution.ts +0 -36
- package/src/primitives/card-routing.ts +0 -85
- package/src/primitives/card-schemas/artifact.schema.json +0 -92
- package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
- package/src/primitives/card-schemas/card-event.schema.json +0 -12
- package/src/primitives/card-schemas/choice.schema.json +0 -75
- package/src/primitives/card-schemas/confirm.schema.json +0 -65
- package/src/primitives/card-schemas/embed.schema.json +0 -63
- package/src/primitives/card-schemas/form.result.schema.json +0 -7
- package/src/primitives/card-schemas/form.schema.json +0 -53
- package/src/primitives/card-schemas/link.schema.json +0 -54
- package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
- package/src/primitives/card-schemas/tasks.schema.json +0 -83
- package/src/primitives/card-tags.ts +0 -61
- package/src/primitives/card-validate-cards.ts +0 -255
- package/src/primitives/card-validate-schemas.ts +0 -58
- package/src/primitives/card-validate.ts +0 -131
- package/src/primitives/chat-config.tsx +0 -103
- package/src/primitives/composer-model.ts +0 -49
- package/src/primitives/composer-triggers.ts +0 -35
- package/src/primitives/controllable.ts +0 -21
- package/src/primitives/conversation-store.ts +0 -248
- package/src/primitives/create-kai-chat.ts +0 -66
- package/src/primitives/create-tween.ts +0 -266
- package/src/primitives/embed-providers.ts +0 -254
- package/src/primitives/field-mask.ts +0 -256
- package/src/primitives/field-semantics.ts +0 -115
- package/src/primitives/highlighter.ts +0 -157
- package/src/primitives/input-mask.ts +0 -853
- package/src/primitives/link-preview.ts +0 -87
- package/src/primitives/message-feedback.ts +0 -124
- package/src/primitives/pdf-preview.ts +0 -121
- package/src/primitives/toast-store.ts +0 -338
- package/src/primitives/url-scheme-policy.ts +0 -70
- package/src/primitives/use-audio-analysis.ts +0 -340
- package/src/primitives/use-auto-resize.ts +0 -31
- package/src/primitives/use-resize-observer.ts +0 -45
- package/src/primitives/use-sequencer.ts +0 -72
- package/src/primitives/use-speech-recognition.ts +0 -146
- package/src/primitives/use-stick-to-bottom.ts +0 -75
- package/src/primitives/use-text-stream.ts +0 -143
- package/src/primitives/use-voice-recorder.ts +0 -62
- package/src/primitives/visualizer-sequences.ts +0 -350
- package/src/remote/host-embed.ts +0 -345
- package/src/remote/index.ts +0 -2
- package/src/remote/origin.ts +0 -30
- package/src/remote/provider-runtime.ts +0 -262
- package/src/remote/provider.ts +0 -2
- package/src/remote/validate.ts +0 -22
- package/src/remote/version.ts +0 -12
- package/src/remote/wire.ts +0 -48
- package/src/schemas/from-tool-call.ts +0 -151
- package/src/schemas/index.ts +0 -341
- package/src/schemas/provider-subsets.ts +0 -538
- package/src/schemas/registry.ts +0 -355
- package/src/schemas/tool-defs.ts +0 -793
- package/src/solid.ts +0 -173
- package/src/state/index.ts +0 -44
- package/src/state/messages.ts +0 -53
- package/src/state/mock.ts +0 -297
- package/src/state/parts.ts +0 -295
- package/src/state/persistence.ts +0 -180
- package/src/state/stream.ts +0 -246
- package/src/state/suggestions.ts +0 -9
- package/src/state/threads.ts +0 -142
- package/src/test-utils/fake-clock.ts +0 -88
- package/src/types.ts +0 -95
- package/src/ui/action-icons.ts +0 -53
- package/src/ui/agent-card.tsx +0 -218
- package/src/ui/avatar.tsx +0 -23
- package/src/ui/badge.tsx +0 -21
- package/src/ui/button.tsx +0 -49
- package/src/ui/card.tsx +0 -245
- package/src/ui/checkbox-group.tsx +0 -153
- package/src/ui/checkbox.tsx +0 -63
- package/src/ui/collapsible.tsx +0 -163
- package/src/ui/command.tsx +0 -103
- package/src/ui/dialog.tsx +0 -223
- package/src/ui/dock.tsx +0 -630
- package/src/ui/dropdown.tsx +0 -636
- package/src/ui/editable-label.tsx +0 -112
- package/src/ui/hover-card.tsx +0 -345
- package/src/ui/icon.tsx +0 -167
- package/src/ui/input.tsx +0 -391
- package/src/ui/kbd.tsx +0 -118
- package/src/ui/nav.tsx +0 -282
- package/src/ui/notice.tsx +0 -84
- package/src/ui/overlay.tsx +0 -277
- package/src/ui/pane-grid.tsx +0 -117
- package/src/ui/pane-group.tsx +0 -291
- package/src/ui/pane.tsx +0 -193
- package/src/ui/popover.tsx +0 -106
- package/src/ui/progress-bar.tsx +0 -83
- package/src/ui/prompt-dock.tsx +0 -145
- package/src/ui/radio.tsx +0 -150
- package/src/ui/resizable.tsx +0 -693
- package/src/ui/scroll-area.tsx +0 -26
- package/src/ui/segmented.tsx +0 -109
- package/src/ui/select.tsx +0 -168
- package/src/ui/separator.tsx +0 -10
- package/src/ui/settings-group.tsx +0 -67
- package/src/ui/skeleton.tsx +0 -73
- package/src/ui/slider.tsx +0 -178
- package/src/ui/status.tsx +0 -48
- package/src/ui/switch.tsx +0 -119
- package/src/ui/tabs.tsx +0 -168
- package/src/ui/textarea.tsx +0 -21
- package/src/ui/tooltip.tsx +0 -118
- package/src/utils/cn.ts +0 -30
- package/src/wire/chunk.ts +0 -248
- package/src/wire/consume.ts +0 -599
- package/src/wire/diagnostics.ts +0 -727
- package/src/wire/encode-probe.ts +0 -214
- package/src/wire/encode.ts +0 -947
- package/src/wire/files.ts +0 -342
- package/src/wire/formats/anthropic.ts +0 -274
- package/src/wire/formats/openai.ts +0 -228
- package/src/wire/index.ts +0 -95
- package/src/wire/media-types.ts +0 -344
- package/src/wire/read.ts +0 -396
- package/src/wire/sink-helpers.ts +0 -50
- package/src/wire/sse.ts +0 -153
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as o,c as i,q as s,D as c}from"./define-By-uL588.js";import{c as m}from"./cn-DN5AWfiS.js";function u(a){const[r,e]=o(a,["as","class","duration","spread","children"]),t=()=>Math.min(Math.max(r.spread??20,5),45),n=()=>r.as??"span";return i(c,s({get component(){return n()},get class(){return m("bg-size-[200%_auto] bg-clip-text font-medium text-transparent","animate-[shimmer_4s_infinite_linear]",r.class)},get style(){return{"background-image":`linear-gradient(to right, var(--color-muted-foreground) ${50-t()}%, var(--color-foreground) 50%, var(--color-muted-foreground) ${50+t()}%)`,"animation-duration":`${r.duration??4}s`}}},e,{get children(){return r.children}}))}export{u as T};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as s,s as a,u,p as l,q as f,t as g}from"./define-By-uL588.js";import{c}from"./cn-DN5AWfiS.js";function h(i={}){let e;function r(){if(!e)return;e.style.height="auto";const t=e.scrollHeight;i.maxHeight&&t>i.maxHeight?(e.style.height=`${i.maxHeight}px`,e.style.overflowY="auto"):(e.style.height=`${t}px`,e.style.overflowY="hidden")}function n(t){e=t,t.addEventListener("input",r),requestAnimationFrame(r),s(()=>t.removeEventListener("input",r))}return{ref:n,resize:r}}var m=g("<textarea rows=1>");function d(i){const[e,r]=a(i,["class","maxHeight","autoResize"]),{ref:n}=h({maxHeight:e.maxHeight});return(()=>{var t=m(),o=e.autoResize!==!1?n:void 0;return typeof o=="function"&&u(o,t),l(t,f({get class(){return c("w-full resize-none rounded-md bg-transparent text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",e.class)}},r),!1,!1),t})()}export{d as T};
|
package/dist/x-Z5UntkIJ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as o}from"./Icon-DObhsRtm.js";import{c as m,q as r}from"./define-By-uL588.js";var e=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],t=a=>m(o,r(a,{name:"X",iconNode:e})),p=t;export{p as x};
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
# `agent-tooling/`
|
|
2
|
-
|
|
3
|
-
The kit's machine-facing front door: everything that makes AI coding agents
|
|
4
|
-
and CLIs fluent building with `@kitn.ai/ui`. It is packaging and tooling on
|
|
5
|
-
top of the library, not part of it — `grep -rn "agent-tooling"
|
|
6
|
-
packages/ui/src/components packages/ui/src/elements` returns no imports (only
|
|
7
|
-
a code comment and a test's `UNSCANNED_DIRS` entry mention the directory by
|
|
8
|
-
name). Nothing a consumer's chat UI renders depends on anything in here.
|
|
9
|
-
|
|
10
|
-
## The four parts
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
┌─────────────────────────┐
|
|
14
|
-
│ kai MCP server (mcp/) │
|
|
15
|
-
│ construct · scaffold · │
|
|
16
|
-
│ reference · theme · │
|
|
17
|
-
│ debug │
|
|
18
|
-
└───────┬─────────┬────────┘
|
|
19
|
-
consumes consumes
|
|
20
|
-
│ │
|
|
21
|
-
▼ ▼
|
|
22
|
-
┌────────────────┐ ┌──────────────────┐
|
|
23
|
-
│ construct/ │ │ catalog/ │
|
|
24
|
-
│ (schema→codegen │ │ (invariants, │
|
|
25
|
-
│ →cli engine) │ │ surfaces, │
|
|
26
|
-
└────────▲────────┘ │ fabrications, …) │
|
|
27
|
-
│ └───────────────────┘
|
|
28
|
-
standalone,
|
|
29
|
-
no MCP involved
|
|
30
|
-
│
|
|
31
|
-
┌────────┴────────┐
|
|
32
|
-
│ bin/mcp.js CLI │
|
|
33
|
-
│ validate/dev/ │
|
|
34
|
-
│ compile/eject │
|
|
35
|
-
└──────────────────┘
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
- **`mcp/`** — the `kai` MCP server. The tools in `mcp/tools/`:
|
|
39
|
-
- `construct.ts` — turn-by-turn authoring of a construct JSON file (one
|
|
40
|
-
JSON file → one web component); stateless, the harness owns the file.
|
|
41
|
-
- `scaffold.ts` — generates a full chat integration (framework + backend
|
|
42
|
-
route + integration wiring) from `agent-tooling/registry.ts` and
|
|
43
|
-
`agent-tooling/archetypes.ts` (backed by `agent-tooling/integrations/`).
|
|
44
|
-
- `reference.ts` — component/element/card lookup for an agent deciding what
|
|
45
|
-
to use.
|
|
46
|
-
- `theme.ts` — produces a `--kai-*` CSS token override block from a brand
|
|
47
|
-
color or description, resolved against the kit's own `theme.css`.
|
|
48
|
-
- `debug.ts` — diagnoses common `kai-*` integration failures from a
|
|
49
|
-
symptom/snippet, sourced from `apps/docs/src/content/docs/guides/for-ai-agents.mdx`.
|
|
50
|
-
- **`construct/`** — the construct engine: a declarative JSON format compiled
|
|
51
|
-
to a self-registering web component. Pipeline is `schema.ts` (Zod, single
|
|
52
|
-
source of truth) → `codegen.ts` (the one generation path — `kai dev`,
|
|
53
|
-
`kai compile`, and `kai eject` all call the same `generateProject`) →
|
|
54
|
-
`cli.ts` (the `validate | eject | dev | compile` subcommands). Fixtures
|
|
55
|
-
live in `construct/fixtures/` (`demo-widget`, `ops-console`,
|
|
56
|
-
`owner-widget`). The published JSON Schema artifact is
|
|
57
|
-
`construct/construct.v1.schema.json`, mirrored byte-identical at
|
|
58
|
-
`apps/docs/public/schemas/construct/v1.json`; both are guarded against
|
|
59
|
-
drift from the Zod source by `construct/schema-artifact.test.ts` (asserts
|
|
60
|
-
the checked-in artifact equals `z.toJSONSchema(ConstructSchema)` right now)
|
|
61
|
-
and regenerated by `scripts/gen-construct-schema.mjs` via `build:api`.
|
|
62
|
-
- **`catalog/`** — Zod-typed reference data, mostly independent of the
|
|
63
|
-
construct engine, each file feeding a specific consumer:
|
|
64
|
-
- `catalog-types.ts` — the shared Zod types (`SurfaceArchetype`,
|
|
65
|
-
`DeliveryTarget`, `WireReader`, `Backend`, …) the rest of the catalog is
|
|
66
|
-
built from.
|
|
67
|
-
- `invariants.ts` — the composition invariants an agent must hold, each
|
|
68
|
-
with an `enforcedBy` path and a `lint` script name; feeds
|
|
69
|
-
`invariants.test.ts` and the acceptance harness.
|
|
70
|
-
- `surfaces.ts` — the sorted inventory of product-shaped surfaces vs.
|
|
71
|
-
ingredients vs. corpus; feeds `surfaces.test.ts` and `derived.json`.
|
|
72
|
-
- `fabrications.ts` — tags agents have invented while working from an
|
|
73
|
-
acceptance pack (and what they should have used instead); renders the
|
|
74
|
-
pack's `FABRICATED.md`, checked against `derived.json` in both directions
|
|
75
|
-
by `fabrications.test.ts`.
|
|
76
|
-
- `scenarios.ts` — the acceptance deck (spec §6): prompts + what each
|
|
77
|
-
needs, written before the catalog it measures.
|
|
78
|
-
- `labs-titles.ts` — parses the real `Labs/…` story titles registered by
|
|
79
|
-
story files (TypeScript AST, not a regex), used to keep the catalog's
|
|
80
|
-
story inventory honest.
|
|
81
|
-
- `derived.json` — generated inventory of elements/props read by
|
|
82
|
-
`catalog-types.ts`, `fabrications.ts`, and `surfaces.ts` (and their
|
|
83
|
-
tests) rather than by anything outside the catalog.
|
|
84
|
-
- `catalog/README.md` — the catalog's own deeper documentation.
|
|
85
|
-
|
|
86
|
-
How they relate: the MCP's `construct` and `scaffold` tools **consume** the
|
|
87
|
-
construct engine and the catalogs — they don't reimplement authoring logic,
|
|
88
|
-
they call into `construct/schema.ts` / `construct/codegen.ts` and read the
|
|
89
|
-
registry/catalog data. The construct CLI (`bin/mcp.js validate|dev|compile|eject`,
|
|
90
|
-
built from `construct/cli-entry.ts` → `dist/construct-cli.es.js`) runs the
|
|
91
|
-
engine standalone, with no MCP server involved at all.
|
|
92
|
-
|
|
93
|
-
## Usage
|
|
94
|
-
|
|
95
|
-
- **`npx @kitn.ai/ui mcp`** starts the MCP server (the historical default
|
|
96
|
-
subcommand). For wiring it into a multi-harness setup, see the docs site's
|
|
97
|
-
agents guide: `apps/docs/src/content/docs/guides/for-ai-agents.mdx`.
|
|
98
|
-
- **CLI form**, no MCP: `node bin/mcp.js validate|dev|compile|eject <construct.json>`
|
|
99
|
-
(`bin/mcp.js` dispatches `dev`/`compile`/`eject`/`validate` to the construct
|
|
100
|
-
CLI and anything else, including `mcp` or no argument, to the MCP server;
|
|
101
|
-
an unrecognized subcommand is a loud error, not a silent fallthrough).
|
|
102
|
-
`eject` writes a real Solid project you own; `dev` gives a live-reload
|
|
103
|
-
preview; `compile` emits one self-registering `.js`.
|
|
104
|
-
- **Acceptance harness** (`packages/ui/scripts/acceptance-*.mjs`:
|
|
105
|
-
`acceptance-pack.mjs`, `acceptance-run.mjs`, `acceptance-eval.mjs`,
|
|
106
|
-
`acceptance-gate-compiles.mjs`) — builds and grades a coding agent's
|
|
107
|
-
from-scratch attempt at using the catalog with no kit source, per the
|
|
108
|
-
scenarios in `catalog/scenarios.ts`; this is how the catalog's own claims
|
|
109
|
-
get checked against a real agent rather than asserted.
|
|
110
|
-
|
|
111
|
-
## Worked example
|
|
112
|
-
|
|
113
|
-
`construct/fixtures/owner-widget.construct.json`, field by field:
|
|
114
|
-
|
|
115
|
-
- `"$schema"` — points at the published schema URL for editor validation.
|
|
116
|
-
- `"name": "acme-support"` — the construct's name; also the emitted custom
|
|
117
|
-
element's tag basis.
|
|
118
|
-
- `"layout": "widget"` — a floating launcher widget, not full-screen or docked.
|
|
119
|
-
- `"provider": { "mode": "mock" }` — no backend; canned responses (vs.
|
|
120
|
-
`mode: "endpoint"`, the consumer's own chat route).
|
|
121
|
-
- `"userId": "user_123"` — the identity value threaded through for
|
|
122
|
-
history/persistence.
|
|
123
|
-
- `"header": { "title": "Acme Support" }` — the chat header's title text.
|
|
124
|
-
- `"theme": { "unreadColor": "#38BDF8" }` — one branded token override.
|
|
125
|
-
- `"empty": { "title": ..., "description": ... }` — the empty-state copy
|
|
126
|
-
shown before the first message.
|
|
127
|
-
- `"widget": { "position": "top-start", "defaultOpen": true }` — widget-layout
|
|
128
|
-
placement and initial open state.
|
|
129
|
-
- `"capabilities.attachments.accept"` — allowed MIME patterns for uploads.
|
|
130
|
-
- `"capabilities.history.persistence": "local"` — history persisted in the
|
|
131
|
-
browser, not the consumer's backend.
|
|
132
|
-
- `"capabilities.starters"` — suggested first prompts.
|
|
133
|
-
- `"capabilities.reasoningOpen": true` — reasoning panels start expanded.
|
|
134
|
-
- `"capabilities.conversations": true` — enables the conversations sidebar.
|
|
135
|
-
|
|
136
|
-
`codegen.ts` turns this into a small, deterministic (no dates, no randomness,
|
|
137
|
-
fixed key order) Solid project: pure Solid interior composing
|
|
138
|
-
`@kitn.ai/ui/solid` components, provider glue built on `@kitn.ai/ui/state` +
|
|
139
|
-
`@kitn.ai/ui/wire` (never a hand-rolled SSE reader), and one
|
|
140
|
-
`defineWebComponent` facade carrying the tag, theme default, and slots. The
|
|
141
|
-
facade injects the kit's compiled CSS into the shadow root, so the generated
|
|
142
|
-
project needs no Tailwind and no CSS build step. `kai dev`, `kai compile`,
|
|
143
|
-
and `kai eject` all go through this same generation path — the preview is
|
|
144
|
-
the artifact, there is no separate interpreter to drift from it.
|
|
145
|
-
|
|
146
|
-
## Rules that bind changes here
|
|
147
|
-
|
|
148
|
-
- **Vocabulary never logic** — the construct format has no handlers and no
|
|
149
|
-
expressions; it describes, it doesn't script. `schema.ts` is `.strict()`
|
|
150
|
-
everywhere, so an unknown key is a loud rejection.
|
|
151
|
-
- **Widen, never restructure `schema.ts`** — it's the single source of truth;
|
|
152
|
-
never hand-edit the generated JSON Schema artifacts or restate an enum
|
|
153
|
-
elsewhere, read it off `ConstructSchema.shape` or the generated artifact.
|
|
154
|
-
- **Derive, don't type** — the published schema artifact is generated from
|
|
155
|
-
Zod (`scripts/gen-construct-schema.mjs`, run by `build:api`) and pinned by
|
|
156
|
-
`construct/schema-artifact.test.ts`; `verify:construct`'s layout and
|
|
157
|
-
capability axes are read off that same drift-guarded artifact rather than
|
|
158
|
-
hand-listed, so adding a layout or capability to the Zod schema moves what
|
|
159
|
-
the gate covers on its own.
|
|
160
|
-
- **`verify:construct`** (`scripts/verify-construct.mjs`) drives the real CLI
|
|
161
|
-
end to end against this checkout's own packed tarball — eject, install,
|
|
162
|
-
compile under the emitted tsconfig, build, and bundle inside a real
|
|
163
|
-
consumer app — for every layout/capability combination the schema
|
|
164
|
-
currently declares. No unit test in this tree leaves the process; this is
|
|
165
|
-
the one that does.
|
|
166
|
-
- **`verify:scaffold`** (`scripts/verify-scaffold-compiles.mjs`) compiles the
|
|
167
|
-
scaffolder's emitted front ends and backend routes under `tsc --strict`
|
|
168
|
-
across the integration × surface × framework axes derived from the
|
|
169
|
-
registry, plus structural checks (e.g. the Solid emit branches on every
|
|
170
|
-
`MessagePart` variant).
|
|
171
|
-
- **`verify:generated`** (`scripts/verify-generated-sync.mjs`) re-runs
|
|
172
|
-
`build:api` and fails if any derived artifact in the tree (including
|
|
173
|
-
catalog/manifest files this directory reads) differs from what the
|
|
174
|
-
generator produces right now — catches drift `nx build ui`'s NX cache can
|
|
175
|
-
hide.
|
|
176
|
-
- **The schema-artifact test pair** (`construct/schema-artifact.test.ts`)
|
|
177
|
-
catches a `schema.ts` edit that shipped without a regen, in the unit suite
|
|
178
|
-
itself rather than only in CI's `verify:generated`.
|
|
179
|
-
|
|
180
|
-
## Where deeper docs live
|
|
181
|
-
|
|
182
|
-
- Repo root [`CLAUDE.md`](../../../../CLAUDE.md)'s **Map** section for how
|
|
183
|
-
this directory sits relative to `primitives/`, `ui/`, `components/`, and
|
|
184
|
-
`elements/`.
|
|
185
|
-
- [`.claude/README.md`](../../../../.claude/README.md) for the project-local
|
|
186
|
-
skills/agents that exercise this tooling (notably `/consumer-regression`).
|
|
187
|
-
- The docs site's agents guide,
|
|
188
|
-
`apps/docs/src/content/docs/guides/for-ai-agents.mdx` — the rules
|
|
189
|
-
`debug.ts` and the MCP's contract enforcement are sourced from.
|
|
190
|
-
- `docs/superpowers/specs/2026-08-25-construct-engine-design.md` — the
|
|
191
|
-
construct engine's design spec (decisions ledger, format rules, success
|
|
192
|
-
criteria).
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import type { Archetype } from './types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The archetypes are PRESETS over a components list, not the surface axis.
|
|
5
|
-
*
|
|
6
|
-
* `renderSurface({ framework, components, integration })` renders any components
|
|
7
|
-
* list; each entry below is a named point in that space plus a default placement.
|
|
8
|
-
* Read the table as "components + placement" and the CLI's feature multi-select
|
|
9
|
-
* falls out of it: placement is the layout question, `components` is the features.
|
|
10
|
-
*
|
|
11
|
-
* Adding an entry here adds a PRESET. It does not add a capability, and it is not
|
|
12
|
-
* how a new component reaches the renderers — that is `components` at the call
|
|
13
|
-
* site. See `listCapabilityGroups` below for what this catalog does still decide.
|
|
14
|
-
*/
|
|
15
|
-
export const archetypes: Archetype[] = [
|
|
16
|
-
{
|
|
17
|
-
id: 'drop-in-chat',
|
|
18
|
-
title: 'Drop-in chat',
|
|
19
|
-
components: ['kai-chat'],
|
|
20
|
-
defaultPlacement: 'full-page',
|
|
21
|
-
docsSlug: 'examples/drop-in-chat',
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
id: 'support-widget',
|
|
25
|
-
title: 'Support widget',
|
|
26
|
-
components: ['kai-chat'],
|
|
27
|
-
defaultPlacement: 'docked-widget',
|
|
28
|
-
docsSlug: 'examples/support-widget',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
id: 'knowledge-base',
|
|
32
|
-
title: 'Knowledge base / RAG',
|
|
33
|
-
components: ['kai-chat', 'kai-sources'],
|
|
34
|
-
defaultPlacement: 'full-page',
|
|
35
|
-
docsSlug: 'examples/knowledge-base',
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
id: 'agentic',
|
|
39
|
-
title: 'Agentic assistant',
|
|
40
|
-
components: ['kai-chat', 'kai-tool', 'kai-reasoning'],
|
|
41
|
-
defaultPlacement: 'side',
|
|
42
|
-
docsSlug: 'examples/agentic-assistant',
|
|
43
|
-
},
|
|
44
|
-
/**
|
|
45
|
-
* THE FIRST OFFICIAL BLOCK (recast spec 2026-08-20 § 3b; F-16).
|
|
46
|
-
*
|
|
47
|
-
* This preset used to carry `kai-artifact` + `kai-resizable` — an UNWIRED
|
|
48
|
-
* artifact split — while omitting the conversation rail, the one thing its
|
|
49
|
-
* name promised (rung-3 finding F-16). It now names the workspace BLOCK: the
|
|
50
|
-
* chat-agnostic `kai-workspace` layout shell, a WIRED `kai-conversations`
|
|
51
|
-
* rail, `kai-chat` in the main region, and the `@kitn.ai/ui/state` thread
|
|
52
|
-
* helpers (bindThreadMessages / createThreadSessions / createSaveScheduler /
|
|
53
|
-
* parseStoredThread) with the persistence POLICY left in consumer-owned
|
|
54
|
-
* lines. `examples/apps/workspace/` is the block's reference implementation.
|
|
55
|
-
*
|
|
56
|
-
* The artifact split did not vanish — it moved to `artifact-split` below, so
|
|
57
|
-
* its renderer branch keeps its cells in `verify:scaffold`.
|
|
58
|
-
*/
|
|
59
|
-
{
|
|
60
|
-
id: 'workspace',
|
|
61
|
-
title: 'Agentic workspace',
|
|
62
|
-
components: ['kai-chat', 'kai-workspace', 'kai-conversations'],
|
|
63
|
-
defaultPlacement: 'full-page',
|
|
64
|
-
docsSlug: 'examples/workspace',
|
|
65
|
-
},
|
|
66
|
-
/**
|
|
67
|
-
* THE PRESET THAT KEEPS A CAPABILITY ON THE AXIS — the same reason the
|
|
68
|
-
* `attachments` preset exists (see its comment below): `listCapabilityGroups`
|
|
69
|
-
* derives the gate's surface axis from this table, so when the recast moved
|
|
70
|
-
* the artifact pair off `workspace`, this entry is what kept
|
|
71
|
-
* `kai-artifact`+`kai-resizable` compiling in `verify:scaffold` instead of
|
|
72
|
-
* silently losing every cell. The pair is ONE capability because `isArtifactSplit`
|
|
73
|
-
* in scaffold.ts requires both: a split with no preview pane is an empty
|
|
74
|
-
* panel, and a preview with no split has nowhere to sit.
|
|
75
|
-
*/
|
|
76
|
-
{
|
|
77
|
-
id: 'artifact-split',
|
|
78
|
-
title: 'Artifact preview split',
|
|
79
|
-
components: ['kai-chat', 'kai-artifact', 'kai-resizable'],
|
|
80
|
-
defaultPlacement: 'side',
|
|
81
|
-
docsSlug: 'examples/workspace',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
id: 'voice',
|
|
85
|
-
title: 'Voice assistant',
|
|
86
|
-
components: ['kai-chat', 'kai-voice-input'],
|
|
87
|
-
defaultPlacement: 'full-page',
|
|
88
|
-
docsSlug: 'examples/voice-assistant',
|
|
89
|
-
},
|
|
90
|
-
/**
|
|
91
|
-
* THE PRESET THAT EXISTS TO MAKE A CAPABILITY REACHABLE, not to name a product
|
|
92
|
-
* shape someone asked for.
|
|
93
|
-
*
|
|
94
|
-
* `kai-file-upload` and `kai-attachments` were registered elements that NO
|
|
95
|
-
* preset composed, and `listCapabilityGroups` derives its answer from this
|
|
96
|
-
* table — so the attachments capability reached neither `listSurfaceProbes`
|
|
97
|
-
* nor `verify:scaffold`, and `renderSurface` had no branch that emitted either
|
|
98
|
-
* tag. A caller could pass them in `components` (the axis takes any list) and
|
|
99
|
-
* get two bare `<kai-file-upload></kai-file-upload>` / `<kai-attachments>`
|
|
100
|
-
* siblings with nothing wired to them: on screen, inert, silent.
|
|
101
|
-
*
|
|
102
|
-
* The pair is ONE capability for the same reason `kai-artifact` +
|
|
103
|
-
* `kai-resizable` are: a dropzone with no list is a black hole, and a list
|
|
104
|
-
* with no dropzone can never fill. `hasAttachments` in scaffold.ts requires
|
|
105
|
-
* both for exactly that reason.
|
|
106
|
-
*
|
|
107
|
-
* The components match the create-kai spec's own feature table
|
|
108
|
-
* (`attachments` -> `kai-file-upload`, `kai-attachments`), so the CLI's
|
|
109
|
-
* multi-select and this preset name the same surface rather than two.
|
|
110
|
-
*/
|
|
111
|
-
{
|
|
112
|
-
id: 'attachments',
|
|
113
|
-
title: 'File attachments',
|
|
114
|
-
components: ['kai-chat', 'kai-file-upload', 'kai-attachments'],
|
|
115
|
-
defaultPlacement: 'full-page',
|
|
116
|
-
docsSlug: 'examples/attachments',
|
|
117
|
-
},
|
|
118
|
-
];
|
|
119
|
-
|
|
120
|
-
/** The component every surface composes around, so never a capability by itself. */
|
|
121
|
-
export const BASE_COMPONENT = 'kai-chat';
|
|
122
|
-
|
|
123
|
-
/** One capability: the components a preset adds on top of `BASE_COMPONENT`. */
|
|
124
|
-
export interface CapabilityGroup {
|
|
125
|
-
/** derived from the components, e.g. `tool+reasoning` — not a preset name */
|
|
126
|
-
id: string;
|
|
127
|
-
components: string[];
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* The distinct capabilities the presets know about, DERIVED from them.
|
|
132
|
-
*
|
|
133
|
-
* A capability is one preset's components minus `kai-chat`, deduped across the
|
|
134
|
-
* catalog (run `listCapabilityGroups()` for the current list — `drop-in-chat`
|
|
135
|
-
* and `support-widget` collapse onto the same empty capability because both add
|
|
136
|
-
* nothing and differ only in `defaultPlacement`).
|
|
137
|
-
*
|
|
138
|
-
* Derived rather than listed for the reason the verify script's other axes are:
|
|
139
|
-
* a hand-written list would have to be edited by the same hand that adds a
|
|
140
|
-
* preset, so a new capability could land with nothing covering it and nothing
|
|
141
|
-
* failing to say so. Registering a preset whose components are new moves the
|
|
142
|
-
* cell count in `verify:scaffold` by itself.
|
|
143
|
-
*
|
|
144
|
-
* The grouping is real and not an artifact of the derivation: `kai-tool` and
|
|
145
|
-
* `kai-reasoning` are one capability because a tool panel with no reasoning
|
|
146
|
-
* disclosure is not a surface anyone asks for, `kai-artifact` /
|
|
147
|
-
* `kai-resizable` are one because `isArtifactSplit` in scaffold.ts only fires when BOTH are present
|
|
148
|
-
* — split them and the renderer emits a bare artifact with no pane to put it in
|
|
149
|
-
* — and `kai-file-upload` / `kai-attachments` are one because `hasAttachments`
|
|
150
|
-
* fires the same way, for the same kind of reason.
|
|
151
|
-
*/
|
|
152
|
-
export function listCapabilityGroups(): CapabilityGroup[] {
|
|
153
|
-
const seen = new Map<string, CapabilityGroup>();
|
|
154
|
-
for (const a of archetypes) {
|
|
155
|
-
const components = a.components.filter((c) => c !== BASE_COMPONENT);
|
|
156
|
-
if (components.length === 0) continue;
|
|
157
|
-
const key = [...components].sort().join(',');
|
|
158
|
-
if (seen.has(key)) continue;
|
|
159
|
-
seen.set(key, { id: components.map((c) => c.replace(/^kai-/, '')).join('+'), components });
|
|
160
|
-
}
|
|
161
|
-
return [...seen.values()];
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/** One surface the scaffolder's gate compiles across every integration × framework. */
|
|
165
|
-
export interface SurfaceProbe {
|
|
166
|
-
id: string;
|
|
167
|
-
components: string[];
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* The surface axis for `verify:scaffold`: each capability ALONE, plus none, plus
|
|
172
|
-
* ALL of them.
|
|
173
|
-
*
|
|
174
|
-
* WHY THESE AND NOT THE PRESETS. The presets are seven cells covering six
|
|
175
|
-
* distinct components lists (`support-widget` repeats `drop-in-chat`'s, and the
|
|
176
|
-
* matrix holds `placement` at one value, so that pair compiled the same types
|
|
177
|
-
* twice). More importantly they cover no combination at all — every preset is
|
|
178
|
-
* exactly one capability — so the surfaces the multi-select makes reachable,
|
|
179
|
-
* which is most of them, had nothing compiling them.
|
|
180
|
-
*
|
|
181
|
-
* WHY NOT THE POWER SET. 2^groups x integrations x frameworks is thousands of
|
|
182
|
-
* cells to exercise no new branch. The renderers compose capabilities
|
|
183
|
-
* INDEPENDENTLY: each companion tag is emitted on its own terms, and the
|
|
184
|
-
* multi-component predicates (`isArtifactSplit`, `isWorkspaceBlock`) each read
|
|
185
|
-
* components from within a single group. So
|
|
186
|
-
* "every capability alone" reaches every branch, and "all capabilities together"
|
|
187
|
-
* makes every PAIR of capabilities co-occur, which is what proves they compose.
|
|
188
|
-
*
|
|
189
|
-
* THE LIMIT, STATED: a defect needing exactly two capabilities and masked by a
|
|
190
|
-
* third would survive this. That is a real gap and the honest reason it is
|
|
191
|
-
* accepted is cost, not safety — no such branch exists in the renderers today,
|
|
192
|
-
* and `assertSurfacesAreDistinct` fails if the axis ever degenerates so that this
|
|
193
|
-
* reasoning is quietly checking less than it claims.
|
|
194
|
-
*/
|
|
195
|
-
export function listSurfaceProbes(): SurfaceProbe[] {
|
|
196
|
-
const groups = listCapabilityGroups();
|
|
197
|
-
return [
|
|
198
|
-
{ id: 'chat-only', components: [BASE_COMPONENT] },
|
|
199
|
-
...groups.map((g) => ({ id: g.id, components: [BASE_COMPONENT, ...g.components] })),
|
|
200
|
-
{
|
|
201
|
-
id: 'every-capability',
|
|
202
|
-
components: [BASE_COMPONENT, ...groups.flatMap((g) => g.components)],
|
|
203
|
-
},
|
|
204
|
-
];
|
|
205
|
-
}
|