basalt-ui 1.41.0 → 2.0.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 (914) hide show
  1. package/AGENTS.md +46 -43
  2. package/CHANGELOG.md +535 -518
  3. package/MIGRATING.md +945 -37
  4. package/README.md +171 -366
  5. package/agent/rules/basalt-batteries.md +19 -74
  6. package/agent/rules/basalt-charts.md +21 -95
  7. package/agent/rules/basalt-controls.md +23 -131
  8. package/agent/rules/basalt-mantine.md +26 -99
  9. package/agent/rules/basalt-state.md +21 -103
  10. package/agent/rules/basalt-tokens.md +33 -114
  11. package/agent/skills/basalt-app/SKILL.md +229 -72
  12. package/agent/skills/basalt-charts/SKILL.md +23 -57
  13. package/agent/skills/basalt-design/SKILL.md +12 -70
  14. package/agent/templates/AGENTS-block.md.tpl +16 -26
  15. package/agent/templates/DESIGN.md.tpl +1 -1
  16. package/agent/templates/__root.tpl +9 -16
  17. package/agent/templates/main.tpl +21 -0
  18. package/agent/templates/nav.tpl +18 -0
  19. package/configs/oxlint-basalt.json +4 -10
  20. package/configs/oxlint-plugin.js +465 -844
  21. package/configs/oxlint-plugin.test.ts +661 -709
  22. package/configs/oxlint.json +10 -2
  23. package/dist/agent/ai-sdk-transport.d.ts +19 -7
  24. package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
  25. package/dist/agent/ai-sdk-transport.js +10 -7
  26. package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
  27. package/dist/agent/chat/composer.d.ts.map +1 -0
  28. package/dist/{agent-chat → agent/chat}/composer.js +10 -9
  29. package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
  30. package/dist/agent/chat/message-affordances.d.ts.map +1 -0
  31. package/dist/agent/chat/relative-time.d.ts.map +1 -0
  32. package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
  33. package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
  34. package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
  35. package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
  36. package/dist/agent/chat/thread-feed.d.ts.map +1 -0
  37. package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
  38. package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
  39. package/dist/agent/chat/thread-message.d.ts.map +1 -0
  40. package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
  41. package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
  42. package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
  43. package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
  44. package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
  45. package/dist/agent/chat/tool-chip.d.ts.map +1 -0
  46. package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
  47. package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
  48. package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
  49. package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
  50. package/dist/agent/chat/virtualize.d.ts.map +1 -0
  51. package/dist/agent/error.d.ts +31 -0
  52. package/dist/agent/error.d.ts.map +1 -0
  53. package/dist/agent/error.js +18 -0
  54. package/dist/agent/history.d.ts +2 -36
  55. package/dist/agent/history.d.ts.map +1 -1
  56. package/dist/agent/history.js +0 -32
  57. package/dist/agent/id.d.ts +4 -5
  58. package/dist/agent/id.d.ts.map +1 -1
  59. package/dist/agent/index.d.ts +19 -52
  60. package/dist/agent/index.d.ts.map +1 -1
  61. package/dist/agent/index.js +10 -32
  62. package/dist/agent/outcome.d.ts +3 -14
  63. package/dist/agent/outcome.d.ts.map +1 -1
  64. package/dist/agent/outcome.js +0 -30
  65. package/dist/agent/part-list.d.ts +3 -3
  66. package/dist/agent/part-list.d.ts.map +1 -1
  67. package/dist/agent/parts.d.ts +23 -24
  68. package/dist/agent/parts.d.ts.map +1 -1
  69. package/dist/agent/run-committer.d.ts +23 -0
  70. package/dist/agent/run-committer.d.ts.map +1 -0
  71. package/dist/agent/run-committer.js +41 -0
  72. package/dist/agent/run-records.d.ts +77 -0
  73. package/dist/agent/run-records.d.ts.map +1 -0
  74. package/dist/agent/run-records.js +69 -0
  75. package/dist/agent/thread.d.ts +23 -47
  76. package/dist/agent/thread.d.ts.map +1 -1
  77. package/dist/agent/thread.js +3 -134
  78. package/dist/agent/transport.d.ts +6 -69
  79. package/dist/agent/transport.d.ts.map +1 -1
  80. package/dist/agent/transport.js +0 -18
  81. package/dist/agent/use-agent-thread-runs.d.ts +63 -26
  82. package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
  83. package/dist/agent/use-agent-thread-runs.js +202 -66
  84. package/dist/charts/BandStrip.d.ts +46 -0
  85. package/dist/charts/BandStrip.d.ts.map +1 -0
  86. package/dist/charts/BandStrip.js +151 -0
  87. package/dist/charts/Bars.d.ts +19 -0
  88. package/dist/charts/Bars.d.ts.map +1 -0
  89. package/dist/charts/Bars.js +77 -0
  90. package/dist/charts/CartesianChart.d.ts +57 -0
  91. package/dist/charts/CartesianChart.d.ts.map +1 -0
  92. package/dist/charts/CartesianChart.js +121 -0
  93. package/dist/charts/ChartCard.d.ts +34 -0
  94. package/dist/charts/ChartCard.d.ts.map +1 -0
  95. package/dist/charts/ChartCard.js +115 -0
  96. package/dist/charts/Donut.d.ts +25 -0
  97. package/dist/charts/Donut.d.ts.map +1 -0
  98. package/dist/charts/Donut.js +191 -0
  99. package/dist/charts/DualPanel.d.ts +47 -0
  100. package/dist/charts/DualPanel.d.ts.map +1 -0
  101. package/dist/charts/DualPanel.js +214 -0
  102. package/dist/charts/Heatmap.d.ts +41 -0
  103. package/dist/charts/Heatmap.d.ts.map +1 -0
  104. package/dist/charts/Heatmap.js +216 -0
  105. package/dist/charts/Lines.d.ts +11 -0
  106. package/dist/charts/Lines.d.ts.map +1 -0
  107. package/dist/charts/Lines.js +114 -0
  108. package/dist/charts/MirroredBars.d.ts +44 -0
  109. package/dist/charts/MirroredBars.d.ts.map +1 -0
  110. package/dist/charts/MirroredBars.js +190 -0
  111. package/dist/charts/Sparkline.d.ts +22 -0
  112. package/dist/charts/Sparkline.d.ts.map +1 -0
  113. package/dist/charts/Sparkline.js +129 -0
  114. package/dist/charts/StackedArea.d.ts +15 -0
  115. package/dist/charts/StackedArea.d.ts.map +1 -0
  116. package/dist/charts/StackedArea.js +46 -0
  117. package/dist/charts/box.d.ts +38 -0
  118. package/dist/charts/box.d.ts.map +1 -0
  119. package/dist/charts/box.js +72 -0
  120. package/dist/charts/card-context.d.ts +3 -0
  121. package/dist/charts/card-context.d.ts.map +1 -0
  122. package/dist/charts/card-context.js +7 -0
  123. package/dist/charts/chart-box.module.css +64 -0
  124. package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
  125. package/dist/charts/chart-card.module.css +25 -0
  126. package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
  127. package/dist/charts/chart-legend.module.css +38 -0
  128. package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
  129. package/dist/charts/compile.d.ts +62 -0
  130. package/dist/charts/compile.d.ts.map +1 -0
  131. package/dist/charts/compile.js +386 -0
  132. package/dist/charts/cursor.d.ts +50 -0
  133. package/dist/charts/cursor.d.ts.map +1 -0
  134. package/dist/charts/cursor.js +157 -0
  135. package/dist/charts/curves.d.ts +12 -0
  136. package/dist/charts/curves.d.ts.map +1 -0
  137. package/dist/charts/curves.js +86 -0
  138. package/dist/charts/donut.module.css +54 -0
  139. package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
  140. package/dist/charts/host.d.ts +17 -0
  141. package/dist/charts/host.d.ts.map +1 -0
  142. package/dist/charts/host.js +35 -0
  143. package/dist/charts/index.d.ts +18 -53
  144. package/dist/charts/index.d.ts.map +1 -1
  145. package/dist/charts/index.js +17 -189
  146. package/dist/charts/legend.d.ts +23 -0
  147. package/dist/charts/legend.d.ts.map +1 -0
  148. package/dist/charts/legend.js +160 -0
  149. package/dist/charts/marks.d.ts +25 -0
  150. package/dist/charts/marks.d.ts.map +1 -0
  151. package/dist/charts/marks.js +128 -0
  152. package/dist/charts/panel.d.ts +56 -0
  153. package/dist/charts/panel.d.ts.map +1 -0
  154. package/dist/charts/panel.js +123 -0
  155. package/dist/charts/scales.d.ts +44 -0
  156. package/dist/charts/scales.d.ts.map +1 -0
  157. package/dist/charts/scales.js +163 -0
  158. package/dist/charts/sizing.d.ts +12 -0
  159. package/dist/charts/sizing.d.ts.map +1 -0
  160. package/dist/charts/sizing.js +33 -0
  161. package/dist/charts/state.d.ts +17 -0
  162. package/dist/charts/state.d.ts.map +1 -0
  163. package/dist/charts/state.js +53 -0
  164. package/dist/charts/theme.d.ts +38 -19
  165. package/dist/charts/theme.d.ts.map +1 -1
  166. package/dist/charts/theme.js +48 -26
  167. package/dist/charts/types.d.ts +227 -0
  168. package/dist/charts/types.d.ts.map +1 -0
  169. package/dist/charts/types.js +4 -0
  170. package/dist/cli/audit-allows.d.ts +4 -17
  171. package/dist/cli/audit-allows.d.ts.map +1 -1
  172. package/dist/cli/config.d.ts +14 -43
  173. package/dist/cli/config.d.ts.map +1 -1
  174. package/dist/cli/doctor-upgrade.d.ts +31 -0
  175. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  176. package/dist/cli/doctor-upgrade.js +269 -0
  177. package/dist/cli/doctor.d.ts +13 -29
  178. package/dist/cli/doctor.d.ts.map +1 -1
  179. package/dist/cli/doctor.js +51 -9
  180. package/dist/cli/help.d.ts.map +1 -1
  181. package/dist/cli/help.js +2 -4
  182. package/dist/cli/index.d.ts +48 -172
  183. package/dist/cli/index.d.ts.map +1 -1
  184. package/dist/cli/index.js +39 -132
  185. package/dist/cli/init.d.ts.map +1 -1
  186. package/dist/cli/init.js +43 -37
  187. package/dist/cli/sync.d.ts +5 -21
  188. package/dist/cli/sync.d.ts.map +1 -1
  189. package/dist/cli/sync.js +4 -23
  190. package/dist/cli/tokens-css.d.ts +7 -28
  191. package/dist/cli/tokens-css.d.ts.map +1 -1
  192. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  193. package/dist/commands/ShortcutsHelp.js +4 -5
  194. package/dist/commands/define-commands.d.ts +15 -31
  195. package/dist/commands/define-commands.d.ts.map +1 -1
  196. package/dist/commands/define-commands.js +1 -11
  197. package/dist/commands/define-overlays.d.ts +5 -19
  198. package/dist/commands/define-overlays.d.ts.map +1 -1
  199. package/dist/commands/define-overlays.js +3 -11
  200. package/dist/commands/index.d.ts +10 -40
  201. package/dist/commands/index.d.ts.map +1 -1
  202. package/dist/commands/index.js +9 -46
  203. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  204. package/dist/commands/notifications/bell.d.ts.map +1 -0
  205. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  206. package/dist/commands/notifications/center.d.ts.map +1 -0
  207. package/dist/{notifications → commands/notifications}/center.js +2 -2
  208. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  209. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  210. package/dist/commands/notifications/notify.d.ts +44 -0
  211. package/dist/commands/notifications/notify.d.ts.map +1 -0
  212. package/dist/commands/notifications/notify.js +79 -0
  213. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  214. package/dist/commands/notifications/store.d.ts.map +1 -0
  215. package/dist/{notifications → commands/notifications}/store.js +4 -0
  216. package/dist/commands/projectors.d.ts +1 -131
  217. package/dist/commands/projectors.d.ts.map +1 -1
  218. package/dist/commands/projectors.js +2 -73
  219. package/dist/commands/shell-bridge.d.ts +3 -3
  220. package/dist/commands/shortcut-format.d.ts +5 -4
  221. package/dist/commands/shortcut-format.d.ts.map +1 -1
  222. package/dist/common/errors.d.ts +3 -3
  223. package/dist/common/use-measured-widths.d.ts.map +1 -1
  224. package/dist/common/use-measured-widths.js +5 -3
  225. package/dist/common/validate.d.ts +2 -2
  226. package/dist/content/article-layout.d.ts.map +1 -1
  227. package/dist/content/article-layout.js +3 -3
  228. package/dist/content/article-model.d.ts +1 -46
  229. package/dist/content/article-model.d.ts.map +1 -1
  230. package/dist/content/article-model.js +1 -29
  231. package/dist/content/index.d.ts +11 -41
  232. package/dist/content/index.d.ts.map +1 -1
  233. package/dist/content/index.js +3 -35
  234. package/dist/content/markdown.d.ts +1 -1
  235. package/dist/content/markdown.d.ts.map +1 -1
  236. package/dist/content/markdown.js +1 -1
  237. package/dist/content/mermaid.d.ts.map +1 -1
  238. package/dist/content/mermaid.js +7 -7
  239. package/dist/content/slug.d.ts +1 -8
  240. package/dist/content/slug.d.ts.map +1 -1
  241. package/dist/content/slug.js +1 -8
  242. package/dist/content/url-hardening.d.ts +2 -2
  243. package/dist/content/url-hardening.d.ts.map +1 -1
  244. package/dist/content/url-hardening.js +2 -0
  245. package/dist/controls/actions.d.ts +16 -1
  246. package/dist/controls/actions.d.ts.map +1 -1
  247. package/dist/controls/enum-filter.d.ts +1 -1
  248. package/dist/controls/enum-filter.d.ts.map +1 -1
  249. package/dist/controls/filter-context.d.ts.map +1 -1
  250. package/dist/controls/filter-context.js +3 -1
  251. package/dist/controls/filter-set.js +4 -6
  252. package/dist/controls/form-layout.d.ts +1 -1
  253. package/dist/controls/form-layout.d.ts.map +1 -1
  254. package/dist/controls/form-layout.js +1 -1
  255. package/dist/controls/glyphs.d.ts +0 -2
  256. package/dist/controls/glyphs.d.ts.map +1 -1
  257. package/dist/controls/glyphs.js +0 -7
  258. package/dist/controls/index.d.ts +12 -17
  259. package/dist/controls/index.d.ts.map +1 -1
  260. package/dist/controls/index.js +5 -39
  261. package/dist/controls/multi-select-filter.d.ts +4 -3
  262. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  263. package/dist/controls/number-filter.d.ts +4 -3
  264. package/dist/controls/number-filter.d.ts.map +1 -1
  265. package/dist/controls/number-filter.js +3 -1
  266. package/dist/controls/range-filter.d.ts +4 -3
  267. package/dist/controls/range-filter.d.ts.map +1 -1
  268. package/dist/controls/search-filter.d.ts +4 -3
  269. package/dist/controls/search-filter.d.ts.map +1 -1
  270. package/dist/controls/search-filter.js +19 -14
  271. package/dist/controls/select-filter.d.ts +4 -3
  272. package/dist/controls/select-filter.d.ts.map +1 -1
  273. package/dist/controls/sync-button.d.ts.map +1 -1
  274. package/dist/controls/sync-button.js +12 -15
  275. package/dist/controls/toggle-filter.d.ts +4 -3
  276. package/dist/controls/toggle-filter.d.ts.map +1 -1
  277. package/dist/controls/uncontrolled.d.ts +12 -0
  278. package/dist/controls/uncontrolled.d.ts.map +1 -0
  279. package/dist/controls/view-tabs.d.ts +2 -2
  280. package/dist/controls/view-tabs.d.ts.map +1 -1
  281. package/dist/controls-dates/index.d.ts +0 -1
  282. package/dist/controls-dates/index.d.ts.map +1 -1
  283. package/dist/dashboard/index.d.ts +7 -9
  284. package/dist/dashboard/index.d.ts.map +1 -1
  285. package/dist/dashboard/index.js +3 -23
  286. package/dist/dashboard/section.d.ts +4 -6
  287. package/dist/dashboard/section.d.ts.map +1 -1
  288. package/dist/dashboard/section.js +4 -10
  289. package/dist/dashboard/stat-card.d.ts +4 -4
  290. package/dist/dashboard/stat-card.d.ts.map +1 -1
  291. package/dist/dashboard/stat-card.js +3 -3
  292. package/dist/dashboard/widget-header.module.css +9 -7
  293. package/dist/dev-dock.d.ts.map +1 -1
  294. package/dist/dev-dock.js +6 -1
  295. package/dist/format/date.d.ts +0 -34
  296. package/dist/format/date.d.ts.map +1 -1
  297. package/dist/format/date.js +0 -54
  298. package/dist/format/index.d.ts +7 -22
  299. package/dist/format/index.d.ts.map +1 -1
  300. package/dist/format/index.js +2 -43
  301. package/dist/format/number.d.ts +3 -14
  302. package/dist/format/number.d.ts.map +1 -1
  303. package/dist/format/number.js +0 -13
  304. package/dist/format/shared.d.ts +2 -3
  305. package/dist/format/shared.d.ts.map +1 -1
  306. package/dist/forms/index.d.ts +0 -11
  307. package/dist/forms/index.d.ts.map +1 -1
  308. package/dist/forms/index.js +1 -14
  309. package/dist/guard/index.d.ts +6 -21
  310. package/dist/guard/index.d.ts.map +1 -1
  311. package/dist/guard/index.js +27 -115
  312. package/dist/guard/types.d.ts +7 -18
  313. package/dist/guard/types.d.ts.map +1 -1
  314. package/dist/index.d.ts +16 -48
  315. package/dist/index.d.ts.map +1 -1
  316. package/dist/index.js +21 -117
  317. package/dist/provider/create-router.d.ts +44 -0
  318. package/dist/provider/create-router.d.ts.map +1 -0
  319. package/dist/provider/create-router.js +62 -0
  320. package/dist/provider/hotkeys.d.ts +8 -0
  321. package/dist/provider/hotkeys.d.ts.map +1 -0
  322. package/dist/provider/hotkeys.js +50 -0
  323. package/dist/provider/index.d.ts +33 -110
  324. package/dist/provider/index.d.ts.map +1 -1
  325. package/dist/provider/index.js +182 -82
  326. package/dist/provider/lab-theme.d.ts.map +1 -1
  327. package/dist/provider/route-transition.d.ts +76 -0
  328. package/dist/provider/route-transition.d.ts.map +1 -0
  329. package/dist/provider/route-transition.js +98 -0
  330. package/dist/provider/spotlight-actions.d.ts +10 -0
  331. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  332. package/dist/provider/spotlight-actions.js +55 -0
  333. package/dist/provider/test-router.d.ts +6 -0
  334. package/dist/provider/test-router.d.ts.map +1 -0
  335. package/dist/provider/test-router.js +18 -0
  336. package/dist/query-client.d.ts +4 -20
  337. package/dist/query-client.d.ts.map +1 -1
  338. package/dist/query-client.js +2 -2
  339. package/dist/router-tanstack/index.d.ts +18 -64
  340. package/dist/router-tanstack/index.d.ts.map +1 -1
  341. package/dist/router-tanstack/index.js +2 -16
  342. package/dist/router-tanstack/nav.d.ts +12 -1
  343. package/dist/router-tanstack/nav.d.ts.map +1 -1
  344. package/dist/router-tanstack/nav.js +8 -1
  345. package/dist/router-tanstack/search-store.d.ts +1 -1
  346. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  347. package/dist/router-tanstack/use-nav.d.ts +8 -9
  348. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  349. package/dist/router-tanstack/use-nav.js +20 -1
  350. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  351. package/dist/shell/app-sidebar.js +1 -1
  352. package/dist/shell/index.d.ts +31 -10
  353. package/dist/shell/index.d.ts.map +1 -1
  354. package/dist/shell/index.js +14 -3
  355. package/dist/shell/page-aside.d.ts +2 -2
  356. package/dist/shell/page-aside.d.ts.map +1 -1
  357. package/dist/shell/page-aside.js +31 -12
  358. package/dist/shell/page-bar.d.ts +2 -2
  359. package/dist/shell/page-bar.d.ts.map +1 -1
  360. package/dist/shell/page-bar.js +1 -1
  361. package/dist/state.d.ts +10 -12
  362. package/dist/state.d.ts.map +1 -1
  363. package/dist/state.js +4 -6
  364. package/dist/styles.css +107 -7
  365. package/dist/surfaces.d.ts +28 -103
  366. package/dist/surfaces.d.ts.map +1 -1
  367. package/dist/surfaces.js +54 -143
  368. package/dist/{data → table}/data-table-state.d.ts +1 -1
  369. package/dist/table/data-table-state.d.ts.map +1 -0
  370. package/dist/{data → table}/data-table-state.js +4 -3
  371. package/dist/{data → table}/data-table.d.ts +28 -49
  372. package/dist/table/data-table.d.ts.map +1 -0
  373. package/dist/{data → table}/data-table.js +74 -60
  374. package/dist/table/index.d.ts +18 -0
  375. package/dist/table/index.d.ts.map +1 -0
  376. package/dist/{data/table.js → table/index.js} +1 -1
  377. package/dist/table/query-branch.d.ts.map +1 -0
  378. package/dist/table/table-features.d.ts +69 -0
  379. package/dist/table/table-features.d.ts.map +1 -0
  380. package/dist/table/table-features.js +49 -0
  381. package/dist/telemetry.d.ts +77 -0
  382. package/dist/telemetry.d.ts.map +1 -0
  383. package/dist/telemetry.js +33 -0
  384. package/dist/theme/index.d.ts +10 -21
  385. package/dist/theme/index.d.ts.map +1 -1
  386. package/dist/theme/index.js +3 -14
  387. package/dist/theme/theme-toggle.d.ts.map +1 -1
  388. package/dist/theme/theme-toggle.js +7 -33
  389. package/dist/theme/theme-toggle.module.css +30 -0
  390. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  391. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  392. package/dist/theme-lab/derive-controls.js +5 -3
  393. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  394. package/dist/theme-lab/derive-state.js +2 -1
  395. package/dist/tokens/core.d.ts +360 -0
  396. package/dist/tokens/core.d.ts.map +1 -0
  397. package/dist/tokens/core.js +708 -0
  398. package/dist/tokens/derive.d.ts +1 -1
  399. package/dist/tokens/derive.d.ts.map +1 -1
  400. package/dist/tokens/index.d.ts +5 -373
  401. package/dist/tokens/index.d.ts.map +1 -1
  402. package/dist/tokens/index.js +8 -700
  403. package/dist/tokens/palette.d.ts +2 -6
  404. package/dist/tokens/palette.d.ts.map +1 -1
  405. package/dist/tokens/palette.js +1 -4
  406. package/dist/vite.d.ts +4 -3
  407. package/dist/vite.d.ts.map +1 -1
  408. package/llms.txt +43 -85
  409. package/package.json +77 -170
  410. package/src/agent/ai-sdk-transport.ts +57 -37
  411. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  412. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  413. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  414. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  415. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  416. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  417. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  418. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  419. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  420. package/src/agent/error.ts +43 -0
  421. package/src/agent/history.ts +2 -107
  422. package/src/agent/id.ts +4 -5
  423. package/src/agent/index.ts +23 -112
  424. package/src/agent/outcome.ts +3 -56
  425. package/src/agent/part-list.tsx +3 -3
  426. package/src/agent/parts.ts +23 -22
  427. package/src/agent/run-committer.ts +64 -0
  428. package/src/agent/run-records.ts +147 -0
  429. package/src/agent/thread.ts +24 -231
  430. package/src/agent/transport.ts +6 -96
  431. package/src/agent/use-agent-thread-runs.ts +364 -199
  432. package/src/charts/BandStrip.tsx +276 -0
  433. package/src/charts/Bars.tsx +141 -0
  434. package/src/charts/CartesianChart.tsx +206 -0
  435. package/src/charts/ChartCard.tsx +178 -0
  436. package/src/charts/Donut.tsx +256 -0
  437. package/src/charts/DualPanel.tsx +326 -0
  438. package/src/charts/Heatmap.tsx +282 -0
  439. package/src/charts/Lines.tsx +151 -0
  440. package/src/charts/MirroredBars.tsx +303 -0
  441. package/src/charts/Sparkline.tsx +176 -0
  442. package/src/charts/StackedArea.tsx +80 -0
  443. package/src/charts/box.tsx +96 -0
  444. package/src/charts/card-context.ts +11 -0
  445. package/src/charts/chart-box.module.css +64 -0
  446. package/src/charts/chart-box.module.css.d.ts +12 -0
  447. package/src/charts/chart-card.module.css +25 -0
  448. package/src/charts/chart-card.module.css.d.ts +8 -0
  449. package/src/charts/chart-legend.module.css +38 -0
  450. package/src/charts/chart-legend.module.css.d.ts +10 -0
  451. package/src/charts/compile.ts +585 -0
  452. package/src/charts/cursor.ts +282 -0
  453. package/src/charts/curves.ts +111 -0
  454. package/src/charts/donut.module.css +54 -0
  455. package/src/charts/donut.module.css.d.ts +9 -0
  456. package/src/charts/host.tsx +60 -0
  457. package/src/charts/index.ts +41 -178
  458. package/src/charts/legend.tsx +204 -0
  459. package/src/charts/marks.ts +201 -0
  460. package/src/charts/panel.tsx +227 -0
  461. package/src/charts/scales.ts +237 -0
  462. package/src/charts/sizing.ts +47 -0
  463. package/src/charts/state.tsx +80 -0
  464. package/src/charts/theme.ts +65 -0
  465. package/src/charts/types.ts +242 -0
  466. package/src/cli/audit-allows.ts +8 -30
  467. package/src/cli/config.ts +14 -43
  468. package/src/cli/doctor-upgrade.ts +392 -0
  469. package/src/cli/doctor.ts +81 -72
  470. package/src/cli/help.ts +2 -4
  471. package/src/cli/index.ts +100 -384
  472. package/src/cli/init.ts +60 -51
  473. package/src/cli/sync.ts +13 -68
  474. package/src/cli/tokens-css.ts +7 -28
  475. package/src/commands/ShortcutsHelp.tsx +8 -9
  476. package/src/commands/define-commands.ts +16 -43
  477. package/src/commands/define-overlays.ts +12 -36
  478. package/src/commands/index.ts +11 -94
  479. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  480. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  481. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  482. package/src/commands/notifications/notify.tsx +158 -0
  483. package/src/{notifications → commands/notifications}/store.ts +10 -2
  484. package/src/commands/projectors.ts +5 -225
  485. package/src/commands/shell-bridge.ts +5 -5
  486. package/src/commands/shortcut-format.ts +5 -4
  487. package/src/common/errors.ts +3 -3
  488. package/src/common/use-measured-widths.ts +6 -3
  489. package/src/common/validate.ts +2 -2
  490. package/src/content/article-layout.tsx +37 -38
  491. package/src/content/article-model.ts +1 -84
  492. package/src/content/index.ts +12 -83
  493. package/src/content/markdown.tsx +4 -3
  494. package/src/content/mermaid.tsx +9 -7
  495. package/src/content/slug.ts +1 -16
  496. package/src/content/url-hardening.ts +8 -2
  497. package/src/controls/actions.tsx +24 -1
  498. package/src/controls/enum-filter.tsx +1 -1
  499. package/src/controls/filter-context.tsx +3 -1
  500. package/src/controls/filter-set.tsx +5 -7
  501. package/src/controls/form-layout.tsx +2 -2
  502. package/src/controls/glyphs.tsx +0 -10
  503. package/src/controls/index.ts +13 -64
  504. package/src/controls/multi-select-filter.tsx +5 -4
  505. package/src/controls/number-filter.tsx +8 -4
  506. package/src/controls/range-filter.tsx +5 -4
  507. package/src/controls/search-filter.tsx +25 -19
  508. package/src/controls/select-filter.tsx +5 -4
  509. package/src/controls/sync-button.tsx +18 -20
  510. package/src/controls/toggle-filter.tsx +5 -4
  511. package/src/controls/uncontrolled.ts +12 -0
  512. package/src/controls/view-tabs.tsx +3 -3
  513. package/src/controls-dates/date-range-picker.tsx +1 -1
  514. package/src/controls-dates/index.ts +0 -1
  515. package/src/dashboard/index.ts +7 -48
  516. package/src/dashboard/section.tsx +11 -40
  517. package/src/dashboard/stat-card.tsx +14 -16
  518. package/src/dashboard/widget-header.module.css +9 -7
  519. package/src/dev-dock.tsx +14 -27
  520. package/src/format/date.ts +2 -92
  521. package/src/format/index.ts +7 -53
  522. package/src/format/number.ts +3 -26
  523. package/src/format/shared.ts +2 -3
  524. package/src/forms/index.ts +0 -23
  525. package/src/guard/index.ts +36 -191
  526. package/src/guard/types.ts +6 -19
  527. package/src/index.ts +30 -282
  528. package/src/provider/create-router.tsx +138 -0
  529. package/src/provider/hotkeys.ts +70 -0
  530. package/src/provider/index.tsx +260 -230
  531. package/src/provider/lab-theme.ts +3 -2
  532. package/src/provider/route-transition.ts +199 -0
  533. package/src/provider/spotlight-actions.tsx +69 -0
  534. package/src/provider/test-router.tsx +25 -0
  535. package/src/query-client.ts +4 -22
  536. package/src/router-tanstack/index.ts +18 -112
  537. package/src/router-tanstack/nav.ts +28 -2
  538. package/src/router-tanstack/search-store.ts +9 -2
  539. package/src/router-tanstack/use-nav.ts +47 -13
  540. package/src/shell/app-mobile-nav.tsx +3 -2
  541. package/src/shell/app-sidebar.tsx +1 -1
  542. package/src/shell/aside-docking.ts +1 -1
  543. package/src/shell/index.tsx +61 -20
  544. package/src/shell/page-aside.tsx +47 -23
  545. package/src/shell/page-bar.tsx +3 -3
  546. package/src/shell/page-title.tsx +1 -1
  547. package/src/state.ts +11 -37
  548. package/src/styles.css +107 -7
  549. package/src/surfaces.ts +56 -151
  550. package/src/{data → table}/data-table-state.ts +5 -4
  551. package/src/{data → table}/data-table.tsx +170 -161
  552. package/src/table/index.ts +18 -0
  553. package/src/table/table-features.ts +102 -0
  554. package/src/telemetry.ts +110 -0
  555. package/src/theme/index.ts +22 -47
  556. package/src/theme/theme-toggle.module.css +30 -0
  557. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  558. package/src/theme/theme-toggle.tsx +15 -43
  559. package/src/theme-lab/derive-controls.tsx +5 -3
  560. package/src/theme-lab/derive-state.ts +2 -1
  561. package/src/tokens/core.ts +1163 -0
  562. package/src/tokens/derive.ts +1 -1
  563. package/src/tokens/index.ts +14 -1181
  564. package/src/tokens/palette.ts +3 -7
  565. package/src/vite.ts +3 -3
  566. package/agent/templates/query-client.ts.tpl +0 -26
  567. package/dist/agent/adapter.d.ts +0 -150
  568. package/dist/agent/adapter.d.ts.map +0 -1
  569. package/dist/agent/adapter.js +0 -482
  570. package/dist/agent/use-agent-stream.d.ts +0 -35
  571. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  572. package/dist/agent/use-agent-stream.js +0 -59
  573. package/dist/agent-chat/composer.d.ts.map +0 -1
  574. package/dist/agent-chat/index.d.ts +0 -31
  575. package/dist/agent-chat/index.d.ts.map +0 -1
  576. package/dist/agent-chat/index.js +0 -19
  577. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  578. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  579. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  580. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  581. package/dist/agent-chat/thread-detail-panel.js +0 -115
  582. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  583. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  584. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  585. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  586. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  587. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  588. package/dist/agent-chat/thread-workspace.js +0 -153
  589. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  590. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  591. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  592. package/dist/charts/cursor/resolve.d.ts +0 -75
  593. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  594. package/dist/charts/cursor/resolve.js +0 -91
  595. package/dist/charts/cursor/scope.d.ts +0 -20
  596. package/dist/charts/cursor/scope.d.ts.map +0 -1
  597. package/dist/charts/cursor/scope.js +0 -20
  598. package/dist/charts/cursor/store.d.ts +0 -35
  599. package/dist/charts/cursor/store.d.ts.map +0 -1
  600. package/dist/charts/cursor/store.js +0 -25
  601. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  602. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  603. package/dist/charts/cursor/touch-pin.js +0 -79
  604. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  605. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  606. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  607. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  608. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  609. package/dist/charts/hooks/use-hysteresis.js +0 -12
  610. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  611. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  612. package/dist/charts/hooks/useBandPlot.js +0 -178
  613. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  614. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  615. package/dist/charts/hooks/useChartCursor.js +0 -200
  616. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  617. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  618. package/dist/charts/hooks/useChartSize.js +0 -8
  619. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  620. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  621. package/dist/charts/kinds/BandStrip.js +0 -241
  622. package/dist/charts/kinds/Bars.d.ts +0 -141
  623. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  624. package/dist/charts/kinds/Bars.js +0 -343
  625. package/dist/charts/kinds/Donut.d.ts +0 -77
  626. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  627. package/dist/charts/kinds/Donut.js +0 -245
  628. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  629. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  630. package/dist/charts/kinds/DualPanel.js +0 -471
  631. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  632. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  633. package/dist/charts/kinds/Heatmap.js +0 -243
  634. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  635. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  636. package/dist/charts/kinds/MirroredBars.js +0 -292
  637. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  638. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  639. package/dist/charts/kinds/MultiLine.js +0 -176
  640. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  641. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  642. package/dist/charts/kinds/StackedArea.js +0 -135
  643. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  644. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  645. package/dist/charts/kinds/ZonedLine.js +0 -155
  646. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  647. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  648. package/dist/charts/kinds/band-chrome.js +0 -71
  649. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  650. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  651. package/dist/charts/kinds/donut-layout.js +0 -52
  652. package/dist/charts/layout/auto-margin.d.ts +0 -122
  653. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  654. package/dist/charts/layout/auto-margin.js +0 -81
  655. package/dist/charts/layout/end-labels.d.ts +0 -64
  656. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  657. package/dist/charts/layout/end-labels.js +0 -76
  658. package/dist/charts/layout/log-ticks.d.ts +0 -27
  659. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  660. package/dist/charts/layout/log-ticks.js +0 -42
  661. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  662. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  663. package/dist/charts/primitives/AreaGradient.js +0 -13
  664. package/dist/charts/primitives/Axes.d.ts +0 -83
  665. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  666. package/dist/charts/primitives/Axes.js +0 -168
  667. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  668. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  669. package/dist/charts/primitives/CartesianChart.js +0 -549
  670. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  671. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  672. package/dist/charts/primitives/ChartCard.js +0 -143
  673. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  674. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  675. package/dist/charts/primitives/ChartFrame.js +0 -241
  676. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  677. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  678. package/dist/charts/primitives/ChartLegend.js +0 -292
  679. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  680. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  681. package/dist/charts/primitives/ChartPending.js +0 -117
  682. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  683. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  684. package/dist/charts/primitives/ChartTooltip.js +0 -197
  685. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  686. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  687. package/dist/charts/primitives/Crosshair.js +0 -23
  688. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  689. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  690. package/dist/charts/primitives/HatchPattern.js +0 -31
  691. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  692. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  693. package/dist/charts/primitives/HoverOverlay.js +0 -72
  694. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  695. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  696. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  697. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  698. package/dist/charts/primitives/XZoneRects.js +0 -65
  699. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  700. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  701. package/dist/charts/primitives/ZoneRects.js +0 -30
  702. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  703. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  704. package/dist/charts/primitives/chart-card-context.js +0 -18
  705. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  706. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  707. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  708. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  709. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  710. package/dist/charts/primitives/chart-layout.js +0 -175
  711. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  712. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  713. package/dist/charts/primitives/chart-tier.js +0 -44
  714. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  715. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  716. package/dist/charts/primitives/legend-disclosure.js +0 -153
  717. package/dist/charts/series.d.ts +0 -189
  718. package/dist/charts/series.d.ts.map +0 -1
  719. package/dist/charts/series.js +0 -84
  720. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  721. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  722. package/dist/charts/sparklines/BarSparkline.js +0 -53
  723. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  724. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  725. package/dist/charts/sparklines/LineSparkline.js +0 -51
  726. package/dist/charts/sparklines/index.d.ts +0 -3
  727. package/dist/charts/sparklines/index.d.ts.map +0 -1
  728. package/dist/charts/sparklines/index.js +0 -6
  729. package/dist/charts/utils/domain.d.ts +0 -35
  730. package/dist/charts/utils/domain.d.ts.map +0 -1
  731. package/dist/charts/utils/domain.js +0 -12
  732. package/dist/charts/utils/format.d.ts +0 -8
  733. package/dist/charts/utils/format.d.ts.map +0 -1
  734. package/dist/charts/utils/format.js +0 -20
  735. package/dist/charts/utils/measure-text.d.ts +0 -25
  736. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  737. package/dist/charts/utils/measure-text.js +0 -64
  738. package/dist/charts/utils/ticks.d.ts +0 -103
  739. package/dist/charts/utils/ticks.d.ts.map +0 -1
  740. package/dist/charts/utils/ticks.js +0 -92
  741. package/dist/commands/overlays-mount.d.ts +0 -122
  742. package/dist/commands/overlays-mount.d.ts.map +0 -1
  743. package/dist/commands/overlays-mount.js +0 -125
  744. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  745. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  746. package/dist/commands/useCommandHotkeys.js +0 -45
  747. package/dist/content/article-actions.d.ts +0 -39
  748. package/dist/content/article-actions.d.ts.map +0 -1
  749. package/dist/content/article-actions.js +0 -28
  750. package/dist/content/article-card.d.ts +0 -58
  751. package/dist/content/article-card.d.ts.map +0 -1
  752. package/dist/content/article-card.js +0 -79
  753. package/dist/content/article-card.module.css +0 -111
  754. package/dist/content/mdx.d.ts +0 -20
  755. package/dist/content/mdx.d.ts.map +0 -1
  756. package/dist/content/mdx.js +0 -64
  757. package/dist/controls/compare-filter.d.ts +0 -42
  758. package/dist/controls/compare-filter.d.ts.map +0 -1
  759. package/dist/controls/compare-filter.js +0 -38
  760. package/dist/controls/slider-control.d.ts +0 -36
  761. package/dist/controls/slider-control.d.ts.map +0 -1
  762. package/dist/controls/slider-control.js +0 -64
  763. package/dist/dashboard/widget-grid.d.ts +0 -27
  764. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  765. package/dist/dashboard/widget-grid.js +0 -40
  766. package/dist/dashboard/widget-grid.module.css +0 -69
  767. package/dist/data/data-table-state.d.ts.map +0 -1
  768. package/dist/data/data-table.d.ts.map +0 -1
  769. package/dist/data/query-branch.d.ts.map +0 -1
  770. package/dist/data/table.d.ts +0 -24
  771. package/dist/data/table.d.ts.map +0 -1
  772. package/dist/data/virtual-list.d.ts +0 -133
  773. package/dist/data/virtual-list.d.ts.map +0 -1
  774. package/dist/data/virtual-list.js +0 -157
  775. package/dist/data/virtual.d.ts +0 -21
  776. package/dist/data/virtual.d.ts.map +0 -1
  777. package/dist/data/virtual.js +0 -4
  778. package/dist/forms/FormErrorSummary.d.ts +0 -30
  779. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  780. package/dist/forms/FormErrorSummary.js +0 -30
  781. package/dist/forms/use-field-array.d.ts +0 -60
  782. package/dist/forms/use-field-array.d.ts.map +0 -1
  783. package/dist/forms/use-field-array.js +0 -20
  784. package/dist/forms/use-form-draft.d.ts +0 -76
  785. package/dist/forms/use-form-draft.d.ts.map +0 -1
  786. package/dist/forms/use-form-draft.js +0 -92
  787. package/dist/forms/use-form-submit.d.ts +0 -88
  788. package/dist/forms/use-form-submit.d.ts.map +0 -1
  789. package/dist/forms/use-form-submit.js +0 -63
  790. package/dist/notifications/bell.d.ts.map +0 -1
  791. package/dist/notifications/center.d.ts.map +0 -1
  792. package/dist/notifications/define-notifications.d.ts.map +0 -1
  793. package/dist/notifications/index.d.ts +0 -40
  794. package/dist/notifications/index.d.ts.map +0 -1
  795. package/dist/notifications/index.js +0 -54
  796. package/dist/notifications/mount-guard.d.ts +0 -8
  797. package/dist/notifications/mount-guard.d.ts.map +0 -1
  798. package/dist/notifications/mount-guard.js +0 -18
  799. package/dist/notifications/notify.d.ts +0 -149
  800. package/dist/notifications/notify.d.ts.map +0 -1
  801. package/dist/notifications/notify.js +0 -171
  802. package/dist/notifications/store.d.ts.map +0 -1
  803. package/dist/provider/connectivity-indicator.d.ts +0 -13
  804. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  805. package/dist/provider/connectivity-indicator.js +0 -205
  806. package/dist/provider/connectivity-provider.d.ts +0 -7
  807. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  808. package/dist/provider/connectivity-provider.js +0 -128
  809. package/dist/provider/connectivity-types.d.ts +0 -36
  810. package/dist/provider/connectivity-types.d.ts.map +0 -1
  811. package/dist/provider/use-connectivity.d.ts +0 -3
  812. package/dist/provider/use-connectivity.d.ts.map +0 -1
  813. package/dist/provider/use-connectivity.js +0 -14
  814. package/dist/query-devtools.d.ts +0 -21
  815. package/dist/query-devtools.d.ts.map +0 -1
  816. package/dist/query-devtools.js +0 -13
  817. package/src/agent/adapter.ts +0 -945
  818. package/src/agent/use-agent-stream.ts +0 -154
  819. package/src/agent-chat/index.ts +0 -54
  820. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  821. package/src/agent-chat/thread-workspace.tsx +0 -279
  822. package/src/charts/cursor/resolve.ts +0 -198
  823. package/src/charts/cursor/scope.tsx +0 -35
  824. package/src/charts/cursor/store.ts +0 -58
  825. package/src/charts/cursor/touch-pin.ts +0 -138
  826. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  827. package/src/charts/hooks/use-hysteresis.ts +0 -26
  828. package/src/charts/hooks/useBandPlot.ts +0 -383
  829. package/src/charts/hooks/useChartCursor.ts +0 -367
  830. package/src/charts/hooks/useChartSize.ts +0 -35
  831. package/src/charts/kinds/BandStrip.tsx +0 -449
  832. package/src/charts/kinds/Bars.tsx +0 -589
  833. package/src/charts/kinds/Donut.tsx +0 -368
  834. package/src/charts/kinds/DualPanel.tsx +0 -712
  835. package/src/charts/kinds/Heatmap.tsx +0 -396
  836. package/src/charts/kinds/MirroredBars.tsx +0 -469
  837. package/src/charts/kinds/MultiLine.tsx +0 -322
  838. package/src/charts/kinds/StackedArea.tsx +0 -267
  839. package/src/charts/kinds/ZonedLine.tsx +0 -301
  840. package/src/charts/kinds/band-chrome.tsx +0 -91
  841. package/src/charts/kinds/donut-layout.ts +0 -82
  842. package/src/charts/layout/auto-margin.ts +0 -242
  843. package/src/charts/layout/end-labels.ts +0 -135
  844. package/src/charts/layout/log-ticks.ts +0 -90
  845. package/src/charts/primitives/AreaGradient.tsx +0 -26
  846. package/src/charts/primitives/Axes.tsx +0 -271
  847. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  848. package/src/charts/primitives/ChartCard.tsx +0 -280
  849. package/src/charts/primitives/ChartFrame.tsx +0 -493
  850. package/src/charts/primitives/ChartLegend.tsx +0 -422
  851. package/src/charts/primitives/ChartPending.tsx +0 -243
  852. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  853. package/src/charts/primitives/Crosshair.tsx +0 -43
  854. package/src/charts/primitives/HatchPattern.tsx +0 -55
  855. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  856. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  857. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  858. package/src/charts/primitives/XZoneRects.tsx +0 -132
  859. package/src/charts/primitives/ZoneRects.tsx +0 -67
  860. package/src/charts/primitives/chart-card-context.ts +0 -46
  861. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  862. package/src/charts/primitives/chart-layout.ts +0 -318
  863. package/src/charts/primitives/chart-tier.tsx +0 -76
  864. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  865. package/src/charts/series.ts +0 -276
  866. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  867. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  868. package/src/charts/sparklines/index.ts +0 -2
  869. package/src/charts/theme.tsx +0 -53
  870. package/src/charts/utils/domain.ts +0 -41
  871. package/src/charts/utils/format.ts +0 -19
  872. package/src/charts/utils/measure-text.ts +0 -109
  873. package/src/charts/utils/ticks.ts +0 -239
  874. package/src/commands/overlays-mount.tsx +0 -333
  875. package/src/commands/useCommandHotkeys.ts +0 -114
  876. package/src/content/article-actions.ts +0 -72
  877. package/src/content/article-card.module.css +0 -111
  878. package/src/content/article-card.tsx +0 -174
  879. package/src/content/mdx.tsx +0 -127
  880. package/src/controls/compare-filter.tsx +0 -81
  881. package/src/controls/slider-control.tsx +0 -159
  882. package/src/dashboard/widget-grid.module.css +0 -69
  883. package/src/dashboard/widget-grid.tsx +0 -146
  884. package/src/data/table.ts +0 -39
  885. package/src/data/virtual-list.tsx +0 -356
  886. package/src/data/virtual.ts +0 -26
  887. package/src/forms/FormErrorSummary.tsx +0 -71
  888. package/src/forms/use-field-array.ts +0 -94
  889. package/src/forms/use-form-draft.ts +0 -262
  890. package/src/forms/use-form-submit.ts +0 -199
  891. package/src/notifications/index.ts +0 -88
  892. package/src/notifications/mount-guard.ts +0 -38
  893. package/src/notifications/notify.tsx +0 -379
  894. package/src/provider/connectivity-indicator.tsx +0 -267
  895. package/src/provider/connectivity-provider.tsx +0 -189
  896. package/src/provider/connectivity-types.ts +0 -42
  897. package/src/provider/use-connectivity.ts +0 -26
  898. package/src/query-devtools.tsx +0 -40
  899. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  900. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  901. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  902. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  903. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  904. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  905. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  906. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  907. /package/dist/{data → table}/data-table.module.css +0 -0
  908. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  909. /package/dist/{data → table}/query-branch.d.ts +0 -0
  910. /package/dist/{data → table}/query-branch.js +0 -0
  911. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  912. /package/src/{data → table}/data-table.module.css +0 -0
  913. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  914. /package/src/{data → table}/query-branch.ts +0 -0
