@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.
Files changed (376) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-tooling/construct/public.d.ts +15 -0
  3. package/dist/agent-tooling/construct/schema.d.ts +111 -0
  4. package/dist/construct-cli.es.js +3 -3
  5. package/dist/construct.d.ts +5 -0
  6. package/dist/construct.js +327 -0
  7. package/dist/core-C8fzo39E.js +1 -12
  8. package/dist/engine-javascript-C1x7zo1_.js +1 -141
  9. package/dist/mcp.es.js +1 -1
  10. package/package.json +16 -16
  11. package/bin/route.test.js +0 -58
  12. package/src/agent-tooling/README.md +0 -192
  13. package/src/agent-tooling/archetypes.ts +0 -205
  14. package/src/agent-tooling/catalog/README.md +0 -676
  15. package/src/agent-tooling/catalog/catalog-types.ts +0 -231
  16. package/src/agent-tooling/catalog/fabrications.ts +0 -96
  17. package/src/agent-tooling/catalog/invariants.ts +0 -284
  18. package/src/agent-tooling/catalog/labs-titles.ts +0 -114
  19. package/src/agent-tooling/catalog/scenarios.ts +0 -87
  20. package/src/agent-tooling/catalog/surfaces.ts +0 -347
  21. package/src/agent-tooling/construct/cli-entry.ts +0 -8
  22. package/src/agent-tooling/construct/cli.ts +0 -147
  23. package/src/agent-tooling/construct/codegen.ts +0 -1635
  24. package/src/agent-tooling/construct/construct.v1.schema.json +0 -319
  25. package/src/agent-tooling/construct/dev.ts +0 -148
  26. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +0 -7
  27. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +0 -44
  28. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +0 -32
  29. package/src/agent-tooling/construct/schema.ts +0 -452
  30. package/src/agent-tooling/integrations/anthropic.ts +0 -442
  31. package/src/agent-tooling/integrations/cloudflare.ts +0 -218
  32. package/src/agent-tooling/integrations/langgraph.ts +0 -133
  33. package/src/agent-tooling/integrations/mastra.ts +0 -182
  34. package/src/agent-tooling/integrations/mock.ts +0 -148
  35. package/src/agent-tooling/integrations/ollama.ts +0 -97
  36. package/src/agent-tooling/integrations/openai.ts +0 -95
  37. package/src/agent-tooling/integrations/openrouter.ts +0 -82
  38. package/src/agent-tooling/integrations/pi.ts +0 -176
  39. package/src/agent-tooling/integrations/pydantic-ai.ts +0 -108
  40. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +0 -398
  41. package/src/agent-tooling/mcp/css-raw.d.ts +0 -12
  42. package/src/agent-tooling/mcp/manifest.ts +0 -422
  43. package/src/agent-tooling/mcp/server.ts +0 -116
  44. package/src/agent-tooling/mcp/stdio.ts +0 -18
  45. package/src/agent-tooling/mcp/tools/construct.ts +0 -130
  46. package/src/agent-tooling/mcp/tools/debug.ts +0 -621
  47. package/src/agent-tooling/mcp/tools/reference.ts +0 -980
  48. package/src/agent-tooling/mcp/tools/scaffold.ts +0 -6708
  49. package/src/agent-tooling/mcp/tools/theme.ts +0 -456
  50. package/src/agent-tooling/mcp/tools/types.ts +0 -14
  51. package/src/agent-tooling/mcp/validate-args.ts +0 -141
  52. package/src/agent-tooling/recipes/composed-thread.ts +0 -714
  53. package/src/agent-tooling/recipes/index.ts +0 -22
  54. package/src/agent-tooling/recipes/types.ts +0 -32
  55. package/src/agent-tooling/registry.ts +0 -132
  56. package/src/agent-tooling/route-emit.ts +0 -305
  57. package/src/agent-tooling/types.ts +0 -390
  58. package/src/components/artifact-card.tsx +0 -120
  59. package/src/components/artifact.tsx +0 -914
  60. package/src/components/attachment-types.ts +0 -66
  61. package/src/components/attachments.tsx +0 -536
  62. package/src/components/audio-visualizer/audio-visualizer.voice-fixture.ts +0 -257
  63. package/src/components/audio-visualizer/aurora.glsl.ts +0 -330
  64. package/src/components/audio-visualizer/fit-scale.ts +0 -112
  65. package/src/components/audio-visualizer/index.tsx +0 -528
  66. package/src/components/audio-visualizer/labs/lab-choreography.ts +0 -187
  67. package/src/components/audio-visualizer/labs/lab-shaders.ts +0 -363
  68. package/src/components/audio-visualizer/labs/lab-visualizer.tsx +0 -102
  69. package/src/components/audio-visualizer/shader-canvas.tsx +0 -876
  70. package/src/components/audio-visualizer/sizes.ts +0 -54
  71. package/src/components/audio-visualizer/variant-aurora.tsx +0 -305
  72. package/src/components/audio-visualizer/variant-bar.tsx +0 -175
  73. package/src/components/audio-visualizer/variant-custom.tsx +0 -344
  74. package/src/components/audio-visualizer/variant-grid.tsx +0 -175
  75. package/src/components/audio-visualizer/variant-radial.tsx +0 -163
  76. package/src/components/audio-visualizer/variant-wave.tsx +0 -130
  77. package/src/components/audio-visualizer/wave.glsl.ts +0 -130
  78. package/src/components/card-fallback.tsx +0 -60
  79. package/src/components/card-renderer.tsx +0 -220
  80. package/src/components/card.tsx +0 -212
  81. package/src/components/chain-of-thought.tsx +0 -348
  82. package/src/components/chat-container.tsx +0 -89
  83. package/src/components/chat-scope-picker.tsx +0 -57
  84. package/src/components/chat-thread.tsx +0 -1014
  85. package/src/components/checkpoint.tsx +0 -88
  86. package/src/components/choice-card.tsx +0 -743
  87. package/src/components/coachmark.tsx +0 -249
  88. package/src/components/code-block.tsx +0 -181
  89. package/src/components/composer-dom.ts +0 -159
  90. package/src/components/composer-highlight.ts +0 -242
  91. package/src/components/composer-history.ts +0 -82
  92. package/src/components/composer.tsx +0 -1075
  93. package/src/components/confirm-card.tsx +0 -402
  94. package/src/components/context.tsx +0 -377
  95. package/src/components/conversation-item.tsx +0 -241
  96. package/src/components/conversation-list.tsx +0 -429
  97. package/src/components/conversation-panel.tsx +0 -118
  98. package/src/components/dismissed-stub.tsx +0 -80
  99. package/src/components/embed.tsx +0 -200
  100. package/src/components/empty.tsx +0 -177
  101. package/src/components/feedback-bar.tsx +0 -166
  102. package/src/components/file-tree.tsx +0 -530
  103. package/src/components/file-upload.tsx +0 -167
  104. package/src/components/form-widgets.tsx +0 -525
  105. package/src/components/form.tsx +0 -1296
  106. package/src/components/home-panel.tsx +0 -159
  107. package/src/components/image.tsx +0 -65
  108. package/src/components/link-preview.tsx +0 -195
  109. package/src/components/loader.tsx +0 -367
  110. package/src/components/markdown.tsx +0 -162
  111. package/src/components/message-skills.tsx +0 -40
  112. package/src/components/message.tsx +0 -765
  113. package/src/components/model-switcher.tsx +0 -132
  114. package/src/components/prompt-input.tsx +0 -188
  115. package/src/components/prompt-suggestion.tsx +0 -150
  116. package/src/components/reasoning.tsx +0 -293
  117. package/src/components/response-compare-types.ts +0 -152
  118. package/src/components/response-compare.tsx +0 -455
  119. package/src/components/response-stream.tsx +0 -109
  120. package/src/components/screen.tsx +0 -181
  121. package/src/components/scroll-button.tsx +0 -93
  122. package/src/components/source.tsx +0 -192
  123. package/src/components/tasks-card.tsx +0 -801
  124. package/src/components/text-shimmer.tsx +0 -37
  125. package/src/components/thinking-bar.tsx +0 -50
  126. package/src/components/thread.tsx +0 -228
  127. package/src/components/toast.tsx +0 -503
  128. package/src/components/tool-classify.ts +0 -26
  129. package/src/components/tool-types.ts +0 -49
  130. package/src/components/tool.tsx +0 -190
  131. package/src/components/use-card-resolution.ts +0 -44
  132. package/src/components/voice-input.tsx +0 -222
  133. package/src/components/voice-output.tsx +0 -242
  134. package/src/components/widget-tab-bar.tsx +0 -73
  135. package/src/components/workspace-shell.tsx +0 -285
  136. package/src/diagnostics/hook.ts +0 -352
  137. package/src/diagnostics/index.ts +0 -82
  138. package/src/diagnostics/report-request.ts +0 -296
  139. package/src/elements/agent-card.tsx +0 -67
  140. package/src/elements/artifact.tsx +0 -194
  141. package/src/elements/attachments.tsx +0 -140
  142. package/src/elements/audio-visualizer.tsx +0 -227
  143. package/src/elements/autoloader.ts +0 -89
  144. package/src/elements/avatar.tsx +0 -33
  145. package/src/elements/badge.tsx +0 -32
  146. package/src/elements/button.tsx +0 -149
  147. package/src/elements/card.tsx +0 -133
  148. package/src/elements/cards.tsx +0 -266
  149. package/src/elements/chain-of-thought.tsx +0 -141
  150. package/src/elements/chat-scope-picker.tsx +0 -65
  151. package/src/elements/chat-types.ts +0 -102
  152. package/src/elements/chat-workspace.tsx +0 -188
  153. package/src/elements/chat.tsx +0 -304
  154. package/src/elements/checkbox-group.tsx +0 -164
  155. package/src/elements/checkbox.tsx +0 -134
  156. package/src/elements/checkpoint.tsx +0 -47
  157. package/src/elements/choice.tsx +0 -100
  158. package/src/elements/coachmark.tsx +0 -90
  159. package/src/elements/code-block.tsx +0 -60
  160. package/src/elements/command.tsx +0 -197
  161. package/src/elements/compare.tsx +0 -111
  162. package/src/elements/compiled.css +0 -2
  163. package/src/elements/composer.tsx +0 -162
  164. package/src/elements/confirm-card.tsx +0 -76
  165. package/src/elements/context-meter.tsx +0 -107
  166. package/src/elements/conversation-item.tsx +0 -120
  167. package/src/elements/conversation-list.tsx +0 -203
  168. package/src/elements/css.ts +0 -5
  169. package/src/elements/default-input.tsx +0 -392
  170. package/src/elements/define-entry.ts +0 -12
  171. package/src/elements/define.tsx +0 -563
  172. package/src/elements/diagnostic-events.ts +0 -114
  173. package/src/elements/dialog.tsx +0 -145
  174. package/src/elements/disclosure.ts +0 -95
  175. package/src/elements/dock.tsx +0 -215
  176. package/src/elements/dropdown.tsx +0 -123
  177. package/src/elements/editable-label.tsx +0 -140
  178. package/src/elements/element-data-types.ts +0 -152
  179. package/src/elements/element-diagnostics.ts +0 -392
  180. package/src/elements/element-manifest.json +0 -354
  181. package/src/elements/element-nonscalar.json +0 -187
  182. package/src/elements/element-types.d.ts +0 -4353
  183. package/src/elements/embed.tsx +0 -35
  184. package/src/elements/empty.tsx +0 -29
  185. package/src/elements/feedback-bar.tsx +0 -66
  186. package/src/elements/file-tree.tsx +0 -62
  187. package/src/elements/file-upload.tsx +0 -44
  188. package/src/elements/form.tsx +0 -94
  189. package/src/elements/hover-card.tsx +0 -80
  190. package/src/elements/icon.tsx +0 -41
  191. package/src/elements/image.tsx +0 -32
  192. package/src/elements/input.tsx +0 -492
  193. package/src/elements/kbd.tsx +0 -45
  194. package/src/elements/link-preview.tsx +0 -34
  195. package/src/elements/loader.tsx +0 -25
  196. package/src/elements/markdown.tsx +0 -38
  197. package/src/elements/menu.tsx +0 -241
  198. package/src/elements/message-skills.tsx +0 -83
  199. package/src/elements/message.tsx +0 -361
  200. package/src/elements/model-switcher.tsx +0 -121
  201. package/src/elements/nav.tsx +0 -87
  202. package/src/elements/notice.tsx +0 -53
  203. package/src/elements/pane-grid.tsx +0 -111
  204. package/src/elements/pane-group.tsx +0 -119
  205. package/src/elements/pane.tsx +0 -129
  206. package/src/elements/popover.tsx +0 -81
  207. package/src/elements/progress-bar.tsx +0 -39
  208. package/src/elements/prompt-dock.tsx +0 -82
  209. package/src/elements/prompt-input.tsx +0 -240
  210. package/src/elements/prompt-suggestions.tsx +0 -113
  211. package/src/elements/radio-group.tsx +0 -129
  212. package/src/elements/reasoning.tsx +0 -71
  213. package/src/elements/register-impl.ts +0 -148
  214. package/src/elements/register.ts +0 -76
  215. package/src/elements/remote.tsx +0 -225
  216. package/src/elements/resizable.globals.d.ts +0 -36
  217. package/src/elements/resizable.tsx +0 -704
  218. package/src/elements/response-stream.tsx +0 -40
  219. package/src/elements/screen.tsx +0 -90
  220. package/src/elements/scroll-area.tsx +0 -33
  221. package/src/elements/scroll-button.tsx +0 -179
  222. package/src/elements/search.tsx +0 -185
  223. package/src/elements/segmented.tsx +0 -129
  224. package/src/elements/select.tsx +0 -165
  225. package/src/elements/separator.tsx +0 -36
  226. package/src/elements/setting-item.tsx +0 -50
  227. package/src/elements/settings-group.tsx +0 -37
  228. package/src/elements/skeleton.tsx +0 -45
  229. package/src/elements/slider.tsx +0 -171
  230. package/src/elements/slot-text.ts +0 -73
  231. package/src/elements/slots.ts +0 -787
  232. package/src/elements/source.tsx +0 -126
  233. package/src/elements/status.tsx +0 -42
  234. package/src/elements/styles.css +0 -328
  235. package/src/elements/switch.tsx +0 -118
  236. package/src/elements/tabs.tsx +0 -95
  237. package/src/elements/tasks.tsx +0 -103
  238. package/src/elements/text-shimmer.tsx +0 -28
  239. package/src/elements/thinking-bar.tsx +0 -43
  240. package/src/elements/thread.tsx +0 -139
  241. package/src/elements/toast.tsx +0 -106
  242. package/src/elements/tool.tsx +0 -78
  243. package/src/elements/tooltip.tsx +0 -85
  244. package/src/elements/validate-messages.ts +0 -76
  245. package/src/elements/voice-input.tsx +0 -100
  246. package/src/elements/voice-output.tsx +0 -82
  247. package/src/index.ts +0 -430
  248. package/src/primitives/audio-bands.ts +0 -174
  249. package/src/primitives/card-component-types.ts +0 -63
  250. package/src/primitives/card-contract.ts +0 -80
  251. package/src/primitives/card-data-types.ts +0 -361
  252. package/src/primitives/card-host.tsx +0 -37
  253. package/src/primitives/card-recovery.ts +0 -160
  254. package/src/primitives/card-registry.tsx +0 -78
  255. package/src/primitives/card-resolution.ts +0 -36
  256. package/src/primitives/card-routing.ts +0 -85
  257. package/src/primitives/card-schemas/artifact.schema.json +0 -92
  258. package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
  259. package/src/primitives/card-schemas/card-event.schema.json +0 -12
  260. package/src/primitives/card-schemas/choice.schema.json +0 -75
  261. package/src/primitives/card-schemas/confirm.schema.json +0 -65
  262. package/src/primitives/card-schemas/embed.schema.json +0 -63
  263. package/src/primitives/card-schemas/form.result.schema.json +0 -7
  264. package/src/primitives/card-schemas/form.schema.json +0 -53
  265. package/src/primitives/card-schemas/link.schema.json +0 -54
  266. package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
  267. package/src/primitives/card-schemas/tasks.schema.json +0 -83
  268. package/src/primitives/card-tags.ts +0 -61
  269. package/src/primitives/card-validate-cards.ts +0 -255
  270. package/src/primitives/card-validate-schemas.ts +0 -58
  271. package/src/primitives/card-validate.ts +0 -131
  272. package/src/primitives/chat-config.tsx +0 -103
  273. package/src/primitives/composer-model.ts +0 -49
  274. package/src/primitives/composer-triggers.ts +0 -35
  275. package/src/primitives/controllable.ts +0 -21
  276. package/src/primitives/conversation-store.ts +0 -248
  277. package/src/primitives/create-kai-chat.ts +0 -66
  278. package/src/primitives/create-tween.ts +0 -266
  279. package/src/primitives/embed-providers.ts +0 -254
  280. package/src/primitives/field-mask.ts +0 -256
  281. package/src/primitives/field-semantics.ts +0 -115
  282. package/src/primitives/highlighter.ts +0 -157
  283. package/src/primitives/input-mask.ts +0 -853
  284. package/src/primitives/link-preview.ts +0 -87
  285. package/src/primitives/message-feedback.ts +0 -124
  286. package/src/primitives/pdf-preview.ts +0 -121
  287. package/src/primitives/toast-store.ts +0 -338
  288. package/src/primitives/url-scheme-policy.ts +0 -70
  289. package/src/primitives/use-audio-analysis.ts +0 -340
  290. package/src/primitives/use-auto-resize.ts +0 -31
  291. package/src/primitives/use-resize-observer.ts +0 -45
  292. package/src/primitives/use-sequencer.ts +0 -72
  293. package/src/primitives/use-speech-recognition.ts +0 -146
  294. package/src/primitives/use-stick-to-bottom.ts +0 -75
  295. package/src/primitives/use-text-stream.ts +0 -143
  296. package/src/primitives/use-voice-recorder.ts +0 -62
  297. package/src/primitives/visualizer-sequences.ts +0 -350
  298. package/src/remote/host-embed.ts +0 -345
  299. package/src/remote/index.ts +0 -2
  300. package/src/remote/origin.ts +0 -30
  301. package/src/remote/provider-runtime.ts +0 -262
  302. package/src/remote/provider.ts +0 -2
  303. package/src/remote/validate.ts +0 -22
  304. package/src/remote/version.ts +0 -12
  305. package/src/remote/wire.ts +0 -48
  306. package/src/schemas/from-tool-call.ts +0 -151
  307. package/src/schemas/index.ts +0 -341
  308. package/src/schemas/provider-subsets.ts +0 -538
  309. package/src/schemas/registry.ts +0 -355
  310. package/src/schemas/tool-defs.ts +0 -793
  311. package/src/solid.ts +0 -173
  312. package/src/state/index.ts +0 -44
  313. package/src/state/messages.ts +0 -53
  314. package/src/state/mock.ts +0 -297
  315. package/src/state/parts.ts +0 -295
  316. package/src/state/persistence.ts +0 -180
  317. package/src/state/stream.ts +0 -246
  318. package/src/state/suggestions.ts +0 -9
  319. package/src/state/threads.ts +0 -142
  320. package/src/test-utils/fake-clock.ts +0 -88
  321. package/src/types.ts +0 -95
  322. package/src/ui/action-icons.ts +0 -53
  323. package/src/ui/agent-card.tsx +0 -218
  324. package/src/ui/avatar.tsx +0 -23
  325. package/src/ui/badge.tsx +0 -21
  326. package/src/ui/button.tsx +0 -49
  327. package/src/ui/card.tsx +0 -245
  328. package/src/ui/checkbox-group.tsx +0 -153
  329. package/src/ui/checkbox.tsx +0 -63
  330. package/src/ui/collapsible.tsx +0 -163
  331. package/src/ui/command.tsx +0 -103
  332. package/src/ui/dialog.tsx +0 -223
  333. package/src/ui/dock.tsx +0 -630
  334. package/src/ui/dropdown.tsx +0 -636
  335. package/src/ui/editable-label.tsx +0 -112
  336. package/src/ui/hover-card.tsx +0 -345
  337. package/src/ui/icon.tsx +0 -167
  338. package/src/ui/input.tsx +0 -391
  339. package/src/ui/kbd.tsx +0 -118
  340. package/src/ui/nav.tsx +0 -282
  341. package/src/ui/notice.tsx +0 -84
  342. package/src/ui/overlay.tsx +0 -277
  343. package/src/ui/pane-grid.tsx +0 -117
  344. package/src/ui/pane-group.tsx +0 -291
  345. package/src/ui/pane.tsx +0 -193
  346. package/src/ui/popover.tsx +0 -106
  347. package/src/ui/progress-bar.tsx +0 -83
  348. package/src/ui/prompt-dock.tsx +0 -145
  349. package/src/ui/radio.tsx +0 -150
  350. package/src/ui/resizable.tsx +0 -693
  351. package/src/ui/scroll-area.tsx +0 -26
  352. package/src/ui/segmented.tsx +0 -109
  353. package/src/ui/select.tsx +0 -168
  354. package/src/ui/separator.tsx +0 -10
  355. package/src/ui/settings-group.tsx +0 -67
  356. package/src/ui/skeleton.tsx +0 -73
  357. package/src/ui/slider.tsx +0 -178
  358. package/src/ui/status.tsx +0 -48
  359. package/src/ui/switch.tsx +0 -119
  360. package/src/ui/tabs.tsx +0 -168
  361. package/src/ui/textarea.tsx +0 -21
  362. package/src/ui/tooltip.tsx +0 -118
  363. package/src/utils/cn.ts +0 -30
  364. package/src/wire/chunk.ts +0 -248
  365. package/src/wire/consume.ts +0 -599
  366. package/src/wire/diagnostics.ts +0 -727
  367. package/src/wire/encode-probe.ts +0 -214
  368. package/src/wire/encode.ts +0 -947
  369. package/src/wire/files.ts +0 -342
  370. package/src/wire/formats/anthropic.ts +0 -274
  371. package/src/wire/formats/openai.ts +0 -228
  372. package/src/wire/index.ts +0 -95
  373. package/src/wire/media-types.ts +0 -344
  374. package/src/wire/read.ts +0 -396
  375. package/src/wire/sink-helpers.ts +0 -50
  376. package/src/wire/sse.ts +0 -153
