@flanksource/clicky-ui 0.2.14 → 0.2.16

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 (489) hide show
  1. package/dist/chat.cjs +20 -0
  2. package/dist/chat.cjs.map +1 -0
  3. package/dist/chat.d.ts +2 -0
  4. package/dist/chat.d.ts.map +1 -0
  5. package/dist/chat.js +20 -0
  6. package/dist/chat.js.map +1 -0
  7. package/dist/components/Combobox.cjs +19 -9
  8. package/dist/components/Combobox.cjs.map +1 -1
  9. package/dist/components/Combobox.d.ts +10 -0
  10. package/dist/components/Combobox.d.ts.map +1 -1
  11. package/dist/components/Combobox.js +19 -9
  12. package/dist/components/Combobox.js.map +1 -1
  13. package/dist/components/DateTimePicker.cjs +6 -1
  14. package/dist/components/DateTimePicker.cjs.map +1 -1
  15. package/dist/components/DateTimePicker.d.ts +11 -3
  16. package/dist/components/DateTimePicker.d.ts.map +1 -1
  17. package/dist/components/DateTimePicker.js +6 -1
  18. package/dist/components/DateTimePicker.js.map +1 -1
  19. package/dist/components/Field.cjs +33 -0
  20. package/dist/components/Field.cjs.map +1 -0
  21. package/dist/components/Field.d.ts +27 -0
  22. package/dist/components/Field.d.ts.map +1 -0
  23. package/dist/components/Field.js +33 -0
  24. package/dist/components/Field.js.map +1 -0
  25. package/dist/components/FilterBar.cjs +49 -55
  26. package/dist/components/FilterBar.cjs.map +1 -1
  27. package/dist/components/FilterBar.d.ts +2 -2
  28. package/dist/components/FilterBar.d.ts.map +1 -1
  29. package/dist/components/FilterBar.js +44 -50
  30. package/dist/components/FilterBar.js.map +1 -1
  31. package/dist/components/FormatOptionsDropdown.cjs +2 -18
  32. package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
  33. package/dist/components/FormatOptionsDropdown.d.ts +1 -17
  34. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
  35. package/dist/components/FormatOptionsDropdown.js +1 -17
  36. package/dist/components/FormatOptionsDropdown.js.map +1 -1
  37. package/dist/components/JsonSchemaForm.cjs +128 -12
  38. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  39. package/dist/components/JsonSchemaForm.d.ts +1 -1
  40. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  41. package/dist/components/JsonSchemaForm.js +131 -15
  42. package/dist/components/JsonSchemaForm.js.map +1 -1
  43. package/dist/components/MultiSelect.cjs +2 -1
  44. package/dist/components/MultiSelect.cjs.map +1 -1
  45. package/dist/components/MultiSelect.d.ts +5 -1
  46. package/dist/components/MultiSelect.d.ts.map +1 -1
  47. package/dist/components/MultiSelect.js +2 -1
  48. package/dist/components/MultiSelect.js.map +1 -1
  49. package/dist/components/SecretKeySelector.cjs +0 -1
  50. package/dist/components/SecretKeySelector.cjs.map +1 -1
  51. package/dist/components/SecretKeySelector.d.ts +0 -2
  52. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  53. package/dist/components/SecretKeySelector.js +1 -2
  54. package/dist/components/SecretKeySelector.js.map +1 -1
  55. package/dist/components/TreePickerField.cjs +137 -0
  56. package/dist/components/TreePickerField.cjs.map +1 -0
  57. package/dist/components/TreePickerField.d.ts +30 -0
  58. package/dist/components/TreePickerField.d.ts.map +1 -0
  59. package/dist/components/TreePickerField.js +137 -0
  60. package/dist/components/TreePickerField.js.map +1 -0
  61. package/dist/components/WorkloadPicker.cjs +6 -81
  62. package/dist/components/WorkloadPicker.cjs.map +1 -1
  63. package/dist/components/WorkloadPicker.d.ts +1 -20
  64. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  65. package/dist/components/WorkloadPicker.js +3 -78
  66. package/dist/components/WorkloadPicker.js.map +1 -1
  67. package/dist/components/button-variants.cjs +30 -0
  68. package/dist/components/button-variants.cjs.map +1 -0
  69. package/dist/components/button-variants.d.ts +5 -0
  70. package/dist/components/button-variants.d.ts.map +1 -0
  71. package/dist/components/button-variants.js +30 -0
  72. package/dist/components/button-variants.js.map +1 -0
  73. package/dist/components/button.cjs +11 -82
  74. package/dist/components/button.cjs.map +1 -1
  75. package/dist/components/button.d.ts +1 -5
  76. package/dist/components/button.d.ts.map +1 -1
  77. package/dist/components/button.js +5 -76
  78. package/dist/components/button.js.map +1 -1
  79. package/dist/components/filter-bar-utils.cjs +37 -0
  80. package/dist/components/filter-bar-utils.cjs.map +1 -0
  81. package/dist/components/filter-bar-utils.d.ts +4 -0
  82. package/dist/components/filter-bar-utils.d.ts.map +1 -0
  83. package/dist/components/filter-bar-utils.js +37 -0
  84. package/dist/components/filter-bar-utils.js.map +1 -0
  85. package/dist/components/format-options.cjs +20 -0
  86. package/dist/components/format-options.cjs.map +1 -0
  87. package/dist/components/format-options.d.ts +18 -0
  88. package/dist/components/format-options.d.ts.map +1 -0
  89. package/dist/components/format-options.js +20 -0
  90. package/dist/components/format-options.js.map +1 -0
  91. package/dist/components/json-schema-form-array.cjs +13 -17
  92. package/dist/components/json-schema-form-array.cjs.map +1 -1
  93. package/dist/components/json-schema-form-array.d.ts +1 -2
  94. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  95. package/dist/components/json-schema-form-array.js +3 -7
  96. package/dist/components/json-schema-form-array.js.map +1 -1
  97. package/dist/components/json-schema-form-fields.cjs +97 -232
  98. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  99. package/dist/components/json-schema-form-fields.d.ts +51 -6
  100. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-fields.js +89 -224
  102. package/dist/components/json-schema-form-fields.js.map +1 -1
  103. package/dist/components/json-schema-form-object.cjs +149 -0
  104. package/dist/components/json-schema-form-object.cjs.map +1 -0
  105. package/dist/components/json-schema-form-object.d.ts +10 -0
  106. package/dist/components/json-schema-form-object.d.ts.map +1 -0
  107. package/dist/components/json-schema-form-object.js +149 -0
  108. package/dist/components/json-schema-form-object.js.map +1 -0
  109. package/dist/components/json-schema-form-preferences.cjs +41 -0
  110. package/dist/components/json-schema-form-preferences.cjs.map +1 -0
  111. package/dist/components/json-schema-form-preferences.d.ts +10 -0
  112. package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
  113. package/dist/components/json-schema-form-preferences.js +41 -0
  114. package/dist/components/json-schema-form-preferences.js.map +1 -0
  115. package/dist/components/json-schema-form-render.cjs +43 -72
  116. package/dist/components/json-schema-form-render.cjs.map +1 -1
  117. package/dist/components/json-schema-form-render.d.ts +5 -33
  118. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  119. package/dist/components/json-schema-form-render.js +41 -70
  120. package/dist/components/json-schema-form-render.js.map +1 -1
  121. package/dist/components/json-schema-form-resolve.cjs +9 -1
  122. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  123. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  124. package/dist/components/json-schema-form-resolve.js +9 -1
  125. package/dist/components/json-schema-form-resolve.js.map +1 -1
  126. package/dist/components/json-schema-form-types.d.ts +59 -1
  127. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  128. package/dist/components/json-schema-form-utils.cjs +96 -0
  129. package/dist/components/json-schema-form-utils.cjs.map +1 -0
  130. package/dist/components/json-schema-form-utils.d.ts +17 -0
  131. package/dist/components/json-schema-form-utils.d.ts.map +1 -0
  132. package/dist/components/json-schema-form-utils.js +96 -0
  133. package/dist/components/json-schema-form-utils.js.map +1 -0
  134. package/dist/components/loading.cjs +109 -0
  135. package/dist/components/loading.cjs.map +1 -0
  136. package/dist/components/loading.d.ts +29 -0
  137. package/dist/components/loading.d.ts.map +1 -0
  138. package/dist/components/loading.js +109 -0
  139. package/dist/components/loading.js.map +1 -0
  140. package/dist/components/use-form.cjs +27 -0
  141. package/dist/components/use-form.cjs.map +1 -0
  142. package/dist/components/use-form.d.ts +30 -0
  143. package/dist/components/use-form.d.ts.map +1 -0
  144. package/dist/components/use-form.js +27 -0
  145. package/dist/components/use-form.js.map +1 -0
  146. package/dist/components/workload-picker-utils.cjs +88 -0
  147. package/dist/components/workload-picker-utils.cjs.map +1 -0
  148. package/dist/components/workload-picker-utils.d.ts +34 -0
  149. package/dist/components/workload-picker-utils.d.ts.map +1 -0
  150. package/dist/components/workload-picker-utils.js +88 -0
  151. package/dist/components/workload-picker-utils.js.map +1 -0
  152. package/dist/components.cjs +25 -6
  153. package/dist/components.cjs.map +1 -1
  154. package/dist/components.d.ts +14 -4
  155. package/dist/components.d.ts.map +1 -1
  156. package/dist/components.js +24 -5
  157. package/dist/components.js.map +1 -1
  158. package/dist/data/Badge.cjs +11 -91
  159. package/dist/data/Badge.cjs.map +1 -1
  160. package/dist/data/Badge.d.ts +1 -5
  161. package/dist/data/Badge.d.ts.map +1 -1
  162. package/dist/data/Badge.js +11 -91
  163. package/dist/data/Badge.js.map +1 -1
  164. package/dist/data/Clicky.cjs +4 -3
  165. package/dist/data/Clicky.cjs.map +1 -1
  166. package/dist/data/Clicky.d.ts.map +1 -1
  167. package/dist/data/Clicky.js +4 -3
  168. package/dist/data/Clicky.js.map +1 -1
  169. package/dist/data/DataTable.cjs +161 -156
  170. package/dist/data/DataTable.cjs.map +1 -1
  171. package/dist/data/DataTable.d.ts +25 -4
  172. package/dist/data/DataTable.d.ts.map +1 -1
  173. package/dist/data/DataTable.js +140 -135
  174. package/dist/data/DataTable.js.map +1 -1
  175. package/dist/data/FilterPill.cjs +3 -0
  176. package/dist/data/FilterPill.cjs.map +1 -1
  177. package/dist/data/FilterPill.d.ts.map +1 -1
  178. package/dist/data/FilterPill.js +3 -0
  179. package/dist/data/FilterPill.js.map +1 -1
  180. package/dist/data/Icon.cjs +7 -7
  181. package/dist/data/Icon.cjs.map +1 -1
  182. package/dist/data/Icon.js +7 -7
  183. package/dist/data/Icon.js.map +1 -1
  184. package/dist/data/LogDetails.cjs +5 -14
  185. package/dist/data/LogDetails.cjs.map +1 -1
  186. package/dist/data/LogDetails.d.ts +8 -4
  187. package/dist/data/LogDetails.d.ts.map +1 -1
  188. package/dist/data/LogDetails.js +4 -13
  189. package/dist/data/LogDetails.js.map +1 -1
  190. package/dist/data/LogsTable.cjs +6 -165
  191. package/dist/data/LogsTable.cjs.map +1 -1
  192. package/dist/data/LogsTable.d.ts +2 -15
  193. package/dist/data/LogsTable.d.ts.map +1 -1
  194. package/dist/data/LogsTable.js +6 -165
  195. package/dist/data/LogsTable.js.map +1 -1
  196. package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
  197. package/dist/data/TimeseriesPanel.axes.js.map +1 -1
  198. package/dist/data/TreeNode.cjs +13 -7
  199. package/dist/data/TreeNode.cjs.map +1 -1
  200. package/dist/data/TreeNode.d.ts.map +1 -1
  201. package/dist/data/TreeNode.js +13 -7
  202. package/dist/data/TreeNode.js.map +1 -1
  203. package/dist/data/badge-variants.cjs +85 -0
  204. package/dist/data/badge-variants.cjs.map +1 -0
  205. package/dist/data/badge-variants.d.ts +6 -0
  206. package/dist/data/badge-variants.d.ts.map +1 -0
  207. package/dist/data/badge-variants.js +85 -0
  208. package/dist/data/badge-variants.js.map +1 -0
  209. package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
  210. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
  211. package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
  212. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
  213. package/dist/data/cache-browser/CacheBrowser.js +59 -0
  214. package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
  215. package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
  216. package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
  217. package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
  218. package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
  219. package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
  220. package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
  221. package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
  222. package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
  223. package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
  224. package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
  225. package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
  226. package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
  227. package/dist/data/cache-browser/CacheTree.cjs +189 -0
  228. package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
  229. package/dist/data/cache-browser/CacheTree.d.ts +27 -0
  230. package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
  231. package/dist/data/cache-browser/CacheTree.js +189 -0
  232. package/dist/data/cache-browser/CacheTree.js.map +1 -0
  233. package/dist/data/cache-browser/CacheValue.cjs +86 -0
  234. package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
  235. package/dist/data/cache-browser/CacheValue.d.ts +11 -0
  236. package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
  237. package/dist/data/cache-browser/CacheValue.js +86 -0
  238. package/dist/data/cache-browser/CacheValue.js.map +1 -0
  239. package/dist/data/cache-browser/adapter.cjs +52 -0
  240. package/dist/data/cache-browser/adapter.cjs.map +1 -0
  241. package/dist/data/cache-browser/adapter.d.ts +48 -0
  242. package/dist/data/cache-browser/adapter.d.ts.map +1 -0
  243. package/dist/data/cache-browser/adapter.js +52 -0
  244. package/dist/data/cache-browser/adapter.js.map +1 -0
  245. package/dist/data/cache-browser/api.cjs +42 -0
  246. package/dist/data/cache-browser/api.cjs.map +1 -0
  247. package/dist/data/cache-browser/api.d.ts +33 -0
  248. package/dist/data/cache-browser/api.d.ts.map +1 -0
  249. package/dist/data/cache-browser/api.js +42 -0
  250. package/dist/data/cache-browser/api.js.map +1 -0
  251. package/dist/data/cache-browser/index.d.ts +9 -0
  252. package/dist/data/cache-browser/index.d.ts.map +1 -0
  253. package/dist/data/cache-browser/types.cjs +7 -0
  254. package/dist/data/cache-browser/types.cjs.map +1 -0
  255. package/dist/data/cache-browser/types.d.ts +78 -0
  256. package/dist/data/cache-browser/types.d.ts.map +1 -0
  257. package/dist/data/cache-browser/types.js +7 -0
  258. package/dist/data/cache-browser/types.js.map +1 -0
  259. package/dist/data/cells/TagList.cjs +4 -101
  260. package/dist/data/cells/TagList.cjs.map +1 -1
  261. package/dist/data/cells/TagList.d.ts +1 -49
  262. package/dist/data/cells/TagList.d.ts.map +1 -1
  263. package/dist/data/cells/TagList.js +3 -100
  264. package/dist/data/cells/TagList.js.map +1 -1
  265. package/dist/data/cells/Timestamp.cjs +3 -192
  266. package/dist/data/cells/Timestamp.cjs.map +1 -1
  267. package/dist/data/cells/Timestamp.d.ts +1 -50
  268. package/dist/data/cells/Timestamp.d.ts.map +1 -1
  269. package/dist/data/cells/Timestamp.js +2 -191
  270. package/dist/data/cells/Timestamp.js.map +1 -1
  271. package/dist/data/cells/tag-utils.cjs +103 -0
  272. package/dist/data/cells/tag-utils.cjs.map +1 -0
  273. package/dist/data/cells/tag-utils.d.ts +51 -0
  274. package/dist/data/cells/tag-utils.d.ts.map +1 -0
  275. package/dist/data/cells/tag-utils.js +103 -0
  276. package/dist/data/cells/tag-utils.js.map +1 -0
  277. package/dist/data/cells/timestamp-format.cjs +193 -0
  278. package/dist/data/cells/timestamp-format.cjs.map +1 -0
  279. package/dist/data/cells/timestamp-format.d.ts +51 -0
  280. package/dist/data/cells/timestamp-format.d.ts.map +1 -0
  281. package/dist/data/cells/timestamp-format.js +193 -0
  282. package/dist/data/cells/timestamp-format.js.map +1 -0
  283. package/dist/data/chat/Chat.cjs +48 -0
  284. package/dist/data/chat/Chat.cjs.map +1 -0
  285. package/dist/data/chat/Chat.d.ts +26 -0
  286. package/dist/data/chat/Chat.d.ts.map +1 -0
  287. package/dist/data/chat/Chat.fixtures.d.ts +6 -0
  288. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
  289. package/dist/data/chat/Chat.js +48 -0
  290. package/dist/data/chat/Chat.js.map +1 -0
  291. package/dist/data/chat/Conversation.cjs +34 -0
  292. package/dist/data/chat/Conversation.cjs.map +1 -0
  293. package/dist/data/chat/Conversation.d.ts +11 -0
  294. package/dist/data/chat/Conversation.d.ts.map +1 -0
  295. package/dist/data/chat/Conversation.js +34 -0
  296. package/dist/data/chat/Conversation.js.map +1 -0
  297. package/dist/data/chat/Message.cjs +44 -0
  298. package/dist/data/chat/Message.cjs.map +1 -0
  299. package/dist/data/chat/Message.d.ts +10 -0
  300. package/dist/data/chat/Message.d.ts.map +1 -0
  301. package/dist/data/chat/Message.js +44 -0
  302. package/dist/data/chat/Message.js.map +1 -0
  303. package/dist/data/chat/PromptInput.cjs +61 -0
  304. package/dist/data/chat/PromptInput.cjs.map +1 -0
  305. package/dist/data/chat/PromptInput.d.ts +16 -0
  306. package/dist/data/chat/PromptInput.d.ts.map +1 -0
  307. package/dist/data/chat/PromptInput.js +61 -0
  308. package/dist/data/chat/PromptInput.js.map +1 -0
  309. package/dist/data/chat/ToolCall.cjs +92 -0
  310. package/dist/data/chat/ToolCall.cjs.map +1 -0
  311. package/dist/data/chat/ToolCall.d.ts +14 -0
  312. package/dist/data/chat/ToolCall.d.ts.map +1 -0
  313. package/dist/data/chat/ToolCall.js +92 -0
  314. package/dist/data/chat/ToolCall.js.map +1 -0
  315. package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
  316. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
  317. package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
  318. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
  319. package/dist/data/chat/clickyOperationsToTools.js +73 -0
  320. package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
  321. package/dist/data/chat/index.d.ts +8 -0
  322. package/dist/data/chat/index.d.ts.map +1 -0
  323. package/dist/data/chat/types.cjs +18 -0
  324. package/dist/data/chat/types.cjs.map +1 -0
  325. package/dist/data/chat/types.d.ts +41 -0
  326. package/dist/data/chat/types.d.ts.map +1 -0
  327. package/dist/data/chat/types.js +18 -0
  328. package/dist/data/chat/types.js.map +1 -0
  329. package/dist/data/data-table-utils.cjs +55 -0
  330. package/dist/data/data-table-utils.cjs.map +1 -0
  331. package/dist/data/data-table-utils.d.ts +24 -0
  332. package/dist/data/data-table-utils.d.ts.map +1 -0
  333. package/dist/data/data-table-utils.js +55 -0
  334. package/dist/data/data-table-utils.js.map +1 -0
  335. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
  336. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  337. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  338. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
  339. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  340. package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
  341. package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
  342. package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
  343. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
  344. package/dist/data/diagnostics/GoroutineCard.js +2 -21
  345. package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
  346. package/dist/data/diagnostics/ThreadCard.cjs +3 -38
  347. package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
  348. package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
  349. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  350. package/dist/data/diagnostics/ThreadCard.js +2 -37
  351. package/dist/data/diagnostics/ThreadCard.js.map +1 -1
  352. package/dist/data/diagnostics/state-styles.cjs +59 -0
  353. package/dist/data/diagnostics/state-styles.cjs.map +1 -0
  354. package/dist/data/diagnostics/state-styles.d.ts +5 -0
  355. package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
  356. package/dist/data/diagnostics/state-styles.js +59 -0
  357. package/dist/data/diagnostics/state-styles.js.map +1 -0
  358. package/dist/data/logs-normalize.cjs +166 -0
  359. package/dist/data/logs-normalize.cjs.map +1 -0
  360. package/dist/data/logs-normalize.d.ts +16 -0
  361. package/dist/data/logs-normalize.d.ts.map +1 -0
  362. package/dist/data/logs-normalize.js +166 -0
  363. package/dist/data/logs-normalize.js.map +1 -0
  364. package/dist/data/task-status.cjs +19 -19
  365. package/dist/data/task-status.cjs.map +1 -1
  366. package/dist/data/task-status.js +19 -19
  367. package/dist/data/task-status.js.map +1 -1
  368. package/dist/data/version-info.cjs +3 -3
  369. package/dist/data/version-info.js +3 -3
  370. package/dist/data.cjs +43 -18
  371. package/dist/data.cjs.map +1 -1
  372. package/dist/data.d.ts +11 -5
  373. package/dist/data.d.ts.map +1 -1
  374. package/dist/data.js +30 -5
  375. package/dist/data.js.map +1 -1
  376. package/dist/hooks/density-provider.cjs +38 -0
  377. package/dist/hooks/density-provider.cjs.map +1 -0
  378. package/dist/hooks/density-provider.d.ts +20 -0
  379. package/dist/hooks/density-provider.d.ts.map +1 -0
  380. package/dist/hooks/density-provider.js +38 -0
  381. package/dist/hooks/density-provider.js.map +1 -0
  382. package/dist/hooks/theme-provider.cjs +43 -0
  383. package/dist/hooks/theme-provider.cjs.map +1 -0
  384. package/dist/hooks/theme-provider.d.ts +9 -0
  385. package/dist/hooks/theme-provider.d.ts.map +1 -0
  386. package/dist/hooks/theme-provider.js +43 -0
  387. package/dist/hooks/theme-provider.js.map +1 -0
  388. package/dist/hooks/use-density.cjs +8 -37
  389. package/dist/hooks/use-density.cjs.map +1 -1
  390. package/dist/hooks/use-density.d.ts +5 -20
  391. package/dist/hooks/use-density.d.ts.map +1 -1
  392. package/dist/hooks/use-density.js +9 -38
  393. package/dist/hooks/use-density.js.map +1 -1
  394. package/dist/hooks/use-theme.cjs +10 -43
  395. package/dist/hooks/use-theme.cjs.map +1 -1
  396. package/dist/hooks/use-theme.d.ts +6 -9
  397. package/dist/hooks/use-theme.d.ts.map +1 -1
  398. package/dist/hooks/use-theme.js +11 -44
  399. package/dist/hooks/use-theme.js.map +1 -1
  400. package/dist/hooks.cjs +5 -2
  401. package/dist/hooks.cjs.map +1 -1
  402. package/dist/hooks.d.ts +4 -2
  403. package/dist/hooks.d.ts.map +1 -1
  404. package/dist/hooks.js +5 -2
  405. package/dist/hooks.js.map +1 -1
  406. package/dist/icons/changeIconAliases.cjs +13 -13
  407. package/dist/icons/changeIconAliases.cjs.map +1 -1
  408. package/dist/icons/changeIconAliases.d.ts.map +1 -1
  409. package/dist/icons/changeIconAliases.js +13 -13
  410. package/dist/icons/changeIconAliases.js.map +1 -1
  411. package/dist/index.cjs +78 -30
  412. package/dist/index.cjs.map +1 -1
  413. package/dist/index.js +61 -13
  414. package/dist/index.js.map +1 -1
  415. package/dist/overlay/DropdownMenu.cjs +2 -0
  416. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  417. package/dist/overlay/DropdownMenu.d.ts +3 -1
  418. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  419. package/dist/overlay/DropdownMenu.js +2 -0
  420. package/dist/overlay/DropdownMenu.js.map +1 -1
  421. package/dist/overlay/Modal.cjs +38 -27
  422. package/dist/overlay/Modal.cjs.map +1 -1
  423. package/dist/overlay/Modal.d.ts +8 -2
  424. package/dist/overlay/Modal.d.ts.map +1 -1
  425. package/dist/overlay/Modal.js +38 -27
  426. package/dist/overlay/Modal.js.map +1 -1
  427. package/dist/overlay/modalStack.cjs +35 -0
  428. package/dist/overlay/modalStack.cjs.map +1 -0
  429. package/dist/overlay/modalStack.d.ts +13 -0
  430. package/dist/overlay/modalStack.d.ts.map +1 -0
  431. package/dist/overlay/modalStack.js +35 -0
  432. package/dist/overlay/modalStack.js.map +1 -0
  433. package/dist/rpc/AcceptPicker.cjs +2 -18
  434. package/dist/rpc/AcceptPicker.cjs.map +1 -1
  435. package/dist/rpc/AcceptPicker.d.ts +1 -41
  436. package/dist/rpc/AcceptPicker.d.ts.map +1 -1
  437. package/dist/rpc/AcceptPicker.js +2 -18
  438. package/dist/rpc/AcceptPicker.js.map +1 -1
  439. package/dist/rpc/CommandOutput.cjs +1 -1
  440. package/dist/rpc/CommandOutput.cjs.map +1 -1
  441. package/dist/rpc/CommandOutput.js +1 -1
  442. package/dist/rpc/CommandOutput.js.map +1 -1
  443. package/dist/rpc/EndpointList.cjs +1 -1
  444. package/dist/rpc/EndpointList.cjs.map +1 -1
  445. package/dist/rpc/EndpointList.js +1 -1
  446. package/dist/rpc/EndpointList.js.map +1 -1
  447. package/dist/rpc/FilterForm.cjs +4 -4
  448. package/dist/rpc/FilterForm.cjs.map +1 -1
  449. package/dist/rpc/FilterForm.js +4 -4
  450. package/dist/rpc/FilterForm.js.map +1 -1
  451. package/dist/rpc/OperationCatalog.cjs +38 -60
  452. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  453. package/dist/rpc/OperationCatalog.d.ts +3 -3
  454. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  455. package/dist/rpc/OperationCatalog.js +40 -62
  456. package/dist/rpc/OperationCatalog.js.map +1 -1
  457. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  458. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  459. package/dist/rpc/OperationCommandPage.js.map +1 -1
  460. package/dist/rpc/accept-options.cjs +20 -0
  461. package/dist/rpc/accept-options.cjs.map +1 -0
  462. package/dist/rpc/accept-options.d.ts +42 -0
  463. package/dist/rpc/accept-options.d.ts.map +1 -0
  464. package/dist/rpc/accept-options.js +20 -0
  465. package/dist/rpc/accept-options.js.map +1 -0
  466. package/dist/rpc/classify.cjs +15 -4
  467. package/dist/rpc/classify.cjs.map +1 -1
  468. package/dist/rpc/classify.d.ts.map +1 -1
  469. package/dist/rpc/classify.js +15 -4
  470. package/dist/rpc/classify.js.map +1 -1
  471. package/dist/rpc/clickyMetadata.cjs +13 -3
  472. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  473. package/dist/rpc/clickyMetadata.d.ts +2 -0
  474. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  475. package/dist/rpc/clickyMetadata.js +14 -4
  476. package/dist/rpc/clickyMetadata.js.map +1 -1
  477. package/dist/rpc/formMetadata.cjs +5 -3
  478. package/dist/rpc/formMetadata.cjs.map +1 -1
  479. package/dist/rpc/formMetadata.d.ts.map +1 -1
  480. package/dist/rpc/formMetadata.js +5 -3
  481. package/dist/rpc/formMetadata.js.map +1 -1
  482. package/dist/rpc.cjs +3 -2
  483. package/dist/rpc.cjs.map +1 -1
  484. package/dist/rpc.d.ts +2 -1
  485. package/dist/rpc.d.ts.map +1 -1
  486. package/dist/rpc.js +2 -1
  487. package/dist/rpc.js.map +1 -1
  488. package/dist/styles.css +1 -1
  489. package/package.json +16 -1
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const utils = require("../../lib/utils.cjs");
6
+ const button = require("../../components/button.cjs");
7
+ const Icon = require("../Icon.cjs");
8
+ const UiStop = require("../../icons/components/UiStop.cjs");
9
+ const UiArrowUp = require("../../icons/components/UiArrowUp.cjs");
10
+ function PromptInput({
11
+ onSubmit,
12
+ onStop,
13
+ status,
14
+ placeholder = "What would you like to know?",
15
+ className
16
+ }) {
17
+ const [value, setValue] = react.useState("");
18
+ const isGenerating = status === "submitted" || status === "streaming";
19
+ const submit = () => {
20
+ const text = value.trim();
21
+ if (!text || isGenerating) return;
22
+ onSubmit(text);
23
+ setValue("");
24
+ };
25
+ const handleSubmit = (e) => {
26
+ e.preventDefault();
27
+ submit();
28
+ };
29
+ const handleKeyDown = (e) => {
30
+ if (e.key === "Enter" && !e.shiftKey && !e.nativeEvent.isComposing) {
31
+ e.preventDefault();
32
+ submit();
33
+ }
34
+ };
35
+ return /* @__PURE__ */ jsxRuntime.jsxs(
36
+ "form",
37
+ {
38
+ onSubmit: handleSubmit,
39
+ className: utils.cn(
40
+ "flex items-end gap-2 rounded-lg border border-input bg-background p-2",
41
+ className
42
+ ),
43
+ children: [
44
+ /* @__PURE__ */ jsxRuntime.jsx(
45
+ "textarea",
46
+ {
47
+ value,
48
+ onChange: (e) => setValue(e.target.value),
49
+ onKeyDown: handleKeyDown,
50
+ placeholder,
51
+ rows: 1,
52
+ className: "max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground"
53
+ }
54
+ ),
55
+ isGenerating && onStop ? /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "icon", variant: "secondary", "aria-label": "Stop", onClick: onStop, children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiStop.UiStop, className: "size-4" }) }) : /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "submit", size: "icon", "aria-label": "Send", disabled: !value.trim(), children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiArrowUp.UiArrowUp, className: "size-4" }) })
56
+ ]
57
+ }
58
+ );
59
+ }
60
+ exports.PromptInput = PromptInput;
61
+ //# sourceMappingURL=PromptInput.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptInput.cjs","sources":["../../../src/data/chat/PromptInput.tsx"],"sourcesContent":["import { useState, type FormEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiArrowUp, UiStop } from \"../../icons\";\nimport type { ChatStatus } from \"./types\";\n\nexport type PromptInputProps = {\n /** Called with the trimmed text when the user submits a non-empty message. */\n onSubmit: (text: string) => void;\n /** Called when the user stops an in-flight generation. */\n onStop?: () => void;\n /** Current chat status; drives the submit/stop button affordance. */\n status?: ChatStatus | undefined;\n placeholder?: string | undefined;\n className?: string | undefined;\n};\n\n/** Auto-growing prompt textarea with a submit/stop button. Enter (or Cmd/Ctrl+\n * Enter) submits; Shift+Enter inserts a newline. While streaming, the button\n * becomes a stop control. */\nexport function PromptInput({\n onSubmit,\n onStop,\n status,\n placeholder = \"What would you like to know?\",\n className,\n}: PromptInputProps) {\n const [value, setValue] = useState(\"\");\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n const submit = () => {\n const text = value.trim();\n if (!text || isGenerating) return;\n onSubmit(text);\n setValue(\"\");\n };\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n submit();\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n submit();\n }\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\n \"flex items-end gap-2 rounded-lg border border-input bg-background p-2\",\n className,\n )}\n >\n <textarea\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n className=\"max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n />\n {isGenerating && onStop ? (\n <Button type=\"button\" size=\"icon\" variant=\"secondary\" aria-label=\"Stop\" onClick={onStop}>\n <Icon icon={UiStop} className=\"size-4\" />\n </Button>\n ) : (\n <Button type=\"submit\" size=\"icon\" aria-label=\"Send\" disabled={!value.trim()}>\n <Icon icon={UiArrowUp} className=\"size-4\" />\n </Button>\n )}\n </form>\n );\n}\n"],"names":["useState","jsxs","cn","jsx","Button","Icon","UiStop","UiArrowUp"],"mappings":";;;;;;;;;AAqBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAAqB;AACnB,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAS,EAAE;AACrC,QAAM,eAAe,WAAW,eAAe,WAAW;AAE1D,QAAM,SAAS,MAAM;AACnB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAI,CAAC,QAAQ,aAAc;AAC3B,aAAS,IAAI;AACb,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,eAAe,CAAC,MAAiB;AACrC,MAAE,eAAA;AACF,WAAA;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,MAA0C;AAC/D,QAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,aAAa;AAClE,QAAE,eAAA;AACF,aAAA;AAAA,IACF;AAAA,EACF;AAEA,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,YACxC,WAAW;AAAA,YACX;AAAA,YACA,MAAM;AAAA,YACN,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEX,gBAAgB,SACfA,2BAAAA,IAACC,iBAAO,MAAK,UAAS,MAAK,QAAO,SAAQ,aAAY,cAAW,QAAO,SAAS,QAC/E,yCAACC,KAAAA,MAAA,EAAK,MAAMC,eAAQ,WAAU,SAAA,CAAS,EAAA,CACzC,mCAECF,OAAAA,QAAA,EAAO,MAAK,UAAS,MAAK,QAAO,cAAW,QAAO,UAAU,CAAC,MAAM,KAAA,GACnE,UAAAD,2BAAAA,IAACE,KAAAA,MAAA,EAAK,MAAME,qBAAW,WAAU,UAAS,EAAA,CAC5C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
@@ -0,0 +1,16 @@
1
+ import { ChatStatus } from './types';
2
+ export type PromptInputProps = {
3
+ /** Called with the trimmed text when the user submits a non-empty message. */
4
+ onSubmit: (text: string) => void;
5
+ /** Called when the user stops an in-flight generation. */
6
+ onStop?: () => void;
7
+ /** Current chat status; drives the submit/stop button affordance. */
8
+ status?: ChatStatus | undefined;
9
+ placeholder?: string | undefined;
10
+ className?: string | undefined;
11
+ };
12
+ /** Auto-growing prompt textarea with a submit/stop button. Enter (or Cmd/Ctrl+
13
+ * Enter) submits; Shift+Enter inserts a newline. While streaming, the button
14
+ * becomes a stop control. */
15
+ export declare function PromptInput({ onSubmit, onStop, status, placeholder, className, }: PromptInputProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=PromptInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/data/chat/PromptInput.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF;;8BAE8B;AAC9B,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAA4C,EAC5C,SAAS,GACV,EAAE,gBAAgB,2CAkDlB"}
@@ -0,0 +1,61 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { Button } from "../../components/button.js";
5
+ import { Icon } from "../Icon.js";
6
+ import { UiStop } from "../../icons/components/UiStop.js";
7
+ import { UiArrowUp } from "../../icons/components/UiArrowUp.js";
8
+ function PromptInput({
9
+ onSubmit,
10
+ onStop,
11
+ status,
12
+ placeholder = "What would you like to know?",
13
+ className
14
+ }) {
15
+ const [value, setValue] = useState("");
16
+ const isGenerating = status === "submitted" || status === "streaming";
17
+ const submit = () => {
18
+ const text = value.trim();
19
+ if (!text || isGenerating) return;
20
+ onSubmit(text);
21
+ setValue("");
22
+ };
23
+ const handleSubmit = (e) => {
24
+ e.preventDefault();
25
+ submit();
26
+ };
27
+ const handleKeyDown = (e) => {
28
+ if (e.key === "Enter" && !e.shiftKey && !e.nativeEvent.isComposing) {
29
+ e.preventDefault();
30
+ submit();
31
+ }
32
+ };
33
+ return /* @__PURE__ */ jsxs(
34
+ "form",
35
+ {
36
+ onSubmit: handleSubmit,
37
+ className: cn(
38
+ "flex items-end gap-2 rounded-lg border border-input bg-background p-2",
39
+ className
40
+ ),
41
+ children: [
42
+ /* @__PURE__ */ jsx(
43
+ "textarea",
44
+ {
45
+ value,
46
+ onChange: (e) => setValue(e.target.value),
47
+ onKeyDown: handleKeyDown,
48
+ placeholder,
49
+ rows: 1,
50
+ className: "max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground"
51
+ }
52
+ ),
53
+ isGenerating && onStop ? /* @__PURE__ */ jsx(Button, { type: "button", size: "icon", variant: "secondary", "aria-label": "Stop", onClick: onStop, children: /* @__PURE__ */ jsx(Icon, { icon: UiStop, className: "size-4" }) }) : /* @__PURE__ */ jsx(Button, { type: "submit", size: "icon", "aria-label": "Send", disabled: !value.trim(), children: /* @__PURE__ */ jsx(Icon, { icon: UiArrowUp, className: "size-4" }) })
54
+ ]
55
+ }
56
+ );
57
+ }
58
+ export {
59
+ PromptInput
60
+ };
61
+ //# sourceMappingURL=PromptInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptInput.js","sources":["../../../src/data/chat/PromptInput.tsx"],"sourcesContent":["import { useState, type FormEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiArrowUp, UiStop } from \"../../icons\";\nimport type { ChatStatus } from \"./types\";\n\nexport type PromptInputProps = {\n /** Called with the trimmed text when the user submits a non-empty message. */\n onSubmit: (text: string) => void;\n /** Called when the user stops an in-flight generation. */\n onStop?: () => void;\n /** Current chat status; drives the submit/stop button affordance. */\n status?: ChatStatus | undefined;\n placeholder?: string | undefined;\n className?: string | undefined;\n};\n\n/** Auto-growing prompt textarea with a submit/stop button. Enter (or Cmd/Ctrl+\n * Enter) submits; Shift+Enter inserts a newline. While streaming, the button\n * becomes a stop control. */\nexport function PromptInput({\n onSubmit,\n onStop,\n status,\n placeholder = \"What would you like to know?\",\n className,\n}: PromptInputProps) {\n const [value, setValue] = useState(\"\");\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n const submit = () => {\n const text = value.trim();\n if (!text || isGenerating) return;\n onSubmit(text);\n setValue(\"\");\n };\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n submit();\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n submit();\n }\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\n \"flex items-end gap-2 rounded-lg border border-input bg-background p-2\",\n className,\n )}\n >\n <textarea\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n className=\"max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n />\n {isGenerating && onStop ? (\n <Button type=\"button\" size=\"icon\" variant=\"secondary\" aria-label=\"Stop\" onClick={onStop}>\n <Icon icon={UiStop} className=\"size-4\" />\n </Button>\n ) : (\n <Button type=\"submit\" size=\"icon\" aria-label=\"Send\" disabled={!value.trim()}>\n <Icon icon={UiArrowUp} className=\"size-4\" />\n </Button>\n )}\n </form>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAqBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAAqB;AACnB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,eAAe,WAAW,eAAe,WAAW;AAE1D,QAAM,SAAS,MAAM;AACnB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAI,CAAC,QAAQ,aAAc;AAC3B,aAAS,IAAI;AACb,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,eAAe,CAAC,MAAiB;AACrC,MAAE,eAAA;AACF,WAAA;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,MAA0C;AAC/D,QAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,aAAa;AAClE,QAAE,eAAA;AACF,aAAA;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,YACxC,WAAW;AAAA,YACX;AAAA,YACA,MAAM;AAAA,YACN,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEX,gBAAgB,SACf,oBAAC,UAAO,MAAK,UAAS,MAAK,QAAO,SAAQ,aAAY,cAAW,QAAO,SAAS,QAC/E,8BAAC,MAAA,EAAK,MAAM,QAAQ,WAAU,SAAA,CAAS,EAAA,CACzC,wBAEC,QAAA,EAAO,MAAK,UAAS,MAAK,QAAO,cAAW,QAAO,UAAU,CAAC,MAAM,KAAA,GACnE,UAAA,oBAAC,MAAA,EAAK,MAAM,WAAW,WAAU,UAAS,EAAA,CAC5C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const utils = require("../../lib/utils.cjs");
6
+ const Icon = require("../Icon.cjs");
7
+ const CodeBlock = require("../CodeBlock.cjs");
8
+ const types = require("./types.cjs");
9
+ const UiCircleX = require("../../icons/components/UiCircleX.cjs");
10
+ const UiCheck = require("../../icons/components/UiCheck.cjs");
11
+ const UiClock = require("../../icons/components/UiClock.cjs");
12
+ const UiCircleOutline = require("../../icons/components/UiCircleOutline.cjs");
13
+ const UiWrench = require("../../icons/components/UiWrench.cjs");
14
+ const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
15
+ const STATUS_LABEL = {
16
+ "approval-requested": "Awaiting approval",
17
+ "approval-responded": "Responded",
18
+ "input-streaming": "Pending",
19
+ "input-available": "Running",
20
+ "output-available": "Completed",
21
+ "output-denied": "Denied",
22
+ "output-error": "Error"
23
+ };
24
+ const STATUS_ICON = {
25
+ "approval-requested": { icon: UiClock.UiClock, className: "text-amber-600" },
26
+ "approval-responded": { icon: UiCheck.UiCheck, className: "text-sky-600" },
27
+ "input-streaming": { icon: UiCircleOutline.UiCircleOutline, className: "text-muted-foreground" },
28
+ "input-available": { icon: UiClock.UiClock, className: "text-muted-foreground animate-pulse" },
29
+ "output-available": { icon: UiCheck.UiCheck, className: "text-emerald-600" },
30
+ "output-denied": { icon: UiCircleX.UiCircleX, className: "text-orange-600" },
31
+ "output-error": { icon: UiCircleX.UiCircleX, className: "text-destructive" }
32
+ };
33
+ function ToolCall({ part, defaultOpen = false, className }) {
34
+ const [open, setOpen] = react.useState(defaultOpen);
35
+ const status = STATUS_ICON[part.state];
36
+ const name = types.toolPartName(part);
37
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("not-prose mb-1 w-full", className), children: [
38
+ /* @__PURE__ */ jsxRuntime.jsxs(
39
+ "button",
40
+ {
41
+ type: "button",
42
+ "aria-expanded": open,
43
+ onClick: () => setOpen((v) => !v),
44
+ className: "flex w-full items-center justify-between gap-2 py-0.5 text-muted-foreground hover:text-foreground",
45
+ children: [
46
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
47
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiWrench.UiWrench, className: "size-3 shrink-0" }),
48
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-mono text-xs", children: name }),
49
+ /* @__PURE__ */ jsxRuntime.jsx(
50
+ Icon.Icon,
51
+ {
52
+ icon: status.icon,
53
+ title: STATUS_LABEL[part.state],
54
+ className: utils.cn("size-3 shrink-0", status.className)
55
+ }
56
+ )
57
+ ] }),
58
+ /* @__PURE__ */ jsxRuntime.jsx(
59
+ Icon.Icon,
60
+ {
61
+ icon: UiChevronDown.UiChevronDown,
62
+ className: utils.cn("size-3 shrink-0 transition-transform", open && "rotate-180")
63
+ }
64
+ )
65
+ ]
66
+ }
67
+ ),
68
+ open && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 pl-4 pt-0.5", children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx(ToolInput, { input: part.input }),
70
+ /* @__PURE__ */ jsxRuntime.jsx(ToolOutput, { part })
71
+ ] })
72
+ ] });
73
+ }
74
+ function ToolInput({ input }) {
75
+ if (input === void 0 || input === null) {
76
+ return null;
77
+ }
78
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { language: "json", source: JSON.stringify(input, null, 2) }) });
79
+ }
80
+ function ToolOutput({ part }) {
81
+ const errorText = part.state === "output-error" ? part.errorText : void 0;
82
+ const output = part.state === "output-available" ? part.output : void 0;
83
+ if (output === void 0 && errorText === void 0) {
84
+ return null;
85
+ }
86
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("overflow-x-auto text-xs", errorText ? "text-destructive" : "text-muted-foreground"), children: [
87
+ errorText !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { children: errorText }),
88
+ output !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { language: "json", source: typeof output === "string" ? output : JSON.stringify(output, null, 2) })
89
+ ] });
90
+ }
91
+ exports.ToolCall = ToolCall;
92
+ //# sourceMappingURL=ToolCall.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCall.cjs","sources":["../../../src/data/chat/ToolCall.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport {\n UiCheck,\n UiChevronDown,\n UiCircleOutline,\n UiCircleX,\n UiClock,\n UiWrench,\n} from \"../../icons\";\nimport type { AnyToolPart } from \"./types\";\nimport { toolPartName } from \"./types\";\n\nexport type ToolCallProps = {\n /** The tool part from an assistant message (typed or dynamic). */\n part: AnyToolPart;\n /** Whether the call body starts expanded. Defaults to false. */\n defaultOpen?: boolean;\n className?: string;\n};\n\ntype ToolState = AnyToolPart[\"state\"];\n\nconst STATUS_LABEL: Record<ToolState, string> = {\n \"approval-requested\": \"Awaiting approval\",\n \"approval-responded\": \"Responded\",\n \"input-streaming\": \"Pending\",\n \"input-available\": \"Running\",\n \"output-available\": \"Completed\",\n \"output-denied\": \"Denied\",\n \"output-error\": \"Error\",\n};\n\nconst STATUS_ICON: Record<ToolState, { icon: StaticIconComponent; className: string }> = {\n \"approval-requested\": { icon: UiClock, className: \"text-amber-600\" },\n \"approval-responded\": { icon: UiCheck, className: \"text-sky-600\" },\n \"input-streaming\": { icon: UiCircleOutline, className: \"text-muted-foreground\" },\n \"input-available\": { icon: UiClock, className: \"text-muted-foreground animate-pulse\" },\n \"output-available\": { icon: UiCheck, className: \"text-emerald-600\" },\n \"output-denied\": { icon: UiCircleX, className: \"text-orange-600\" },\n \"output-error\": { icon: UiCircleX, className: \"text-destructive\" },\n};\n\n/** Generic display of a single AI tool call: a collapsible header showing the\n * tool name + status, expanding to its JSON input and (once available) output\n * or error. Renders both clicky `dynamic-tool` parts and typed `tool-<name>`\n * parts, keyed off `part.state`. */\nexport function ToolCall({ part, defaultOpen = false, className }: ToolCallProps) {\n const [open, setOpen] = useState(defaultOpen);\n const status = STATUS_ICON[part.state];\n const name = toolPartName(part);\n\n return (\n <div className={cn(\"not-prose mb-1 w-full\", className)}>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"flex w-full items-center justify-between gap-2 py-0.5 text-muted-foreground hover:text-foreground\"\n >\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <Icon icon={UiWrench} className=\"size-3 shrink-0\" />\n <span className=\"truncate font-mono text-xs\">{name}</span>\n <Icon\n icon={status.icon}\n title={STATUS_LABEL[part.state]}\n className={cn(\"size-3 shrink-0\", status.className)}\n />\n </span>\n <Icon\n icon={UiChevronDown}\n className={cn(\"size-3 shrink-0 transition-transform\", open && \"rotate-180\")}\n />\n </button>\n\n {open && (\n <div className=\"space-y-1 pl-4 pt-0.5\">\n <ToolInput input={part.input} />\n <ToolOutput part={part} />\n </div>\n )}\n </div>\n );\n}\n\nfunction ToolInput({ input }: { input: AnyToolPart[\"input\"] }) {\n if (input === undefined || input === null) {\n return null;\n }\n return (\n <div className=\"overflow-hidden text-xs\">\n <CodeBlock language=\"json\" source={JSON.stringify(input, null, 2)} />\n </div>\n );\n}\n\nfunction ToolOutput({ part }: { part: AnyToolPart }) {\n const errorText = part.state === \"output-error\" ? part.errorText : undefined;\n const output = part.state === \"output-available\" ? part.output : undefined;\n if (output === undefined && errorText === undefined) {\n return null;\n }\n return (\n <div className={cn(\"overflow-x-auto text-xs\", errorText ? \"text-destructive\" : \"text-muted-foreground\")}>\n {errorText !== undefined && <div>{errorText}</div>}\n {output !== undefined && (\n <CodeBlock language=\"json\" source={typeof output === \"string\" ? output : JSON.stringify(output, null, 2)} />\n )}\n </div>\n );\n}\n"],"names":["UiClock","UiCheck","UiCircleOutline","UiCircleX","useState","toolPartName","cn","jsxs","jsx","Icon","UiWrench","UiChevronDown","CodeBlock"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AnyToolPart } from './types';
2
+ export type ToolCallProps = {
3
+ /** The tool part from an assistant message (typed or dynamic). */
4
+ part: AnyToolPart;
5
+ /** Whether the call body starts expanded. Defaults to false. */
6
+ defaultOpen?: boolean;
7
+ className?: string;
8
+ };
9
+ /** Generic display of a single AI tool call: a collapsible header showing the
10
+ * tool name + status, expanding to its JSON input and (once available) output
11
+ * or error. Renders both clicky `dynamic-tool` parts and typed `tool-<name>`
12
+ * parts, keyed off `part.state`. */
13
+ export declare function ToolCall({ part, defaultOpen, className }: ToolCallProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=ToolCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCall.d.ts","sourceRoot":"","sources":["../../../src/data/chat/ToolCall.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG;IAC1B,kEAAkE;IAClE,IAAI,EAAE,WAAW,CAAC;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAwBF;;;qCAGqC;AACrC,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAmB,EAAE,SAAS,EAAE,EAAE,aAAa,2CAoC/E"}
@@ -0,0 +1,92 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { Icon } from "../Icon.js";
5
+ import { CodeBlock } from "../CodeBlock.js";
6
+ import { toolPartName } from "./types.js";
7
+ import { UiCircleX } from "../../icons/components/UiCircleX.js";
8
+ import { UiCheck } from "../../icons/components/UiCheck.js";
9
+ import { UiClock } from "../../icons/components/UiClock.js";
10
+ import { UiCircleOutline } from "../../icons/components/UiCircleOutline.js";
11
+ import { UiWrench } from "../../icons/components/UiWrench.js";
12
+ import { UiChevronDown } from "../../icons/components/UiChevronDown.js";
13
+ const STATUS_LABEL = {
14
+ "approval-requested": "Awaiting approval",
15
+ "approval-responded": "Responded",
16
+ "input-streaming": "Pending",
17
+ "input-available": "Running",
18
+ "output-available": "Completed",
19
+ "output-denied": "Denied",
20
+ "output-error": "Error"
21
+ };
22
+ const STATUS_ICON = {
23
+ "approval-requested": { icon: UiClock, className: "text-amber-600" },
24
+ "approval-responded": { icon: UiCheck, className: "text-sky-600" },
25
+ "input-streaming": { icon: UiCircleOutline, className: "text-muted-foreground" },
26
+ "input-available": { icon: UiClock, className: "text-muted-foreground animate-pulse" },
27
+ "output-available": { icon: UiCheck, className: "text-emerald-600" },
28
+ "output-denied": { icon: UiCircleX, className: "text-orange-600" },
29
+ "output-error": { icon: UiCircleX, className: "text-destructive" }
30
+ };
31
+ function ToolCall({ part, defaultOpen = false, className }) {
32
+ const [open, setOpen] = useState(defaultOpen);
33
+ const status = STATUS_ICON[part.state];
34
+ const name = toolPartName(part);
35
+ return /* @__PURE__ */ jsxs("div", { className: cn("not-prose mb-1 w-full", className), children: [
36
+ /* @__PURE__ */ jsxs(
37
+ "button",
38
+ {
39
+ type: "button",
40
+ "aria-expanded": open,
41
+ onClick: () => setOpen((v) => !v),
42
+ className: "flex w-full items-center justify-between gap-2 py-0.5 text-muted-foreground hover:text-foreground",
43
+ children: [
44
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
45
+ /* @__PURE__ */ jsx(Icon, { icon: UiWrench, className: "size-3 shrink-0" }),
46
+ /* @__PURE__ */ jsx("span", { className: "truncate font-mono text-xs", children: name }),
47
+ /* @__PURE__ */ jsx(
48
+ Icon,
49
+ {
50
+ icon: status.icon,
51
+ title: STATUS_LABEL[part.state],
52
+ className: cn("size-3 shrink-0", status.className)
53
+ }
54
+ )
55
+ ] }),
56
+ /* @__PURE__ */ jsx(
57
+ Icon,
58
+ {
59
+ icon: UiChevronDown,
60
+ className: cn("size-3 shrink-0 transition-transform", open && "rotate-180")
61
+ }
62
+ )
63
+ ]
64
+ }
65
+ ),
66
+ open && /* @__PURE__ */ jsxs("div", { className: "space-y-1 pl-4 pt-0.5", children: [
67
+ /* @__PURE__ */ jsx(ToolInput, { input: part.input }),
68
+ /* @__PURE__ */ jsx(ToolOutput, { part })
69
+ ] })
70
+ ] });
71
+ }
72
+ function ToolInput({ input }) {
73
+ if (input === void 0 || input === null) {
74
+ return null;
75
+ }
76
+ return /* @__PURE__ */ jsx("div", { className: "overflow-hidden text-xs", children: /* @__PURE__ */ jsx(CodeBlock, { language: "json", source: JSON.stringify(input, null, 2) }) });
77
+ }
78
+ function ToolOutput({ part }) {
79
+ const errorText = part.state === "output-error" ? part.errorText : void 0;
80
+ const output = part.state === "output-available" ? part.output : void 0;
81
+ if (output === void 0 && errorText === void 0) {
82
+ return null;
83
+ }
84
+ return /* @__PURE__ */ jsxs("div", { className: cn("overflow-x-auto text-xs", errorText ? "text-destructive" : "text-muted-foreground"), children: [
85
+ errorText !== void 0 && /* @__PURE__ */ jsx("div", { children: errorText }),
86
+ output !== void 0 && /* @__PURE__ */ jsx(CodeBlock, { language: "json", source: typeof output === "string" ? output : JSON.stringify(output, null, 2) })
87
+ ] });
88
+ }
89
+ export {
90
+ ToolCall
91
+ };
92
+ //# sourceMappingURL=ToolCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCall.js","sources":["../../../src/data/chat/ToolCall.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport {\n UiCheck,\n UiChevronDown,\n UiCircleOutline,\n UiCircleX,\n UiClock,\n UiWrench,\n} from \"../../icons\";\nimport type { AnyToolPart } from \"./types\";\nimport { toolPartName } from \"./types\";\n\nexport type ToolCallProps = {\n /** The tool part from an assistant message (typed or dynamic). */\n part: AnyToolPart;\n /** Whether the call body starts expanded. Defaults to false. */\n defaultOpen?: boolean;\n className?: string;\n};\n\ntype ToolState = AnyToolPart[\"state\"];\n\nconst STATUS_LABEL: Record<ToolState, string> = {\n \"approval-requested\": \"Awaiting approval\",\n \"approval-responded\": \"Responded\",\n \"input-streaming\": \"Pending\",\n \"input-available\": \"Running\",\n \"output-available\": \"Completed\",\n \"output-denied\": \"Denied\",\n \"output-error\": \"Error\",\n};\n\nconst STATUS_ICON: Record<ToolState, { icon: StaticIconComponent; className: string }> = {\n \"approval-requested\": { icon: UiClock, className: \"text-amber-600\" },\n \"approval-responded\": { icon: UiCheck, className: \"text-sky-600\" },\n \"input-streaming\": { icon: UiCircleOutline, className: \"text-muted-foreground\" },\n \"input-available\": { icon: UiClock, className: \"text-muted-foreground animate-pulse\" },\n \"output-available\": { icon: UiCheck, className: \"text-emerald-600\" },\n \"output-denied\": { icon: UiCircleX, className: \"text-orange-600\" },\n \"output-error\": { icon: UiCircleX, className: \"text-destructive\" },\n};\n\n/** Generic display of a single AI tool call: a collapsible header showing the\n * tool name + status, expanding to its JSON input and (once available) output\n * or error. Renders both clicky `dynamic-tool` parts and typed `tool-<name>`\n * parts, keyed off `part.state`. */\nexport function ToolCall({ part, defaultOpen = false, className }: ToolCallProps) {\n const [open, setOpen] = useState(defaultOpen);\n const status = STATUS_ICON[part.state];\n const name = toolPartName(part);\n\n return (\n <div className={cn(\"not-prose mb-1 w-full\", className)}>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"flex w-full items-center justify-between gap-2 py-0.5 text-muted-foreground hover:text-foreground\"\n >\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <Icon icon={UiWrench} className=\"size-3 shrink-0\" />\n <span className=\"truncate font-mono text-xs\">{name}</span>\n <Icon\n icon={status.icon}\n title={STATUS_LABEL[part.state]}\n className={cn(\"size-3 shrink-0\", status.className)}\n />\n </span>\n <Icon\n icon={UiChevronDown}\n className={cn(\"size-3 shrink-0 transition-transform\", open && \"rotate-180\")}\n />\n </button>\n\n {open && (\n <div className=\"space-y-1 pl-4 pt-0.5\">\n <ToolInput input={part.input} />\n <ToolOutput part={part} />\n </div>\n )}\n </div>\n );\n}\n\nfunction ToolInput({ input }: { input: AnyToolPart[\"input\"] }) {\n if (input === undefined || input === null) {\n return null;\n }\n return (\n <div className=\"overflow-hidden text-xs\">\n <CodeBlock language=\"json\" source={JSON.stringify(input, null, 2)} />\n </div>\n );\n}\n\nfunction ToolOutput({ part }: { part: AnyToolPart }) {\n const errorText = part.state === \"output-error\" ? part.errorText : undefined;\n const output = part.state === \"output-available\" ? part.output : undefined;\n if (output === undefined && errorText === undefined) {\n return null;\n }\n return (\n <div className={cn(\"overflow-x-auto text-xs\", errorText ? \"text-destructive\" : \"text-muted-foreground\")}>\n {errorText !== undefined && <div>{errorText}</div>}\n {output !== undefined && (\n <CodeBlock language=\"json\" source={typeof output === \"string\" ? output : JSON.stringify(output, null, 2)} />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function clickyOperationsToTools(operations) {
4
+ const tools = [];
5
+ for (const resolved of operations) {
6
+ const tool = operationToTool(resolved.operation);
7
+ if (tool) {
8
+ tools.push(tool);
9
+ }
10
+ }
11
+ return tools;
12
+ }
13
+ function operationToTool(operation) {
14
+ if (!operation.operationId) {
15
+ return null;
16
+ }
17
+ return {
18
+ name: operation.operationId,
19
+ description: operation.description ?? operation.summary,
20
+ inputSchema: buildInputSchema(operation)
21
+ };
22
+ }
23
+ function buildInputSchema(operation) {
24
+ const properties = {};
25
+ const required = [];
26
+ for (const param of operation.parameters ?? []) {
27
+ properties[param.name] = parameterToProperty(param);
28
+ if (param.required) {
29
+ required.push(param.name);
30
+ }
31
+ }
32
+ const body = requestBodySchema(operation);
33
+ if (body == null ? void 0 : body.properties) {
34
+ for (const [name, schema] of Object.entries(body.properties)) {
35
+ properties[name] = schemaToProperty(schema);
36
+ }
37
+ }
38
+ return { type: "object", properties, required };
39
+ }
40
+ function parameterToProperty(param) {
41
+ const prop = schemaToProperty(param.schema);
42
+ if (param.description && !prop.description) {
43
+ prop.description = param.description;
44
+ }
45
+ return prop;
46
+ }
47
+ function schemaToProperty(schema) {
48
+ if (!schema) {
49
+ return { type: "string" };
50
+ }
51
+ const prop = { type: schema.type ?? "string" };
52
+ if (schema.description !== void 0) {
53
+ prop.description = schema.description;
54
+ }
55
+ if (schema.enum !== void 0) {
56
+ prop.enum = schema.enum;
57
+ }
58
+ if (schema.default !== void 0) {
59
+ prop.default = schema.default;
60
+ }
61
+ return prop;
62
+ }
63
+ function requestBodySchema(operation) {
64
+ var _a, _b, _c;
65
+ const content = (_a = operation.requestBody) == null ? void 0 : _a.content;
66
+ if (!content) {
67
+ return void 0;
68
+ }
69
+ return ((_b = content["application/json"]) == null ? void 0 : _b.schema) ?? ((_c = Object.values(content)[0]) == null ? void 0 : _c.schema);
70
+ }
71
+ exports.clickyOperationsToTools = clickyOperationsToTools;
72
+ exports.operationToTool = operationToTool;
73
+ //# sourceMappingURL=clickyOperationsToTools.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickyOperationsToTools.cjs","sources":["../../../src/data/chat/clickyOperationsToTools.ts"],"sourcesContent":["import type {\n OpenAPIOperation,\n OpenAPIParameter,\n OpenAPISchema,\n ResolvedOperation,\n} from \"../../rpc/types\";\nimport type { ChatToolInputSchema, ChatToolMeta, JSONSchemaProperty } from \"./types\";\n\n/** Converts a clicky RPC operation catalog into AI-tool metadata for display\n * and request scoping. Execution stays in the Go backend; this maps an\n * operation's `operationId` → tool name, `summary`/`description` → description,\n * and `parameters` + `requestBody` → a JSON-Schema input. Operations without an\n * `operationId` are skipped (a tool needs a stable name). */\nexport function clickyOperationsToTools(operations: ResolvedOperation[]): ChatToolMeta[] {\n const tools: ChatToolMeta[] = [];\n for (const resolved of operations) {\n const tool = operationToTool(resolved.operation);\n if (tool) {\n tools.push(tool);\n }\n }\n return tools;\n}\n\nexport function operationToTool(operation: OpenAPIOperation): ChatToolMeta | null {\n if (!operation.operationId) {\n return null;\n }\n return {\n name: operation.operationId,\n description: operation.description ?? operation.summary,\n inputSchema: buildInputSchema(operation),\n };\n}\n\nfunction buildInputSchema(operation: OpenAPIOperation): ChatToolInputSchema {\n const properties: Record<string, JSONSchemaProperty> = {};\n const required: string[] = [];\n\n for (const param of operation.parameters ?? []) {\n properties[param.name] = parameterToProperty(param);\n if (param.required) {\n required.push(param.name);\n }\n }\n\n const body = requestBodySchema(operation);\n if (body?.properties) {\n for (const [name, schema] of Object.entries(body.properties)) {\n properties[name] = schemaToProperty(schema);\n }\n }\n\n return { type: \"object\", properties, required };\n}\n\nfunction parameterToProperty(param: OpenAPIParameter): JSONSchemaProperty {\n const prop = schemaToProperty(param.schema);\n if (param.description && !prop.description) {\n prop.description = param.description;\n }\n return prop;\n}\n\nfunction schemaToProperty(schema: OpenAPISchema | undefined): JSONSchemaProperty {\n if (!schema) {\n return { type: \"string\" };\n }\n const prop: JSONSchemaProperty = { type: schema.type ?? \"string\" };\n if (schema.description !== undefined) {\n prop.description = schema.description;\n }\n if (schema.enum !== undefined) {\n prop.enum = schema.enum;\n }\n if (schema.default !== undefined) {\n prop.default = schema.default;\n }\n return prop;\n}\n\nfunction requestBodySchema(operation: OpenAPIOperation): OpenAPISchema | undefined {\n const content = operation.requestBody?.content;\n if (!content) {\n return undefined;\n }\n return content[\"application/json\"]?.schema ?? Object.values(content)[0]?.schema;\n}\n"],"names":[],"mappings":";;AAaO,SAAS,wBAAwB,YAAiD;AACvF,QAAM,QAAwB,CAAA;AAC9B,aAAW,YAAY,YAAY;AACjC,UAAM,OAAO,gBAAgB,SAAS,SAAS;AAC/C,QAAI,MAAM;AACR,YAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,WAAkD;AAChF,MAAI,CAAC,UAAU,aAAa;AAC1B,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM,UAAU;AAAA,IAChB,aAAa,UAAU,eAAe,UAAU;AAAA,IAChD,aAAa,iBAAiB,SAAS;AAAA,EAAA;AAE3C;AAEA,SAAS,iBAAiB,WAAkD;AAC1E,QAAM,aAAiD,CAAA;AACvD,QAAM,WAAqB,CAAA;AAE3B,aAAW,SAAS,UAAU,cAAc,CAAA,GAAI;AAC9C,eAAW,MAAM,IAAI,IAAI,oBAAoB,KAAK;AAClD,QAAI,MAAM,UAAU;AAClB,eAAS,KAAK,MAAM,IAAI;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,OAAO,kBAAkB,SAAS;AACxC,MAAI,6BAAM,YAAY;AACpB,eAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,KAAK,UAAU,GAAG;AAC5D,iBAAW,IAAI,IAAI,iBAAiB,MAAM;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,UAAU,YAAY,SAAA;AACvC;AAEA,SAAS,oBAAoB,OAA6C;AACxE,QAAM,OAAO,iBAAiB,MAAM,MAAM;AAC1C,MAAI,MAAM,eAAe,CAAC,KAAK,aAAa;AAC1C,SAAK,cAAc,MAAM;AAAA,EAC3B;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,QAAuD;AAC/E,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,MAAM,SAAA;AAAA,EACjB;AACA,QAAM,OAA2B,EAAE,MAAM,OAAO,QAAQ,SAAA;AACxD,MAAI,OAAO,gBAAgB,QAAW;AACpC,SAAK,cAAc,OAAO;AAAA,EAC5B;AACA,MAAI,OAAO,SAAS,QAAW;AAC7B,SAAK,OAAO,OAAO;AAAA,EACrB;AACA,MAAI,OAAO,YAAY,QAAW;AAChC,SAAK,UAAU,OAAO;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,WAAwD;;AACjF,QAAM,WAAU,eAAU,gBAAV,mBAAuB;AACvC,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,WAAO,aAAQ,kBAAkB,MAA1B,mBAA6B,aAAU,YAAO,OAAO,OAAO,EAAE,CAAC,MAAxB,mBAA2B;AAC3E;;;"}
@@ -0,0 +1,10 @@
1
+ import { OpenAPIOperation, ResolvedOperation } from '../../rpc/types';
2
+ import { ChatToolMeta } from './types';
3
+ /** Converts a clicky RPC operation catalog into AI-tool metadata for display
4
+ * and request scoping. Execution stays in the Go backend; this maps an
5
+ * operation's `operationId` → tool name, `summary`/`description` → description,
6
+ * and `parameters` + `requestBody` → a JSON-Schema input. Operations without an
7
+ * `operationId` are skipped (a tool needs a stable name). */
8
+ export declare function clickyOperationsToTools(operations: ResolvedOperation[]): ChatToolMeta[];
9
+ export declare function operationToTool(operation: OpenAPIOperation): ChatToolMeta | null;
10
+ //# sourceMappingURL=clickyOperationsToTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickyOperationsToTools.d.ts","sourceRoot":"","sources":["../../../src/data/chat/clickyOperationsToTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAGhB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAuB,YAAY,EAAsB,MAAM,SAAS,CAAC;AAErF;;;;8DAI8D;AAC9D,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,YAAY,EAAE,CASvF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAShF"}
@@ -0,0 +1,73 @@
1
+ function clickyOperationsToTools(operations) {
2
+ const tools = [];
3
+ for (const resolved of operations) {
4
+ const tool = operationToTool(resolved.operation);
5
+ if (tool) {
6
+ tools.push(tool);
7
+ }
8
+ }
9
+ return tools;
10
+ }
11
+ function operationToTool(operation) {
12
+ if (!operation.operationId) {
13
+ return null;
14
+ }
15
+ return {
16
+ name: operation.operationId,
17
+ description: operation.description ?? operation.summary,
18
+ inputSchema: buildInputSchema(operation)
19
+ };
20
+ }
21
+ function buildInputSchema(operation) {
22
+ const properties = {};
23
+ const required = [];
24
+ for (const param of operation.parameters ?? []) {
25
+ properties[param.name] = parameterToProperty(param);
26
+ if (param.required) {
27
+ required.push(param.name);
28
+ }
29
+ }
30
+ const body = requestBodySchema(operation);
31
+ if (body == null ? void 0 : body.properties) {
32
+ for (const [name, schema] of Object.entries(body.properties)) {
33
+ properties[name] = schemaToProperty(schema);
34
+ }
35
+ }
36
+ return { type: "object", properties, required };
37
+ }
38
+ function parameterToProperty(param) {
39
+ const prop = schemaToProperty(param.schema);
40
+ if (param.description && !prop.description) {
41
+ prop.description = param.description;
42
+ }
43
+ return prop;
44
+ }
45
+ function schemaToProperty(schema) {
46
+ if (!schema) {
47
+ return { type: "string" };
48
+ }
49
+ const prop = { type: schema.type ?? "string" };
50
+ if (schema.description !== void 0) {
51
+ prop.description = schema.description;
52
+ }
53
+ if (schema.enum !== void 0) {
54
+ prop.enum = schema.enum;
55
+ }
56
+ if (schema.default !== void 0) {
57
+ prop.default = schema.default;
58
+ }
59
+ return prop;
60
+ }
61
+ function requestBodySchema(operation) {
62
+ var _a, _b, _c;
63
+ const content = (_a = operation.requestBody) == null ? void 0 : _a.content;
64
+ if (!content) {
65
+ return void 0;
66
+ }
67
+ return ((_b = content["application/json"]) == null ? void 0 : _b.schema) ?? ((_c = Object.values(content)[0]) == null ? void 0 : _c.schema);
68
+ }
69
+ export {
70
+ clickyOperationsToTools,
71
+ operationToTool
72
+ };
73
+ //# sourceMappingURL=clickyOperationsToTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickyOperationsToTools.js","sources":["../../../src/data/chat/clickyOperationsToTools.ts"],"sourcesContent":["import type {\n OpenAPIOperation,\n OpenAPIParameter,\n OpenAPISchema,\n ResolvedOperation,\n} from \"../../rpc/types\";\nimport type { ChatToolInputSchema, ChatToolMeta, JSONSchemaProperty } from \"./types\";\n\n/** Converts a clicky RPC operation catalog into AI-tool metadata for display\n * and request scoping. Execution stays in the Go backend; this maps an\n * operation's `operationId` → tool name, `summary`/`description` → description,\n * and `parameters` + `requestBody` → a JSON-Schema input. Operations without an\n * `operationId` are skipped (a tool needs a stable name). */\nexport function clickyOperationsToTools(operations: ResolvedOperation[]): ChatToolMeta[] {\n const tools: ChatToolMeta[] = [];\n for (const resolved of operations) {\n const tool = operationToTool(resolved.operation);\n if (tool) {\n tools.push(tool);\n }\n }\n return tools;\n}\n\nexport function operationToTool(operation: OpenAPIOperation): ChatToolMeta | null {\n if (!operation.operationId) {\n return null;\n }\n return {\n name: operation.operationId,\n description: operation.description ?? operation.summary,\n inputSchema: buildInputSchema(operation),\n };\n}\n\nfunction buildInputSchema(operation: OpenAPIOperation): ChatToolInputSchema {\n const properties: Record<string, JSONSchemaProperty> = {};\n const required: string[] = [];\n\n for (const param of operation.parameters ?? []) {\n properties[param.name] = parameterToProperty(param);\n if (param.required) {\n required.push(param.name);\n }\n }\n\n const body = requestBodySchema(operation);\n if (body?.properties) {\n for (const [name, schema] of Object.entries(body.properties)) {\n properties[name] = schemaToProperty(schema);\n }\n }\n\n return { type: \"object\", properties, required };\n}\n\nfunction parameterToProperty(param: OpenAPIParameter): JSONSchemaProperty {\n const prop = schemaToProperty(param.schema);\n if (param.description && !prop.description) {\n prop.description = param.description;\n }\n return prop;\n}\n\nfunction schemaToProperty(schema: OpenAPISchema | undefined): JSONSchemaProperty {\n if (!schema) {\n return { type: \"string\" };\n }\n const prop: JSONSchemaProperty = { type: schema.type ?? \"string\" };\n if (schema.description !== undefined) {\n prop.description = schema.description;\n }\n if (schema.enum !== undefined) {\n prop.enum = schema.enum;\n }\n if (schema.default !== undefined) {\n prop.default = schema.default;\n }\n return prop;\n}\n\nfunction requestBodySchema(operation: OpenAPIOperation): OpenAPISchema | undefined {\n const content = operation.requestBody?.content;\n if (!content) {\n return undefined;\n }\n return content[\"application/json\"]?.schema ?? Object.values(content)[0]?.schema;\n}\n"],"names":[],"mappings":"AAaO,SAAS,wBAAwB,YAAiD;AACvF,QAAM,QAAwB,CAAA;AAC9B,aAAW,YAAY,YAAY;AACjC,UAAM,OAAO,gBAAgB,SAAS,SAAS;AAC/C,QAAI,MAAM;AACR,YAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,WAAkD;AAChF,MAAI,CAAC,UAAU,aAAa;AAC1B,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM,UAAU;AAAA,IAChB,aAAa,UAAU,eAAe,UAAU;AAAA,IAChD,aAAa,iBAAiB,SAAS;AAAA,EAAA;AAE3C;AAEA,SAAS,iBAAiB,WAAkD;AAC1E,QAAM,aAAiD,CAAA;AACvD,QAAM,WAAqB,CAAA;AAE3B,aAAW,SAAS,UAAU,cAAc,CAAA,GAAI;AAC9C,eAAW,MAAM,IAAI,IAAI,oBAAoB,KAAK;AAClD,QAAI,MAAM,UAAU;AAClB,eAAS,KAAK,MAAM,IAAI;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,OAAO,kBAAkB,SAAS;AACxC,MAAI,6BAAM,YAAY;AACpB,eAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,KAAK,UAAU,GAAG;AAC5D,iBAAW,IAAI,IAAI,iBAAiB,MAAM;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,UAAU,YAAY,SAAA;AACvC;AAEA,SAAS,oBAAoB,OAA6C;AACxE,QAAM,OAAO,iBAAiB,MAAM,MAAM;AAC1C,MAAI,MAAM,eAAe,CAAC,KAAK,aAAa;AAC1C,SAAK,cAAc,MAAM;AAAA,EAC3B;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,QAAuD;AAC/E,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,MAAM,SAAA;AAAA,EACjB;AACA,QAAM,OAA2B,EAAE,MAAM,OAAO,QAAQ,SAAA;AACxD,MAAI,OAAO,gBAAgB,QAAW;AACpC,SAAK,cAAc,OAAO;AAAA,EAC5B;AACA,MAAI,OAAO,SAAS,QAAW;AAC7B,SAAK,OAAO,OAAO;AAAA,EACrB;AACA,MAAI,OAAO,YAAY,QAAW;AAChC,SAAK,UAAU,OAAO;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,WAAwD;AApE5E;AAqEL,QAAM,WAAU,eAAU,gBAAV,mBAAuB;AACvC,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,WAAO,aAAQ,kBAAkB,MAA1B,mBAA6B,aAAU,YAAO,OAAO,OAAO,EAAE,CAAC,MAAxB,mBAA2B;AAC3E;"}
@@ -0,0 +1,8 @@
1
+ export { Chat, type ChatProps } from './Chat';
2
+ export { Conversation, type ConversationProps } from './Conversation';
3
+ export { Message, type MessageProps } from './Message';
4
+ export { PromptInput, type PromptInputProps } from './PromptInput';
5
+ export { ToolCall, type ToolCallProps } from './ToolCall';
6
+ export { clickyOperationsToTools, operationToTool, } from './clickyOperationsToTools';
7
+ export { isDynamicToolPart, isTypedToolPart, toolPartName, type AnyToolPart, type ChatStatus, type ChatToolInputSchema, type ChatToolMeta, type DynamicToolUIPart, type JSONSchemaProperty, type ToolUIPart, type UIMessage, } from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/chat/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function isDynamicToolPart(part) {
4
+ return part.type === "dynamic-tool";
5
+ }
6
+ function isTypedToolPart(part) {
7
+ return part.type.startsWith("tool-");
8
+ }
9
+ function toolPartName(part) {
10
+ if (isDynamicToolPart(part)) {
11
+ return part.toolName;
12
+ }
13
+ return part.type.slice("tool-".length);
14
+ }
15
+ exports.isDynamicToolPart = isDynamicToolPart;
16
+ exports.isTypedToolPart = isTypedToolPart;
17
+ exports.toolPartName = toolPartName;
18
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sources":["../../../src/data/chat/types.ts"],"sourcesContent":["import type { UIMessage, ToolUIPart, DynamicToolUIPart, ChatStatus } from \"ai\";\n\nexport type { UIMessage, ToolUIPart, DynamicToolUIPart, ChatStatus };\n\n/** A tool part as it appears in an assistant UIMessage — either a typed\n * `tool-<name>` part or the generic `dynamic-tool` part. clicky operations\n * surface as dynamic tools, so the chat UI renders both shapes. */\nexport type AnyToolPart = ToolUIPart | DynamicToolUIPart;\n\n/** AI-tool metadata derived from a clicky RPC operation. The Go backend owns\n * execution; the client uses this only for display and to scope which tools a\n * request may call (passed in the transport `body`). */\nexport interface ChatToolMeta {\n /** Stable tool name sent to the model (the operation id). */\n name: string;\n /** Human-readable description shown in tool pickers / tool-call headers. */\n description?: string | undefined;\n /** JSON-Schema for the tool's input, assembled from the operation's\n * parameters + request body. */\n inputSchema: ChatToolInputSchema;\n}\n\nexport interface ChatToolInputSchema {\n type: \"object\";\n properties: Record<string, JSONSchemaProperty>;\n required: string[];\n}\n\nexport interface JSONSchemaProperty {\n type?: string;\n description?: string;\n enum?: unknown[];\n default?: unknown;\n}\n\n/** Returns true for a `dynamic-tool` part (clicky operations surface this way). */\nexport function isDynamicToolPart(part: { type: string }): part is DynamicToolUIPart {\n return part.type === \"dynamic-tool\";\n}\n\n/** Returns true for a typed `tool-<name>` part. */\nexport function isTypedToolPart(part: { type: string }): part is ToolUIPart {\n return part.type.startsWith(\"tool-\");\n}\n\n/** The display name of a tool part: the explicit `toolName` for dynamic tools,\n * otherwise the suffix after `tool-`. */\nexport function toolPartName(part: AnyToolPart): string {\n if (isDynamicToolPart(part)) {\n return part.toolName;\n }\n return part.type.slice(\"tool-\".length);\n}\n"],"names":[],"mappings":";;AAoCO,SAAS,kBAAkB,MAAmD;AACnF,SAAO,KAAK,SAAS;AACvB;AAGO,SAAS,gBAAgB,MAA4C;AAC1E,SAAO,KAAK,KAAK,WAAW,OAAO;AACrC;AAIO,SAAS,aAAa,MAA2B;AACtD,MAAI,kBAAkB,IAAI,GAAG;AAC3B,WAAO,KAAK;AAAA,EACd;AACA,SAAO,KAAK,KAAK,MAAM,QAAQ,MAAM;AACvC;;;;"}