@vendoai/ui 0.4.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 (525) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +7 -0
  3. package/dist/chrome/activity-ledger.d.ts +14 -0
  4. package/dist/chrome/activity-ledger.d.ts.map +1 -0
  5. package/dist/chrome/activity-ledger.js +40 -0
  6. package/dist/chrome/activity-ledger.js.map +1 -0
  7. package/dist/chrome/activity-panel.d.ts +7 -0
  8. package/dist/chrome/activity-panel.d.ts.map +1 -0
  9. package/dist/chrome/activity-panel.js +27 -0
  10. package/dist/chrome/activity-panel.js.map +1 -0
  11. package/dist/chrome/activity-semantics.d.ts +42 -0
  12. package/dist/chrome/activity-semantics.d.ts.map +1 -0
  13. package/dist/chrome/activity-semantics.js +119 -0
  14. package/dist/chrome/activity-semantics.js.map +1 -0
  15. package/dist/chrome/approval-card.d.ts +22 -0
  16. package/dist/chrome/approval-card.d.ts.map +1 -0
  17. package/dist/chrome/approval-card.js +95 -0
  18. package/dist/chrome/approval-card.js.map +1 -0
  19. package/dist/chrome/approval-sheet.d.ts +23 -0
  20. package/dist/chrome/approval-sheet.d.ts.map +1 -0
  21. package/dist/chrome/approval-sheet.js +72 -0
  22. package/dist/chrome/approval-sheet.js.map +1 -0
  23. package/dist/chrome/automations-panel.d.ts +3 -0
  24. package/dist/chrome/automations-panel.d.ts.map +1 -0
  25. package/dist/chrome/automations-panel.js +305 -0
  26. package/dist/chrome/automations-panel.js.map +1 -0
  27. package/dist/chrome/build-beat.d.ts +70 -0
  28. package/dist/chrome/build-beat.d.ts.map +1 -0
  29. package/dist/chrome/build-beat.js +101 -0
  30. package/dist/chrome/build-beat.js.map +1 -0
  31. package/dist/chrome/chrome-css.d.ts +7 -0
  32. package/dist/chrome/chrome-css.d.ts.map +1 -0
  33. package/dist/chrome/chrome-css.js +2042 -0
  34. package/dist/chrome/chrome-css.js.map +1 -0
  35. package/dist/chrome/chrome-root.d.ts +13 -0
  36. package/dist/chrome/chrome-root.d.ts.map +1 -0
  37. package/dist/chrome/chrome-root.js +39 -0
  38. package/dist/chrome/chrome-root.js.map +1 -0
  39. package/dist/chrome/clipboard.d.ts +4 -0
  40. package/dist/chrome/clipboard.d.ts.map +1 -0
  41. package/dist/chrome/clipboard.js +49 -0
  42. package/dist/chrome/clipboard.js.map +1 -0
  43. package/dist/chrome/connect-card.d.ts +19 -0
  44. package/dist/chrome/connect-card.d.ts.map +1 -0
  45. package/dist/chrome/connect-card.js +57 -0
  46. package/dist/chrome/connect-card.js.map +1 -0
  47. package/dist/chrome/connect-dock.d.ts +25 -0
  48. package/dist/chrome/connect-dock.d.ts.map +1 -0
  49. package/dist/chrome/connect-dock.js +192 -0
  50. package/dist/chrome/connect-dock.js.map +1 -0
  51. package/dist/chrome/connected-accounts-panel.d.ts +14 -0
  52. package/dist/chrome/connected-accounts-panel.d.ts.map +1 -0
  53. package/dist/chrome/connected-accounts-panel.js +157 -0
  54. package/dist/chrome/connected-accounts-panel.js.map +1 -0
  55. package/dist/chrome/dev-mode.d.ts +5 -0
  56. package/dist/chrome/dev-mode.d.ts.map +1 -0
  57. package/dist/chrome/dev-mode.js +7 -0
  58. package/dist/chrome/dev-mode.js.map +1 -0
  59. package/dist/chrome/discoverability.d.ts +33 -0
  60. package/dist/chrome/discoverability.d.ts.map +1 -0
  61. package/dist/chrome/discoverability.js +63 -0
  62. package/dist/chrome/discoverability.js.map +1 -0
  63. package/dist/chrome/embeds.d.ts +21 -0
  64. package/dist/chrome/embeds.d.ts.map +1 -0
  65. package/dist/chrome/embeds.js +181 -0
  66. package/dist/chrome/embeds.js.map +1 -0
  67. package/dist/chrome/fluid-thinking.d.ts +15 -0
  68. package/dist/chrome/fluid-thinking.d.ts.map +1 -0
  69. package/dist/chrome/fluid-thinking.js +37 -0
  70. package/dist/chrome/fluid-thinking.js.map +1 -0
  71. package/dist/chrome/humanize.d.ts +46 -0
  72. package/dist/chrome/humanize.d.ts.map +1 -0
  73. package/dist/chrome/humanize.js +104 -0
  74. package/dist/chrome/humanize.js.map +1 -0
  75. package/dist/chrome/index.d.ts +39 -0
  76. package/dist/chrome/index.d.ts.map +1 -0
  77. package/dist/chrome/index.js +38 -0
  78. package/dist/chrome/index.js.map +1 -0
  79. package/dist/chrome/markdown.d.ts +23 -0
  80. package/dist/chrome/markdown.d.ts.map +1 -0
  81. package/dist/chrome/markdown.js +149 -0
  82. package/dist/chrome/markdown.js.map +1 -0
  83. package/dist/chrome/morph-toast.d.ts +43 -0
  84. package/dist/chrome/morph-toast.d.ts.map +1 -0
  85. package/dist/chrome/morph-toast.js +89 -0
  86. package/dist/chrome/morph-toast.js.map +1 -0
  87. package/dist/chrome/no-policy-notice.d.ts +8 -0
  88. package/dist/chrome/no-policy-notice.d.ts.map +1 -0
  89. package/dist/chrome/no-policy-notice.js +18 -0
  90. package/dist/chrome/no-policy-notice.js.map +1 -0
  91. package/dist/chrome/onest-font.gen.d.ts +10 -0
  92. package/dist/chrome/onest-font.gen.d.ts.map +1 -0
  93. package/dist/chrome/onest-font.gen.js +10 -0
  94. package/dist/chrome/onest-font.gen.js.map +1 -0
  95. package/dist/chrome/overlay-registry.d.ts +66 -0
  96. package/dist/chrome/overlay-registry.d.ts.map +1 -0
  97. package/dist/chrome/overlay-registry.js +103 -0
  98. package/dist/chrome/overlay-registry.js.map +1 -0
  99. package/dist/chrome/palette-hotkey.d.ts +42 -0
  100. package/dist/chrome/palette-hotkey.d.ts.map +1 -0
  101. package/dist/chrome/palette-hotkey.js +91 -0
  102. package/dist/chrome/palette-hotkey.js.map +1 -0
  103. package/dist/chrome/policy-notice-body.d.ts +3 -0
  104. package/dist/chrome/policy-notice-body.d.ts.map +1 -0
  105. package/dist/chrome/policy-notice-body.js +6 -0
  106. package/dist/chrome/policy-notice-body.js.map +1 -0
  107. package/dist/chrome/takeover-portal.d.ts +16 -0
  108. package/dist/chrome/takeover-portal.d.ts.map +1 -0
  109. package/dist/chrome/takeover-portal.js +21 -0
  110. package/dist/chrome/takeover-portal.js.map +1 -0
  111. package/dist/chrome/thread/attachments.d.ts +24 -0
  112. package/dist/chrome/thread/attachments.d.ts.map +1 -0
  113. package/dist/chrome/thread/attachments.js +50 -0
  114. package/dist/chrome/thread/attachments.js.map +1 -0
  115. package/dist/chrome/thread/composer.d.ts +63 -0
  116. package/dist/chrome/thread/composer.d.ts.map +1 -0
  117. package/dist/chrome/thread/composer.js +259 -0
  118. package/dist/chrome/thread/composer.js.map +1 -0
  119. package/dist/chrome/thread/index.d.ts +41 -0
  120. package/dist/chrome/thread/index.d.ts.map +1 -0
  121. package/dist/chrome/thread/index.js +258 -0
  122. package/dist/chrome/thread/index.js.map +1 -0
  123. package/dist/chrome/thread/message-data.d.ts +35 -0
  124. package/dist/chrome/thread/message-data.d.ts.map +1 -0
  125. package/dist/chrome/thread/message-data.js +127 -0
  126. package/dist/chrome/thread/message-data.js.map +1 -0
  127. package/dist/chrome/thread/message-list.d.ts +30 -0
  128. package/dist/chrome/thread/message-list.d.ts.map +1 -0
  129. package/dist/chrome/thread/message-list.js +11 -0
  130. package/dist/chrome/thread/message-list.js.map +1 -0
  131. package/dist/chrome/thread/message.d.ts +18 -0
  132. package/dist/chrome/thread/message.d.ts.map +1 -0
  133. package/dist/chrome/thread/message.js +57 -0
  134. package/dist/chrome/thread/message.js.map +1 -0
  135. package/dist/chrome/thread/parts.d.ts +53 -0
  136. package/dist/chrome/thread/parts.d.ts.map +1 -0
  137. package/dist/chrome/thread/parts.js +184 -0
  138. package/dist/chrome/thread/parts.js.map +1 -0
  139. package/dist/chrome/thread/scrolling.d.ts +26 -0
  140. package/dist/chrome/thread/scrolling.d.ts.map +1 -0
  141. package/dist/chrome/thread/scrolling.js +214 -0
  142. package/dist/chrome/thread/scrolling.js.map +1 -0
  143. package/dist/chrome/truncate.d.ts +12 -0
  144. package/dist/chrome/truncate.d.ts.map +1 -0
  145. package/dist/chrome/truncate.js +18 -0
  146. package/dist/chrome/truncate.js.map +1 -0
  147. package/dist/chrome/vendo-activities.d.ts +24 -0
  148. package/dist/chrome/vendo-activities.d.ts.map +1 -0
  149. package/dist/chrome/vendo-activities.js +38 -0
  150. package/dist/chrome/vendo-activities.js.map +1 -0
  151. package/dist/chrome/vendo-overlay.d.ts +63 -0
  152. package/dist/chrome/vendo-overlay.d.ts.map +1 -0
  153. package/dist/chrome/vendo-overlay.js +256 -0
  154. package/dist/chrome/vendo-overlay.js.map +1 -0
  155. package/dist/chrome/vendo-page.d.ts +3 -0
  156. package/dist/chrome/vendo-page.d.ts.map +1 -0
  157. package/dist/chrome/vendo-page.js +162 -0
  158. package/dist/chrome/vendo-page.js.map +1 -0
  159. package/dist/chrome/vendo-palette.d.ts +29 -0
  160. package/dist/chrome/vendo-palette.d.ts.map +1 -0
  161. package/dist/chrome/vendo-palette.js +95 -0
  162. package/dist/chrome/vendo-palette.js.map +1 -0
  163. package/dist/chrome/vendo-slot.d.ts +79 -0
  164. package/dist/chrome/vendo-slot.d.ts.map +1 -0
  165. package/dist/chrome/vendo-slot.js +153 -0
  166. package/dist/chrome/vendo-slot.js.map +1 -0
  167. package/dist/chrome/vendo-toasts.d.ts +40 -0
  168. package/dist/chrome/vendo-toasts.d.ts.map +1 -0
  169. package/dist/chrome/vendo-toasts.js +135 -0
  170. package/dist/chrome/vendo-toasts.js.map +1 -0
  171. package/dist/chrome/vendo-trigger.d.ts +24 -0
  172. package/dist/chrome/vendo-trigger.d.ts.map +1 -0
  173. package/dist/chrome/vendo-trigger.js +30 -0
  174. package/dist/chrome/vendo-trigger.js.map +1 -0
  175. package/dist/chrome/waiting-queue.d.ts +8 -0
  176. package/dist/chrome/waiting-queue.d.ts.map +1 -0
  177. package/dist/chrome/waiting-queue.js +21 -0
  178. package/dist/chrome/waiting-queue.js.map +1 -0
  179. package/dist/client-impl.d.ts +4 -0
  180. package/dist/client-impl.d.ts.map +1 -0
  181. package/dist/client-impl.js +160 -0
  182. package/dist/client-impl.js.map +1 -0
  183. package/dist/client.d.ts +136 -0
  184. package/dist/client.d.ts.map +1 -0
  185. package/dist/client.js +2 -0
  186. package/dist/client.js.map +1 -0
  187. package/dist/context.d.ts +97 -0
  188. package/dist/context.d.ts.map +1 -0
  189. package/dist/context.js +71 -0
  190. package/dist/context.js.map +1 -0
  191. package/dist/eject-templates/activities/index.tsx +113 -0
  192. package/dist/eject-templates/templates.json +29 -0
  193. package/dist/eject-templates/thread/attachments.tsx +69 -0
  194. package/dist/eject-templates/thread/composer.tsx +409 -0
  195. package/dist/eject-templates/thread/index.tsx +422 -0
  196. package/dist/eject-templates/thread/message-data.ts +151 -0
  197. package/dist/eject-templates/thread/message-list.tsx +123 -0
  198. package/dist/eject-templates/thread/message.tsx +149 -0
  199. package/dist/eject-templates/thread/parts.tsx +293 -0
  200. package/dist/eject-templates/thread/scrolling.ts +223 -0
  201. package/dist/embeds.d.ts +28 -0
  202. package/dist/embeds.d.ts.map +1 -0
  203. package/dist/embeds.js +2 -0
  204. package/dist/embeds.js.map +1 -0
  205. package/dist/hooks/index.d.ts +18 -0
  206. package/dist/hooks/index.d.ts.map +1 -0
  207. package/dist/hooks/index.js +19 -0
  208. package/dist/hooks/index.js.map +1 -0
  209. package/dist/hooks/scripted-transport.d.ts +44 -0
  210. package/dist/hooks/scripted-transport.d.ts.map +1 -0
  211. package/dist/hooks/scripted-transport.js +58 -0
  212. package/dist/hooks/scripted-transport.js.map +1 -0
  213. package/dist/hooks/use-activity.d.ts +17 -0
  214. package/dist/hooks/use-activity.d.ts.map +1 -0
  215. package/dist/hooks/use-activity.js +50 -0
  216. package/dist/hooks/use-activity.js.map +1 -0
  217. package/dist/hooks/use-app.d.ts +19 -0
  218. package/dist/hooks/use-app.d.ts.map +1 -0
  219. package/dist/hooks/use-app.js +66 -0
  220. package/dist/hooks/use-app.js.map +1 -0
  221. package/dist/hooks/use-approvals.d.ts +13 -0
  222. package/dist/hooks/use-approvals.d.ts.map +1 -0
  223. package/dist/hooks/use-approvals.js +14 -0
  224. package/dist/hooks/use-approvals.js.map +1 -0
  225. package/dist/hooks/use-apps.d.ts +17 -0
  226. package/dist/hooks/use-apps.d.ts.map +1 -0
  227. package/dist/hooks/use-apps.js +30 -0
  228. package/dist/hooks/use-apps.js.map +1 -0
  229. package/dist/hooks/use-automations.d.ts +25 -0
  230. package/dist/hooks/use-automations.d.ts.map +1 -0
  231. package/dist/hooks/use-automations.js +30 -0
  232. package/dist/hooks/use-automations.js.map +1 -0
  233. package/dist/hooks/use-connections.d.ts +12 -0
  234. package/dist/hooks/use-connections.d.ts.map +1 -0
  235. package/dist/hooks/use-connections.js +15 -0
  236. package/dist/hooks/use-connections.js.map +1 -0
  237. package/dist/hooks/use-connector-catalog.d.ts +8 -0
  238. package/dist/hooks/use-connector-catalog.d.ts.map +1 -0
  239. package/dist/hooks/use-connector-catalog.js +52 -0
  240. package/dist/hooks/use-connector-catalog.js.map +1 -0
  241. package/dist/hooks/use-grants.d.ts +13 -0
  242. package/dist/hooks/use-grants.d.ts.map +1 -0
  243. package/dist/hooks/use-grants.js +14 -0
  244. package/dist/hooks/use-grants.js.map +1 -0
  245. package/dist/hooks/use-mobile-takeover.d.ts +22 -0
  246. package/dist/hooks/use-mobile-takeover.d.ts.map +1 -0
  247. package/dist/hooks/use-mobile-takeover.js +66 -0
  248. package/dist/hooks/use-mobile-takeover.js.map +1 -0
  249. package/dist/hooks/use-resource.d.ts +21 -0
  250. package/dist/hooks/use-resource.d.ts.map +1 -0
  251. package/dist/hooks/use-resource.js +79 -0
  252. package/dist/hooks/use-resource.js.map +1 -0
  253. package/dist/hooks/use-slot-app.d.ts +19 -0
  254. package/dist/hooks/use-slot-app.d.ts.map +1 -0
  255. package/dist/hooks/use-slot-app.js +18 -0
  256. package/dist/hooks/use-slot-app.js.map +1 -0
  257. package/dist/hooks/use-threads.d.ts +16 -0
  258. package/dist/hooks/use-threads.d.ts.map +1 -0
  259. package/dist/hooks/use-threads.js +15 -0
  260. package/dist/hooks/use-threads.js.map +1 -0
  261. package/dist/hooks/use-vendo-overlay.d.ts +31 -0
  262. package/dist/hooks/use-vendo-overlay.d.ts.map +1 -0
  263. package/dist/hooks/use-vendo-overlay.js +23 -0
  264. package/dist/hooks/use-vendo-overlay.js.map +1 -0
  265. package/dist/hooks/use-vendo-status.d.ts +6 -0
  266. package/dist/hooks/use-vendo-status.d.ts.map +1 -0
  267. package/dist/hooks/use-vendo-status.js +28 -0
  268. package/dist/hooks/use-vendo-status.js.map +1 -0
  269. package/dist/hooks/use-vendo-thread.d.ts +39 -0
  270. package/dist/hooks/use-vendo-thread.d.ts.map +1 -0
  271. package/dist/hooks/use-vendo-thread.js +185 -0
  272. package/dist/hooks/use-vendo-thread.js.map +1 -0
  273. package/dist/index.d.ts +12 -0
  274. package/dist/index.d.ts.map +1 -0
  275. package/dist/index.js +12 -0
  276. package/dist/index.js.map +1 -0
  277. package/dist/kit/charts/bar.d.ts +16 -0
  278. package/dist/kit/charts/bar.d.ts.map +1 -0
  279. package/dist/kit/charts/bar.js +21 -0
  280. package/dist/kit/charts/bar.js.map +1 -0
  281. package/dist/kit/charts/donut.d.ts +16 -0
  282. package/dist/kit/charts/donut.d.ts.map +1 -0
  283. package/dist/kit/charts/donut.js +17 -0
  284. package/dist/kit/charts/donut.js.map +1 -0
  285. package/dist/kit/charts/line.d.ts +19 -0
  286. package/dist/kit/charts/line.d.ts.map +1 -0
  287. package/dist/kit/charts/line.js +21 -0
  288. package/dist/kit/charts/line.js.map +1 -0
  289. package/dist/kit/charts/progress.d.ts +12 -0
  290. package/dist/kit/charts/progress.d.ts.map +1 -0
  291. package/dist/kit/charts/progress.js +25 -0
  292. package/dist/kit/charts/progress.js.map +1 -0
  293. package/dist/kit/charts/sanitize.d.ts +24 -0
  294. package/dist/kit/charts/sanitize.d.ts.map +1 -0
  295. package/dist/kit/charts/sanitize.js +50 -0
  296. package/dist/kit/charts/sanitize.js.map +1 -0
  297. package/dist/kit/charts/sparkline.d.ts +11 -0
  298. package/dist/kit/charts/sparkline.d.ts.map +1 -0
  299. package/dist/kit/charts/sparkline.js +17 -0
  300. package/dist/kit/charts/sparkline.js.map +1 -0
  301. package/dist/kit/data/badge.d.ts +13 -0
  302. package/dist/kit/data/badge.d.ts.map +1 -0
  303. package/dist/kit/data/badge.js +12 -0
  304. package/dist/kit/data/badge.js.map +1 -0
  305. package/dist/kit/data/card-list.d.ts +23 -0
  306. package/dist/kit/data/card-list.d.ts.map +1 -0
  307. package/dist/kit/data/card-list.js +43 -0
  308. package/dist/kit/data/card-list.js.map +1 -0
  309. package/dist/kit/data/data-table.d.ts +32 -0
  310. package/dist/kit/data/data-table.d.ts.map +1 -0
  311. package/dist/kit/data/data-table.js +153 -0
  312. package/dist/kit/data/data-table.js.map +1 -0
  313. package/dist/kit/data/stat.d.ts +15 -0
  314. package/dist/kit/data/stat.d.ts.map +1 -0
  315. package/dist/kit/data/stat.js +28 -0
  316. package/dist/kit/data/stat.js.map +1 -0
  317. package/dist/kit/feedback/accordion.d.ts +15 -0
  318. package/dist/kit/feedback/accordion.d.ts.map +1 -0
  319. package/dist/kit/feedback/accordion.js +33 -0
  320. package/dist/kit/feedback/accordion.js.map +1 -0
  321. package/dist/kit/feedback/callout.d.ts +13 -0
  322. package/dist/kit/feedback/callout.d.ts.map +1 -0
  323. package/dist/kit/feedback/callout.js +24 -0
  324. package/dist/kit/feedback/callout.js.map +1 -0
  325. package/dist/kit/feedback/tabs.d.ts +14 -0
  326. package/dist/kit/feedback/tabs.d.ts.map +1 -0
  327. package/dist/kit/feedback/tabs.js +37 -0
  328. package/dist/kit/feedback/tabs.js.map +1 -0
  329. package/dist/kit/format.d.ts +60 -0
  330. package/dist/kit/format.d.ts.map +1 -0
  331. package/dist/kit/format.js +123 -0
  332. package/dist/kit/format.js.map +1 -0
  333. package/dist/kit/forms/button.d.ts +17 -0
  334. package/dist/kit/forms/button.d.ts.map +1 -0
  335. package/dist/kit/forms/button.js +33 -0
  336. package/dist/kit/forms/button.js.map +1 -0
  337. package/dist/kit/forms/checkbox.d.ts +9 -0
  338. package/dist/kit/forms/checkbox.d.ts.map +1 -0
  339. package/dist/kit/forms/checkbox.js +9 -0
  340. package/dist/kit/forms/checkbox.js.map +1 -0
  341. package/dist/kit/forms/date-picker.d.ts +13 -0
  342. package/dist/kit/forms/date-picker.d.ts.map +1 -0
  343. package/dist/kit/forms/date-picker.js +9 -0
  344. package/dist/kit/forms/date-picker.js.map +1 -0
  345. package/dist/kit/forms/disclaimer.d.ts +8 -0
  346. package/dist/kit/forms/disclaimer.d.ts.map +1 -0
  347. package/dist/kit/forms/disclaimer.js +20 -0
  348. package/dist/kit/forms/disclaimer.js.map +1 -0
  349. package/dist/kit/forms/field.d.ts +18 -0
  350. package/dist/kit/forms/field.d.ts.map +1 -0
  351. package/dist/kit/forms/field.js +19 -0
  352. package/dist/kit/forms/field.js.map +1 -0
  353. package/dist/kit/forms/form.d.ts +10 -0
  354. package/dist/kit/forms/form.d.ts.map +1 -0
  355. package/dist/kit/forms/form.js +9 -0
  356. package/dist/kit/forms/form.js.map +1 -0
  357. package/dist/kit/forms/input.d.ts +14 -0
  358. package/dist/kit/forms/input.d.ts.map +1 -0
  359. package/dist/kit/forms/input.js +9 -0
  360. package/dist/kit/forms/input.js.map +1 -0
  361. package/dist/kit/forms/select.d.ts +21 -0
  362. package/dist/kit/forms/select.d.ts.map +1 -0
  363. package/dist/kit/forms/select.js +35 -0
  364. package/dist/kit/forms/select.js.map +1 -0
  365. package/dist/kit/forms/textarea.d.ts +12 -0
  366. package/dist/kit/forms/textarea.d.ts.map +1 -0
  367. package/dist/kit/forms/textarea.js +9 -0
  368. package/dist/kit/forms/textarea.js.map +1 -0
  369. package/dist/kit/index.d.ts +42 -0
  370. package/dist/kit/index.d.ts.map +1 -0
  371. package/dist/kit/index.js +45 -0
  372. package/dist/kit/index.js.map +1 -0
  373. package/dist/kit/kit-prompt.d.ts +7 -0
  374. package/dist/kit/kit-prompt.d.ts.map +1 -0
  375. package/dist/kit/kit-prompt.js +7 -0
  376. package/dist/kit/kit-prompt.js.map +1 -0
  377. package/dist/kit/layout.d.ts +29 -0
  378. package/dist/kit/layout.d.ts.map +1 -0
  379. package/dist/kit/layout.js +64 -0
  380. package/dist/kit/layout.js.map +1 -0
  381. package/dist/kit/registry.d.ts +11 -0
  382. package/dist/kit/registry.d.ts.map +1 -0
  383. package/dist/kit/registry.js +34 -0
  384. package/dist/kit/registry.js.map +1 -0
  385. package/dist/kit/schema.d.ts +9 -0
  386. package/dist/kit/schema.d.ts.map +1 -0
  387. package/dist/kit/schema.js +9 -0
  388. package/dist/kit/schema.js.map +1 -0
  389. package/dist/kit/tokens.d.ts +33 -0
  390. package/dist/kit/tokens.d.ts.map +1 -0
  391. package/dist/kit/tokens.js +48 -0
  392. package/dist/kit/tokens.js.map +1 -0
  393. package/dist/kit/values.d.ts +55 -0
  394. package/dist/kit/values.d.ts.map +1 -0
  395. package/dist/kit/values.js +108 -0
  396. package/dist/kit/values.js.map +1 -0
  397. package/dist/theme.d.ts +25 -0
  398. package/dist/theme.d.ts.map +1 -0
  399. package/dist/theme.js +100 -0
  400. package/dist/theme.js.map +1 -0
  401. package/dist/tree/bindings.d.ts +4 -0
  402. package/dist/tree/bindings.d.ts.map +1 -0
  403. package/dist/tree/bindings.js +20 -0
  404. package/dist/tree/bindings.js.map +1 -0
  405. package/dist/tree/branded.d.ts +124 -0
  406. package/dist/tree/branded.d.ts.map +1 -0
  407. package/dist/tree/branded.js +319 -0
  408. package/dist/tree/branded.js.map +1 -0
  409. package/dist/tree/error-boundary.d.ts +22 -0
  410. package/dist/tree/error-boundary.d.ts.map +1 -0
  411. package/dist/tree/error-boundary.js +25 -0
  412. package/dist/tree/error-boundary.js.map +1 -0
  413. package/dist/tree/fluid-reveal.d.ts +22 -0
  414. package/dist/tree/fluid-reveal.d.ts.map +1 -0
  415. package/dist/tree/fluid-reveal.js +28 -0
  416. package/dist/tree/fluid-reveal.js.map +1 -0
  417. package/dist/tree/forming-skeleton.d.ts +14 -0
  418. package/dist/tree/forming-skeleton.d.ts.map +1 -0
  419. package/dist/tree/forming-skeleton.js +36 -0
  420. package/dist/tree/forming-skeleton.js.map +1 -0
  421. package/dist/tree/frames.d.ts +52 -0
  422. package/dist/tree/frames.d.ts.map +1 -0
  423. package/dist/tree/frames.js +143 -0
  424. package/dist/tree/frames.js.map +1 -0
  425. package/dist/tree/host-mount.d.ts +24 -0
  426. package/dist/tree/host-mount.d.ts.map +1 -0
  427. package/dist/tree/host-mount.js +0 -0
  428. package/dist/tree/host-mount.js.map +1 -0
  429. package/dist/tree/index.d.ts +9 -0
  430. package/dist/tree/index.d.ts.map +1 -0
  431. package/dist/tree/index.js +9 -0
  432. package/dist/tree/index.js.map +1 -0
  433. package/dist/tree/jail/JailedComponent.d.ts +41 -0
  434. package/dist/tree/jail/JailedComponent.d.ts.map +1 -0
  435. package/dist/tree/jail/JailedComponent.js +269 -0
  436. package/dist/tree/jail/JailedComponent.js.map +1 -0
  437. package/dist/tree/jail/runtime-bundle.gen.d.ts +3 -0
  438. package/dist/tree/jail/runtime-bundle.gen.d.ts.map +1 -0
  439. package/dist/tree/jail/runtime-bundle.gen.js +3 -0
  440. package/dist/tree/jail/runtime-bundle.gen.js.map +1 -0
  441. package/dist/tree/jail/runtime-entry.d.ts +18 -0
  442. package/dist/tree/jail/runtime-entry.d.ts.map +1 -0
  443. package/dist/tree/jail/runtime-entry.js +440 -0
  444. package/dist/tree/jail/runtime-entry.js.map +1 -0
  445. package/dist/tree/jail/viewport-css.d.ts +17 -0
  446. package/dist/tree/jail/viewport-css.d.ts.map +1 -0
  447. package/dist/tree/jail/viewport-css.js +32 -0
  448. package/dist/tree/jail/viewport-css.js.map +1 -0
  449. package/dist/tree/mcp-shim/entry.d.ts +2 -0
  450. package/dist/tree/mcp-shim/entry.d.ts.map +1 -0
  451. package/dist/tree/mcp-shim/entry.js +45 -0
  452. package/dist/tree/mcp-shim/entry.js.map +1 -0
  453. package/dist/tree/mcp-shim/http-open-card.d.ts +5 -0
  454. package/dist/tree/mcp-shim/http-open-card.d.ts.map +1 -0
  455. package/dist/tree/mcp-shim/http-open-card.js +61 -0
  456. package/dist/tree/mcp-shim/http-open-card.js.map +1 -0
  457. package/dist/tree/mcp-shim/shim-core.d.ts +58 -0
  458. package/dist/tree/mcp-shim/shim-core.d.ts.map +1 -0
  459. package/dist/tree/mcp-shim/shim-core.js +176 -0
  460. package/dist/tree/mcp-shim/shim-core.js.map +1 -0
  461. package/dist/tree/mcp-shim/theme.d.ts +8 -0
  462. package/dist/tree/mcp-shim/theme.d.ts.map +1 -0
  463. package/dist/tree/mcp-shim/theme.js +36 -0
  464. package/dist/tree/mcp-shim/theme.js.map +1 -0
  465. package/dist/tree/notice.d.ts +8 -0
  466. package/dist/tree/notice.d.ts.map +1 -0
  467. package/dist/tree/notice.js +30 -0
  468. package/dist/tree/notice.js.map +1 -0
  469. package/dist/tree/primitives.d.ts +30 -0
  470. package/dist/tree/primitives.d.ts.map +1 -0
  471. package/dist/tree/primitives.js +105 -0
  472. package/dist/tree/primitives.js.map +1 -0
  473. package/dist/tree/renderer-v2.d.ts +15 -0
  474. package/dist/tree/renderer-v2.d.ts.map +1 -0
  475. package/dist/tree/renderer-v2.js +71 -0
  476. package/dist/tree/renderer-v2.js.map +1 -0
  477. package/dist/tree/renderer.d.ts +77 -0
  478. package/dist/tree/renderer.d.ts.map +1 -0
  479. package/dist/tree/renderer.js +376 -0
  480. package/dist/tree/renderer.js.map +1 -0
  481. package/dist/voice/driver.d.ts +94 -0
  482. package/dist/voice/driver.d.ts.map +1 -0
  483. package/dist/voice/driver.js +2 -0
  484. package/dist/voice/driver.js.map +1 -0
  485. package/dist/voice/index.d.ts +7 -0
  486. package/dist/voice/index.d.ts.map +1 -0
  487. package/dist/voice/index.js +5 -0
  488. package/dist/voice/index.js.map +1 -0
  489. package/dist/voice/realtime-driver.d.ts +57 -0
  490. package/dist/voice/realtime-driver.d.ts.map +1 -0
  491. package/dist/voice/realtime-driver.js +592 -0
  492. package/dist/voice/realtime-driver.js.map +1 -0
  493. package/dist/voice/stage.d.ts +12 -0
  494. package/dist/voice/stage.d.ts.map +1 -0
  495. package/dist/voice/stage.js +259 -0
  496. package/dist/voice/stage.js.map +1 -0
  497. package/dist/voice/use-voice-approvals.d.ts +16 -0
  498. package/dist/voice/use-voice-approvals.d.ts.map +1 -0
  499. package/dist/voice/use-voice-approvals.js +77 -0
  500. package/dist/voice/use-voice-approvals.js.map +1 -0
  501. package/dist/voice/use-voice.d.ts +26 -0
  502. package/dist/voice/use-voice.d.ts.map +1 -0
  503. package/dist/voice/use-voice.js +201 -0
  504. package/dist/voice/use-voice.js.map +1 -0
  505. package/dist/voice/voice-act.d.ts +13 -0
  506. package/dist/voice/voice-act.d.ts.map +1 -0
  507. package/dist/voice/voice-act.js +301 -0
  508. package/dist/voice/voice-act.js.map +1 -0
  509. package/dist/voice/voice-blob.d.ts +17 -0
  510. package/dist/voice/voice-blob.d.ts.map +1 -0
  511. package/dist/voice/voice-blob.js +67 -0
  512. package/dist/voice/voice-blob.js.map +1 -0
  513. package/dist/voice/voice-consent.d.ts +17 -0
  514. package/dist/voice/voice-consent.d.ts.map +1 -0
  515. package/dist/voice/voice-consent.js +45 -0
  516. package/dist/voice/voice-consent.js.map +1 -0
  517. package/dist/voice/voice-drawer.d.ts +10 -0
  518. package/dist/voice/voice-drawer.d.ts.map +1 -0
  519. package/dist/voice/voice-drawer.js +22 -0
  520. package/dist/voice/voice-drawer.js.map +1 -0
  521. package/dist/wire-types.d.ts +238 -0
  522. package/dist/wire-types.d.ts.map +1 -0
  523. package/dist/wire-types.js +2 -0
  524. package/dist/wire-types.js.map +1 -0
  525. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-approvals.js","sourceRoot":"","sources":["../../src/hooks/use-approvals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,UAAU,YAAY,CAAC,OAAqB;IAShD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAuB,EAAE,OAAO,CAAC,CAAC;IAEhG,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,GAA8B,EAAE,QAA0B,EAAE,EAAE;QACnE,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** App collection transport (08-ui §3). */