@@ -1,341 +0,0 @@
1
- // @kitn.ai/ui/schemas: the card JSON Schemas, reachable.
2
- //
3
- // The 11 schema documents under src/primitives/card-schemas/ have been copied into
4
- // dist/schemas/ on every build and shipped in every tarball since the card contract
5
- // landed. Nothing could reach them: package.json "exports" is a CLOSED map with no
6
- // `./schemas` key, so both `@kitn.ai/ui/schemas` and
7
- // `@kitn.ai/ui/schemas/confirm.schema.json` resolved to TS2307 /
8
- // ERR_PACKAGE_PATH_NOT_EXPORTED. This repo's own reference harness gave up and
9
- // hand-derived the confirm schema in
10
- // examples/internal/openrouter-spike/src/card-schema.ts, saying so in a comment.
11
- //
12
- // WHY THIS JS ENTRY IS THE PRIMARY SURFACE
13
- // ----------------------------------------
14
- // The raw JSON subpaths ship too (`@kitn.ai/ui/schemas/confirm.schema.json`), and
15
- // they are the right answer for a Python or Go backend, or for `fetch`. They are
16
- // the SECONDARY surface for JS/TS consumers because importing JSON breaks three
17
- // different ways across the framework targets the scaffolder supports: Node ESM and
18
- // TS `nodenext` need `with { type: 'json' }`, types need `resolveJsonModule` in any
19
- // mode, and Workers need a `wrangler` rule. A JS entry has none of those problems
20
- // anywhere, and it picks up `verify:ssr` coverage for free, since that guard derives
21
- // its entry list from the exports map.
22
- //
23
- // SERVER-SAFE, DELIBERATELY
24
- // -------------------------
25
- // No DOM, no Solid, no `fetch`. Everything reached from here is data or plain
26
- // functions, and as of src/primitives/card-component-types.ts that is true of the
27
- // TYPES too: nothing reachable from this entry resolves to a `.tsx` any more, so a
28
- // Node/no-DOM project can read the whole graph from source. (`CardComponentMap` used
29
- // to come from primitives/card-registry.tsx and was the last exception.) This entry
30
- // is meant to be imported by a backend route that hands tool definitions to a model,
31
- // so anything that touches a browser global would defeat its purpose. `verify:ssr`
32
- // asserts the RUNTIME half, by importing the BUILT entry under the `node` condition
33
- // in its own child process; the compile-time half is `tsc --noEmit -p
34
- // tsconfig.mcp.json` on a tree with no dist/, and only that one sees a `.tsx` creep
35
- // back in.
36
- //
37
- // WHAT `verify:ssr` DOES NOT CATCH, MEASURED
38
- // ------------------------------------------
39
- // It checks the BUILT bundle, so it only sees what survives tree-shaking — and
40
- // rollup is good enough here that it does not see the mistake you would actually
41
- // make. Measured, not assumed: pointing the `BUILTIN_CARD_TAGS` re-export below at
42
- // src/primitives/card-registry.TSX instead of card-tags.ts produces a byte-identical
43
- // dist/schemas.js with zero `solid-js` references, and imports clean under `node`.
44
- // Rollup compiles the whole Solid component tree (build time 0.2s -> 3.9s) and then
45
- // discards all of it, because only the tag map is reachable.
46
- //
47
- // So the `.ts` split is NOT holding a runtime guard up, and must not be described as
48
- // if it were. What it buys is that this entry's server-safety stops depending on
49
- // tree-shaking staying perfect: one module-scope side effect anywhere under
50
- // components/ and the discarded tree stops being discardable. Removing the dependency
51
- // beats relying on it being elided.
52
- //
53
- // WHAT IT COSTS, AND WHERE
54
- // ------------------------
55
- // dist/schemas.js, measured on this tree, not recalled:
56
- //
57
- // 42,658 B min / 11,762 B gzip before ./registry landed
58
- // 53,658 B min / 14,669 B gzip after ./registry (+11,000 B / +2,907 B gzip)
59
- // 53,864 B min / 14,739 B gzip now, with BUILTIN_CARD_TAGS (+206 B / +70 B gzip)
60
- //
61
- // The middle row is this comment's previous "53,656 / 14,667", re-measured rather than
62
- // carried forward; the 2-byte drift is what a claim costs when it is copied instead of
63
- // taken again. The last row is the tag map below, measured by building this entry with
64
- // and without that one export line.
65
- //
66
- // The `18,160 B / 5,800 B` this comment used to claim was measured at 0.20.1, before
67
- // tool-defs and provider-subsets were added to the barrel, and had been stale ever
68
- // since. Corrected here rather than left, because a size claim nobody re-measures is
69
- // the same class of thing as a guard nobody watches fail.
70
- //
71
- // The delta is ./registry plus what it pulls: primitives/card-validate.ts (the
72
- // validator) and primitives/card-validate-schemas.ts (the LEAN projection). That last
73
- // one means the seven card schemas appear TWICE in this bundle, authored and lean.
74
- // Deliberate, and the alternative is worse: validating built-ins against the authored
75
- // documents here while the browser validates them against the projection would be two
76
- // behaviours wearing one name. One function, one answer, 4 KB.
77
- //
78
- // All of it is a SERVER cost and does not touch a client bundle. Nothing in the
79
- // component tree imports this entry, so no consumer pays it unless a route or a
80
- // build script imports it on purpose. If you are here comparing it against the
81
- // ~1 KB gzip figure in the emit-contract plan, those are different things: that one
82
- // is the LEAN projection destined for the browser (descriptions and `$id` stripped,
83
- // validation keywords only), which is a separate artifact and not this file.
84
- //
85
- // NOT RESTATED
86
- // ------------
87
- // Every value below is the JSON file itself, imported and inlined by the bundler.
88
- // There is no hand-copied shape here and there must never be one: `verify:schemas`
89
- // asserts each exported entry is byte-identical to its file on disk, and that the
90
- // two maps between them account for every file in the directory and for nothing
91
- // else. The whole point of this entry is to stop the same shape existing in five
92
- // places.
93
-
94
- import type { JsonSchema } from '../primitives/card-validate';
95
-
96
- import artifactSchema from '../primitives/card-schemas/artifact.schema.json';
97
- import cardEnvelopeSchema from '../primitives/card-schemas/card-envelope.schema.json';
98
- import cardEventSchema from '../primitives/card-schemas/card-event.schema.json';
99
- import choiceSchema from '../primitives/card-schemas/choice.schema.json';
100
- import confirmSchema from '../primitives/card-schemas/confirm.schema.json';
101
- import embedSchema from '../primitives/card-schemas/embed.schema.json';
102
- import formResultSchema from '../primitives/card-schemas/form.result.schema.json';
103
- import formSchema from '../primitives/card-schemas/form.schema.json';
104
- import linkSchema from '../primitives/card-schemas/link.schema.json';
105
- import tasksResultSchema from '../primitives/card-schemas/tasks.result.schema.json';
106
- import tasksSchema from '../primitives/card-schemas/tasks.schema.json';
107
-
108
- /**
109
- * A card schema document, as authored.
110
- *
111
- * Wider than {@link JsonSchema} on purpose. `JsonSchema` describes the LEAN subset
112
- * `validateAgainstSchema` implements; the files also carry `$schema`, `$id`,
113
- * `title`, `description`, `default`, `additionalProperties`, `x-kai-*`, and (in
114
- * `embed` and `artifact`) `allOf`/`if`/`then`/`oneOf`. Reading a document as
115
- * `JsonSchema` alone would quietly imply the validator understands all of it.
116
- */
117
- export type CardSchema = JsonSchema & Readonly<Record<string, unknown>>;
118
-
119
- /**
120
- * DO NOT "TIGHTEN" THIS TO `doc as JsonSchema`, OR DELETE THE CAST.
121
- *
122
- * It reads like laziness and is not. `JsonSchema` (src/primitives/card-validate.ts)
123
- * pins `type` to a literal union — `'string' | 'number' | ... | 'null'` — while
124
- * TypeScript infers plain `string` for the `"type"` member of an imported JSON
125
- * literal, so a schema document is NOT assignable to `JsonSchema` and no narrowing
126
- * short of a per-file `as const` would make it so. On top of that the documents
127
- * legitimately carry `$schema`, `$id`, `title`, `description`, `default`,
128
- * `additionalProperties`, `x-kai-*` and (in `embed` and `artifact`)
129
- * `allOf`/`if`/`then`/`oneOf`, which `JsonSchema` does not describe at all.
130
- *
131
- * So this widens once, at the module boundary, deliberately. It is not a claim
132
- * about the contents, and the claim it does NOT make is checked elsewhere:
133
- * `verify:schemas` imports the BUILT entry from a temp package outside the repo and
134
- * asserts every exported value is byte-identical to its file on disk. A tighter
135
- * type here would buy nothing that check does not already prove, and would cost the
136
- * ability to represent the schemas we actually ship.
137
- */
138
- const asSchema = (doc: unknown): CardSchema => doc as CardSchema;
139
-
140
- /**
141
- * The card-DATA schemas: one per built-in `CardEnvelope.type`, describing the
142
- * `data` payload for that type. These are the tool candidates. The key IS the
143
- * envelope type.
144
- */
145
- export type CardSchemaName = 'artifact' | 'choice' | 'confirm' | 'embed' | 'form' | 'link' | 'tasks';
146
-
147
- /**
148
- * The contract shapes: the envelope itself, the event a card emits back up, and the
149
- * two result payloads. Not card data and NOT tool candidates — a model is never
150
- * asked to emit one of these, so keeping them out of `cardSchemas` is what stops
151
- * `cardTools()` offering the model an envelope-shaped tool.
152
- */
153
- export type ContractSchemaName = 'card-envelope' | 'card-event' | 'form.result' | 'tasks.result';
154
-
155
- /** The 7 card-data schemas, keyed by `CardEnvelope.type`. */
156
- export const cardSchemas: Readonly<Record<CardSchemaName, CardSchema>> = Object.freeze({
157
- artifact: asSchema(artifactSchema),
158
- choice: asSchema(choiceSchema),
159
- confirm: asSchema(confirmSchema),
160
- embed: asSchema(embedSchema),
161
- form: asSchema(formSchema),
162
- link: asSchema(linkSchema),
163
- tasks: asSchema(tasksSchema),
164
- });
165
-
166
- /** The 4 contract shapes, keyed by file stem. */
167
- export const contractSchemas: Readonly<Record<ContractSchemaName, CardSchema>> = Object.freeze({
168
- 'card-envelope': asSchema(cardEnvelopeSchema),
169
- 'card-event': asSchema(cardEventSchema),
170
- 'form.result': asSchema(formResultSchema),
171
- 'tasks.result': asSchema(tasksResultSchema),
172
- });
173
-
174
- /** The built-in card types, in the order `cardSchemas` declares them. */
175
- export const cardSchemaNames: readonly CardSchemaName[] = Object.freeze(
176
- Object.keys(cardSchemas) as CardSchemaName[],
177
- );
178
-
179
- /** Narrow an arbitrary string to a built-in card type. */
180
- export function isCardSchemaName(name: string): name is CardSchemaName {
181
- return Object.prototype.hasOwnProperty.call(cardSchemas, name);
182
- }
183
-
184
- // Re-exported so a consumer reading a schema out of these maps can annotate what
185
- // they hand to the kit's validator without a second import.
186
- export type { JsonSchema, ValidationResult } from '../primitives/card-validate';
187
- export type { CardEnvelope } from '../primitives/card-contract';
188
-
189
- // The card PAYLOAD types — `CardEnvelope.data`, one per built-in card type — so a
190
- // TypeScript backend can NAME the shape it is building instead of assembling an
191
- // `unknown` and hoping.
192
- //
193
- // This is the point of the whole entry, restated at the type level. We publish
194
- // `./schemas/*.json` precisely so a Python or Go route can generate models for
195
- // these payloads, and until this block existed TypeScript — the language the kit
196
- // is authored in — was the one that could not: the types lived inside their
197
- // components' `.tsx`, so naming one from a Node/no-DOM project was TS6142 and
198
- // re-exporting one from here would have dragged the Solid tree into this entry's
199
- // graph. They are authored in ../primitives/card-data-types.ts now, which has no
200
- // DOM and no Solid below it, so this costs the entry nothing — see that file's
201
- // header, and note that the check which can tell the difference is
202
- // `tsc --noEmit -p tsconfig.mcp.json` on a tree with no dist/ present.
203
- //
204
- // Types only: they erase, so this adds nothing to dist/schemas.js.
205
- export type {
206
- ArtifactCardData,
207
- ArtifactCardEnvelope,
208
- ArtifactCardFile,
209
- ArtifactCardTab,
210
- ChoiceAllowOther,
211
- ChoiceCardData,
212
- ChoiceCardEnvelope,
213
- ChoiceOption,
214
- ChoiceOptionMedia,
215
- ConfirmAction,
216
- ConfirmActionStyle,
217
- ConfirmCardData,
218
- ConfirmCardEnvelope,
219
- ConfirmTone,
220
- FormCardEnvelope,
221
- FormDefinition,
222
- FormField,
223
- TasksCardData,
224
- TasksCardEnvelope,
225
- TasksCardResult,
226
- TasksTask,
227
- } from '../primitives/card-data-types';
228
-
229
- // The remaining two payload types, `link` and `embed`.
230
- //
231
- // They are NOT in card-data-types.ts, and that is deliberate rather than an
232
- // oversight to be tidied later: that file exists to rescue types that were
233
- // trapped inside a `.tsx`, and these two never were. `LinkPreviewData` and
234
- // `EmbedCardData` have always been authored beside the pure logic that consumes
235
- // them — `resolveLinkMetadata`, `resolveEmbed`/`watchUrl` — in modules that carry
236
- // no DOM and no Solid, so they were already importable from a Node/no-DOM
237
- // project. Moving them would buy nothing and would split each type from the
238
- // functions written against it.
239
- //
240
- // Which is precisely how they got missed. The extraction that created
241
- // card-data-types.ts swept the `.tsx` files, exported what it found HERE, and
242
- // the two types that needed no rescuing were never on its list — five of seven
243
- // payload types landed on this entry and nobody noticed the other two, because
244
- // both are exported from src/index.ts and every check asked only whether a
245
- // consumer could reach them from SOME public barrel. A backend cannot import
246
- // from src/index.ts; that is the Solid-bearing one. See the REACHABILITY note in
247
- // card-type-parity.test.ts, which now enumerates the payload types from
248
- // `cardSchemas` and requires each to be reachable from THIS entry specifically.
249
- //
250
- // `EmbedProvider` comes along because `EmbedCardData.provider` names it, and a
251
- // member type a consumer cannot import leaves them writing `provider: 'youtube'
252
- // as EmbedCardData['provider']`. `ResolvedEmbed` and `LinkMetadataFetcher` stay
253
- // off this entry on purpose — they describe how a card RENDERS and how an app
254
- // resolves metadata in the browser, neither of which a route builds.
255
- export type { EmbedCardData, EmbedCardEnvelope, EmbedProvider } from '../primitives/embed-providers';
256
- export type { LinkPreviewData, LinkPreviewEnvelope } from '../primitives/link-preview';
257
-
258
- // The loop, both directions.
259
- //
260
- // `cardTools` projects a card schema INTO a provider tool definition;
261
- // `cardFromToolCall` turns the model's call back into a renderable envelope. They
262
- // are the two halves of one contract and the tool-name convention that joins them
263
- // lives in ./from-tool-call, spelled once. Exporting `from-tool-call` here is not
264
- // bookkeeping: `verify:schemas` and `verify:ssr` both read the BUILT entry, so a
265
- // module missing from this barrel is a module no guard covers.
266
- export { cardFromToolCall, isCardTool, cardTypeFromToolName, toolNameForCardType, KAI_TOOL_PREFIX } from './from-tool-call';
267
-
268
- // `tool-defs` imports `cardSchemas` back out of this module so that
269
- // `cardTools({ provider })` can default to the built-ins. That cycle is deliberate
270
- // and safe (the read happens inside a function, never at module init); the comment
271
- // on `builtInSchemas()` over there explains why, and why it must not be hoisted.
272
- export {
273
- CARD_TOOL_DESCRIPTIONS,
274
- UnsupportedCardToolSchemaError,
275
- cardTools,
276
- toAnthropicTools,
277
- toJsonSchemaTools,
278
- toOpenAITools,
279
- } from './tool-defs';
280
- export type {
281
- AnthropicToolDef,
282
- CardRequireRule,
283
- CardToolInput,
284
- CardToolOptions,
285
- CardToolSource,
286
- JsonSchemaToolDef,
287
- OpenAIToolDef,
288
- ToolDef,
289
- ToolDefFor,
290
- ToolParameters,
291
- ToolProvider,
292
- UnsupportedCardTool,
293
- } from './tool-defs';
294
-
295
- // The registry: "these are the card types THIS app renders", written once and threaded
296
- // to both ends (`chat.cardTypes = cards.tags` on the client, `cardTools(cards, …)` on
297
- // the route). It is what turns the `cardTypes` seam from something a developer CAN use
298
- // into the path they normally take, which is the only thing that stops it rotting again
299
- // the way it did when the conformance spike's `spike-artifact` workaround was deleted.
300
- //
301
- // `registry.ts` imports `cardSchemas` back out of this module, the same deliberate
302
- // cycle `tool-defs` has and for the same reason; the read happens inside
303
- // `createCardRegistry`, never at module init.
304
- export { createCardRegistry } from './registry';
305
- export type { CardRegistry, CardRegistrySpec, CustomCardSpec, IncompletePolicy } from './registry';
306
-
307
- // Re-exported so a route can check a custom card's data server-side, in the tool loop,
308
- // with the same tiering the browser dispatchers use, rather than a second validator.
309
- // `registry.validate()` is the ergonomic form; this is the same function underneath.
310
- export { cardValidationMessage, validateCardData } from '../primitives/card-validate-cards';
311
- export type { CardValidationIssue, CardValidationReport, CardValidationTier } from '../primitives/card-validate-cards';
312
-
313
- // `CardEnvelope.type` -> the `kai-*` element that renders it — exported because a
314
- // server-side reader needed it and was inventing its own answer instead.
315
- //
316
- // src/agent-tooling/mcp/manifest.ts used to RE-DERIVE this map from the element
317
- // manifest by convention (`kai-<type>`, else the single `kai-<type>-*`). The
318
- // derivation was correct — it even got `link` -> `kai-link-preview` right, via the
319
- // prefix branch — but it was a second copy of a fact the repo already held, kept
320
- // honest only by a test. It re-derived because the authoritative map shared a module
321
- // with `BUILTIN_CARD_COMPONENTS`, which is nothing but Solid, and the MCP is a
322
- // Node/no-DOM project (tsconfig.mcp.json: `lib: ["ESNext"]`, no `jsx` — giving it one
323
- // measures 0 errors -> 1364). src/primitives/card-tags.ts is that data on its own, so
324
- // the map is now readable from source by anything, with or without a DOM.
325
- //
326
- // See "WHAT `verify:ssr` DOES NOT CATCH" above before describing the split as a
327
- // bundle-safety fix: it is a dependency-graph fix, and the bundle is identical either
328
- // way today.
329
- //
330
- // `mergeCardTags` is deliberately NOT re-exported here: merging a consumer's overrides
331
- // is a rendering concern, it already ships from the main entry, and this one is for
332
- // routes.
333
- export { BUILTIN_CARD_TAGS } from '../primitives/card-tags';
334
- export type { CardTagMap } from '../primitives/card-tags';
335
-
336
- // The two provider subsets, exported rather than kept private, because a developer
337
- // registering a CUSTOM card schema in Phase 2 needs the same check we run on ours,
338
- // and because `verify:tool-schemas` reads them out of the BUILT entry rather than
339
- // re-deriving them (a guard with its own copy of the table proves nothing).
340
- export { ANTHROPIC_STRICT, OPENAI_STRICT, checkProviderSubset, providerSubsets } from './provider-subsets';
341
- export type { KeywordRule, KeywordStatus, ProviderSubset, StrictProviderId, SubsetViolation } from './provider-subsets';