@kitn.ai/ui 0.28.0 → 0.29.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 +1 -1
- package/dist/agent-tooling/construct/public.d.ts +15 -0
- package/dist/agent-tooling/construct/schema.d.ts +111 -0
- package/dist/construct-cli.es.js +3 -3
- package/dist/construct.d.ts +5 -0
- package/dist/construct.js +327 -0
- package/dist/core-C8fzo39E.js +1 -12
- package/dist/engine-javascript-C1x7zo1_.js +1 -141
- package/dist/mcp.es.js +1 -1
- package/package.json +16 -16
- package/bin/route.test.js +0 -58
- 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/styles.css +0 -328
- 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
package/src/index.ts
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
// The package root entry (".").
|
|
2
|
-
//
|
|
3
|
-
// SCOPE — read before adding an export here.
|
|
4
|
-
// -----------------------------------------
|
|
5
|
-
// Every consumer of `@kitn.ai/ui` pays for this barrel, INCLUDING React/Vue/
|
|
6
|
-
// Svelte consumers who never render a Solid component. It is therefore frozen at
|
|
7
|
-
// the surface that shipped: adding a Solid component here taxes four frameworks
|
|
8
|
-
// to serve one. Closing the element coverage gaps on this file grew it
|
|
9
|
-
// 591,359 -> 705,031 bytes (+19.2%), which is what motivated the split. (That
|
|
10
|
-
// measurement was taken at the then-79 elements; the catalog grows, the bytes
|
|
11
|
-
// quoted do not — they are a record of the split, not a current reading.)
|
|
12
|
-
//
|
|
13
|
-
// The COMPLETE SolidJS surface — a component for EVERY registered element plus a
|
|
14
|
-
// `<Name>Props` type for every public component — lives on `@kitn.ai/ui/solid`
|
|
15
|
-
// (src/solid.ts), which is its own build target so only Solid consumers pay for
|
|
16
|
-
// it. `npm run verify:solid-coverage` prints the element count and proves that
|
|
17
|
-
// surface n/n on every run, which is why no count is restated here. `./solid`
|
|
18
|
-
// re-exports this file, so it is a strict superset: anything here is reachable
|
|
19
|
-
// there too, and a Solid consumer only ever needs the one import.
|
|
20
|
-
//
|
|
21
|
-
// Rule of thumb: a NEW Solid component export belongs in src/solid.ts.
|
|
22
|
-
// Type-only exports are free (fully erased by the build) and may live in either.
|
|
23
|
-
|
|
24
|
-
// Shared types (folded in from @tab-zen/shared)
|
|
25
|
-
export type { ModelOption, SearchFilters, ConversationScope, ConversationSummary, ConversationGroup, HomeConfig, HomeLinkEntry } from './types';
|
|
26
|
-
|
|
27
|
-
// Utilities
|
|
28
|
-
export { cn } from './utils/cn';
|
|
29
|
-
|
|
30
|
-
// Layer 1: Headless Primitives
|
|
31
|
-
export { createKaiChat } from './primitives/create-kai-chat';
|
|
32
|
-
export type { CreateKaiChatOptions, KaiChatStore } from './primitives/create-kai-chat';
|
|
33
|
-
export { useAutoResize } from './primitives/use-auto-resize';
|
|
34
|
-
export { useStickToBottom } from './primitives/use-stick-to-bottom';
|
|
35
|
-
export { useTextStream } from './primitives/use-text-stream';
|
|
36
|
-
export type { UseTextStreamOptions, TextStreamSegment } from './primitives/use-text-stream';
|
|
37
|
-
export { useVoiceRecorder } from './primitives/use-voice-recorder';
|
|
38
|
-
export type { UseVoiceRecorderOptions } from './primitives/use-voice-recorder';
|
|
39
|
-
export { ChatConfig, useChatConfig, proseClass, textClass } from './primitives/chat-config';
|
|
40
|
-
export type { ChatConfigValue, ProseSize, ChatConfigProps } from './primitives/chat-config';
|
|
41
|
-
export { configureCodeHighlighting, isCodeHighlightingEnabled } from './primitives/highlighter';
|
|
42
|
-
export type { CodeHighlightingOptions } from './primitives/highlighter';
|
|
43
|
-
export { configurePdfPreview, isPdfPreviewEnabled } from './primitives/pdf-preview';
|
|
44
|
-
export type { PdfPreviewOptions } from './primitives/pdf-preview';
|
|
45
|
-
export { localStorageStore, fetchStore, byRecency, LEGACY_THREAD_MIGRATED_TITLE } from './primitives/conversation-store';
|
|
46
|
-
export type { ConversationStore } from './primitives/conversation-store';
|
|
47
|
-
|
|
48
|
-
// Toasts: imperative `toast()` API + the reactive store behind <kai-toast-region>
|
|
49
|
-
export { toast, configureToasts, ensureMounted as ensureToastRegion, getToasts } from './primitives/toast-store';
|
|
50
|
-
export type {
|
|
51
|
-
ToastItem, ToastVariant, ToastAction, ToastOptions, ToastHandle, ToastFn, ToastConfig,
|
|
52
|
-
} from './primitives/toast-store';
|
|
53
|
-
export { Toast, ToastRegion } from './components/toast';
|
|
54
|
-
export type {
|
|
55
|
-
ToastProps, ToastRegionProps, ToastDismissReason, ToastPosition,
|
|
56
|
-
} from './components/toast';
|
|
57
|
-
|
|
58
|
-
// Card Contract (generative-UI foundation)
|
|
59
|
-
export { CARD_CONTRACT_VERSION } from './primitives/card-contract';
|
|
60
|
-
export type {
|
|
61
|
-
CardEnvelope, CardContext, CardEvent, CardEventKind, CardResolution, CardHost, CardPolicy,
|
|
62
|
-
} from './primitives/card-contract';
|
|
63
|
-
export { applyResolution, resolutionFromEvent } from './primitives/card-resolution';
|
|
64
|
-
export { CardProvider, useCardHost } from './primitives/card-host';
|
|
65
|
-
export type { CardProviderProps } from './primitives/card-host';
|
|
66
|
-
export { CARD_EVENT_NAME, emitCardEvent, routeCardEvent, listenForCardEvents } from './primitives/card-routing';
|
|
67
|
-
export { dismissRecovery, defaultIsReopenable } from './primitives/card-recovery';
|
|
68
|
-
export type {
|
|
69
|
-
RecoveryToast, ReopenEnv, DismissRecoveryOptions,
|
|
70
|
-
} from './primitives/card-recovery';
|
|
71
|
-
export { validateAgainstSchema } from './primitives/card-validate';
|
|
72
|
-
export type { JsonSchema, ValidationResult } from './primitives/card-validate';
|
|
73
|
-
|
|
74
|
-
// Remote host SDK (iframe transport — host side only; provider runtime ships via ./provider subpath)
|
|
75
|
-
export { mountRemoteCard } from './remote/host-embed';
|
|
76
|
-
export type { MountRemoteCardOptions, RemoteCardHandle } from './remote/host-embed';
|
|
77
|
-
|
|
78
|
-
// Card dispatcher (generative-UI host glue)
|
|
79
|
-
export { CardRenderer, renderCard } from './components/card-renderer';
|
|
80
|
-
export type { CardRendererProps } from './components/card-renderer';
|
|
81
|
-
export { CardFallback } from './components/card-fallback';
|
|
82
|
-
export type { CardFallbackProps } from './components/card-fallback';
|
|
83
|
-
export {
|
|
84
|
-
BUILTIN_CARD_TAGS, BUILTIN_CARD_COMPONENTS, mergeCardTags, mergeCardComponents,
|
|
85
|
-
} from './primitives/card-registry';
|
|
86
|
-
export type { CardComponent, CardComponentMap, CardTagMap } from './primitives/card-registry';
|
|
87
|
-
|
|
88
|
-
// Card: kai-card (base shell) + kai-form (JSON-Schema form renderer)
|
|
89
|
-
export { Card } from './components/card';
|
|
90
|
-
export type { CardProps } from './components/card';
|
|
91
|
-
export { DismissedStub, stubIntent } from './components/dismissed-stub';
|
|
92
|
-
export type { DismissedStubProps, DismissedCardType } from './components/dismissed-stub';
|
|
93
|
-
export { Form, validateForm, buildResult, widgetFor, orderedKeys, coerceValue } from './components/form';
|
|
94
|
-
export type {
|
|
95
|
-
FormProps,
|
|
96
|
-
FormField,
|
|
97
|
-
FormDefinition,
|
|
98
|
-
FormCardEnvelope,
|
|
99
|
-
FormValidation,
|
|
100
|
-
WidgetKind,
|
|
101
|
-
} from './components/form';
|
|
102
|
-
|
|
103
|
-
// Card: kai-confirm (approval) + kai-tasks (selectable plan)
|
|
104
|
-
export {
|
|
105
|
-
ConfirmCard,
|
|
106
|
-
CONFIRM_CARD_TYPE,
|
|
107
|
-
buttonVariantForStyle,
|
|
108
|
-
normalizeActions,
|
|
109
|
-
defaultActionId,
|
|
110
|
-
} from './components/confirm-card';
|
|
111
|
-
export type {
|
|
112
|
-
ConfirmCardProps,
|
|
113
|
-
ConfirmAction,
|
|
114
|
-
ConfirmActionStyle,
|
|
115
|
-
ConfirmTone,
|
|
116
|
-
ConfirmCardData,
|
|
117
|
-
ConfirmCardEnvelope,
|
|
118
|
-
} from './components/confirm-card';
|
|
119
|
-
export {
|
|
120
|
-
TasksCard,
|
|
121
|
-
TASKS_CARD_TYPE,
|
|
122
|
-
normalizeTasks,
|
|
123
|
-
initialSelected,
|
|
124
|
-
selectedInOrder,
|
|
125
|
-
toggleableIds,
|
|
126
|
-
selectAllState,
|
|
127
|
-
showSelectAll,
|
|
128
|
-
canConfirm,
|
|
129
|
-
isMaxReached,
|
|
130
|
-
confirmReason,
|
|
131
|
-
} from './components/tasks-card';
|
|
132
|
-
export type {
|
|
133
|
-
TasksCardProps,
|
|
134
|
-
TasksTask,
|
|
135
|
-
TasksCardData,
|
|
136
|
-
TasksCardResult,
|
|
137
|
-
TasksCardEnvelope,
|
|
138
|
-
SelectAllState,
|
|
139
|
-
} from './components/tasks-card';
|
|
140
|
-
|
|
141
|
-
// Card: kai-choice (single-select option card)
|
|
142
|
-
export {
|
|
143
|
-
ChoiceCard,
|
|
144
|
-
CHOICE_CARD_TYPE,
|
|
145
|
-
OTHER_ACTION,
|
|
146
|
-
normalizeOptions,
|
|
147
|
-
resolveOtherConfig,
|
|
148
|
-
nextEnabledIndex,
|
|
149
|
-
firstEnabledIndex,
|
|
150
|
-
} from './components/choice-card';
|
|
151
|
-
export type {
|
|
152
|
-
ChoiceCardProps,
|
|
153
|
-
ChoiceOption,
|
|
154
|
-
ChoiceOptionMedia,
|
|
155
|
-
ChoiceAllowOther,
|
|
156
|
-
ChoiceCardData,
|
|
157
|
-
ChoiceCardEnvelope,
|
|
158
|
-
} from './components/choice-card';
|
|
159
|
-
|
|
160
|
-
// Card: kai-link-preview (OG/link preview) + kai-embed (lazy media embed)
|
|
161
|
-
export { LinkPreview } from './components/link-preview';
|
|
162
|
-
export type { LinkPreviewProps } from './components/link-preview';
|
|
163
|
-
export { Embed } from './components/embed';
|
|
164
|
-
export type { EmbedProps } from './components/embed';
|
|
165
|
-
export {
|
|
166
|
-
configureLinkPreview,
|
|
167
|
-
resolveLinkMetadata,
|
|
168
|
-
hasLinkPreviewFetcher,
|
|
169
|
-
LINK_PREVIEW_TYPE,
|
|
170
|
-
} from './primitives/link-preview';
|
|
171
|
-
export type { LinkPreviewData, LinkPreviewEnvelope, LinkMetadataFetcher } from './primitives/link-preview';
|
|
172
|
-
export {
|
|
173
|
-
resolveEmbed,
|
|
174
|
-
parseYouTubeId,
|
|
175
|
-
parseVimeoId,
|
|
176
|
-
configureEmbedAllowlist,
|
|
177
|
-
isGenericOriginAllowed,
|
|
178
|
-
EMBED_CARD_TYPE,
|
|
179
|
-
} from './primitives/embed-providers';
|
|
180
|
-
export type { EmbedCardData, EmbedCardEnvelope, EmbedProvider, ResolvedEmbed } from './primitives/embed-providers';
|
|
181
|
-
|
|
182
|
-
// Layer 2: UI Primitives
|
|
183
|
-
export { Button, buttonVariants } from './ui/button';
|
|
184
|
-
export type { ButtonProps } from './ui/button';
|
|
185
|
-
export { Avatar } from './ui/avatar';
|
|
186
|
-
export type { AvatarProps } from './ui/avatar';
|
|
187
|
-
export { Tooltip } from './ui/tooltip';
|
|
188
|
-
export type { TooltipProps, TooltipController } from './ui/tooltip';
|
|
189
|
-
export { HoverCard } from './ui/hover-card';
|
|
190
|
-
export type { HoverCardProps, HoverCardController } from './ui/hover-card';
|
|
191
|
-
export { Collapsible, CollapsibleTrigger, CollapsibleContent } from './ui/collapsible';
|
|
192
|
-
export type {
|
|
193
|
-
CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps, CollapsibleController,
|
|
194
|
-
} from './ui/collapsible';
|
|
195
|
-
export { ScrollArea } from './ui/scroll-area';
|
|
196
|
-
export type { ScrollAreaProps, ScrollOrientation } from './ui/scroll-area';
|
|
197
|
-
export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem } from './ui/dropdown';
|
|
198
|
-
export type {
|
|
199
|
-
DropdownProps, DropdownTriggerProps, DropdownContentProps, DropdownItemProps, DropdownController,
|
|
200
|
-
} from './ui/dropdown';
|
|
201
|
-
export { Textarea } from './ui/textarea';
|
|
202
|
-
export type { TextareaProps } from './ui/textarea';
|
|
203
|
-
export { Badge } from './ui/badge';
|
|
204
|
-
export type { BadgeProps } from './ui/badge';
|
|
205
|
-
export { Separator } from './ui/separator';
|
|
206
|
-
export type { SeparatorProps } from './ui/separator';
|
|
207
|
-
export { ResizablePanelGroup, ResizablePanel, ResizableHandle, Resizable, normalizeSize, resolveToPx } from './ui/resizable';
|
|
208
|
-
export type { ResizablePanelGroupProps, ResizablePanelProps, ResizableHandleProps, ResizableProps, SizeValue } from './ui/resizable';
|
|
209
|
-
export { Skeleton } from './ui/skeleton';
|
|
210
|
-
export type { SkeletonProps, SkeletonVariant } from './ui/skeleton';
|
|
211
|
-
export { FileTree, buildFileTree } from './components/file-tree';
|
|
212
|
-
export type {
|
|
213
|
-
FileTreeProps, FileTreeFile, FileTreeNode, FileTreeFolderNode, FileTreeFileNode,
|
|
214
|
-
} from './components/file-tree';
|
|
215
|
-
export { Artifact } from './components/artifact';
|
|
216
|
-
export type { ArtifactProps, ArtifactFile, ArtifactTab } from './components/artifact';
|
|
217
|
-
export { ArtifactCard, DEFAULT_ARTIFACT_CARD_HEIGHT } from './components/artifact-card';
|
|
218
|
-
// `ArtifactCardFile` is the SAME declaration `FileTreeFile` and `ArtifactFile`
|
|
219
|
-
// alias, authored in primitives/card-data-types.ts because `ArtifactCardData.files`
|
|
220
|
-
// reaches it and that module has to stay resolvable from a Node/no-DOM project.
|
|
221
|
-
// It is exported here under its authored name because that is the name the
|
|
222
|
-
// generated element metadata records for `kai-artifact.files` / `kai-file-tree.files`,
|
|
223
|
-
// and tests/elements/prop-types-exported.ts requires every named prop type to be
|
|
224
|
-
// importable from this entry. The two aliases stay exported above, unchanged.
|
|
225
|
-
export type {
|
|
226
|
-
ArtifactCardProps,
|
|
227
|
-
ArtifactCardData,
|
|
228
|
-
ArtifactCardEnvelope,
|
|
229
|
-
ArtifactCardFile,
|
|
230
|
-
ArtifactCardTab,
|
|
231
|
-
} from './components/artifact-card';
|
|
232
|
-
|
|
233
|
-
// Layer 3: AI/Feature Components
|
|
234
|
-
export {
|
|
235
|
-
ChatContainer, ChatContainerRoot, ChatContainerContent, ChatContainerScrollAnchor,
|
|
236
|
-
useChatContainer,
|
|
237
|
-
} from './components/chat-container';
|
|
238
|
-
export type {
|
|
239
|
-
ChatContainerProps, ChatContainerRootProps, ChatContainerContentProps, ChatContainerScrollAnchorProps,
|
|
240
|
-
} from './components/chat-container';
|
|
241
|
-
export { Message, MessageAvatar, MessageContent, MessageActions, MessageAction, MessageCopyButton, MessageBody } from './components/message';
|
|
242
|
-
export type {
|
|
243
|
-
MessageProps, MessageAvatarProps, MessageContentProps, MessageActionsProps,
|
|
244
|
-
MessageActionProps, MessageCopyButtonProps, MessageBodyProps,
|
|
245
|
-
} from './components/message';
|
|
246
|
-
export { ResponseCompare, useResolved } from './components/response-compare';
|
|
247
|
-
export type { ResponseCompareProps, CompareLayout, ResolvedController } from './components/response-compare';
|
|
248
|
-
export {
|
|
249
|
-
normalizeCandidates,
|
|
250
|
-
buildSelection,
|
|
251
|
-
isAnyStreaming,
|
|
252
|
-
} from './components/response-compare';
|
|
253
|
-
export type {
|
|
254
|
-
CompareCandidate,
|
|
255
|
-
ComparePair,
|
|
256
|
-
CompareCollapse,
|
|
257
|
-
ResponseCompareData,
|
|
258
|
-
CompareSelection,
|
|
259
|
-
} from './components/response-compare';
|
|
260
|
-
export { MessageSkills } from './components/message-skills';
|
|
261
|
-
export type { MessageSkillsProps, Skill as MessageSkill } from './components/message-skills';
|
|
262
|
-
export {
|
|
263
|
-
PromptInput, PromptInputTextarea, PromptInputActions, PromptInputAction,
|
|
264
|
-
usePromptInput,
|
|
265
|
-
} from './components/prompt-input';
|
|
266
|
-
export type {
|
|
267
|
-
PromptInputProps, PromptInputTextareaProps, PromptInputActionsProps, PromptInputActionProps,
|
|
268
|
-
} from './components/prompt-input';
|
|
269
|
-
export { ResponseStream } from './components/response-stream';
|
|
270
|
-
export type { ResponseStreamProps } from './components/response-stream';
|
|
271
|
-
export { Markdown } from './components/markdown';
|
|
272
|
-
export type { MarkdownProps } from './components/markdown';
|
|
273
|
-
export { CodeBlock, CodeBlockCode, CodeBlockGroup } from './components/code-block';
|
|
274
|
-
export type { CodeBlockProps, CodeBlockCodeProps, CodeBlockGroupProps } from './components/code-block';
|
|
275
|
-
export { Loader } from './components/loader';
|
|
276
|
-
export type { LoaderVariant, LoaderSize, LoaderProps } from './components/loader';
|
|
277
|
-
export {
|
|
278
|
-
CircularLoader, ClassicLoader, PulseLoader, PulseDotLoader,
|
|
279
|
-
DotsLoader, TypingLoader, WaveLoader, BarsLoader,
|
|
280
|
-
TerminalLoader, TextBlinkLoader, TextShimmerLoader, TextDotsLoader,
|
|
281
|
-
} from './components/loader';
|
|
282
|
-
export type {
|
|
283
|
-
LoaderShapeProps, LoaderTextProps,
|
|
284
|
-
CircularLoaderProps, ClassicLoaderProps, PulseLoaderProps, PulseDotLoaderProps,
|
|
285
|
-
DotsLoaderProps, TypingLoaderProps, WaveLoaderProps, BarsLoaderProps,
|
|
286
|
-
TerminalLoaderProps, TextBlinkLoaderProps, TextShimmerLoaderProps, TextDotsLoaderProps,
|
|
287
|
-
} from './components/loader';
|
|
288
|
-
export { FeedbackBar, type FeedbackValue, type FeedbackDetail, type FeedbackBarProps } from './components/feedback-bar';
|
|
289
|
-
export {
|
|
290
|
-
ChainOfThought, ChainOfThoughtStep, ChainOfThoughtTrigger,
|
|
291
|
-
ChainOfThoughtContent, ChainOfThoughtItem,
|
|
292
|
-
} from './components/chain-of-thought';
|
|
293
|
-
export type {
|
|
294
|
-
ChainOfThoughtProps, ChainOfThoughtStepProps, ChainOfThoughtTriggerProps,
|
|
295
|
-
ChainOfThoughtContentProps, ChainOfThoughtItemProps,
|
|
296
|
-
ChainOfThoughtType, ChainOfThoughtStepData, ChainOfThoughtController,
|
|
297
|
-
} from './components/chain-of-thought';
|
|
298
|
-
export { Source, SourceTrigger, SourceContent, SourceList } from './components/source';
|
|
299
|
-
export type { SourceProps, SourceTriggerProps, SourceContentProps, SourceListProps } from './components/source';
|
|
300
|
-
export { PromptSuggestion } from './components/prompt-suggestion';
|
|
301
|
-
export type { PromptSuggestionProps } from './components/prompt-suggestion';
|
|
302
|
-
export {
|
|
303
|
-
Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent, emptyMediaVariants,
|
|
304
|
-
} from './components/empty';
|
|
305
|
-
export type {
|
|
306
|
-
EmptyProps, EmptyHeaderProps, EmptyMediaProps, EmptyTitleProps, EmptyDescriptionProps, EmptyContentProps,
|
|
307
|
-
} from './components/empty';
|
|
308
|
-
export { ScrollButton } from './components/scroll-button';
|
|
309
|
-
export type { ScrollButtonProps } from './components/scroll-button';
|
|
310
|
-
export { TextShimmer } from './components/text-shimmer';
|
|
311
|
-
export type { TextShimmerProps } from './components/text-shimmer';
|
|
312
|
-
export { Checkpoint, CheckpointIcon, CheckpointTrigger } from './components/checkpoint';
|
|
313
|
-
export type { CheckpointProps, CheckpointIconProps, CheckpointTriggerProps } from './components/checkpoint';
|
|
314
|
-
export {
|
|
315
|
-
Context,
|
|
316
|
-
ContextTrigger,
|
|
317
|
-
ContextContent,
|
|
318
|
-
ContextContentHeader,
|
|
319
|
-
ContextContentBody,
|
|
320
|
-
ContextContentFooter,
|
|
321
|
-
ContextInputUsage,
|
|
322
|
-
ContextOutputUsage,
|
|
323
|
-
ContextReasoningUsage,
|
|
324
|
-
ContextCacheUsage,
|
|
325
|
-
} from './components/context';
|
|
326
|
-
export type {
|
|
327
|
-
ContextProps,
|
|
328
|
-
ContextTriggerProps,
|
|
329
|
-
ContextContentProps,
|
|
330
|
-
ContextContentHeaderProps,
|
|
331
|
-
ContextContentBodyProps,
|
|
332
|
-
ContextContentFooterProps,
|
|
333
|
-
ContextUsageRowProps,
|
|
334
|
-
ContextInputUsageProps,
|
|
335
|
-
ContextOutputUsageProps,
|
|
336
|
-
ContextReasoningUsageProps,
|
|
337
|
-
ContextCacheUsageProps,
|
|
338
|
-
} from './components/context';
|
|
339
|
-
export { VoiceInput } from './components/voice-input';
|
|
340
|
-
export type { VoiceInputProps, VoiceInputController } from './components/voice-input';
|
|
341
|
-
export { ConversationList } from './components/conversation-list';
|
|
342
|
-
export type { ConversationListProps, ConversationListController } from './components/conversation-list';
|
|
343
|
-
export { ConversationItem } from './components/conversation-item';
|
|
344
|
-
export { SlottedConversationItem } from './components/conversation-item';
|
|
345
|
-
export type { SlottedConversationItemProps } from './components/conversation-item';
|
|
346
|
-
export type { ConversationItemProps } from './components/conversation-item';
|
|
347
|
-
export { ModelSwitcher } from './components/model-switcher';
|
|
348
|
-
export type { ModelSwitcherProps } from './components/model-switcher';
|
|
349
|
-
export { ChatScopePicker } from './components/chat-scope-picker';
|
|
350
|
-
export type { ChatScopePickerProps } from './components/chat-scope-picker';
|
|
351
|
-
export { Tool } from './components/tool';
|
|
352
|
-
export type { ToolPart, ToolProps } from './components/tool';
|
|
353
|
-
// ToolPart.kind's doc comment says "Derive with `classifyTool(type)`", so the
|
|
354
|
-
// function has to be reachable from every entry that surfaces ToolPart. It is
|
|
355
|
-
// total, deterministic and terminates in 'generic', so it is safe public API and
|
|
356
|
-
// genuinely useful to anyone rendering tool calls themselves.
|
|
357
|
-
export { classifyTool } from './components/tool-classify';
|
|
358
|
-
export type { ToolKind } from './components/tool-classify';
|
|
359
|
-
export { ThinkingBar } from './components/thinking-bar';
|
|
360
|
-
export type { ThinkingBarProps } from './components/thinking-bar';
|
|
361
|
-
export { Reasoning, ReasoningTrigger, ReasoningContent } from './components/reasoning';
|
|
362
|
-
export type { ReasoningProps, ReasoningTriggerProps, ReasoningContentProps } from './components/reasoning';
|
|
363
|
-
export { Image } from './components/image';
|
|
364
|
-
export type { ImageProps, GeneratedImageLike } from './components/image';
|
|
365
|
-
export { FileUpload, FileUploadTrigger, FileUploadContent } from './components/file-upload';
|
|
366
|
-
export type { FileUploadProps, FileUploadTriggerProps, FileUploadContentProps } from './components/file-upload';
|
|
367
|
-
export {
|
|
368
|
-
Attachments, Attachment, AttachmentPreview, AttachmentInfo, AttachmentRemove,
|
|
369
|
-
AttachmentHoverCard, AttachmentHoverCardTrigger, AttachmentHoverCardContent,
|
|
370
|
-
AttachmentEmpty, getMediaCategory, getAttachmentLabel,
|
|
371
|
-
useAttachmentsContext, useAttachmentContext,
|
|
372
|
-
} from './components/attachments';
|
|
373
|
-
export type {
|
|
374
|
-
AttachmentData, AttachmentMediaCategory, AttachmentVariant,
|
|
375
|
-
AttachmentsProps, AttachmentProps, AttachmentPreviewProps,
|
|
376
|
-
AttachmentInfoProps, AttachmentRemoveProps, AttachmentEmptyProps,
|
|
377
|
-
AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentHoverCardContentProps,
|
|
378
|
-
} from './components/attachments';
|
|
379
|
-
|
|
380
|
-
// Chat message types — public API for consumers who need to type their own message arrays.
|
|
381
|
-
// NOTE: chat-types.ts also exports an unrelated `Source` interface (a citation), and
|
|
382
|
-
// `Source` is already a public component export (./components/source, a citation
|
|
383
|
-
// chip/trigger), so re-exporting both under that name is a duplicate-identifier error.
|
|
384
|
-
// The citation type therefore ships under its alias `MessageSource`, which is also the
|
|
385
|
-
// argument type of the public `AssistantStream.addSource(source)`.
|
|
386
|
-
export type {
|
|
387
|
-
ChatMessage, ChatMessageAction, CustomAction, AvatarData, FeedbackVote, MessagePart,
|
|
388
|
-
MessageSource, RawOrigin,
|
|
389
|
-
} from './elements/chat-types';
|
|
390
|
-
|
|
391
|
-
// Composer document model. This belongs on "." rather than "./solid" because it
|
|
392
|
-
// is part of the ELEMENT contract, not the Solid-only surface: `ComposerDoc` is
|
|
393
|
-
// the non-string half of `kai-prompt-input` / `kai-composer` / `kai-default-input`'s
|
|
394
|
-
// `value` property, and `doc` + `entities` on their `kai-submit` /
|
|
395
|
-
// `kai-value-change` details. The shipped prop docs name `ComposerDoc` by name,
|
|
396
|
-
// so a React or Vue consumer reading them has to be able to import it. Type-only,
|
|
397
|
-
// so it is erased by the build and costs the root barrel nothing.
|
|
398
|
-
export type { ComposerDoc, Segment, EntityRef } from './primitives/composer-model';
|
|
399
|
-
|
|
400
|
-
// ---------------------------------------------------------------------------
|
|
401
|
-
// Named types for the remaining kai-* array/object PROPERTIES.
|
|
402
|
-
//
|
|
403
|
-
// Same rationale as `ComposerDoc` above, applied to the whole class instead of
|
|
404
|
-
// one instance: the generated `./elements` declarations and React wrappers expand
|
|
405
|
-
// every prop type structurally (deliberately — see the `IMPORTS = {}` note in
|
|
406
|
-
// scripts/gen-element-api.mjs), so a consumer who wants to NAME the shape had to
|
|
407
|
-
// write `NonNullable<KaiPromptInputElementProps['triggers']>`. Every element-prop
|
|
408
|
-
// type that has a name in source is now reachable from "." — the entry a React /
|
|
409
|
-
// Vue / Svelte / vanilla consumer imports — not only from "./solid".
|
|
410
|
-
//
|
|
411
|
-
// Type-only, so the root barrel pays nothing at runtime.
|
|
412
|
-
// Guarded by tests/elements/prop-types-exported.test.ts, which re-derives the
|
|
413
|
-
// list from the facades with the TS checker and fails on a new unexported one.
|
|
414
|
-
// ---------------------------------------------------------------------------
|
|
415
|
-
export type { TriggerDef, TriggerItem } from './components/composer';
|
|
416
|
-
export type { ChatThreadContextUsage } from './components/chat-thread';
|
|
417
|
-
export type { Skill } from './components/message-skills';
|
|
418
|
-
export type { AgentStatus } from './ui/agent-card';
|
|
419
|
-
export type { KaiNavItem } from './ui/nav';
|
|
420
|
-
export type { KaiTabItem } from './ui/tabs';
|
|
421
|
-
export type { PaneStatus } from './ui/pane';
|
|
422
|
-
export type { PaneTab } from './ui/pane-group';
|
|
423
|
-
export type {
|
|
424
|
-
KaiCheckboxOption, KaiCommandItem, KaiContextUsage, KaiMenuItem, KaiRadioOption, KaiSegmentedOption, KaiSelectOption,
|
|
425
|
-
KaiSourceItem,
|
|
426
|
-
} from './elements/element-data-types';
|
|
427
|
-
// `kai-audio-visualizer.shader` takes a ShaderSpec. The element arrived from main
|
|
428
|
-
// after this block was written, and prop-types-exported.test.ts caught it, which
|
|
429
|
-
// is the point of deriving that list from the facades rather than maintaining it.
|
|
430
|
-
export type { ShaderSpec } from './components/audio-visualizer';
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure reductions from AnalyserNode output to the numbers a visualizer draws.
|
|
3
|
-
*
|
|
4
|
-
* Ported from livekit/components-js `packages/react/src/hooks/useTrackVolume.ts`
|
|
5
|
-
* (Apache License 2.0). Both the dB normalization curve AND the band split
|
|
6
|
-
* are carried over so our output matches theirs frame for frame: the split
|
|
7
|
-
* is upstream's linear-proportional chunking (their PR #1265). An interim
|
|
8
|
-
* revision here spaced the buckets geometrically to serve a wide raw-mic
|
|
9
|
-
* window; both reverted together -- see `reduceToBands` below and the
|
|
10
|
-
* DEFAULTS docstring in use-audio-analysis.ts for the full story.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
/** dB floor of the normalization curve. Below this reads as silence. */
|
|
14
|
-
const MIN_DB = -100;
|
|
15
|
-
/** dB ceiling. Above this saturates. */
|
|
16
|
-
const MAX_DB = -10;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Map one `getFloatFrequencyData` decibel value to 0..1.
|
|
20
|
-
*
|
|
21
|
-
* The `sqrt` at the end is a perceptual curve, not a normalization step: it
|
|
22
|
-
* lifts quiet detail so low-level audio still moves the bars visibly.
|
|
23
|
-
*/
|
|
24
|
-
export function normalizeDb(value: number): number {
|
|
25
|
-
if (value === -Infinity) return 0;
|
|
26
|
-
const clamped = Math.max(MIN_DB, Math.min(MAX_DB, value));
|
|
27
|
-
return Math.sqrt(1 - (clamped * -1) / 100);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Average a slice of the frequency spectrum into `bands` buckets.
|
|
32
|
-
*
|
|
33
|
-
* `loPass` / `hiPass` are BIN INDICES relative to `fftSize`, not frequencies.
|
|
34
|
-
* Upstream's naming is misleading; the behavior is a plain array slice.
|
|
35
|
-
*
|
|
36
|
-
* Bucket edges are LINEAR-PROPORTIONAL across `[loPass, hiPass]` -- upstream
|
|
37
|
-
* LiveKit's own distribution (`useMultibandTrackVolume`, useTrackVolume.ts
|
|
38
|
-
* lines 141-153, rewritten to proportional chunking by their PR #1265): each
|
|
39
|
-
* band averages an equal consecutive run of bins, `floor(i * total / bands)`
|
|
40
|
-
* to `floor((i + 1) * total / bands)`, and a run that comes out empty reads
|
|
41
|
-
* 0 (their `chunkLength === 0` branch). With the default window's 100 bins
|
|
42
|
-
* and 5 bands, that is 20 bins averaged per band -- the averaging itself is
|
|
43
|
-
* part of upstream's idle stillness, diluting any single flickering bin
|
|
44
|
-
* 20:1 (noise-floor diagnosis, table B).
|
|
45
|
-
*
|
|
46
|
-
* An interim revision spaced these buckets geometrically so that a wide
|
|
47
|
-
* raw-microphone window (bins 4-120) kept its upper buckets alive. That
|
|
48
|
-
* concentrated the noisiest few low bins into band 0 undiluted, which the
|
|
49
|
-
* centre-out mirror below then promoted to the CENTRE element -- the
|
|
50
|
-
* measured core of the "white noise when the mic is on" defect (diagnosis
|
|
51
|
-
* table B: geometric band 0 idled at 0.52 on real room tone where this
|
|
52
|
-
* split reads 0.32 over the same wide window, and exactly 0 over the
|
|
53
|
-
* default one). Reverted to upstream's split when the default window
|
|
54
|
-
* reverted; the mirror stays, it is orthogonal.
|
|
55
|
-
*/
|
|
56
|
-
export function reduceToBands(
|
|
57
|
-
freq: Float32Array,
|
|
58
|
-
bands: number,
|
|
59
|
-
loPass: number,
|
|
60
|
-
hiPass: number,
|
|
61
|
-
): number[] {
|
|
62
|
-
// `slice` clamps both ends into the buffer and yields an empty window when
|
|
63
|
-
// hiPass <= loPass -- every bucket then reads 0 below, no special case.
|
|
64
|
-
const window = freq.slice(Math.max(0, loPass), Math.max(0, hiPass));
|
|
65
|
-
const total = window.length;
|
|
66
|
-
const out: number[] = [];
|
|
67
|
-
|
|
68
|
-
for (let i = 0; i < bands; i++) {
|
|
69
|
-
const start = Math.floor((i * total) / bands);
|
|
70
|
-
const end = Math.floor(((i + 1) * total) / bands);
|
|
71
|
-
if (end <= start) {
|
|
72
|
-
out.push(0);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
let sum = 0;
|
|
76
|
-
for (let j = start; j < end; j++) sum += normalizeDb(window[j] as number);
|
|
77
|
-
out.push(sum / (end - start));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return out;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/** Root-mean-square of `getByteFrequencyData`, scaled to 0..1. */
|
|
84
|
-
export function reduceToVolume(bytes: Uint8Array): number {
|
|
85
|
-
if (bytes.length === 0) return 0;
|
|
86
|
-
let sum = 0;
|
|
87
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
88
|
-
const a = bytes[i] as number;
|
|
89
|
-
sum += a * a;
|
|
90
|
-
}
|
|
91
|
-
return Math.sqrt(sum / bytes.length) / 255;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Resize a caller-supplied band array to exactly `count` entries. Extra values
|
|
96
|
-
* are dropped; a short array repeats its last value (0 when empty) so a
|
|
97
|
-
* consumer passing the wrong length gets a sane picture instead of holes.
|
|
98
|
-
*/
|
|
99
|
-
export function normalizeVolumeBands(bands: number[], count: number): number[] {
|
|
100
|
-
if (bands.length === count) return bands;
|
|
101
|
-
if (bands.length > count) return bands.slice(0, count);
|
|
102
|
-
const last = bands[bands.length - 1] ?? 0;
|
|
103
|
-
return [...bands, ...new Array(count - bands.length).fill(last)];
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Maps a smaller, ordered set of "half" band values (index 0 = loudest,
|
|
108
|
-
* typically lowest frequency) onto `count` positions laid out in a straight
|
|
109
|
-
* line -- a row of bars, or a row of grid columns -- centre-outward and
|
|
110
|
-
* mirrored: band 0 lands on the centre (an odd `count`) or the centre PAIR
|
|
111
|
-
* (an even one, both positions sharing band 0), band 1 on the pair either
|
|
112
|
-
* side of that, and so on outward to the two ends.
|
|
113
|
-
*
|
|
114
|
-
* Every scripted state in this component is already centre-oriented
|
|
115
|
-
* (`listening` blinks the centre bar, `connecting` sweeps inward from both
|
|
116
|
-
* ends, `thinking` sweeps the middle row) -- `speaking` ramping left to
|
|
117
|
-
* right, because it fed the analyser's raw band order straight across, was
|
|
118
|
-
* the one state inconsistent with that. This closes that gap.
|
|
119
|
-
*
|
|
120
|
-
* `halfBands` should have exactly `Math.ceil(count / 2)` entries -- the
|
|
121
|
-
* caller is responsible for requesting that many bands from
|
|
122
|
-
* `useAudioAnalysis`, matching counts exactly rather than leaning on
|
|
123
|
-
* `normalizeVolumeBands`'s pad-by-repeating-the-last-value, which would
|
|
124
|
-
* produce a subtly wrong (not obviously broken) shape here. A shorter
|
|
125
|
-
* `halfBands` still degrades sanely: the outermost positions repeat the last
|
|
126
|
-
* value available rather than reading `undefined`.
|
|
127
|
-
*/
|
|
128
|
-
export function mirrorBandsCenterOut(halfBands: number[], count: number): number[] {
|
|
129
|
-
const center = (count - 1) / 2;
|
|
130
|
-
const out: number[] = new Array(count);
|
|
131
|
-
for (let i = 0; i < count; i++) {
|
|
132
|
-
const ring = Math.floor(Math.abs(i - center));
|
|
133
|
-
out[i] = halfBands[Math.min(ring, halfBands.length - 1)] ?? 0;
|
|
134
|
-
}
|
|
135
|
-
return out;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Maps a smaller, ordered set of "half" band values onto `count` positions
|
|
140
|
-
* arranged around a RING (radial's spokes), mirrored left-right across a
|
|
141
|
-
* single vertical axis rather than fanned from a linear centre: index 0 and
|
|
142
|
-
* index `count / 2` (for an even `count`; radial warns when `count` is not
|
|
143
|
-
* divisible by 4, so this is the common case) are each their own fixed
|
|
144
|
-
* point of the reflection and both land band 0, and every other index pairs
|
|
145
|
-
* with its mirror partner at `count - i`, sharing a band.
|
|
146
|
-
*
|
|
147
|
-
* Radial's own geometry (`variant-radial.tsx`) places index 0 at the
|
|
148
|
-
* BOTTOM of the ring (`rotate(0) translateY(radius)`, and CSS rotation is
|
|
149
|
-
* clockwise for a positive angle), so band 0 (usually the loudest) reads at
|
|
150
|
-
* the bottom, fading toward the top -- not band 0 at both the top AND the
|
|
151
|
-
* bottom, which would need a second, horizontal mirror axis on top of this
|
|
152
|
-
* one. Chosen over that fuller symmetry because it reuses the exact same
|
|
153
|
-
* `Math.ceil(count / 2)` band request as the linear mirror above (one rule
|
|
154
|
-
* for every variant, not a radial-specific band count), and because the
|
|
155
|
-
* task's request was "spikes vary in length, not moving as one" -- this
|
|
156
|
-
* already delivers that. If bottom-loud/top-quiet reads wrong in practice,
|
|
157
|
-
* swapping to true 4-fold symmetry is a self-contained change here, not
|
|
158
|
-
* elsewhere.
|
|
159
|
-
*
|
|
160
|
-
* For an even `count`, the antipodal index (`count / 2`) needs one more
|
|
161
|
-
* distinct band than the linear mirror does (rings run 0..`count / 2`, not
|
|
162
|
-
* 0..`count / 2 - 1`) -- with only `Math.ceil(count / 2)` bands available,
|
|
163
|
-
* that one index clamps to the same value as its nearest neighbour rather
|
|
164
|
-
* than getting a unique band. A minor, deliberate simplification for the
|
|
165
|
-
* same one-rule-for-every-variant reason above.
|
|
166
|
-
*/
|
|
167
|
-
export function mirrorBandsAroundRing(halfBands: number[], count: number): number[] {
|
|
168
|
-
const out: number[] = new Array(count);
|
|
169
|
-
for (let i = 0; i < count; i++) {
|
|
170
|
-
const ring = Math.min(i, count - i);
|
|
171
|
-
out[i] = halfBands[Math.min(ring, halfBands.length - 1)] ?? 0;
|
|
172
|
-
}
|
|
173
|
-
return out;
|
|
174
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
// src/primitives/card-component-types.ts
|
|
2
|
-
// `CardEnvelope.type` -> the Solid component that renders it, as a TYPE.
|
|
3
|
-
//
|
|
4
|
-
// TYPES ONLY, AND THAT IS THE WHOLE FILE. `BUILTIN_CARD_COMPONENTS` and
|
|
5
|
-
// `mergeCardComponents` stay in card-registry.tsx and cannot follow them here: they
|
|
6
|
-
// ARE JSX. So this is not the same split card-tags.ts made — that one moved data and
|
|
7
|
-
// its type; this one moves only the type, because the value half has nowhere else to
|
|
8
|
-
// go. Do not try to "finish" the symmetry by dragging the component map over.
|
|
9
|
-
//
|
|
10
|
-
// WHY THE TYPES ARE ALONE IN A `.ts`
|
|
11
|
-
// ----------------------------------
|
|
12
|
-
// The same reason, one layer along, that card-tags.ts exists — read that file's header
|
|
13
|
-
// first; this is the second instance of its problem, not a new one.
|
|
14
|
-
//
|
|
15
|
-
// `@kitn.ai/ui/schemas` is the server-safe entry, and src/schemas/registry.ts declares
|
|
16
|
-
// `CustomCardSpec.component` and `CardRegistry.components` in terms of
|
|
17
|
-
// `CardComponentMap`. That is a TYPE import and erases at runtime, but a type import
|
|
18
|
-
// still has to RESOLVE, and while these two types lived in card-registry.tsx it
|
|
19
|
-
// resolved to a `.tsx`. tsconfig.mcp.json has no `jsx` on purpose, so the `kai` MCP's
|
|
20
|
-
// typecheck pass reported, on any tree that had not been built:
|
|
21
|
-
//
|
|
22
|
-
// src/schemas/registry.ts(61,51): error TS6142: Module '../primitives/card-registry'
|
|
23
|
-
// was resolved to '.../card-registry.tsx', but '--jsx' is not set.
|
|
24
|
-
//
|
|
25
|
-
// Exactly one error, and the last one standing on an unbuilt tree. Moving the two type
|
|
26
|
-
// aliases into this file takes that pass to 0. Measured on this tree, both directions.
|
|
27
|
-
//
|
|
28
|
-
// Relaxing tsconfig.mcp.json instead is not an option, and that is measured too, not
|
|
29
|
-
// recalled: giving that project `jsx: "preserve"` + `jsxImportSource: "solid-js"` —
|
|
30
|
-
// the settings the main tsconfig.json actually uses — takes it from 1 error to 130,
|
|
31
|
-
// almost all `TS2304: Cannot find name 'HTMLDivElement' / 'window'`, because a `jsx`
|
|
32
|
-
// setting drags the whole Solid component tree into a Node-only, `lib: ["ESNext"]`
|
|
33
|
-
// pass. (`jsx: "preserve"` with no import source is worse still: 838.) card-tags.ts
|
|
34
|
-
// records 1364 for the broader case. The figures differ because the reachable set
|
|
35
|
-
// differs; the conclusion does not. The Node/no-DOM boundary is load-bearing.
|
|
36
|
-
//
|
|
37
|
-
// `import type { Component } from 'solid-js'` below does NOT reintroduce the problem
|
|
38
|
-
// it just solved. Type-importing from solid-js resolves to a `.d.ts`, and a
|
|
39
|
-
// declaration file needs no `jsx` to be read; `skipLibCheck` covers what is inside it.
|
|
40
|
-
// It is resolving a `.tsx` SOURCE file that TS6142 objects to, and this file resolves
|
|
41
|
-
// none.
|
|
42
|
-
//
|
|
43
|
-
// WHAT THIS SPLIT DOES NOT DO
|
|
44
|
-
// ---------------------------
|
|
45
|
-
// It changes nothing at runtime, and must not be sold as if it did. This module is
|
|
46
|
-
// types only, so it compiles to nothing and there is no emitted module to compare:
|
|
47
|
-
// `verify:ssr` and `verify:schemas` read the BUILT entry and cannot tell the two
|
|
48
|
-
// arrangements apart even in principle. card-tags.ts records the same finding for its
|
|
49
|
-
// own case from the harder direction, where there WAS a bundle to diff and it came out
|
|
50
|
-
// byte-identical. The boundary this file defends is a compile-time one. The
|
|
51
|
-
// discriminating check is `tsc --noEmit -p tsconfig.mcp.json` on an UNBUILT tree, and
|
|
52
|
-
// nothing else is evidence for it.
|
|
53
|
-
|
|
54
|
-
import type { Component } from 'solid-js';
|
|
55
|
-
import type { CardEnvelope, CardHost } from './card-contract';
|
|
56
|
-
|
|
57
|
-
/** Solid renderer for one envelope. `host` is the resolved CardHost so each wrapper
|
|
58
|
-
* can bridge its card's emit convention (form/confirm/tasks take `host`;
|
|
59
|
-
* link/embed take `onEmit`). */
|
|
60
|
-
export type CardComponent = Component<{ envelope: CardEnvelope; host?: CardHost }>;
|
|
61
|
-
|
|
62
|
-
/** Solid layer: envelope type → the component that draws it. */
|
|
63
|
-
export type CardComponentMap = Record<string, CardComponent>;
|