2
+ import type { AppDocument, AppId } from "@vendoai/core";
3
+ import { type PollOptions } from "./use-resource.js";
4
+ export declare function useApps(options?: PollOptions): {
5
+ /** Back-compat alias for `data` (contract §3). */
6
+ apps: AppDocument[];
7
+ data: AppDocument[];
8
+ error: Error | undefined;
9
+ isLoading: boolean;
10
+ refresh(): Promise<void>;
11
+ create(prompt: string): Promise<AppDocument>;
12
+ remove(id: AppId): Promise<void>;
13
+ fork(id: AppId): Promise<AppDocument>;
14
+ exportApp(id: AppId): Promise<Uint8Array>;
15
+ importApp(bytes: Uint8Array): Promise<AppDocument>;
16
+ };
17
+ //# sourceMappingURL=use-apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-apps.d.ts","sourceRoot":"","sources":["../../src/hooks/use-apps.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAElE,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;IAC9C,kDAAkD;IAClD,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACpD,CAuCA"}
@@ -0,0 +1,30 @@
1
+ import { useCallback } from "react";
2
+ import { useVendoContext } from "../context.js";
3
+ import { useResource } from "./use-resource.js";
4
+ export function useApps(options) {
5
+ const { client } = useVendoContext();
6
+ const list = useCallback(() => client.apps.list(), [client]);
7
+ const { data, error, isLoading, refresh } = useResource(list, [], options);
8
+ const create = useCallback(async (prompt) => {
9
+ const app = await client.apps.create({ prompt });
10
+ await refresh();
11
+ return app;
12
+ }, [client, refresh]);
13
+ const remove = useCallback(async (id) => {
14
+ await client.apps.delete(id);
15
+ await refresh();
16
+ }, [client, refresh]);
17
+ const fork = useCallback(async (id) => {
18
+ const app = await client.apps.fork(id);
19
+ await refresh();
20
+ return app;
21
+ }, [client, refresh]);
22
+ const exportApp = useCallback((id) => client.apps.exportApp(id), [client]);
23
+ const importApp = useCallback(async (bytes) => {
24
+ const app = await client.apps.importApp(bytes);
25
+ await refresh();
26
+ return app;
27
+ }, [client, refresh]);
28
+ return { apps: data, data, error, isLoading, refresh, create, remove, fork, exportApp, importApp };
29
+ }
30
+ //# sourceMappingURL=use-apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-apps.js","sourceRoot":"","sources":["../../src/hooks/use-apps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,UAAU,OAAO,CAAC,OAAqB;IAa3C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAmB,EAAE,OAAO,CAAC,CAAC;IAE5F,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,MAAc,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,EAAS,EAAE,EAAE;QAClB,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,EAAS,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IACF,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,EAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EAAE,KAAiB,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACrG,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Automation and run transport (08-ui §3, 07-automations §1). */
2
+ import type { AppId, RunId } from "@vendoai/core";
3
+ import { type PollOptions } from "./use-resource.js";
4
+ import type { AutomationEntry, EnableResult, RunPlan, RunRecord, RunStatus } from "../wire-types.js";
5
+ export declare function useAutomations(options?: PollOptions): {
6
+ /** Back-compat alias for `data` (contract §3). */
7
+ automations: AutomationEntry[];
8
+ data: AutomationEntry[];
9
+ error: Error | undefined;
10
+ isLoading: boolean;
11
+ refresh(): Promise<void>;
12
+ enable(id: AppId): Promise<EnableResult>;
13
+ disable(id: AppId): Promise<void>;
14
+ runs(filter?: {
15
+ appId?: AppId;
16
+ status?: RunStatus;
17
+ cursor?: string;
18
+ }): Promise<{
19
+ runs: RunRecord[];
20
+ cursor?: string;
21
+ }>;
22
+ dryRun(id: AppId): Promise<RunPlan>;
23
+ stopRun(runId: RunId): Promise<void>;
24
+ };
25
+ //# sourceMappingURL=use-automations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-automations.d.ts","sourceRoot":"","sources":["../../src/hooks/use-automations.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAErG,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;IACrD,kDAAkD;IAClD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvH,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAiCA"}
@@ -0,0 +1,30 @@
1
+ import { useCallback } from "react";
2
+ import { useVendoContext } from "../context.js";
3
+ import { useResource } from "./use-resource.js";
4
+ export function useAutomations(options) {
5
+ const { client } = useVendoContext();
6
+ const list = useCallback(() => client.automations.list(), [client]);
7
+ const { data, error, isLoading, refresh } = useResource(list, [], options);
8
+ const enable = useCallback(async (id) => {
9
+ const result = await client.automations.enable(id);
10
+ await refresh();
11
+ return result;
12
+ }, [client, refresh]);
13
+ const disable = useCallback(async (id) => {
14
+ await client.automations.disable(id);
15
+ await refresh();
16
+ }, [client, refresh]);
17
+ return {
18
+ automations: data,
19
+ data,
20
+ error,
21
+ isLoading,
22
+ refresh,
23
+ enable,
24
+ disable,
25
+ runs: client.runs.list,
26
+ dryRun: client.automations.dryRun,
27
+ stopRun: client.runs.stop,
28
+ };
29
+ }
30
+ //# sourceMappingURL=use-automations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-automations.js","sourceRoot":"","sources":["../../src/hooks/use-automations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,MAAM,UAAU,cAAc,CAAC,OAAqB;IAalD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAuB,EAAE,OAAO,CAAC,CAAC;IAEhG,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,EAAS,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAS,EAAE,EAAE;QAClB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,IAAI;QACJ,KAAK;QACL,SAAS;QACT,OAAO;QACP,MAAM;QACN,OAAO;QACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;QACjC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type PollOptions } from "./use-resource.js";
2
+ import type { ConnectionAccount } from "../wire-types.js";
3
+ export declare function useConnections(options?: PollOptions): {
4
+ /** Back-compat alias for `data` (contract §3). */
5
+ connections: ConnectionAccount[];
6
+ data: ConnectionAccount[];
7
+ error: Error | undefined;
8
+ isLoading: boolean;
9
+ refresh(): Promise<void>;
10
+ disconnect(id: string, connector?: string): Promise<void>;
11
+ };
12
+ //# sourceMappingURL=use-connections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-connections.d.ts","sourceRoot":"","sources":["../../src/hooks/use-connections.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;IACrD,kDAAkD;IAClD,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D,CAcA"}
@@ -0,0 +1,15 @@
1
+ /** Per-principal connected accounts transport (04-actions §3). */
2
+ import { useCallback } from "react";
3
+ import { useVendoContext } from "../context.js";
4
+ import { useResource } from "./use-resource.js";
5
+ export function useConnections(options) {
6
+ const { client } = useVendoContext();
7
+ const list = useCallback(() => client.connections.list(), [client]);
8
+ const { data, error, isLoading, refresh } = useResource(list, [], options);
9
+ const disconnect = useCallback(async (id, connector) => {
10
+ await client.connections.disconnect(id, connector);
11
+ await refresh();
12
+ }, [client, refresh]);
13
+ return { connections: data, data, error, isLoading, refresh, disconnect };
14
+ }
15
+ //# sourceMappingURL=use-connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-connections.js","sourceRoot":"","sources":["../../src/hooks/use-connections.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,MAAM,UAAU,cAAc,CAAC,OAAqB;IASlD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAyB,EAAE,OAAO,CAAC,CAAC;IAElG,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,EAAU,EAAE,SAAkB,EAAE,EAAE;QACvC,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ConnectorOption } from "../context.js";
2
+ export declare function useConnectorCatalog(): {
3
+ options: ConnectorOption[];
4
+ /** False only while the auto catalog is in flight — surfaces that must not
5
+ flash (the dock button) stay hidden until resolution. */
6
+ resolved: boolean;
7
+ };
8
+ //# sourceMappingURL=use-connector-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-connector-catalog.d.ts","sourceRoot":"","sources":["../../src/hooks/use-connector-catalog.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AA6BtE,wBAAgB,mBAAmB,IAAI;IACrC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;gEAC4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;CACnB,CAqBA"}
@@ -0,0 +1,52 @@
1
+ /** The connect dock's effective catalog: the host's explicit `connectors`
2
+ prop when it passed one, else the wire's auto catalog — everything the
3
+ server-side connectors advertise (`GET /connections/catalog`). */
4
+ import { useEffect, useState } from "react";
5
+ import { useVendoContext } from "../context.js";
6
+ /** One catalog fetch per client instance per page load, shared by every
7
+ surface that resolves the catalog (dock button, tray, connect card,
8
+ accounts panel). The catalog is host-level and dashboard-static, so
9
+ staleness within a page visit is fine. */
10
+ const catalogByClient = new WeakMap();
11
+ function fetchCatalog(client) {
12
+ const cached = catalogByClient.get(client);
13
+ if (cached)
14
+ return cached;
15
+ const promise = client.connections.catalog().then((entries) => entries.map((entry) => ({
16
+ toolkit: entry.toolkit,
17
+ connector: entry.connector,
18
+ ...(entry.label === undefined ? {} : { label: entry.label }),
19
+ })), (reason) => {
20
+ // A failed fetch hides the dock rather than breaking the thread; warn
21
+ // (never silently) and forget the promise so a later mount retries.
22
+ catalogByClient.delete(client);
23
+ console.warn("[vendo] connector catalog fetch failed; the connect dock stays hidden:", reason);
24
+ return [];
25
+ });
26
+ catalogByClient.set(client, promise);
27
+ return promise;
28
+ }
29
+ export function useConnectorCatalog() {
30
+ const { client, connectors } = useVendoContext();
31
+ const auto = connectors === "auto";
32
+ // Keyed by client so a provider that swaps clients never shows the
33
+ // previous host's catalog while the replacement fetch is in flight.
34
+ const [fetched, setFetched] = useState();
35
+ useEffect(() => {
36
+ if (!auto)
37
+ return;
38
+ let cancelled = false;
39
+ void fetchCatalog(client).then((options) => {
40
+ if (!cancelled)
41
+ setFetched({ client, options });
42
+ });
43
+ return () => {
44
+ cancelled = true;
45
+ };
46
+ }, [auto, client]);
47
+ if (!auto)
48
+ return { options: connectors, resolved: true };
49
+ const current = fetched !== undefined && fetched.client === client ? fetched.options : undefined;
50
+ return { options: current ?? [], resolved: current !== undefined };
51
+ }
52
+ //# sourceMappingURL=use-connector-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-connector-catalog.js","sourceRoot":"","sources":["../../src/hooks/use-connector-catalog.ts"],"names":[],"mappings":"AAAA;;qEAEqE;AACrE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAEtE;;;6CAG6C;AAC7C,MAAM,eAAe,GAAG,IAAI,OAAO,EAA2C,CAAC;AAE/E,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAC/C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC,CAAC,EACH,CAAC,MAAe,EAAE,EAAE;QAClB,sEAAsE;QACtE,oEAAoE;QACpE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,wEAAwE,EAAE,MAAM,CAAC,CAAC;QAC/F,OAAO,EAAE,CAAC;IACZ,CAAC,CACF,CAAC;IACF,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB;IAMjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,UAAU,KAAK,MAAM,CAAC;IACnC,mEAAmE;IACnE,oEAAoE;IACpE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAuD,CAAC;IAE9F,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,IAAI,CAAC,SAAS;gBAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** Permission grant transport (08-ui §3). */
2
+ import type { GrantId, PermissionGrant } from "@vendoai/core";
3
+ import { type PollOptions } from "./use-resource.js";
4
+ export declare function useGrants(options?: PollOptions): {
5
+ /** Back-compat alias for `data` (contract §3). */
6
+ grants: PermissionGrant[];
7
+ data: PermissionGrant[];
8
+ error: Error | undefined;
9
+ isLoading: boolean;
10
+ refresh(): Promise<void>;
11
+ revoke(id: GrantId): Promise<void>;
12
+ };
13
+ //# sourceMappingURL=use-grants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-grants.d.ts","sourceRoot":"","sources":["../../src/hooks/use-grants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAElE,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;IAChD,kDAAkD;IAClD,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAcA"}
@@ -0,0 +1,14 @@
1
+ import { useCallback } from "react";
2
+ import { useVendoContext } from "../context.js";
3
+ import { useResource } from "./use-resource.js";
4
+ export function useGrants(options) {
5
+ const { client } = useVendoContext();
6
+ const list = useCallback(() => client.grants.list(), [client]);
7
+ const { data, error, isLoading, refresh } = useResource(list, [], options);
8
+ const revoke = useCallback(async (id) => {
9
+ await client.grants.revoke(id);
10
+ await refresh();
11
+ }, [client, refresh]);
12
+ return { grants: data, data, error, isLoading, refresh, revoke };
13
+ }
14
+ //# sourceMappingURL=use-grants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-grants.js","sourceRoot":"","sources":["../../src/hooks/use-grants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,UAAU,SAAS,CAAC,OAAqB;IAS7C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAuB,EAAE,OAAO,CAAC,CAAC;IAEhG,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,EAAW,EAAE,EAAE;QACpB,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type CSSProperties } from "react";
2
+ export interface MobileTakeover {
3
+ /** True below the mobile breakpoint — append `fl-takeover` to the surface. */
4
+ active: boolean;
5
+ /** Pixels of visual viewport the virtual keyboard covers (0 when closed). */
6
+ keyboardInset: number;
7
+ /** Spread onto the takeover surface: carries `--fl-kb-inset` so the
8
+ * stylesheet can lift the composer above the virtual keyboard. Undefined
9
+ * when the takeover is inactive, leaving desktop styles untouched. */
10
+ style: CSSProperties | undefined;
11
+ }
12
+ /**
13
+ * Mobile takeover driver (ENG-228): the chrome surfaces (overlay panel, page,
14
+ * palette) go full-bleed below 768px — the designed `.fl-takeover` mode. The
15
+ * hook tracks the breakpoint via matchMedia and, while active, follows
16
+ * `window.visualViewport` so the on-screen keyboard's height is published as
17
+ * a `--fl-kb-inset` CSS variable on the surface. Environments without
18
+ * matchMedia or visualViewport (SSR, jsdom, old WebViews) degrade to the
19
+ * desktop presentation.
20
+ */
21
+ export declare function useMobileTakeover(): MobileTakeover;
22
+ //# sourceMappingURL=use-mobile-takeover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile-takeover.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile-takeover.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AA4BtF,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB;;2EAEuE;IACvE,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAgClD"}
@@ -0,0 +1,66 @@
1
+ import { useEffect, useState, useSyncExternalStore } from "react";
2
+ /** The takeover breakpoint from the designed CSS: full-bleed below 768px
3
+ * (chrome-css.ts, "full-screen mobile takeover"). */
4
+ const MOBILE_TAKEOVER_QUERY = "(max-width: 767px)";
5
+ function subscribe(onChange) {
6
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function")
7
+ return () => { };
8
+ const query = window.matchMedia(MOBILE_TAKEOVER_QUERY);
9
+ // Safari < 14 ships MediaQueryList without addEventListener.
10
+ if (typeof query.addEventListener === "function") {
11
+ query.addEventListener("change", onChange);
12
+ return () => query.removeEventListener("change", onChange);
13
+ }
14
+ query.addListener(onChange);
15
+ return () => query.removeListener(onChange);
16
+ }
17
+ function getSnapshot() {
18
+ return typeof window !== "undefined"
19
+ && typeof window.matchMedia === "function"
20
+ && window.matchMedia(MOBILE_TAKEOVER_QUERY).matches;
21
+ }
22
+ function getServerSnapshot() {
23
+ return false; // SSR renders desktop chrome; the client stamps on hydration.
24
+ }
25
+ /**
26
+ * Mobile takeover driver (ENG-228): the chrome surfaces (overlay panel, page,
27
+ * palette) go full-bleed below 768px — the designed `.fl-takeover` mode. The
28
+ * hook tracks the breakpoint via matchMedia and, while active, follows
29
+ * `window.visualViewport` so the on-screen keyboard's height is published as
30
+ * a `--fl-kb-inset` CSS variable on the surface. Environments without
31
+ * matchMedia or visualViewport (SSR, jsdom, old WebViews) degrade to the
32
+ * desktop presentation.
33
+ */
34
+ export function useMobileTakeover() {
35
+ const active = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
36
+ const [keyboardInset, setKeyboardInset] = useState(0);
37
+ useEffect(() => {
38
+ if (!active) {
39
+ setKeyboardInset(0);
40
+ return;
41
+ }
42
+ const viewport = window.visualViewport;
43
+ if (!viewport)
44
+ return;
45
+ const update = () => {
46
+ // innerHeight is the layout viewport; the visual viewport shrinks (and
47
+ // may pan, hence offsetTop) when the keyboard opens. The difference is
48
+ // how far the composer must lift. Never negative (pinch-zoom shrinks
49
+ // the visual viewport too, but the keyboard math can round below zero).
50
+ setKeyboardInset(Math.max(0, Math.round(window.innerHeight - viewport.height - viewport.offsetTop)));
51
+ };
52
+ update();
53
+ viewport.addEventListener("resize", update);
54
+ viewport.addEventListener("scroll", update);
55
+ return () => {
56
+ viewport.removeEventListener("resize", update);
57
+ viewport.removeEventListener("scroll", update);
58
+ };
59
+ }, [active]);
60
+ return {
61
+ active,
62
+ keyboardInset,
63
+ style: active ? { "--fl-kb-inset": `${keyboardInset}px` } : undefined,
64
+ };
65
+ }
66
+ //# sourceMappingURL=use-mobile-takeover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile-takeover.js","sourceRoot":"","sources":["../../src/hooks/use-mobile-takeover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAsB,MAAM,OAAO,CAAC;AAEtF;sDACsD;AACtD,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,SAAS,SAAS,CAAC,QAAoB;IACrC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACvD,6DAA6D;IAC7D,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACjD,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,OAAO,MAAM,KAAK,WAAW;WAC/B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;WACvC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,KAAK,CAAC,CAAC,8DAA8D;AAC9E,CAAC;AAaD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC/E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,uEAAuE;YACvE,uEAAuE;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC;QACF,MAAM,EAAE,CAAC;QACT,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO;QACL,MAAM;QACN,aAAa;QACb,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,eAAe,EAAE,GAAG,aAAa,IAAI,EAAoB,CAAC,CAAC,CAAC,SAAS;KACzF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Opt-in polling knob accepted by every collection hook. */
2
+ export interface PollOptions {
3
+ /** When set (> 0), re-fetch on this millisecond cadence. Off by default. */
4
+ pollMs?: number;
5
+ }
6
+ export interface Resource<T> {
7
+ data: T;
8
+ error: Error | undefined;
9
+ isLoading: boolean;
10
+ refresh(): Promise<void>;
11
+ }
12
+ /** Drive one async source into a `{ data, error, isLoading, refresh }` view.
13
+ *
14
+ * `fetcher` must be memoised by the caller (stable across renders while its
15
+ * inputs are unchanged) — refresh, the mount fetch, and the poll all key off
16
+ * its identity. A per-call generation guard drops out-of-order and post-unmount
17
+ * responses so overlapping refreshes (poll + manual + post-mutation) never
18
+ * clobber newer state. `isLoading` reflects only the very first load, so a
19
+ * background poll or refresh never flickers a consumer's initial skeleton. */
20
+ export declare function useResource<T>(fetcher: () => Promise<T>, initial: T, { pollMs }?: PollOptions): Resource<T>;
21
+ //# sourceMappingURL=use-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-resource.d.ts","sourceRoot":"","sources":["../../src/hooks/use-resource.ts"],"names":[],"mappings":"AAUA,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAMD;;;;;;;8EAO8E;AAC9E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAE,WAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAqD/G"}
@@ -0,0 +1,79 @@
1
+ /** Shared fetch lifecycle for the headless data hooks (08-ui §3).
2
+ *
3
+ * Gives every collection hook the same `{ data, error, isLoading, refresh }`
4
+ * shape so headless consumers can tell empty / failed / loading apart — the
5
+ * initial fetch no longer swallows failure into a silent `undefined`. Polling
6
+ * is opt-in: pass `pollMs` and the resource re-fetches on that cadence without
7
+ * a remount, so a newly-pending approval (or thread, run, …) appears on its own.
8
+ */
9
+ import { useCallback, useEffect, useRef, useState } from "react";
10
+ function asError(reason) {
11
+ return reason instanceof Error ? reason : new Error(String(reason));
12
+ }
13
+ /** Drive one async source into a `{ data, error, isLoading, refresh }` view.
14
+ *
15
+ * `fetcher` must be memoised by the caller (stable across renders while its
16
+ * inputs are unchanged) — refresh, the mount fetch, and the poll all key off
17
+ * its identity. A per-call generation guard drops out-of-order and post-unmount
18
+ * responses so overlapping refreshes (poll + manual + post-mutation) never
19
+ * clobber newer state. `isLoading` reflects only the very first load, so a
20
+ * background poll or refresh never flickers a consumer's initial skeleton. */
21
+ export function useResource(fetcher, initial, { pollMs } = {}) {
22
+ const [data, setData] = useState(initial);
23
+ const [error, setError] = useState();
24
+ const [isLoading, setIsLoading] = useState(true);
25
+ const generationRef = useRef(0);
26
+ const loadedRef = useRef(false);
27
+ const refresh = useCallback(async () => {
28
+ const generation = (generationRef.current += 1);
29
+ if (!loadedRef.current)
30
+ setIsLoading(true);
31
+ try {
32
+ const next = await fetcher();
33
+ if (generation !== generationRef.current)
34
+ return;
35
+ setData(next);
36
+ setError(undefined);
37
+ loadedRef.current = true;
38
+ }
39
+ catch (reason) {
40
+ if (generation !== generationRef.current)
41
+ return;
42
+ setError(asError(reason));
43
+ }
44
+ finally {
45
+ if (generation === generationRef.current)
46
+ setIsLoading(false);
47
+ }
48
+ }, [fetcher]);
49
+ useEffect(() => {
50
+ void refresh();
51
+ // Bump the generation on unmount / fetcher change so an in-flight response
52
+ // can't land on a stale (or torn-down) resource.
53
+ return () => {
54
+ generationRef.current += 1;
55
+ };
56
+ }, [refresh]);
57
+ // Self-scheduling rather than setInterval: the next poll is armed only after
58
+ // the current refresh settles, so a slow request (pollMs < latency) can never
59
+ // stack overlapping fetches that stale each other out (and leave the first
60
+ // load stuck loading).
61
+ useEffect(() => {
62
+ if (pollMs === undefined || pollMs <= 0)
63
+ return;
64
+ let cancelled = false;
65
+ let timer;
66
+ const tick = async () => {
67
+ await refresh();
68
+ if (!cancelled)
69
+ timer = setTimeout(() => void tick(), pollMs);
70
+ };
71
+ timer = setTimeout(() => void tick(), pollMs);
72
+ return () => {
73
+ cancelled = true;
74
+ clearTimeout(timer);
75
+ };
76
+ }, [pollMs, refresh]);
77
+ return { data, error, isLoading, refresh };
78
+ }
79
+ //# sourceMappingURL=use-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-resource.js","sourceRoot":"","sources":["../../src/hooks/use-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAejE,SAAS,OAAO,CAAC,MAAe;IAC9B,OAAO,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;8EAO8E;AAC9E,MAAM,UAAU,WAAW,CAAI,OAAyB,EAAE,OAAU,EAAE,EAAE,MAAM,KAAkB,EAAE;IAChG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAI,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;YAC7B,IAAI,UAAU,KAAK,aAAa,CAAC,OAAO;gBAAE,OAAO;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,IAAI,UAAU,KAAK,aAAa,CAAC,OAAO;gBAAE,OAAO;YACjD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU,KAAK,aAAa,CAAC,OAAO;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,OAAO,EAAE,CAAC;QACf,2EAA2E;QAC3E,iDAAiD;QACjD,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,uBAAuB;IACvB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO;QAChD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,KAAoC,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS;gBAAE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,19 @@
1
+ /** Slot pin self-discovery (08-ui §4) — resolve "the app currently pinned to
2
+ * slot X" so hosts never hand-roll the poll-apps-and-filter dance. Rides the
3
+ * standard useResource lifecycle (SSR-safe: fetching starts in an effect),
4
+ * polling by default so a pin made in the conversation surface appears in the
5
+ * slot on its own. */
6
+ import type { AppId } from "@vendoai/core";
7
+ import { type PollOptions } from "./use-resource.js";
8
+ export declare function useSlotApp(slotId: string, options?: PollOptions & {
9
+ /** Pass `false` to stand the discovery down entirely (no fetch, no poll) —
10
+ * used by VendoSlot when the host supplies an explicit `appId`/`pin`. */
11
+ enabled?: boolean;
12
+ }): {
13
+ /** The most recently pinned app for this slot, or undefined when none. */
14
+ appId: AppId | undefined;
15
+ error: Error | undefined;
16
+ isLoading: boolean;
17
+ refresh(): Promise<void>;
18
+ };
19
+ //# sourceMappingURL=use-slot-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-slot-app.d.ts","sourceRoot":"","sources":["../../src/hooks/use-slot-app.ts"],"names":[],"mappings":"AAAA;;;;uBAIuB;AACvB,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAMlE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAW,GAAG;IAChE;8EAC0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GAAG;IACP,0EAA0E;IAC1E,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAcA"}
@@ -0,0 +1,18 @@
1
+ import { useCallback } from "react";
2
+ import { useVendoContext } from "../context.js";
3
+ import { useResource } from "./use-resource.js";
4
+ const DEFAULT_POLL_MS = 5000;
5
+ const NO_APPS = [];
6
+ export function useSlotApp(slotId, options = {}) {
7
+ const { client } = useVendoContext();
8
+ const enabled = options.enabled ?? true;
9
+ const list = useCallback(() => (enabled ? client.apps.list() : Promise.resolve(NO_APPS)), [client, enabled]);
10
+ const { data, error, isLoading, refresh } = useResource(list, NO_APPS, {
11
+ pollMs: enabled ? options.pollMs ?? DEFAULT_POLL_MS : 0,
12
+ });
13
+ // Latest pin wins — matching the "the newest remix takes the slot" semantics
14
+ // the demos established (hero-slot took `.at(-1)`).
15
+ const appId = data.filter(app => app.pins?.some(pin => pin.slot === slotId)).at(-1)?.id;
16
+ return { appId, error, isLoading, refresh };
17
+ }
18
+ //# sourceMappingURL=use-slot-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-slot-app.js","sourceRoot":"","sources":["../../src/hooks/use-slot-app.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,OAAO,GAAkB,EAAE,CAAC;AAElC,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,UAIvC,EAAE;IAOJ,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,IAAI,GAAG,WAAW,CACtB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC/D,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;QACrE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;KACxD,CAAC,CAAC;IACH,6EAA6E;IAC7E,oDAAoD;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** Thread collection transport (08-ui §3) — headless parity for the thread
2
+ * list that VendoPage previously reached only by calling the client directly. */
3
+ import type { ThreadId } from "@vendoai/core";
4
+ import { type PollOptions } from "./use-resource.js";
5
+ import type { Thread, ThreadSummary } from "../wire-types.js";
6
+ export declare function useThreads(options?: PollOptions): {
7
+ /** Back-compat-shaped alias for `data` (matches the other collection hooks). */
8
+ threads: ThreadSummary[];
9
+ data: ThreadSummary[];
10
+ error: Error | undefined;
11
+ isLoading: boolean;
12
+ refresh(): Promise<void>;
13
+ get(id: ThreadId): Promise<Thread>;
14
+ remove(id: ThreadId): Promise<void>;
15
+ };
16
+ //# sourceMappingURL=use-threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-threads.d.ts","sourceRoot":"","sources":["../../src/hooks/use-threads.ts"],"names":[],"mappings":"AAAA;iFACiF;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;IACjD,gFAAgF;IAChF,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CAeA"}
@@ -0,0 +1,15 @@
1
+ import { useCallback } from "react";
2
+ import { useVendoContext } from "../context.js";
3
+ import { useResource } from "./use-resource.js";
4
+ export function useThreads(options) {
5
+ const { client } = useVendoContext();
6
+ const list = useCallback(() => client.threads.list(), [client]);
7
+ const { data, error, isLoading, refresh } = useResource(list, [], options);
8
+ const get = useCallback((id) => client.threads.get(id), [client]);
9
+ const remove = useCallback(async (id) => {
10
+ await client.threads.delete(id);
11
+ await refresh();
12
+ }, [client, refresh]);
13
+ return { threads: data, data, error, isLoading, refresh, get, remove };
14
+ }
15
+ //# sourceMappingURL=use-threads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-threads.js","sourceRoot":"","sources":["../../src/hooks/use-threads.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,MAAM,UAAU,UAAU,CAAC,OAAqB;IAU9C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAqB,EAAE,OAAO,CAAC,CAAC;IAE9F,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,EAAY,EAAE,EAAE;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzE,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface VendoOverlayController {
2
+ /** Whether the overlay is currently open. */
3
+ isOpen: boolean;
4
+ open(): void;
5
+ close(): void;
6
+ toggle(): void;
7
+ /** Discard the overlay's current conversation and start a fresh thread
8
+ * (ENG-221) — the headless twin of the panel's new-conversation button. */
9
+ newConversation(): void;
10
+ /** Spread onto `<VendoOverlay />` to hand it this controller's state. */
11
+ overlayProps: {
12
+ open: boolean;
13
+ onOpenChange(open: boolean): void;
14
+ conversationKey: number;
15
+ };
16
+ }
17
+ /**
18
+ * Programmatic open/close for `<VendoOverlay />` (ENG-220): a tiny controlled-
19
+ * state helper so hosts can wire their own triggers (keyboard shortcuts, nav
20
+ * buttons) without DOM-poking the launcher.
21
+ *
22
+ * ```tsx
23
+ * const overlay = useVendoOverlay();
24
+ * // overlay.toggle() from your own ⌘K handler…
25
+ * return <VendoOverlay {...overlay.overlayProps} />;
26
+ * ```
27
+ */
28
+ export declare function useVendoOverlay(options?: {
29
+ defaultOpen?: boolean;
30
+ }): VendoOverlayController;
31
+ //# sourceMappingURL=use-vendo-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-vendo-overlay.d.ts","sourceRoot":"","sources":["../../src/hooks/use-vendo-overlay.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf;gFAC4E;IAC5E,eAAe,IAAI,IAAI,CAAC;IACxB,yEAAyE;IACzE,YAAY,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,sBAAsB,CAe/F"}