@@ -8,7 +8,7 @@
8
8
  * validated, the error text, the denial reason, or the approve/deny affordances.
9
9
  *
10
10
  * @example
11
- * import { ToolChip } from 'basalt-ui/agent-chat'
11
+ * import { ToolChip } from 'basalt-ui/agent'
12
12
  *
13
13
  * <ToolChip
14
14
  * part={part}
@@ -19,12 +19,12 @@
19
19
  import { Box, Button, Collapse, Group, Stack, Text, UnstyledButton } from '@mantine/core'
20
20
  import { useDisclosure } from '@mantine/hooks'
21
21
  import type { JSX } from 'react'
22
- import { isToolCallSettled } from '../agent'
23
- import type { ToolCallPart } from '../agent'
24
- import { cx } from '../common/props'
25
- import type { BasaltProps } from '../common/props'
26
- import { assertRequiredProps } from '../common/validate'
27
- import { alpha, VX } from '../tokens'
22
+ import { isToolCallSettled } from '../parts'
23
+ import type { ToolCallPart } from '../parts'
24
+ import { cx } from '../../common/props'
25
+ import type { BasaltProps } from '../../common/props'
26
+ import { assertRequiredProps } from '../../common/validate'
27
+ import { alpha, VX } from '../../tokens'
28
28
 
29
29
  // Mirrors thread-message.tsx's micro-label/rail/code-block idiom (docs/DESIGN-SPEC.md §3/§5) —
30
30
  // duplicated locally rather than imported, matching the existing part-list.tsx/thread-message.tsx
@@ -81,8 +81,8 @@ function stateMeta(part: ToolCallPart): { readonly label: string; readonly dotTo
81
81
  // `part` is `never` here ONLY at compile time — this switch is genuinely exhaustive today,
82
82
  // so adding an eighth ToolCallPart state without a case above makes this assignment a tsc
83
83
  // error, the same gate `assertNever` provides. But `part` at RUNTIME can be a value this
84
- // build never declared: `createThreadsStore` persists to localStorage with no shape
85
- // validation, and `edenTransport` trusts the wire with zero validation, so a 1.10.0-shaped
84
+ // build never declared: a consumer-owned thread store may persist to localStorage with no
85
+ // shape validation, and a transport may carry wire data with zero validation, so a 1.10.0-shaped
86
86
  // flat tool part (`state` undefined) or a future/foreign `state` string both reach here.
87
87
  // That must never THROW during render — mirrors ThreadTranscript's fallbackRenderer
88
88
  // doctrine (unknown data renders inert, it doesn't blank the transcript) — so, unlike a
@@ -101,10 +101,10 @@ function formatDuration(ms: number): string {
101
101
 
102
102
  export type ToolChipProps = BasaltProps & {
103
103
  readonly part: ToolCallPart
104
- readonly defaultExpanded?: boolean
104
+ readonly defaultExpanded?: boolean | undefined
105
105
  /** Rendered only in 'approval-requested'. Omit both to render a read-only chip. */
106
- readonly onApprove?: (approvalId: string) => void
107
- readonly onDeny?: (approvalId: string, reason?: string) => void
106
+ readonly onApprove?: ((approvalId: string) => void) | undefined
107
+ readonly onDeny?: ((approvalId: string, reason?: string) => void) | undefined
108
108
  }
109
109
 
110
110
  /**
@@ -27,7 +27,7 @@
27
27
  * outside React state.
28
28
  */
29
29
  import { useCallback, useState } from 'react'
30
- import { useIsomorphicLayoutEffect } from '../common/isomorphic-layout-effect'
30
+ import { useIsomorphicLayoutEffect } from '../../common/isomorphic-layout-effect'
31
31
 
32
32
  const KEYBOARD_INSET_VAR = '--vx-keyboard-inset'
33
33
 
@@ -88,13 +88,13 @@
88
88
  /** Tuning knobs passed through to `@tanstack/react-virtual`'s `useVirtualizer`. */
89
89
  export type VirtualizeOptions = {
90
90
  /** Extra rows rendered beyond the visible viewport, each side. Library default: 1. */
91
- readonly overscan?: number
91
+ readonly overscan?: number | undefined
92
92
  /** Estimated row height in px, used before a row has been measured. */
93
- readonly estimateSize?: number
93
+ readonly estimateSize?: number | undefined
94
94
  /** Where the transcript sits on first mount. Default 'end' — a chat transcript opens at the
95
95
  newest message. 'start' opens at the oldest. See this module's fourth composition rule
96
96
  above for the mechanism and why a consumer restoring its own scroll position wants 'start'. */
97
- readonly initialScroll?: 'end' | 'start'
97
+ readonly initialScroll?: 'end' | 'start' | undefined
98
98
  }
99
99
 
100
100
  /**
@@ -103,7 +103,7 @@ export type VirtualizeOptions = {
103
103
  * scroll container, so there is no valid virtualized layout without one.
104
104
  */
105
105
  export type VirtualizeProps =
106
- | { readonly virtualize?: false; readonly height?: never }
106
+ | { readonly virtualize?: false | undefined; readonly height?: undefined }
107
107
  | { readonly virtualize: true | VirtualizeOptions; readonly height: number | string }
108
108
 
109
109
  /** The enabled branch of {@link VirtualizeProps}, with `height` no longer optional. */
@@ -126,7 +126,7 @@ export type ResolvedVirtualize = {
126
126
  * transcript body with inner scroll, no `@tanstack/react-virtual` peer installed).
127
127
  */
128
128
  export type RowHeightProps =
129
- | { readonly virtualize?: false; readonly height?: number | string }
129
+ | { readonly virtualize?: false | undefined; readonly height?: number | string | undefined }
130
130
  | { readonly virtualize: true | VirtualizeOptions; readonly height: number | string }
131
131
 
132
132
  /** The resolved shape of {@link RowHeightProps} — exactly one of the three row body layouts. */
@@ -0,0 +1,43 @@
1
+ /**
2
+ * AgentError — the closed, serializable shape of a failed turn (V2-SPEC § 6).
3
+ *
4
+ * `useAgentThreadRuns({ onError })` keeps the raw thrown value; `ThreadRunState.error` and the
5
+ * `chat.turn` telemetry carry this union instead, so a consumer switches on `kind` rather than
6
+ * parsing an error body. Classification is duck-typed on purpose: this module must never resolve
7
+ * the optional `ai` peer at runtime.
8
+ */
9
+
10
+ /**
11
+ * - `http`: the chat endpoint answered with a non-2xx `status` (AI SDK's `APICallError`).
12
+ * - `stream`: the UI-message stream was malformed (AI SDK's `UIMessageStreamError`).
13
+ * - `server`: an `error` chunk arrived mid-stream, or any other failure; `message` is the server's
14
+ * `errorText` or the thrown error's message.
15
+ * - `aborted`: the request was aborted by something other than `stop()`.
16
+ */
17
+ export type AgentError =
18
+ | { readonly kind: 'http'; readonly status: number }
19
+ | { readonly kind: 'stream'; readonly chunkType: string; readonly chunkId: string }
20
+ | { readonly kind: 'server'; readonly message: string }
21
+ | { readonly kind: 'aborted' }
22
+
23
+ function stringField(value: unknown, key: string): string | undefined {
24
+ if (typeof value !== 'object' || value === null) return undefined
25
+ const field = (value as Record<string, unknown>)[key]
26
+ return typeof field === 'string' ? field : undefined
27
+ }
28
+
29
+ /** Maps whatever a transport threw onto the closed `AgentError` union. */
30
+ export function toAgentError(error: unknown): AgentError {
31
+ // By name, not `instanceof Error`: a `fetch` abort is a DOMException, which is not an Error.
32
+ if (stringField(error, 'name') === 'AbortError') return { kind: 'aborted' }
33
+ const status =
34
+ typeof error === 'object' && error !== null
35
+ ? (error as Record<string, unknown>)['statusCode']
36
+ : undefined
37
+ if (typeof status === 'number') return { kind: 'http', status }
38
+ const chunkType = stringField(error, 'chunkType')
39
+ const chunkId = stringField(error, 'chunkId')
40
+ if (chunkType !== undefined && chunkId !== undefined)
41
+ return { kind: 'stream', chunkType, chunkId }
42
+ return { kind: 'server', message: stringField(error, 'message') ?? String(error) }
43
+ }
@@ -1,27 +1,4 @@
1
- /**
2
- * createChatHistoryStore — persisted, ring-buffered chat history on createPersistedState.
3
- *
4
- * Returns a stable hook factory (call once per module per stable key) that provides the full
5
- * message history, an append function, and a clear function. Messages are trimmed to `max`
6
- * (default 100) via a ring-buffer strategy — oldest entries are dropped first.
7
- *
8
- * SSR-safe: the underlying createPersistedState handles the server snapshot (returns initial).
9
- * Cross-tab: the 'storage' event propagates changes to other tabs automatically.
10
- *
11
- * @example
12
- * import { createChatHistoryStore } from 'basalt-ui/agent'
13
- *
14
- * // Call once at module scope with a stable key:
15
- * const useChatHistory = createChatHistoryStore({ key: 'main-chat', version: 1 })
16
- *
17
- * // In a component:
18
- * function Chat() {
19
- * const { messages, append, clear } = useChatHistory()
20
- * // ...
21
- * }
22
- */
23
- import { useCallback, useRef } from 'react'
24
- import { createPersistedState } from '../state'
1
+ /** ChatMessage — the typed message shape every thread carries. */
25
2
  import type { AgentPart } from './parts'
26
3
 
27
4
  // ── ChatMessage ───────────────────────────────────────────────────────────────
@@ -44,87 +21,5 @@ export type ChatMessage<TPart = AgentPart> = {
44
21
  readonly parts: TPart[]
45
22
  readonly createdAt: number
46
23
  /** How the turn ended. Absent on user messages and on pre-1.11 persisted assistant messages. */
47
- readonly finish?: 'complete' | 'stopped' | 'error'
48
- }
49
-
50
- // ── createChatHistoryStore options ────────────────────────────────────────────
51
-
52
- export type ChatHistoryStoreOptions = {
53
- /** localStorage key (namespaced as `basalt:<key>`). Stable — changes key lose history. */
54
- readonly key: string
55
- /** Envelope version. Increment when the ChatMessage shape changes to clear old data. */
56
- readonly version: number
57
- /**
58
- * Maximum number of messages to retain. Oldest messages are dropped when exceeded.
59
- * @default 100
60
- */
61
- readonly max?: number
62
- }
63
-
64
- // ── Return type of the factory hook ──────────────────────────────────────────
65
-
66
- export type ChatHistoryStore<TPart = AgentPart> = {
67
- /** All retained messages, oldest first. */
68
- readonly messages: ChatMessage<TPart>[]
69
- /** Append a message. Trims to `max` if needed (ring-buffer: drops oldest). */
70
- readonly append: (message: ChatMessage<TPart>) => void
71
- /** Clear all messages. */
72
- readonly clear: () => void
73
- }
74
-
75
- // ── createChatHistoryStore ────────────────────────────────────────────────────
76
-
77
- /**
78
- * Creates a stable persisted chat history hook for the given key + version.
79
- *
80
- * Call this ONCE per module (not inside a component). The returned hook can be called in any
81
- * component that needs access to the same history. All instances sharing the same key stay
82
- * in sync across tabs via the 'storage' event.
83
- *
84
- * @example
85
- * // src/chat/history.ts — ONE stable creation per key:
86
- * export const useChatHistory = createChatHistoryStore({ key: 'main-chat', version: 1 })
87
- *
88
- * // In a component:
89
- * const { messages, append, clear } = useChatHistory()
90
- * append({ id: crypto.randomUUID(), role: 'user', parts: [...], createdAt: Date.now() })
91
- */
92
- export function createChatHistoryStore<TPart = AgentPart>(
93
- opts: ChatHistoryStoreOptions,
94
- ): () => ChatHistoryStore<TPart> {
95
- const max = opts.max ?? 100
96
-
97
- const usePersistedMessages = createPersistedState<ChatMessage<TPart>[]>({
98
- key: opts.key,
99
- version: opts.version,
100
- initial: [],
101
- })
102
-
103
- return function useChatHistoryStore(): ChatHistoryStore<TPart> {
104
- const [messages, setMessages] = usePersistedMessages()
105
-
106
- // Ref mirrors the latest committed value so that two synchronous append() calls in one
107
- // render cycle accumulate correctly. createPersistedState's setter is a whole-value setter
108
- // (not a functional updater), so the second call would otherwise overwrite the first.
109
- const ref = useRef(messages)
110
- ref.current = messages
111
-
112
- const append = useCallback(
113
- (message: ChatMessage<TPart>): void => {
114
- const next = [...ref.current, message]
115
- // Ring-buffer: trim to max, dropping oldest entries first.
116
- const trimmed = next.length > max ? next.slice(next.length - max) : next
117
- ref.current = trimmed // sync so a second append in the same tick sees the update
118
- setMessages(trimmed)
119
- },
120
- [setMessages],
121
- )
122
-
123
- const clear = useCallback((): void => {
124
- ref.current = []
125
- setMessages([])
126
- }, [setMessages])
127
-
128
- return { messages, append, clear }
129
- }
24
+ readonly finish?: 'complete' | 'stopped' | 'error' | undefined
130
25
  }
package/src/agent/id.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Id-minting helpers shared across the agent layer: `mintThreadId` (a low-stakes client-side id —
3
- * threads, run/chat namespaces — used by `./thread`'s `createThreadsStore`, `./adapter`'s
4
- * `createAdapterThreadsStore`/`threadsStoreAdapterContract`, `./use-agent-stream`'s per-send run
5
- * id, and `aiSdkTransport`'s fixed chat id), `mintMessageId` (the higher-stakes id `appendMessage`
6
- * treats as its only idempotency key), and `withPartIds` (stamps sequence ids onto streamed
3
+ * threads, run/chat namespaces — used by `useAgentThreadRuns`'s per-send run id and
4
+ * `aiSdkTransport`'s fixed chat id; the thread store itself is consumer-owned), `mintMessageId`
5
+ * (the higher-stakes id `appendMessage` treats as its only idempotency key), and `withPartIds` (stamps sequence ids onto streamed
7
6
  * parts). Grouped here because they're the id-minting leaves every store/hook/transport in this
8
7
  * layer sits above — not because they share a mechanism (`mintMessageId` deliberately diverges
9
8
  * from `mintThreadId` on rung 3; see its own doc).
@@ -145,7 +144,7 @@ export function mintMessageId(): string {
145
144
  * // part.id is always defined here
146
145
  * }
147
146
  */
148
- export async function* withPartIds<TPart extends { id?: string }>(
147
+ export async function* withPartIds<TPart extends { id?: string | undefined }>(
149
148
  runId: string,
150
149
  source: AsyncGenerator<TPart>,
151
150
  ): AsyncGenerator<TPart & { id: string }> {
@@ -1,123 +1,34 @@
1
1
  /**
2
- * basalt-ui/agent — headless, Mantine-free streaming-chat layer over an injected transport seam.
3
- *
4
- * `aiSdkTransport` (backed by the `ai` npm package) is the RECOMMENDED DEFAULT transport for LLM
5
- * chat use cases; `edenTransport` remains the zero-extra-dependency alternative. Optional peers
6
- * (ai, use-stick-to-bottom) are all lazily loaded — importing this module does NOT eagerly resolve
7
- * either of them. This module ships no markdown renderer — `agent/** -> content` is lint-blocked
8
- * by design, so `PartList` takes a consumer-supplied `components.text`; basalt's own is
9
- * `basalt-ui/content`'s `Markdown`.
10
- *
11
- * Install optional peers:
12
- * bun add ai # aiSdkTransport
13
- * bun add use-stick-to-bottom # BasaltStickToBottom
2
+ * basalt-ui/agent — the AI chat surface: a Mantine-free streaming runtime (`src/agent/**` outside
3
+ * `chat/`) plus the chat UI (`src/agent/chat/**`). `aiSdkTransport` (the `ai` npm package) is the
4
+ * one transport; `useAgentThreadRuns` is the one runner. Optional peers (`ai`,
5
+ * `use-stick-to-bottom`) load lazily — importing this module does not resolve either.
14
6
  *
15
7
  * @example
16
- * import { useAgentStream, edenTransport, PartList, BasaltStickToBottom } from 'basalt-ui/agent'
17
- *
18
- * const transport = edenTransport((input, signal) =>
19
- * api.chat.post({ body: { message: input }, fetch: { signal } }),
20
- * )
21
- *
22
- * function Chat() {
23
- * const { parts, status, send, stop } = useAgentStream({ transport })
24
- * return (
25
- * <BasaltStickToBottom style={{ height: '400px', overflow: 'auto' }}>
26
- * <PartList parts={parts} />
27
- * <button onClick={() => send('Hello')}>Send</button>
28
- * {status === 'streaming' && <button onClick={stop}>Stop</button>}
29
- * </BasaltStickToBottom>
30
- * )
31
- * }
8
+ * import { aiSdkTransport, useAgentThreadRuns, ThreadFeed, Composer } from 'basalt-ui/agent'
32
9
  */
33
10
 
34
- // ── AgentPart discriminated union ─────────────────────────────────────────────
35
- export type {
36
- AgentPart,
37
- AgentPartDraft,
38
- Drafted,
39
- StartPart,
40
- TextPart,
41
- ReasoningPart,
42
- ToolCallPart,
43
- ToolCallState,
44
- SourcePart,
45
- ErrorPart,
46
- } from './parts'
47
- export { parseAgentPart, isStartPart, isToolCallSettled, TERMINAL_TOOL_STATES } from './parts'
48
-
49
- // ── mergePart (identity-addressed accumulator) ───────────────────────────────
50
- export { mergePart } from './merge'
11
+ // ── Parts ─────────────────────────────────────────────────────────────────────
12
+ export type { AgentPart, ToolCallPart } from './parts'
13
+ export { parseAgentPart } from './parts'
14
+ export type { ForeignPart, TranscriptPart, PartRenderers, PartRenderer } from './foreign'
51
15
 
52
- // ── withPartIds (drafts → identified parts) ──────────────────────────────────
53
- export { withPartIds } from './id'
54
-
55
- // ── coalesceParts (adjacent + by-id merge for display) ───────────────────────
56
- export { coalesceParts } from './coalesce'
57
-
58
- // ── foreign parts (the open half of the part-renderer registry) ──────────────
59
- export { definePartRenderers, narrowAgentPart } from './foreign'
60
- export type {
61
- ForeignPart,
62
- TranscriptPart,
63
- ConsumerPart,
64
- PartRenderers,
65
- PartRenderContext,
66
- PartRenderer,
67
- } from './foreign'
68
-
69
- // ── AgentTransport + edenTransport ───────────────────────────────────────────
70
- export type { AgentTransport, ResumableAgentTransport } from './transport'
71
- export { edenTransport, isResumable } from './transport'
72
-
73
- // ── aiSdkTransport (recommended default, optional peer: ai) ──────────────────
16
+ // ── Transport and runner ──────────────────────────────────────────────────────
74
17
  export { aiSdkTransport } from './ai-sdk-transport'
75
- export type { AiSdkTransport, AiSdkTransportOptions } from './ai-sdk-transport'
76
-
77
- // ── useAgentStream ────────────────────────────────────────────────────────────
78
- export { useAgentStream } from './use-agent-stream'
79
- export type { StreamStatus, UseAgentStreamReturn } from './use-agent-stream'
80
-
81
- // ── useAgentThreadRuns ────────────────────────────────────────────────────────
82
18
  export { useAgentThreadRuns } from './use-agent-thread-runs'
83
- export type {
84
- ThreadRunState,
85
- UseAgentThreadRunsArgs,
86
- UseAgentThreadRunsReturn,
87
- } from './use-agent-thread-runs'
88
-
89
- // ── PartList + renderer types ─────────────────────────────────────────────────
90
- export { PartList } from './part-list'
91
- export type {
92
- PartListProps,
93
- AgentPartRenderers,
94
- TextPartRenderer,
95
- ReasoningPartRenderer,
96
- ToolCallPartRenderer,
97
- SourcePartRenderer,
98
- ErrorPartRenderer,
99
- } from './part-list'
19
+ export type { ThreadRunState } from './use-agent-thread-runs'
20
+ export type { AgentError } from './error'
100
21
 
101
- // ── BasaltStickToBottom (lazy, optional peer: use-stick-to-bottom) ────────────
102
- export { BasaltStickToBottom } from './stick-to-bottom'
103
- export type { BasaltStickToBottomProps } from './stick-to-bottom'
104
-
105
- // ── createChatHistoryStore + ChatMessage ──────────────────────────────────────
106
- export { createChatHistoryStore } from './history'
107
- export type { ChatMessage, ChatHistoryStore, ChatHistoryStoreOptions } from './history'
108
-
109
- // ── createThreadsStore + AgentThread ──────────────────────────────────────────
110
- export { createThreadsStore } from './thread'
111
- export type { AgentThread, ThreadStatus, ThreadsStore, ThreadsStoreOptions } from './thread'
112
-
113
- // ── AgentOutcome + heuristicOutcome ────────────────────────────────────────────
114
- export { heuristicOutcome } from './outcome'
22
+ // ── Thread contracts (the store is consumer-owned) ────────────────────────────
23
+ export type { ChatMessage } from './history'
24
+ export type { AgentThread, ThreadStatus, ThreadsStore } from './thread'
115
25
  export type { AgentOutcome, OutcomeResolver } from './outcome'
26
+ export type { AgentTransport, ResumableAgentTransport } from './transport'
116
27
 
117
- // ── createAdapterThreadsStore + threadsStoreAdapterContract ──────────────────
118
- export { createAdapterThreadsStore, threadsStoreAdapterContract } from './adapter'
119
- export type {
120
- AdapterThreadsStoreOptions,
121
- ThreadsStoreAdapter,
122
- ThreadsStoreAdapterContractCase,
123
- } from './adapter'
28
+ // ── Chat UI ───────────────────────────────────────────────────────────────────
29
+ export { ThreadFeed } from './chat/thread-feed'
30
+ export { ThreadFeedRow } from './chat/thread-feed-row'
31
+ export type { MessageAffordances } from './chat/message-affordances'
32
+ export { Composer } from './chat/composer'
33
+ export type { ComposerHandle, ComposerSubmit } from './chat/composer'
34
+ export { ToolChip } from './chat/tool-chip'
@@ -5,7 +5,7 @@
5
5
  * multi-thread feed — only a short, past-tense summary of what happened. AgentOutcome is
6
6
  * that DIFFERENT, smaller shape: a title, a one-line summary, and a status. Producing one
7
7
  * is the job of an OutcomeResolver (typically an LLM-backed summarizer wired by the
8
- * consumer); heuristicOutcome below is a text-only fallback for demos and early wiring.
8
+ * consumer).
9
9
  *
10
10
  * @example
11
11
  * import type { AgentOutcome } from 'basalt-ui/agent'
@@ -32,12 +32,12 @@ import type { AgentThread } from './thread'
32
32
  * turn has settled, so those never apply here.
33
33
  *
34
34
  * Note there are THREE overlapping status-shaped unions in this module family, one per layer:
35
- * `StreamStatus` (single-turn stream lifecycle, `./use-agent-stream`), `ThreadStatus` (persisted
35
+ * the internal `StreamStatus` (single-turn stream lifecycle, `./thread`), `ThreadStatus` (persisted
36
36
  * thread lifecycle, `./thread`), and this `AgentOutcome['status']` (feed-facing terminal
37
37
  * projection). They are related but not identical — `StreamStatus`'s `'idle'` (no turn in
38
38
  * flight) corresponds to `ThreadStatus`'s `'pending'` (thread created, no turn started yet); the
39
39
  * literal rename from `'idle'` to `'pending'` is intentionally deferred since it would ripple
40
- * into `use-agent-stream.ts` and its call sites.
40
+ * into `useAgentThreadRuns` and its call sites.
41
41
  *
42
42
  * @example
43
43
  * const outcome: AgentOutcome = { title: 'New chat', summary: '', status: 'done' }
@@ -65,56 +65,3 @@ export type AgentOutcome = {
65
65
  export type OutcomeResolver<TPart = AgentPart> = (
66
66
  thread: AgentThread<TPart>,
67
67
  ) => AgentOutcome | Promise<AgentOutcome>
68
-
69
- // ── heuristicOutcome ──────────────────────────────────────────────────────────
70
-
71
- const TITLE_MAX = 48
72
- const SUMMARY_MAX = 88
73
-
74
- /** Trim `text` to at most `max` characters, appending an ellipsis when cut. */
75
- function truncate(text: string, max: number): string {
76
- if (text.length <= max) return text
77
- return `${text.slice(0, max - 1).trimEnd()}…`
78
- }
79
-
80
- /** The leading sentence/clause of `text` (up to the first `.`, `!`, or `?`), trimmed. */
81
- function firstClause(text: string): string {
82
- const match = text.match(/^[^.!?]+[.!?]?/)
83
- return (match?.[0] ?? text).trim()
84
- }
85
-
86
- /**
87
- * DEMO-ONLY provisional heuristic — never the production path. Coalesces the last assistant
88
- * message's text parts into one string and derives a title/summary/status from it with no
89
- * model call. Real apps should wire an OutcomeResolver backed by an LLM summarizer; this
90
- * exists purely so a feed has something to render before that wiring lands.
91
- *
92
- * @example
93
- * const outcome = heuristicOutcome(thread)
94
- * // { title: 'Fixed the flaky test', summary: 'Fixed the flaky test by awaiting…', status: 'done' }
95
- */
96
- export function heuristicOutcome(thread: AgentThread): AgentOutcome {
97
- const lastAssistant = thread.messages.toReversed().find((message) => message.role === 'assistant')
98
- if (lastAssistant === undefined) {
99
- return { title: 'New chat', summary: '', status: 'done' }
100
- }
101
-
102
- const text = lastAssistant.parts
103
- .filter((part): part is Extract<AgentPart, { type: 'text' }> => part.type === 'text')
104
- .map((part) => part.text)
105
- .join('')
106
- .trim()
107
-
108
- if (text.length === 0) {
109
- return { title: 'New chat', summary: '', status: 'done' }
110
- }
111
-
112
- const lastPart = lastAssistant.parts[lastAssistant.parts.length - 1]
113
- const status: AgentOutcome['status'] = lastPart?.type === 'error' ? 'error' : 'done'
114
-
115
- return {
116
- title: truncate(firstClause(text), TITLE_MAX),
117
- summary: truncate(text, SUMMARY_MAX),
118
- status,
119
- }
120
- }
@@ -241,21 +241,21 @@ const DEFAULT_RENDERERS: AgentPartRenderers = {
241
241
  // ── PartList ──────────────────────────────────────────────────────────────────
242
242
 
243
243
  export type PartListProps<TPart extends AgentPart = AgentPart> = {
244
- /** The parts accumulator from useAgentStream. */
244
+ /** The parts accumulator from useAgentThreadRuns. */
245
245
  readonly parts: TPart[]
246
246
  /**
247
247
  * Override individual part renderers. Omitted keys fall back to the headless defaults.
248
248
  * Pass `{ text: ({ part, settled }) => <Markdown streaming={!settled} contentTrust="untrusted" density="chat">{part.text}</Markdown> }`
249
249
  * to enable rich markdown rendering.
250
250
  */
251
- readonly components?: Partial<AgentPartRenderers<TPart>>
251
+ readonly components?: Partial<AgentPartRenderers<TPart>> | undefined
252
252
  /**
253
253
  * `false` while the message these parts belong to is still streaming — forwarded to every
254
254
  * renderer so a text renderer can drop out of streaming mode (and a fenced mermaid/diagram can
255
255
  * upgrade) once the turn finishes. Defaults to `true`: a caller that knows nothing about a run
256
256
  * is rendering a finished list, and un-settled must be opted into by the thing that does know.
257
257
  */
258
- readonly settled?: boolean
258
+ readonly settled?: boolean | undefined
259
259
  }
260
260
 
261
261
  /**