@opengeni/react 3.3.2 → 3.4.1-canary.38960406141001

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 (855) hide show
  1. package/README.md +769 -22
  2. package/dist/accounts.js +2 -0
  3. package/dist/accounts.js.map +1 -1
  4. package/dist/approvals.d.ts +2 -1
  5. package/dist/artifacts-document.js +5 -3
  6. package/dist/artifacts-presentation.js +5 -3
  7. package/dist/artifacts-spreadsheet.d.ts +1 -1
  8. package/dist/artifacts-spreadsheet.js +5 -3
  9. package/dist/artifacts.d.ts +5 -1
  10. package/dist/artifacts.js +536 -42
  11. package/dist/artifacts.js.map +1 -1
  12. package/dist/browser-viewer-ZWR6MWJ7.js +19 -0
  13. package/dist/capability-catalog-row.d.ts +20 -0
  14. package/dist/capability-logo-fallback.d.ts +3 -0
  15. package/dist/chat-interactive-block-4EUKJXUO.js +14 -0
  16. package/dist/chunk-2DDJ6YH6.js +41 -0
  17. package/dist/chunk-2DDJ6YH6.js.map +1 -0
  18. package/dist/chunk-2HVLQ26H.js +183 -0
  19. package/dist/chunk-2HVLQ26H.js.map +1 -0
  20. package/dist/{chunk-XYRDDSXF.js → chunk-2I6R3GCZ.js} +4285 -3980
  21. package/dist/chunk-2I6R3GCZ.js.map +1 -0
  22. package/dist/{chunk-JAQ5K7W6.js → chunk-2SFFYIH3.js} +1178 -166
  23. package/dist/chunk-2SFFYIH3.js.map +1 -0
  24. package/dist/chunk-3PVDYTTB.js +24 -0
  25. package/dist/chunk-3PVDYTTB.js.map +1 -0
  26. package/dist/chunk-3RJKUVCA.js +14068 -0
  27. package/dist/chunk-3RJKUVCA.js.map +1 -0
  28. package/dist/chunk-3UZCWK46.js +298 -0
  29. package/dist/chunk-3UZCWK46.js.map +1 -0
  30. package/dist/chunk-47CKUXTW.js +293 -0
  31. package/dist/chunk-47CKUXTW.js.map +1 -0
  32. package/dist/chunk-4QYP6QUI.js +109 -0
  33. package/dist/chunk-4QYP6QUI.js.map +1 -0
  34. package/dist/chunk-5EY26VZ7.js +1053 -0
  35. package/dist/chunk-5EY26VZ7.js.map +1 -0
  36. package/dist/chunk-5I4VRWBB.js +56 -0
  37. package/dist/chunk-5I4VRWBB.js.map +1 -0
  38. package/dist/chunk-5WOR7UCL.js +191 -0
  39. package/dist/chunk-5WOR7UCL.js.map +1 -0
  40. package/dist/chunk-5YJLGOM5.js +51 -0
  41. package/dist/chunk-5YJLGOM5.js.map +1 -0
  42. package/dist/chunk-6JFN3OWG.js +386 -0
  43. package/dist/chunk-6JFN3OWG.js.map +1 -0
  44. package/dist/chunk-7QJT5O4S.js +35 -0
  45. package/dist/chunk-7QJT5O4S.js.map +1 -0
  46. package/dist/chunk-A55KV72M.js +402 -0
  47. package/dist/chunk-A55KV72M.js.map +1 -0
  48. package/dist/chunk-ADWCLI4G.js +2028 -0
  49. package/dist/chunk-ADWCLI4G.js.map +1 -0
  50. package/dist/chunk-B27E3V37.js +29 -0
  51. package/dist/chunk-B27E3V37.js.map +1 -0
  52. package/dist/chunk-B7TC2A33.js +83 -0
  53. package/dist/chunk-B7TC2A33.js.map +1 -0
  54. package/dist/chunk-BLL56F7R.js +385 -0
  55. package/dist/chunk-BLL56F7R.js.map +1 -0
  56. package/dist/chunk-BOFEQC6K.js +162 -0
  57. package/dist/chunk-BOFEQC6K.js.map +1 -0
  58. package/dist/chunk-CM7LVUKC.js +35 -0
  59. package/dist/chunk-CM7LVUKC.js.map +1 -0
  60. package/dist/chunk-CORUP6JB.js +122 -0
  61. package/dist/chunk-CORUP6JB.js.map +1 -0
  62. package/dist/chunk-CSX5FFKZ.js +35 -0
  63. package/dist/chunk-CSX5FFKZ.js.map +1 -0
  64. package/dist/chunk-EGVHJKGJ.js +3125 -0
  65. package/dist/chunk-EGVHJKGJ.js.map +1 -0
  66. package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
  67. package/dist/chunk-G76LSA76.js.map +1 -0
  68. package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
  69. package/dist/chunk-GQMRL52F.js.map +1 -0
  70. package/dist/{chunk-ELIYWBZR.js → chunk-GUUXOISA.js} +1113 -457
  71. package/dist/chunk-GUUXOISA.js.map +1 -0
  72. package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
  73. package/dist/chunk-I7X2P4FU.js.map +1 -0
  74. package/dist/chunk-IGFZFLI2.js +1390 -0
  75. package/dist/chunk-IGFZFLI2.js.map +1 -0
  76. package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
  77. package/dist/chunk-IMSUVYQB.js.map +1 -0
  78. package/dist/chunk-IOYHDEP3.js +38 -0
  79. package/dist/chunk-IOYHDEP3.js.map +1 -0
  80. package/dist/chunk-IZV5FTJC.js +55 -0
  81. package/dist/chunk-IZV5FTJC.js.map +1 -0
  82. package/dist/chunk-KF33GTWN.js +343 -0
  83. package/dist/chunk-KF33GTWN.js.map +1 -0
  84. package/dist/chunk-KSGQ5ODA.js +457 -0
  85. package/dist/chunk-KSGQ5ODA.js.map +1 -0
  86. package/dist/{chunk-ZPBTI3TE.js → chunk-KZC6QRNR.js} +1513 -697
  87. package/dist/chunk-KZC6QRNR.js.map +1 -0
  88. package/dist/chunk-LJUMYUBO.js +218 -0
  89. package/dist/chunk-LJUMYUBO.js.map +1 -0
  90. package/dist/chunk-LSW2OJVV.js +380 -0
  91. package/dist/chunk-LSW2OJVV.js.map +1 -0
  92. package/dist/chunk-M357MHH3.js +2 -0
  93. package/dist/chunk-M357MHH3.js.map +1 -0
  94. package/dist/chunk-MK2TQO4Y.js +24 -0
  95. package/dist/chunk-MK2TQO4Y.js.map +1 -0
  96. package/dist/chunk-N7S72EXK.js +25 -0
  97. package/dist/chunk-N7S72EXK.js.map +1 -0
  98. package/dist/{chunk-YVCHAQZY.js → chunk-NKMYZFHA.js} +616 -621
  99. package/dist/chunk-NKMYZFHA.js.map +1 -0
  100. package/dist/chunk-NX4ADH73.js +14 -0
  101. package/dist/chunk-NX4ADH73.js.map +1 -0
  102. package/dist/chunk-O7F6UJO4.js +71 -0
  103. package/dist/chunk-O7F6UJO4.js.map +1 -0
  104. package/dist/chunk-OYQQJL3J.js +16 -0
  105. package/dist/chunk-OYQQJL3J.js.map +1 -0
  106. package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
  107. package/dist/chunk-P4BNUO57.js.map +1 -0
  108. package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
  109. package/dist/chunk-PEHTX3V7.js.map +1 -0
  110. package/dist/chunk-PMV53IMM.js +26 -0
  111. package/dist/chunk-PMV53IMM.js.map +1 -0
  112. package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
  113. package/dist/chunk-PYEOPA4M.js.map +1 -0
  114. package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
  115. package/dist/chunk-QHUE7E4N.js.map +1 -0
  116. package/dist/chunk-QV3DJVRZ.js +11 -0
  117. package/dist/chunk-QV3DJVRZ.js.map +1 -0
  118. package/dist/chunk-R5SBNG7S.js +810 -0
  119. package/dist/chunk-R5SBNG7S.js.map +1 -0
  120. package/dist/chunk-RI42H5IU.js +326 -0
  121. package/dist/chunk-RI42H5IU.js.map +1 -0
  122. package/dist/chunk-S2QH6EZ5.js +211 -0
  123. package/dist/chunk-S2QH6EZ5.js.map +1 -0
  124. package/dist/chunk-SHLZMAJN.js +304 -0
  125. package/dist/chunk-SHLZMAJN.js.map +1 -0
  126. package/dist/chunk-TGXK4BAZ.js +293 -0
  127. package/dist/chunk-TGXK4BAZ.js.map +1 -0
  128. package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
  129. package/dist/chunk-TNEZNMSN.js.map +1 -0
  130. package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
  131. package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
  132. package/dist/chunk-UNJPZGNK.js +63 -0
  133. package/dist/chunk-UNJPZGNK.js.map +1 -0
  134. package/dist/{chunk-IOLVN74D.js → chunk-V5ZUJT2T.js} +175 -42
  135. package/dist/chunk-V5ZUJT2T.js.map +1 -0
  136. package/dist/chunk-WBJY57A3.js +402 -0
  137. package/dist/chunk-WBJY57A3.js.map +1 -0
  138. package/dist/chunk-WIUKB3LD.js +1911 -0
  139. package/dist/chunk-WIUKB3LD.js.map +1 -0
  140. package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
  141. package/dist/chunk-WNN7NO2N.js.map +1 -0
  142. package/dist/{chunk-3AGBGTRT.js → chunk-X5UVUIMF.js} +1712 -1174
  143. package/dist/chunk-X5UVUIMF.js.map +1 -0
  144. package/dist/chunk-XDA5QJE7.js +402 -0
  145. package/dist/chunk-XDA5QJE7.js.map +1 -0
  146. package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
  147. package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
  148. package/dist/chunk-XHF7OYAN.js +1150 -0
  149. package/dist/chunk-XHF7OYAN.js.map +1 -0
  150. package/dist/chunk-YSRBFJMQ.js +43 -0
  151. package/dist/chunk-YSRBFJMQ.js.map +1 -0
  152. package/dist/chunk-ZOZAPAUO.js +174 -0
  153. package/dist/chunk-ZOZAPAUO.js.map +1 -0
  154. package/dist/chunk-ZQV5W7YC.js +809 -0
  155. package/dist/chunk-ZQV5W7YC.js.map +1 -0
  156. package/dist/chunk-ZUWF4NF7.js +13 -0
  157. package/dist/chunk-ZUWF4NF7.js.map +1 -0
  158. package/dist/client.d.ts +16 -7
  159. package/dist/clipboard.js +3 -1
  160. package/dist/commands/types.d.ts +2 -0
  161. package/dist/components/anthropic-mark.d.ts +3 -0
  162. package/dist/components/approval-surface.d.ts +19 -6
  163. package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
  164. package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
  165. package/dist/components/artifacts/artifact-surface.d.ts +4 -2
  166. package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
  167. package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
  168. package/dist/components/artifacts/document-editor.d.ts +4 -2
  169. package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
  170. package/dist/components/artifacts/editable-artifact-view.d.ts +48 -0
  171. package/dist/components/artifacts/editable-document.d.ts +1 -1
  172. package/dist/components/artifacts/editable-presentation.d.ts +2 -2
  173. package/dist/components/artifacts/editable-spreadsheet.d.ts +8 -3
  174. package/dist/components/artifacts/index.d.ts +9 -2
  175. package/dist/components/artifacts/inline-html-document.d.ts +2 -0
  176. package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
  177. package/dist/components/artifacts/presentation-editor.d.ts +6 -2
  178. package/dist/components/artifacts/published-html-artifact-frame.d.ts +23 -3
  179. package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
  180. package/dist/components/artifacts/site-view.d.ts +26 -0
  181. package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
  182. package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
  183. package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
  184. package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
  185. package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
  186. package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -0
  187. package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
  188. package/dist/components/browser-select-control.d.ts +16 -0
  189. package/dist/components/browser-viewer.d.ts +11 -2
  190. package/dist/components/chat-composer.d.ts +21 -3
  191. package/dist/components/child-session-link.d.ts +9 -0
  192. package/dist/components/claude-mark.d.ts +3 -0
  193. package/dist/components/code-editor.d.ts +1 -4
  194. package/dist/components/composer-transcription-control.d.ts +7 -0
  195. package/dist/components/composer.d.ts +34 -67
  196. package/dist/components/computer-viewer.d.ts +1 -1
  197. package/dist/components/copy-button.d.ts +3 -1
  198. package/dist/components/desktop-viewer.d.ts +1 -1
  199. package/dist/components/grok-mark.d.ts +26 -0
  200. package/dist/components/human-input-form.d.ts +28 -32
  201. package/dist/components/human-input-surface.d.ts +7 -2
  202. package/dist/components/linkified-text.d.ts +18 -0
  203. package/dist/components/machine-input-display.d.ts +22 -1
  204. package/dist/components/machines/agent-status-icon.d.ts +6 -0
  205. package/dist/components/machines/machine-detail.d.ts +7 -1
  206. package/dist/components/machines/machine-status.d.ts +48 -0
  207. package/dist/components/markdown-table-layout.d.ts +18 -0
  208. package/dist/components/markdown.d.ts +37 -4
  209. package/dist/components/message-timeline.d.ts +86 -7
  210. package/dist/components/model-mark.d.ts +29 -0
  211. package/dist/components/model-policy-picker-menu.d.ts +9 -0
  212. package/dist/components/model-policy-picker.d.ts +35 -28
  213. package/dist/components/new-conversation.d.ts +32 -0
  214. package/dist/components/open-geni-chat.d.ts +73 -0
  215. package/dist/components/open-geni-links.d.ts +68 -0
  216. package/dist/components/openrouter-mark.d.ts +6 -0
  217. package/dist/components/opper-mark.d.ts +7 -0
  218. package/dist/components/preview-loading.d.ts +2 -0
  219. package/dist/components/provider-recovery-notice.d.ts +16 -0
  220. package/dist/components/queue-item-content.d.ts +9 -0
  221. package/dist/components/rehype-secret-refs.d.ts +23 -0
  222. package/dist/components/remark-soft-line-breaks.d.ts +38 -0
  223. package/dist/components/sandbox-files.d.ts +3 -1
  224. package/dist/components/sandbox-workspace.d.ts +18 -0
  225. package/dist/components/secret-question-field.d.ts +31 -0
  226. package/dist/components/secret-ref-chip.d.ts +35 -0
  227. package/dist/components/session-capability-frame.d.ts +37 -0
  228. package/dist/components/session-chrome.d.ts +57 -8
  229. package/dist/components/session-commands-panel.d.ts +6 -0
  230. package/dist/components/session-commands.d.ts +6 -0
  231. package/dist/components/session-connection-request.d.ts +8 -0
  232. package/dist/components/session-conversation.d.ts +157 -0
  233. package/dist/components/session-list.d.ts +39 -0
  234. package/dist/components/session-mcp-capability-card.d.ts +41 -0
  235. package/dist/components/session-proxy-scope.d.ts +35 -0
  236. package/dist/components/session-status.d.ts +4 -1
  237. package/dist/components/session-usage-limit-notice.d.ts +39 -0
  238. package/dist/components/timeline-anchor.d.ts +24 -0
  239. package/dist/components/timeline-annotation-chrome.d.ts +25 -0
  240. package/dist/components/timeline-annotation-layout.d.ts +42 -0
  241. package/dist/components/timeline-annotation-markers.d.ts +8 -0
  242. package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
  243. package/dist/components/timeline-annotation-shared.d.ts +31 -0
  244. package/dist/components/timeline-annotations-dialog.d.ts +3 -2
  245. package/dist/components/timeline-annotations.d.ts +13 -3
  246. package/dist/components/timeline-reading-progress.d.ts +11 -0
  247. package/dist/components/timeline-search.d.ts +34 -0
  248. package/dist/components/timeline-settlement.d.ts +16 -0
  249. package/dist/components/tool-action-review.d.ts +47 -0
  250. package/dist/components/tool-review-history.d.ts +25 -0
  251. package/dist/components/usage-limit-notice.d.ts +49 -0
  252. package/dist/components/usage-member-list.d.ts +91 -0
  253. package/dist/components/usage-meter.d.ts +73 -0
  254. package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
  255. package/dist/components/user-message-body.d.ts +10 -1
  256. package/dist/composer-messages.d.ts +74 -0
  257. package/dist/composer-messages.js +9 -0
  258. package/dist/composer-messages.js.map +1 -0
  259. package/dist/composer-voice-events.d.ts +8 -0
  260. package/dist/composer.d.ts +5 -4
  261. package/dist/composer.js +26 -13
  262. package/dist/computer-viewer-GMLDXPON.js +20 -0
  263. package/dist/computer-viewer-GMLDXPON.js.map +1 -0
  264. package/dist/connect-account-identity.d.ts +8 -0
  265. package/dist/connect-accounts.d.ts +15 -0
  266. package/dist/connect-chooser.d.ts +18 -0
  267. package/dist/connect-panel.d.ts +18 -0
  268. package/dist/connect-setup.d.ts +18 -0
  269. package/dist/connect.d.ts +21 -0
  270. package/dist/connect.js +2149 -0
  271. package/dist/connect.js.map +1 -0
  272. package/dist/connection-catalog.d.ts +38 -0
  273. package/dist/connection-discovery.d.ts +12 -0
  274. package/dist/connection-installed.d.ts +17 -0
  275. package/dist/connection-logo.d.ts +9 -0
  276. package/dist/connection-service-logo.d.ts +8 -0
  277. package/dist/connection-service-presentation.d.ts +13 -0
  278. package/dist/connection-skeleton.d.ts +5 -0
  279. package/dist/connection-type-picker.d.ts +6 -0
  280. package/dist/conversation-timeline.d.ts +5 -0
  281. package/dist/desktop.d.ts +7 -0
  282. package/dist/desktop.js +27 -0
  283. package/dist/desktop.js.map +1 -0
  284. package/dist/device-authorization.d.ts +23 -0
  285. package/dist/diffs.d.ts +8 -0
  286. package/dist/diffs.js +15 -0
  287. package/dist/diffs.js.map +1 -0
  288. package/dist/discovery-cache.d.ts +5 -0
  289. package/dist/editor.d.ts +7 -0
  290. package/dist/editor.js +22 -0
  291. package/dist/editor.js.map +1 -0
  292. package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
  293. package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
  294. package/dist/embedded-voice-RPHPYVBT.js +18 -0
  295. package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
  296. package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
  297. package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
  298. package/dist/hooks/latest-question.d.ts +25 -0
  299. package/dist/hooks/shared-machines-list.d.ts +4 -0
  300. package/dist/hooks/shared-query.d.ts +113 -0
  301. package/dist/hooks/use-attached-browsers.d.ts +1 -1
  302. package/dist/hooks/use-auth-runs.d.ts +1 -4
  303. package/dist/hooks/use-available-models.d.ts +1 -1
  304. package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
  305. package/dist/hooks/use-browser-session.d.ts +12 -1
  306. package/dist/hooks/use-client-config-flags.d.ts +49 -0
  307. package/dist/hooks/use-codex-accounts.d.ts +59 -10
  308. package/dist/hooks/use-composer.d.ts +24 -2
  309. package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
  310. package/dist/hooks/use-computer-input-posture.d.ts +13 -0
  311. package/dist/hooks/use-computer-session.d.ts +4 -0
  312. package/dist/hooks/use-connect.d.ts +23 -0
  313. package/dist/hooks/use-desktop-stream.d.ts +1 -1
  314. package/dist/hooks/use-file-attachments.d.ts +12 -0
  315. package/dist/hooks/use-goal.d.ts +2 -1
  316. package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
  317. package/dist/hooks/use-new-conversation.d.ts +56 -0
  318. package/dist/hooks/use-new-session-draft.d.ts +74 -0
  319. package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
  320. package/dist/hooks/use-sandbox-files.d.ts +4 -1
  321. package/dist/hooks/use-session-conversation.d.ts +49 -0
  322. package/dist/hooks/use-session-events.d.ts +26 -5
  323. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  324. package/dist/hooks/use-session-model-account.d.ts +48 -0
  325. package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
  326. package/dist/hooks/use-terminal-stream.d.ts +11 -5
  327. package/dist/hooks/use-usage.d.ts +40 -0
  328. package/dist/hooks/use-vaults.d.ts +53 -0
  329. package/dist/hooks/use-voice-input.d.ts +8 -1
  330. package/dist/hooks/use-workspace-edit.d.ts +4 -0
  331. package/dist/hooks/use-workspace-sessions.d.ts +24 -5
  332. package/dist/human-input-model.d.ts +122 -0
  333. package/dist/identity-link-accounts.d.ts +11 -0
  334. package/dist/identity-link-consent.d.ts +18 -0
  335. package/dist/index.d.ts +82 -20
  336. package/dist/index.js +2340 -6603
  337. package/dist/index.js.map +1 -1
  338. package/dist/interaction.d.ts +1 -1
  339. package/dist/interaction.js +14 -24
  340. package/dist/interaction.js.map +1 -1
  341. package/dist/latest-question-R77KWSUP.js +118 -0
  342. package/dist/latest-question-R77KWSUP.js.map +1 -0
  343. package/dist/lib/clipboard.d.ts +7 -0
  344. package/dist/lib/error-message.d.ts +7 -0
  345. package/dist/lib/format.d.ts +58 -4
  346. package/dist/lib/host-theme.d.ts +77 -0
  347. package/dist/lib/interaction-errors.d.ts +3 -0
  348. package/dist/lib/menu-styles.d.ts +22 -0
  349. package/dist/lib/notify-observer.d.ts +2 -0
  350. package/dist/lib/pierre-diffs-loader.d.ts +20 -0
  351. package/dist/lib/provider-recovery.d.ts +55 -0
  352. package/dist/lib/scrollbars.d.ts +11 -0
  353. package/dist/lib/terminal-input-readiness.d.ts +11 -0
  354. package/dist/lib/transient-retry.d.ts +25 -0
  355. package/dist/lib/workbench-peers.d.ts +36 -0
  356. package/dist/lib/xterm-theme.d.ts +7 -5
  357. package/dist/machines.js +9 -5
  358. package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
  359. package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
  360. package/dist/mcp-connection-status.d.ts +14 -0
  361. package/dist/model-mark-paths.d.ts +34 -0
  362. package/dist/model-mark-paths.js +16 -0
  363. package/dist/model-mark-paths.js.map +1 -0
  364. package/dist/model-picker-model.d.ts +111 -0
  365. package/dist/model-picker-model.js +25 -0
  366. package/dist/model-picker-model.js.map +1 -0
  367. package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
  368. package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
  369. package/dist/model-policy.d.ts +30 -3
  370. package/dist/model-policy.js +14 -1
  371. package/dist/native-previews.d.ts +28 -0
  372. package/dist/native-previews.js +82 -0
  373. package/dist/native-previews.js.map +1 -0
  374. package/dist/new-session-draft.d.ts +7 -0
  375. package/dist/new-session-draft.js +639 -0
  376. package/dist/new-session-draft.js.map +1 -0
  377. package/dist/notification-text.d.ts +27 -0
  378. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
  379. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
  380. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
  381. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
  382. package/dist/older-history.d.ts +3 -2
  383. package/dist/organization-model.d.ts +32 -0
  384. package/dist/organization-model.js +65 -0
  385. package/dist/organization-model.js.map +1 -0
  386. package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
  387. package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
  388. package/dist/plugin-details.d.ts +14 -0
  389. package/dist/plugin-discovery.d.ts +25 -0
  390. package/dist/preview-loading-paint.d.ts +20 -0
  391. package/dist/provider.d.ts +25 -2
  392. package/dist/queue-presentation-model.d.ts +72 -0
  393. package/dist/queue-presentation-model.js +38 -0
  394. package/dist/queue-presentation-model.js.map +1 -0
  395. package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
  396. package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
  397. package/dist/realtime/embedded-new-voice.d.ts +1 -0
  398. package/dist/realtime/embedded-voice.d.ts +1 -0
  399. package/dist/realtime/realtime-control.d.ts +4 -65
  400. package/dist/realtime/session-realtime.d.ts +78 -0
  401. package/dist/realtime.js +25 -1333
  402. package/dist/realtime.js.map +1 -1
  403. package/dist/sandbox-files-O27IPOZW.js +21 -0
  404. package/dist/sandbox-files-O27IPOZW.js.map +1 -0
  405. package/dist/sandbox-label-model.d.ts +30 -0
  406. package/dist/sandbox-label-model.js +20 -0
  407. package/dist/sandbox-label-model.js.map +1 -0
  408. package/dist/scrollbars.d.ts +1 -0
  409. package/dist/scrollbars.js +10 -0
  410. package/dist/scrollbars.js.map +1 -0
  411. package/dist/secret-reference-label.d.ts +14 -0
  412. package/dist/secrets-ui.d.ts +57 -0
  413. package/dist/session-agents-model.d.ts +10 -0
  414. package/dist/session-agents-model.js +25 -0
  415. package/dist/session-agents-model.js.map +1 -0
  416. package/dist/session-attention-model.d.ts +8 -0
  417. package/dist/session-attention-model.js +47 -0
  418. package/dist/session-attention-model.js.map +1 -0
  419. package/dist/session-auth-recommendation.d.ts +5 -0
  420. package/dist/session-capability-policy.d.ts +31 -0
  421. package/dist/session-feedback-model.d.ts +20 -0
  422. package/dist/session-feedback-model.js +56 -0
  423. package/dist/session-feedback-model.js.map +1 -0
  424. package/dist/session-list-model.d.ts +138 -0
  425. package/dist/session-list-model.js +274 -0
  426. package/dist/session-list-model.js.map +1 -0
  427. package/dist/session-realtime-7DJOIHQW.js +21 -0
  428. package/dist/session-realtime-7DJOIHQW.js.map +1 -0
  429. package/dist/session-realtime.d.ts +7 -0
  430. package/dist/session-realtime.js +19 -0
  431. package/dist/session-realtime.js.map +1 -0
  432. package/dist/session-status-model.d.ts +36 -0
  433. package/dist/session-ui.d.ts +39 -1
  434. package/dist/session-ui.js +126 -12
  435. package/dist/session-ui.js.map +1 -1
  436. package/dist/session.d.ts +8 -2
  437. package/dist/session.js +35 -20
  438. package/dist/site-snapshot.d.ts +14 -0
  439. package/dist/sites-ui.d.ts +24 -0
  440. package/dist/sites.d.ts +3 -0
  441. package/dist/sites.js +14 -0
  442. package/dist/sites.js.map +1 -0
  443. package/dist/skill-discovery.d.ts +47 -0
  444. package/dist/terminal.d.ts +8 -0
  445. package/dist/terminal.js +32 -0
  446. package/dist/terminal.js.map +1 -0
  447. package/dist/testing/session-scenarios.d.ts +10 -0
  448. package/dist/testing/session-scenarios.js +367 -0
  449. package/dist/testing/session-scenarios.js.map +1 -0
  450. package/dist/timeline/activity-rail.d.ts +11 -2
  451. package/dist/timeline/agent-identity.d.ts +30 -0
  452. package/dist/timeline/agent-row.d.ts +31 -0
  453. package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
  454. package/dist/timeline/compaction-copy.d.ts +46 -0
  455. package/dist/timeline/focus-sequence.d.ts +9 -0
  456. package/dist/timeline/genie-copy.d.ts +3 -0
  457. package/dist/timeline/genie-loading.d.ts +47 -0
  458. package/dist/timeline/index.d.ts +10 -5
  459. package/dist/timeline/knowledge-receipt.d.ts +17 -0
  460. package/dist/timeline/message-sender.d.ts +19 -0
  461. package/dist/timeline/notice-presentation.d.ts +13 -0
  462. package/dist/timeline/parsers.d.ts +11 -0
  463. package/dist/timeline/patch-apply-command.d.ts +18 -0
  464. package/dist/timeline/platform-activity-presentation.d.ts +21 -0
  465. package/dist/timeline/platform-activity-row.d.ts +1 -2
  466. package/dist/timeline/presented-image.d.ts +11 -0
  467. package/dist/timeline/projection.d.ts +31 -2
  468. package/dist/timeline/provider-logo.d.ts +15 -0
  469. package/dist/timeline/question-nav-model.d.ts +23 -0
  470. package/dist/timeline/registry.d.ts +12 -1
  471. package/dist/timeline/retained-image.d.ts +18 -0
  472. package/dist/timeline/retained-loaders.d.ts +27 -0
  473. package/dist/timeline/rolling-activity.d.ts +11 -0
  474. package/dist/timeline/screenshot-lightbox.d.ts +23 -1
  475. package/dist/timeline/session-usage-limit-row.d.ts +11 -0
  476. package/dist/timeline/shared.d.ts +4 -1
  477. package/dist/timeline/startup-dispatch-details.d.ts +5 -0
  478. package/dist/timeline/startup-preference.d.ts +3 -0
  479. package/dist/timeline/startup-timings.d.ts +4 -0
  480. package/dist/timeline/tool-display-name.d.ts +5 -2
  481. package/dist/timeline/tool-presentation.d.ts +172 -0
  482. package/dist/timeline/turn-summary-model.d.ts +95 -0
  483. package/dist/timeline/turn-summary.d.ts +20 -54
  484. package/dist/timeline/types.d.ts +179 -7
  485. package/dist/timeline/work-presentation.d.ts +60 -0
  486. package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
  487. package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
  488. package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
  489. package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
  490. package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
  491. package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
  492. package/dist/timeline-model.d.ts +29 -0
  493. package/dist/timeline-model.js +254 -0
  494. package/dist/timeline-model.js.map +1 -0
  495. package/dist/usage/allowance-copy.d.ts +25 -0
  496. package/dist/usage/session-usage-limit.d.ts +88 -0
  497. package/dist/usage/summary.d.ts +35 -0
  498. package/dist/usage.d.ts +17 -0
  499. package/dist/usage.js +1187 -0
  500. package/dist/usage.js.map +1 -0
  501. package/dist/voice-recording-owner.d.ts +7 -0
  502. package/package.json +106 -7
  503. package/src/approvals.ts +8 -1
  504. package/src/artifacts-spreadsheet.ts +1 -0
  505. package/src/artifacts.ts +44 -0
  506. package/src/assets/README.md +8 -0
  507. package/src/assets/gmail.ico +0 -0
  508. package/src/assets/outlook.ico +0 -0
  509. package/src/capability-catalog-row.tsx +94 -0
  510. package/src/capability-logo-fallback.ts +22 -0
  511. package/src/client.ts +20 -31
  512. package/src/commands/registry.ts +18 -15
  513. package/src/commands/types.ts +2 -0
  514. package/src/components/anthropic-mark.tsx +10 -0
  515. package/src/components/approval-surface.tsx +401 -138
  516. package/src/components/artifacts/artifact-chrome.tsx +413 -0
  517. package/src/components/artifacts/artifact-sandbox.tsx +193 -0
  518. package/src/components/artifacts/artifact-surface.tsx +40 -20
  519. package/src/components/artifacts/chat-interactive-block.tsx +260 -0
  520. package/src/components/artifacts/deferred-chat-media.tsx +67 -0
  521. package/src/components/artifacts/document-editor.tsx +141 -16
  522. package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
  523. package/src/components/artifacts/editable-artifact-view.tsx +197 -0
  524. package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
  525. package/src/components/artifacts/editable-document.tsx +37 -36
  526. package/src/components/artifacts/editable-presentation.tsx +36 -18
  527. package/src/components/artifacts/editable-spreadsheet.tsx +543 -103
  528. package/src/components/artifacts/index.ts +45 -0
  529. package/src/components/artifacts/inline-html-document.ts +24 -0
  530. package/src/components/artifacts/latest-task-runner.ts +49 -0
  531. package/src/components/artifacts/presentation-editor.tsx +323 -67
  532. package/src/components/artifacts/published-html-artifact-frame.tsx +122 -5
  533. package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
  534. package/src/components/artifacts/site-view.tsx +121 -0
  535. package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
  536. package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
  537. package/src/components/artifacts/spreadsheet-download.tsx +109 -0
  538. package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
  539. package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
  540. package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
  541. package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
  542. package/src/components/artifacts/visualization-assets/base.css +1015 -0
  543. package/src/components/artifacts/visualization-assets/helpers.html +349 -0
  544. package/src/components/artifacts/visualization-assets.gen.ts +3 -0
  545. package/src/components/browser-select-control.tsx +312 -0
  546. package/src/components/browser-viewer.tsx +778 -318
  547. package/src/components/chat-composer.tsx +47 -5
  548. package/src/components/child-session-link.tsx +36 -0
  549. package/src/components/claude-mark.tsx +11 -0
  550. package/src/components/code-editor.tsx +13 -16
  551. package/src/components/composer-transcription-control.tsx +128 -30
  552. package/src/components/composer.tsx +404 -195
  553. package/src/components/computer-viewer.tsx +880 -253
  554. package/src/components/copy-button.tsx +13 -5
  555. package/src/components/desktop-viewer.tsx +1 -1
  556. package/src/components/enrollment-consent.tsx +1 -1
  557. package/src/components/enrollment-device-flow.tsx +1 -1
  558. package/src/components/file-browser.tsx +10 -14
  559. package/src/components/fleet-tile.tsx +5 -3
  560. package/src/components/generated-video-player.tsx +4 -2
  561. package/src/components/grok-mark.tsx +34 -0
  562. package/src/components/human-input-form.tsx +590 -283
  563. package/src/components/human-input-surface.tsx +11 -0
  564. package/src/components/interaction-intervention-banner.tsx +2 -2
  565. package/src/components/linkified-text.tsx +79 -0
  566. package/src/components/machine-card.tsx +35 -78
  567. package/src/components/machine-dock-bar.tsx +1 -1
  568. package/src/components/machine-input-display.ts +197 -3
  569. package/src/components/machines/agent-status-icon.tsx +31 -0
  570. package/src/components/machines/machine-detail.tsx +200 -31
  571. package/src/components/machines/machine-operation-policy.tsx +1 -1
  572. package/src/components/machines/machine-status.ts +241 -0
  573. package/src/components/machines-dashboard.tsx +2 -17
  574. package/src/components/markdown-table-layout.ts +143 -0
  575. package/src/components/markdown.tsx +466 -129
  576. package/src/components/message-timeline.tsx +2370 -667
  577. package/src/components/model-mark.tsx +102 -0
  578. package/src/components/model-picker.tsx +15 -4
  579. package/src/components/model-policy-picker-menu.tsx +371 -0
  580. package/src/components/model-policy-picker.tsx +252 -429
  581. package/src/components/new-conversation.tsx +221 -0
  582. package/src/components/open-geni-chat.tsx +309 -0
  583. package/src/components/open-geni-links.tsx +179 -0
  584. package/src/components/openrouter-mark.tsx +13 -0
  585. package/src/components/opper-mark.tsx +18 -0
  586. package/src/components/pierre-diff.tsx +41 -16
  587. package/src/components/pierre-file.tsx +35 -10
  588. package/src/components/preview-loading.tsx +109 -0
  589. package/src/components/provider-recovery-notice.tsx +49 -0
  590. package/src/components/queue-item-content.ts +14 -0
  591. package/src/components/queue-surface-implementation.tsx +51 -356
  592. package/src/components/queue-surface-state.tsx +3 -1
  593. package/src/components/rehype-secret-refs.ts +98 -0
  594. package/src/components/remark-soft-line-breaks.ts +166 -0
  595. package/src/components/sandbox-files.tsx +91 -15
  596. package/src/components/sandbox-terminal.tsx +84 -13
  597. package/src/components/sandbox-workspace.tsx +147 -51
  598. package/src/components/secret-question-field.tsx +324 -0
  599. package/src/components/secret-ref-chip.tsx +185 -0
  600. package/src/components/session-capability-frame.tsx +197 -0
  601. package/src/components/session-chrome.tsx +842 -251
  602. package/src/components/session-commands-panel.tsx +126 -0
  603. package/src/components/session-commands.tsx +18 -0
  604. package/src/components/session-connection-request.tsx +97 -0
  605. package/src/components/session-conversation.tsx +876 -0
  606. package/src/components/session-list.tsx +257 -0
  607. package/src/components/session-mcp-capability-card.tsx +680 -0
  608. package/src/components/session-proxy-scope.tsx +153 -0
  609. package/src/components/session-status.tsx +26 -17
  610. package/src/components/session-usage-limit-notice.tsx +174 -0
  611. package/src/components/timeline-anchor.tsx +119 -0
  612. package/src/components/timeline-annotation-chrome.tsx +196 -0
  613. package/src/components/timeline-annotation-layout.ts +268 -0
  614. package/src/components/timeline-annotation-markers.tsx +185 -0
  615. package/src/components/timeline-annotation-reveal-context.ts +9 -0
  616. package/src/components/timeline-annotation-selection.tsx +106 -54
  617. package/src/components/timeline-annotation-shared.ts +245 -0
  618. package/src/components/timeline-annotations-dialog.tsx +185 -128
  619. package/src/components/timeline-annotations.tsx +189 -45
  620. package/src/components/timeline-reading-progress.ts +80 -0
  621. package/src/components/timeline-search.tsx +168 -0
  622. package/src/components/timeline-settlement.ts +60 -0
  623. package/src/components/tool-action-review.tsx +650 -0
  624. package/src/components/tool-review-history.tsx +88 -0
  625. package/src/components/usage-limit-notice.tsx +179 -0
  626. package/src/components/usage-member-list.tsx +792 -0
  627. package/src/components/usage-meter.tsx +382 -0
  628. package/src/components/use-viewer-menu-dismiss.ts +33 -0
  629. package/src/components/user-message-body.tsx +27 -2
  630. package/src/components/workspace-dock.tsx +18 -1
  631. package/src/composer-messages.ts +150 -0
  632. package/src/composer-voice-events.ts +12 -0
  633. package/src/composer.ts +6 -1
  634. package/src/connect-account-identity.tsx +34 -0
  635. package/src/connect-accounts.tsx +233 -0
  636. package/src/connect-chooser.tsx +336 -0
  637. package/src/connect-panel.tsx +99 -0
  638. package/src/connect-setup.tsx +355 -0
  639. package/src/connect.ts +60 -0
  640. package/src/connection-assets.d.ts +4 -0
  641. package/src/connection-catalog.tsx +162 -0
  642. package/src/connection-discovery.tsx +238 -0
  643. package/src/connection-installed.tsx +51 -0
  644. package/src/connection-logo.tsx +37 -0
  645. package/src/connection-service-logo.tsx +55 -0
  646. package/src/connection-service-presentation.ts +46 -0
  647. package/src/connection-skeleton.tsx +16 -0
  648. package/src/connection-type-picker.tsx +36 -0
  649. package/src/conversation-timeline.ts +92 -0
  650. package/src/desktop.ts +24 -0
  651. package/src/device-authorization.tsx +98 -0
  652. package/src/diffs.ts +16 -0
  653. package/src/discovery-cache.ts +42 -0
  654. package/src/editor.ts +13 -0
  655. package/src/hooks/internal.ts +3 -2
  656. package/src/hooks/latest-question.ts +164 -0
  657. package/src/hooks/shared-machines-list.ts +34 -1
  658. package/src/hooks/shared-query.ts +721 -0
  659. package/src/hooks/use-attached-browsers.ts +1 -1
  660. package/src/hooks/use-auth-runs.ts +0 -27
  661. package/src/hooks/use-available-models.ts +2 -2
  662. package/src/hooks/use-browser-frame-stream.ts +19 -2
  663. package/src/hooks/use-browser-session.ts +680 -205
  664. package/src/hooks/use-browser-sessions.ts +32 -1
  665. package/src/hooks/use-client-config-flags.ts +118 -0
  666. package/src/hooks/use-codex-accounts.ts +247 -47
  667. package/src/hooks/use-composer.ts +227 -44
  668. package/src/hooks/use-computer-frame-stream.ts +25 -7
  669. package/src/hooks/use-computer-input-posture.ts +94 -0
  670. package/src/hooks/use-computer-session.ts +409 -95
  671. package/src/hooks/use-connect.ts +23 -0
  672. package/src/hooks/use-desktop-stream.ts +19 -28
  673. package/src/hooks/use-file-attachments.ts +80 -4
  674. package/src/hooks/use-goal.ts +79 -9
  675. package/src/hooks/use-last-started-turn-policy.ts +37 -11
  676. package/src/hooks/use-machines.ts +4 -0
  677. package/src/hooks/use-new-conversation.ts +374 -0
  678. package/src/hooks/use-new-session-draft.ts +813 -0
  679. package/src/hooks/use-realtime-voice-models.ts +46 -0
  680. package/src/hooks/use-sandbox-files.ts +68 -20
  681. package/src/hooks/use-session-background-commands.ts +22 -11
  682. package/src/hooks/use-session-capabilities.ts +3 -2
  683. package/src/hooks/use-session-conversation.ts +150 -0
  684. package/src/hooks/use-session-events.ts +531 -335
  685. package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
  686. package/src/hooks/use-session-model-account.ts +174 -0
  687. package/src/hooks/use-session.ts +30 -2
  688. package/src/hooks/use-slash-commands.ts +6 -11
  689. package/src/hooks/use-supergrok-accounts.ts +22 -8
  690. package/src/hooks/use-terminal-stream.ts +153 -27
  691. package/src/hooks/use-transcription.ts +6 -0
  692. package/src/hooks/use-turn-queue.ts +2 -1
  693. package/src/hooks/use-usage.ts +100 -0
  694. package/src/hooks/use-vaults.ts +153 -0
  695. package/src/hooks/use-video-artifact-playback.ts +1 -1
  696. package/src/hooks/use-voice-input.ts +127 -19
  697. package/src/hooks/use-workspace-capture.ts +3 -2
  698. package/src/hooks/use-workspace-edit.ts +23 -5
  699. package/src/hooks/use-workspace-sessions.ts +74 -7
  700. package/src/human-input-model.ts +359 -0
  701. package/src/identity-link-accounts.tsx +148 -0
  702. package/src/identity-link-consent.tsx +192 -0
  703. package/src/index.ts +262 -16
  704. package/src/interaction.ts +1 -0
  705. package/src/lib/clipboard.ts +29 -0
  706. package/src/lib/error-message.ts +37 -0
  707. package/src/lib/format.ts +205 -10
  708. package/src/lib/host-theme.ts +529 -0
  709. package/src/lib/interaction-errors.ts +15 -0
  710. package/src/lib/menu-styles.ts +44 -0
  711. package/src/lib/notify-observer.ts +15 -0
  712. package/src/lib/pierre-diffs-loader.ts +53 -0
  713. package/src/lib/provider-recovery.ts +243 -0
  714. package/src/lib/scrollbars.ts +30 -0
  715. package/src/lib/terminal-input-readiness.ts +51 -0
  716. package/src/lib/transient-retry.ts +99 -0
  717. package/src/lib/workbench-peers.ts +62 -0
  718. package/src/lib/xterm-theme.ts +23 -21
  719. package/src/mcp-connection-status.ts +35 -0
  720. package/src/model-mark-paths.ts +53 -0
  721. package/src/model-picker-model.ts +330 -0
  722. package/src/model-policy.ts +299 -74
  723. package/src/native-previews.ts +100 -0
  724. package/src/new-session-draft.ts +22 -0
  725. package/src/notification-text.ts +81 -0
  726. package/src/older-history.ts +22 -4
  727. package/src/organization-model.ts +118 -0
  728. package/src/plugin-details.tsx +185 -0
  729. package/src/plugin-discovery.tsx +196 -0
  730. package/src/preview-loading-paint.ts +68 -0
  731. package/src/provider.tsx +74 -15
  732. package/src/queue-presentation-model.ts +464 -0
  733. package/src/realtime/dropdown-menu.tsx +19 -12
  734. package/src/realtime/embedded-new-voice.tsx +1 -0
  735. package/src/realtime/embedded-voice.tsx +3 -0
  736. package/src/realtime/realtime-control.tsx +138 -550
  737. package/src/realtime/session-realtime.ts +566 -0
  738. package/src/sandbox-label-model.ts +53 -0
  739. package/src/scrollbars.ts +3 -0
  740. package/src/secret-reference-label.ts +43 -0
  741. package/src/secrets-ui.tsx +59 -0
  742. package/src/session-agents-model.ts +33 -0
  743. package/src/session-attention-model.ts +62 -0
  744. package/src/session-auth-recommendation.ts +48 -0
  745. package/src/session-capability-policy.ts +196 -0
  746. package/src/session-context.ts +3 -4
  747. package/src/session-feedback-model.ts +95 -0
  748. package/src/session-list-model.ts +434 -0
  749. package/src/session-realtime.ts +18 -0
  750. package/src/session-status-model.ts +99 -0
  751. package/src/session-ui.ts +98 -1
  752. package/src/session.ts +17 -1
  753. package/src/site-snapshot.ts +74 -0
  754. package/src/sites-ui.tsx +348 -0
  755. package/src/sites.ts +3 -0
  756. package/src/skill-discovery.tsx +208 -0
  757. package/src/terminal.ts +26 -0
  758. package/src/testing/session-scenarios.ts +404 -0
  759. package/src/timeline/activity-rail.tsx +242 -101
  760. package/src/timeline/agent-identity.tsx +84 -0
  761. package/src/timeline/agent-row.tsx +231 -0
  762. package/src/timeline/allowance-exhausted-row.tsx +86 -0
  763. package/src/timeline/compaction-copy.ts +115 -0
  764. package/src/timeline/fleet-decision-projection.ts +2 -1
  765. package/src/timeline/fleet-decision-row.tsx +1 -0
  766. package/src/timeline/focus-sequence.ts +44 -0
  767. package/src/timeline/genie-copy.ts +19 -0
  768. package/src/timeline/genie-loading.tsx +143 -0
  769. package/src/timeline/index.ts +30 -2
  770. package/src/timeline/knowledge-receipt.tsx +100 -0
  771. package/src/timeline/message-sender.tsx +71 -0
  772. package/src/timeline/notice-presentation.ts +48 -0
  773. package/src/timeline/parsers.ts +42 -2
  774. package/src/timeline/patch-apply-command.tsx +135 -0
  775. package/src/timeline/platform-activity-presentation.ts +166 -0
  776. package/src/timeline/platform-activity-row.tsx +15 -90
  777. package/src/timeline/presented-image.ts +63 -0
  778. package/src/timeline/projection.ts +1742 -76
  779. package/src/timeline/provider-logo.tsx +53 -0
  780. package/src/timeline/question-nav-model.ts +28 -0
  781. package/src/timeline/registry.ts +26 -4
  782. package/src/timeline/retained-image.ts +97 -0
  783. package/src/timeline/retained-loaders.ts +91 -0
  784. package/src/timeline/rolling-activity.tsx +80 -0
  785. package/src/timeline/screenshot-lightbox.tsx +228 -5
  786. package/src/timeline/session-usage-limit-row.tsx +42 -0
  787. package/src/timeline/shared.tsx +42 -15
  788. package/src/timeline/startup-dispatch-details.tsx +36 -0
  789. package/src/timeline/startup-preference.ts +33 -0
  790. package/src/timeline/startup-timings.tsx +145 -0
  791. package/src/timeline/tool-display-name.ts +19 -7
  792. package/src/timeline/tool-presentation.ts +1316 -0
  793. package/src/timeline/tool-renderers.tsx +835 -1138
  794. package/src/timeline/turn-summary-model.ts +343 -0
  795. package/src/timeline/turn-summary.tsx +272 -365
  796. package/src/timeline/types.ts +189 -6
  797. package/src/timeline/work-presentation.ts +189 -0
  798. package/src/timeline-model.ts +143 -0
  799. package/src/usage/allowance-copy.ts +64 -0
  800. package/src/usage/session-usage-limit.ts +266 -0
  801. package/src/usage/summary.ts +93 -0
  802. package/src/usage.ts +70 -0
  803. package/src/voice-recording-owner.ts +22 -0
  804. package/styles/compiled.css +2319 -748
  805. package/styles/connect.css +290 -0
  806. package/styles/connect.d.ts +1 -0
  807. package/styles/effective-tokens.css +1 -0
  808. package/styles/index.css +309 -9
  809. package/styles/responsive.css +99 -7
  810. package/styles/session-capability.css +44 -0
  811. package/styles/tokens.css +134 -66
  812. package/dist/browser-viewer-MKKFRRRV.js +0 -14
  813. package/dist/chunk-2DZVYHVO.js +0 -470
  814. package/dist/chunk-2DZVYHVO.js.map +0 -1
  815. package/dist/chunk-3AGBGTRT.js.map +0 -1
  816. package/dist/chunk-4MDLEHXL.js.map +0 -1
  817. package/dist/chunk-5YK2ZDIG.js.map +0 -1
  818. package/dist/chunk-7EAFGICR.js +0 -302
  819. package/dist/chunk-7EAFGICR.js.map +0 -1
  820. package/dist/chunk-ELIYWBZR.js.map +0 -1
  821. package/dist/chunk-H5YGYNXS.js.map +0 -1
  822. package/dist/chunk-HUIKIDM5.js.map +0 -1
  823. package/dist/chunk-ICA6R6TW.js.map +0 -1
  824. package/dist/chunk-IOLVN74D.js.map +0 -1
  825. package/dist/chunk-JAQ5K7W6.js.map +0 -1
  826. package/dist/chunk-JVYQRRC4.js.map +0 -1
  827. package/dist/chunk-KCGXPP5V.js.map +0 -1
  828. package/dist/chunk-KZ73RL76.js.map +0 -1
  829. package/dist/chunk-NEXLLTP4.js.map +0 -1
  830. package/dist/chunk-PEI6RANI.js.map +0 -1
  831. package/dist/chunk-VTOREEXF.js +0 -142
  832. package/dist/chunk-VTOREEXF.js.map +0 -1
  833. package/dist/chunk-WSK7G5LE.js +0 -170
  834. package/dist/chunk-WSK7G5LE.js.map +0 -1
  835. package/dist/chunk-X4A66EWZ.js +0 -223
  836. package/dist/chunk-X4A66EWZ.js.map +0 -1
  837. package/dist/chunk-XYRDDSXF.js.map +0 -1
  838. package/dist/chunk-YG4QEQF5.js +0 -9557
  839. package/dist/chunk-YG4QEQF5.js.map +0 -1
  840. package/dist/chunk-YVCHAQZY.js.map +0 -1
  841. package/dist/chunk-ZPBTI3TE.js.map +0 -1
  842. package/dist/computer-viewer-FWEZISW4.js +0 -16
  843. package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
  844. package/dist/hooks/use-environments.d.ts +0 -41
  845. package/dist/hooks/use-packs.d.ts +0 -32
  846. package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
  847. package/dist/queue-surface-implementation-BSKUWHRI.js.map +0 -1
  848. package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
  849. package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
  850. package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
  851. package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
  852. package/src/hooks/use-environments.ts +0 -182
  853. package/src/hooks/use-packs.ts +0 -157
  854. /package/dist/{browser-viewer-MKKFRRRV.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
  855. /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-4EUKJXUO.js.map} +0 -0
@@ -0,0 +1,293 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-TXS65BB2.js";
5
+
6
+ // src/components/artifacts/artifact-chrome.tsx
7
+ import { OpenGeniApiError } from "@opengeni/sdk";
8
+ import {
9
+ AlertTriangleIcon,
10
+ ArrowLeftIcon,
11
+ ChevronDownIcon,
12
+ FileIcon,
13
+ FilePenLineIcon,
14
+ GalleryHorizontalEndIcon,
15
+ ImageIcon,
16
+ Loader2Icon,
17
+ PanelsTopLeftIcon,
18
+ RotateCcwIcon,
19
+ Table2Icon,
20
+ XIcon
21
+ } from "lucide-react";
22
+ import {
23
+ createContext,
24
+ forwardRef,
25
+ useContext,
26
+ useMemo
27
+ } from "react";
28
+ import { jsx, jsxs } from "react/jsx-runtime";
29
+ var BUTTON_BASE = "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-bg disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";
30
+ var BUTTON_VARIANT = {
31
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
32
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-border dark:bg-input/30 dark:hover:bg-input/50"
33
+ };
34
+ var BUTTON_SIZE = {
35
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
36
+ icon: "size-9",
37
+ "icon-sm": "size-8"
38
+ };
39
+ function ArtifactButton({
40
+ variant = "ghost",
41
+ size = "sm",
42
+ className,
43
+ type = "button",
44
+ ...props
45
+ }) {
46
+ return /* @__PURE__ */ jsx(
47
+ "button",
48
+ {
49
+ type,
50
+ className: cn(BUTTON_BASE, BUTTON_VARIANT[variant], BUTTON_SIZE[size], className),
51
+ ...props
52
+ }
53
+ );
54
+ }
55
+ function ArtifactBadge({ className, ...props }) {
56
+ return /* @__PURE__ */ jsx(
57
+ "span",
58
+ {
59
+ className: cn(
60
+ "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-border px-2 py-0.5 text-xs font-medium whitespace-nowrap text-foreground [&>svg]:pointer-events-none [&>svg]:size-3",
61
+ className
62
+ ),
63
+ ...props
64
+ }
65
+ );
66
+ }
67
+ var ArtifactSelect = forwardRef(
68
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs("span", { className: "relative inline-block max-w-full", children: [
69
+ /* @__PURE__ */ jsx(
70
+ "select",
71
+ {
72
+ ref,
73
+ className: cn(
74
+ "peer h-9 w-full appearance-none rounded-md border border-border bg-bg px-2.5 pr-8 text-sm text-fg transition-colors hover:border-border-strong focus-visible:border-ring focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
75
+ className
76
+ ),
77
+ ...props,
78
+ children
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx(
82
+ ChevronDownIcon,
83
+ {
84
+ "aria-hidden": "true",
85
+ className: "pointer-events-none absolute right-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle"
86
+ }
87
+ )
88
+ ] })
89
+ );
90
+ ArtifactSelect.displayName = "ArtifactSelect";
91
+ function artifactKindIcon(kind) {
92
+ if (kind === "image") return /* @__PURE__ */ jsx(ImageIcon, { className: "size-4" });
93
+ if (kind === "file") return /* @__PURE__ */ jsx(FileIcon, { className: "size-4" });
94
+ if (kind === "site") return /* @__PURE__ */ jsx(PanelsTopLeftIcon, { className: "size-4" });
95
+ if (kind === "document") return /* @__PURE__ */ jsx(FilePenLineIcon, { className: "size-4" });
96
+ if (kind === "spreadsheet") return /* @__PURE__ */ jsx(Table2Icon, { className: "size-4" });
97
+ return /* @__PURE__ */ jsx(GalleryHorizontalEndIcon, { className: "size-4" });
98
+ }
99
+ function artifactKindSubtitle(kind) {
100
+ if (kind === "site") return "Site \xB7 published preview";
101
+ if (kind === "image") return "Image \xB7 retained file";
102
+ if (kind === "file") return "File \xB7 retained file";
103
+ return `${kind[0].toUpperCase()}${kind.slice(1)} \xB7 shared editor`;
104
+ }
105
+ var DEFAULT_ARTIFACT_LABELS = Object.freeze({
106
+ back: "Back",
107
+ close: "Close",
108
+ opening: "Opening artifact\u2026",
109
+ artifact: "Artifact",
110
+ startingEditor: "Starting the secure editing session\u2026",
111
+ kindSubtitle: (kind) => artifactKindSubtitle(kind),
112
+ live: "Live",
113
+ reloadSite: "Reload Site",
114
+ openFullScreen: "Open Site full screen",
115
+ editWithAgent: "Edit with Opengeni",
116
+ editShort: "Edit",
117
+ preview: "Preview",
118
+ loadPreview: "Load preview",
119
+ loadSitePreview: "Load Site preview",
120
+ siteVersion: "Site version",
121
+ savedVersion: "Saved version",
122
+ version: (revision) => `Version ${revision}`,
123
+ openSite: "Open Site",
124
+ loadingSite: "Loading Site\u2026",
125
+ siteArchived: "This Site is archived.",
126
+ siteUnpublished: "This Site is archived or unpublished.",
127
+ siteReferenceInvalid: "This Site reference is invalid.",
128
+ siteLoadFailed: "Couldn\u2019t load this Site.",
129
+ retry: "Retry",
130
+ tryAgain: "Try again",
131
+ toolCount: (count) => `${count} ${count === 1 ? "tool" : "tools"}`,
132
+ toolsAvailable: (count) => `${count} workspace tools available to this Site`,
133
+ sourceFileCount: (count) => `${count} source ${count === 1 ? "file" : "files"}`,
134
+ viewingDisabled: {
135
+ title: "Artifact viewing isn't enabled",
136
+ message: "This app doesn't serve editable artifacts yet."
137
+ },
138
+ editorsMissing: {
139
+ title: "This artifact can't open here",
140
+ message: "This app hasn't installed the document, spreadsheet, and presentation editors."
141
+ },
142
+ siteErrors: {
143
+ unavailable: {
144
+ title: "This Site isn't available",
145
+ message: "It may have been removed, or you may not have access."
146
+ },
147
+ invalid: {
148
+ title: "This Site link isn't valid",
149
+ message: "Check the address and open a Site from your workspace library."
150
+ },
151
+ transient: {
152
+ title: "Couldn't load this Site",
153
+ message: "A temporary problem prevented this Site from loading. Try again."
154
+ }
155
+ },
156
+ editableErrors: {
157
+ unavailable: {
158
+ title: "This artifact isn't available",
159
+ message: "It may have been removed, or you may not have access."
160
+ },
161
+ invalid: {
162
+ title: "This artifact link isn't valid",
163
+ message: "Check the address and open the artifact from your workspace library."
164
+ },
165
+ transient: {
166
+ title: "Could not open this artifact",
167
+ message: "A temporary problem prevented this artifact from opening. Try again."
168
+ }
169
+ },
170
+ reference: (id) => `Reference: ${id}`
171
+ });
172
+ var ArtifactLabelsContext = createContext(DEFAULT_ARTIFACT_LABELS);
173
+ function ArtifactLabelsProvider({
174
+ labels,
175
+ children
176
+ }) {
177
+ const parent = useContext(ArtifactLabelsContext);
178
+ const value = useMemo(() => labels ? { ...parent, ...labels } : parent, [labels, parent]);
179
+ return /* @__PURE__ */ jsx(ArtifactLabelsContext.Provider, { value, children });
180
+ }
181
+ function useArtifactLabels() {
182
+ return useContext(ArtifactLabelsContext);
183
+ }
184
+ function ArtifactViewerHeader({
185
+ kind,
186
+ title,
187
+ subtitle,
188
+ titleSlot,
189
+ onBack,
190
+ backLabel,
191
+ actions,
192
+ onClose,
193
+ closeLabel
194
+ }) {
195
+ const labels = useArtifactLabels();
196
+ backLabel ??= labels.back;
197
+ closeLabel ??= labels.close;
198
+ return /* @__PURE__ */ jsxs(
199
+ "div",
200
+ {
201
+ "data-og-artifact-header": "",
202
+ className: "flex min-h-11 shrink-0 items-center gap-2 border-b border-border px-2",
203
+ children: [
204
+ onBack ? /* @__PURE__ */ jsx(ArtifactButton, { size: "icon-sm", "aria-label": backLabel, title: backLabel, onClick: onBack, children: /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-4" }) }) : null,
205
+ /* @__PURE__ */ jsx("span", { className: "flex size-7 shrink-0 items-center justify-center rounded-md bg-accent text-accent-foreground", children: kind ? artifactKindIcon(kind) : /* @__PURE__ */ jsx(FileIcon, { className: "size-4" }) }),
206
+ titleSlot ?? /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
207
+ /* @__PURE__ */ jsx("p", { className: "m-0 truncate text-sm font-medium", children: title }),
208
+ subtitle ?? (kind ? labels.kindSubtitle(kind) : "") ? /* @__PURE__ */ jsx("p", { className: "m-0 truncate text-xs text-fg-subtle", children: subtitle ?? (kind ? labels.kindSubtitle(kind) : "") }) : null
209
+ ] }),
210
+ actions,
211
+ onClose ? /* @__PURE__ */ jsx(
212
+ ArtifactButton,
213
+ {
214
+ size: "icon-sm",
215
+ className: "shrink-0",
216
+ "aria-label": closeLabel,
217
+ title: closeLabel,
218
+ onClick: onClose,
219
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
220
+ }
221
+ ) : null
222
+ ]
223
+ }
224
+ );
225
+ }
226
+ function ArtifactLoading({ label }) {
227
+ return /* @__PURE__ */ jsx(
228
+ "section",
229
+ {
230
+ role: "status",
231
+ className: "grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center",
232
+ children: /* @__PURE__ */ jsxs("div", { className: "max-w-sm rounded-lg border border-border bg-surface p-5 text-sm text-fg-muted", children: [
233
+ /* @__PURE__ */ jsx(Loader2Icon, { "aria-hidden": true, className: "mx-auto mb-3 size-5 animate-spin text-fg" }),
234
+ label
235
+ ] })
236
+ }
237
+ );
238
+ }
239
+ function ArtifactProblem({
240
+ view,
241
+ onRetry
242
+ }) {
243
+ const labels = useArtifactLabels();
244
+ return /* @__PURE__ */ jsx(
245
+ "section",
246
+ {
247
+ role: "alert",
248
+ className: "grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center",
249
+ children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-md rounded-lg border border-border bg-surface p-5", children: [
250
+ /* @__PURE__ */ jsx(AlertTriangleIcon, { "aria-hidden": true, className: "mx-auto mb-3 size-5 text-status-waiting" }),
251
+ /* @__PURE__ */ jsx("h2", { className: "m-0 text-base font-semibold", children: view.title }),
252
+ /* @__PURE__ */ jsx("p", { className: "mb-0 mt-2 text-sm leading-5 text-fg-muted", children: artifactLoadErrorMessage(view, labels) }),
253
+ view.retryable && onRetry ? /* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-center", children: /* @__PURE__ */ jsxs(ArtifactButton, { variant: "outline", onClick: onRetry, children: [
254
+ /* @__PURE__ */ jsx(RotateCcwIcon, { "aria-hidden": "true" }),
255
+ labels.tryAgain
256
+ ] }) }) : null
257
+ ] })
258
+ }
259
+ );
260
+ }
261
+ function artifactLoadErrorView(error, kind, labels = DEFAULT_ARTIFACT_LABELS) {
262
+ const copy = kind === "site" ? labels.siteErrors : labels.editableErrors;
263
+ const correlationId = error instanceof OpenGeniApiError ? error.correlationId : void 0;
264
+ const withSupport = (view) => correlationId ? { ...view, correlationId } : view;
265
+ if (error instanceof OpenGeniApiError) {
266
+ if (error.status === 401 || error.status === 403 || error.status === 404) {
267
+ return withSupport({ ...copy.unavailable, retryable: false });
268
+ }
269
+ if (error.status === 422) return withSupport({ ...copy.invalid, retryable: false });
270
+ return withSupport({ ...copy.transient, retryable: error.retryable });
271
+ }
272
+ return { ...copy.transient, retryable: true };
273
+ }
274
+ function artifactLoadErrorMessage(view, labels = DEFAULT_ARTIFACT_LABELS) {
275
+ return view.correlationId ? `${view.message} ${labels.reference(view.correlationId)}` : view.message;
276
+ }
277
+
278
+ export {
279
+ ArtifactButton,
280
+ ArtifactBadge,
281
+ ArtifactSelect,
282
+ artifactKindIcon,
283
+ artifactKindSubtitle,
284
+ DEFAULT_ARTIFACT_LABELS,
285
+ ArtifactLabelsProvider,
286
+ useArtifactLabels,
287
+ ArtifactViewerHeader,
288
+ ArtifactLoading,
289
+ ArtifactProblem,
290
+ artifactLoadErrorView,
291
+ artifactLoadErrorMessage
292
+ };
293
+ //# sourceMappingURL=chunk-TGXK4BAZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/artifacts/artifact-chrome.tsx"],"sourcesContent":["import { OpenGeniApiError } from \"@opengeni/sdk\";\nimport {\n AlertTriangleIcon,\n ArrowLeftIcon,\n ChevronDownIcon,\n FileIcon,\n FilePenLineIcon,\n GalleryHorizontalEndIcon,\n ImageIcon,\n Loader2Icon,\n PanelsTopLeftIcon,\n RotateCcwIcon,\n Table2Icon,\n XIcon,\n} from \"lucide-react\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\n/**\n * Shared chrome for artifact surfaces: the Opengeni console and embedding hosts\n * render the same header, controls, and load states. Class names use the\n * package theme aliases, so the console's own Tailwind build and the compiled\n * `.og-root` stylesheet resolve them identically.\n */\n\nexport type ArtifactKind = \"document\" | \"spreadsheet\" | \"presentation\" | \"site\" | \"image\" | \"file\";\n\nconst BUTTON_BASE =\n \"inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-bg disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\";\nconst BUTTON_VARIANT = {\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-border dark:bg-input/30 dark:hover:bg-input/50\",\n} as const;\nconst BUTTON_SIZE = {\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n} as const;\n\nexport function ArtifactButton({\n variant = \"ghost\",\n size = \"sm\",\n className,\n type = \"button\",\n ...props\n}: ComponentProps<\"button\"> & {\n variant?: keyof typeof BUTTON_VARIANT;\n size?: keyof typeof BUTTON_SIZE;\n}) {\n return (\n <button\n type={type}\n className={cn(BUTTON_BASE, BUTTON_VARIANT[variant], BUTTON_SIZE[size], className)}\n {...props}\n />\n );\n}\n\nexport function ArtifactBadge({ className, ...props }: ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-border px-2 py-0.5 text-xs font-medium whitespace-nowrap text-foreground [&>svg]:pointer-events-none [&>svg]:size-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport const ArtifactSelect = forwardRef<HTMLSelectElement, ComponentProps<\"select\">>(\n ({ className, children, ...props }, ref) => (\n <span className=\"relative inline-block max-w-full\">\n <select\n ref={ref}\n className={cn(\n \"peer h-9 w-full appearance-none rounded-md border border-border bg-bg px-2.5 pr-8 text-sm text-fg transition-colors hover:border-border-strong focus-visible:border-ring focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n </select>\n <ChevronDownIcon\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n />\n </span>\n ),\n);\nArtifactSelect.displayName = \"ArtifactSelect\";\n\nexport function artifactKindIcon(kind: ArtifactKind): ReactNode {\n if (kind === \"image\") return <ImageIcon className=\"size-4\" />;\n if (kind === \"file\") return <FileIcon className=\"size-4\" />;\n if (kind === \"site\") return <PanelsTopLeftIcon className=\"size-4\" />;\n if (kind === \"document\") return <FilePenLineIcon className=\"size-4\" />;\n if (kind === \"spreadsheet\") return <Table2Icon className=\"size-4\" />;\n return <GalleryHorizontalEndIcon className=\"size-4\" />;\n}\n\nexport function artifactKindSubtitle(kind: ArtifactKind): string {\n if (kind === \"site\") return \"Site · published preview\";\n if (kind === \"image\") return \"Image · retained file\";\n if (kind === \"file\") return \"File · retained file\";\n return `${kind[0]!.toUpperCase()}${kind.slice(1)} · shared editor`;\n}\n\ntype LoadErrorCopy = Readonly<\n Record<\n \"unavailable\" | \"invalid\" | \"transient\",\n {\n title: string;\n message: string;\n }\n >\n>;\n\n/**\n * Every user-facing string in the artifact surfaces (inline Site preview, Site\n * frame, viewer header and states). Hosts translate by passing a partial\n * `labels` object; unspecified keys keep the English defaults.\n */\nexport type ArtifactLabels = Readonly<{\n back: string;\n close: string;\n /** Header title and loading copy until an artifact's title is known. */\n opening: string;\n /** Header title when an artifact cannot be opened. */\n artifact: string;\n startingEditor: string;\n kindSubtitle: (kind: ArtifactKind) => string;\n live: string;\n reloadSite: string;\n openFullScreen: string;\n editWithAgent: string;\n editShort: string;\n preview: string;\n loadPreview: string;\n loadSitePreview: string;\n siteVersion: string;\n savedVersion: string;\n version: (revision: number) => string;\n openSite: string;\n loadingSite: string;\n siteArchived: string;\n siteUnpublished: string;\n siteReferenceInvalid: string;\n siteLoadFailed: string;\n retry: string;\n tryAgain: string;\n toolCount: (count: number) => string;\n toolsAvailable: (count: number) => string;\n sourceFileCount: (count: number) => string;\n viewingDisabled: { title: string; message: string };\n editorsMissing: { title: string; message: string };\n siteErrors: LoadErrorCopy;\n editableErrors: LoadErrorCopy;\n reference: (id: string) => string;\n}>;\n\nexport const DEFAULT_ARTIFACT_LABELS: ArtifactLabels = Object.freeze({\n back: \"Back\",\n close: \"Close\",\n opening: \"Opening artifact…\",\n artifact: \"Artifact\",\n startingEditor: \"Starting the secure editing session…\",\n kindSubtitle: (kind: ArtifactKind) => artifactKindSubtitle(kind),\n live: \"Live\",\n reloadSite: \"Reload Site\",\n openFullScreen: \"Open Site full screen\",\n editWithAgent: \"Edit with Opengeni\",\n editShort: \"Edit\",\n preview: \"Preview\",\n loadPreview: \"Load preview\",\n loadSitePreview: \"Load Site preview\",\n siteVersion: \"Site version\",\n savedVersion: \"Saved version\",\n version: (revision: number) => `Version ${revision}`,\n openSite: \"Open Site\",\n loadingSite: \"Loading Site…\",\n siteArchived: \"This Site is archived.\",\n siteUnpublished: \"This Site is archived or unpublished.\",\n siteReferenceInvalid: \"This Site reference is invalid.\",\n siteLoadFailed: \"Couldn’t load this Site.\",\n retry: \"Retry\",\n tryAgain: \"Try again\",\n toolCount: (count: number) => `${count} ${count === 1 ? \"tool\" : \"tools\"}`,\n toolsAvailable: (count: number) => `${count} workspace tools available to this Site`,\n sourceFileCount: (count: number) => `${count} source ${count === 1 ? \"file\" : \"files\"}`,\n viewingDisabled: {\n title: \"Artifact viewing isn't enabled\",\n message: \"This app doesn't serve editable artifacts yet.\",\n },\n editorsMissing: {\n title: \"This artifact can't open here\",\n message: \"This app hasn't installed the document, spreadsheet, and presentation editors.\",\n },\n siteErrors: {\n unavailable: {\n title: \"This Site isn't available\",\n message: \"It may have been removed, or you may not have access.\",\n },\n invalid: {\n title: \"This Site link isn't valid\",\n message: \"Check the address and open a Site from your workspace library.\",\n },\n transient: {\n title: \"Couldn't load this Site\",\n message: \"A temporary problem prevented this Site from loading. Try again.\",\n },\n },\n editableErrors: {\n unavailable: {\n title: \"This artifact isn't available\",\n message: \"It may have been removed, or you may not have access.\",\n },\n invalid: {\n title: \"This artifact link isn't valid\",\n message: \"Check the address and open the artifact from your workspace library.\",\n },\n transient: {\n title: \"Could not open this artifact\",\n message: \"A temporary problem prevented this artifact from opening. Try again.\",\n },\n },\n reference: (id: string) => `Reference: ${id}`,\n});\n\nconst ArtifactLabelsContext = createContext<ArtifactLabels>(DEFAULT_ARTIFACT_LABELS);\n\n/** Translate every artifact surface below; nested providers override outer ones. */\nexport function ArtifactLabelsProvider({\n labels,\n children,\n}: {\n labels: Partial<ArtifactLabels> | undefined;\n children: ReactNode;\n}) {\n const parent = useContext(ArtifactLabelsContext);\n const value = useMemo(() => (labels ? { ...parent, ...labels } : parent), [labels, parent]);\n return <ArtifactLabelsContext.Provider value={value}>{children}</ArtifactLabelsContext.Provider>;\n}\n\nexport function useArtifactLabels(): ArtifactLabels {\n return useContext(ArtifactLabelsContext);\n}\n\n/**\n * One artifact header: optional Back, the kind tile, title (or a host-supplied\n * title control), trailing actions, and optional Close. The console dock and\n * embedded viewers share it.\n */\nexport function ArtifactViewerHeader({\n kind,\n title,\n subtitle,\n titleSlot,\n onBack,\n backLabel,\n actions,\n onClose,\n closeLabel,\n}: Readonly<{\n /** `null` while the host does not know the modality yet. */\n kind: ArtifactKind | null;\n title: string;\n subtitle?: string | undefined;\n /** Replaces the title text, for example with a picker. */\n titleSlot?: ReactNode;\n onBack?: (() => void) | undefined;\n backLabel?: string | undefined;\n actions?: ReactNode;\n onClose?: (() => void) | undefined;\n closeLabel?: string | undefined;\n}>) {\n const labels = useArtifactLabels();\n backLabel ??= labels.back;\n closeLabel ??= labels.close;\n return (\n <div\n data-og-artifact-header=\"\"\n className=\"flex min-h-11 shrink-0 items-center gap-2 border-b border-border px-2\"\n >\n {onBack ? (\n <ArtifactButton size=\"icon-sm\" aria-label={backLabel} title={backLabel} onClick={onBack}>\n <ArrowLeftIcon className=\"size-4\" />\n </ArtifactButton>\n ) : null}\n <span className=\"flex size-7 shrink-0 items-center justify-center rounded-md bg-accent text-accent-foreground\">\n {kind ? artifactKindIcon(kind) : <FileIcon className=\"size-4\" />}\n </span>\n {titleSlot ?? (\n <div className=\"min-w-0 flex-1\">\n <p className=\"m-0 truncate text-sm font-medium\">{title}</p>\n {(subtitle ?? (kind ? labels.kindSubtitle(kind) : \"\")) ? (\n <p className=\"m-0 truncate text-xs text-fg-subtle\">\n {subtitle ?? (kind ? labels.kindSubtitle(kind) : \"\")}\n </p>\n ) : null}\n </div>\n )}\n {actions}\n {onClose ? (\n <ArtifactButton\n size=\"icon-sm\"\n className=\"shrink-0\"\n aria-label={closeLabel}\n title={closeLabel}\n onClick={onClose}\n >\n <XIcon className=\"size-4\" />\n </ArtifactButton>\n ) : null}\n </div>\n );\n}\n\nexport function ArtifactLoading({ label }: { label: string }) {\n return (\n <section\n role=\"status\"\n className=\"grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center\"\n >\n <div className=\"max-w-sm rounded-lg border border-border bg-surface p-5 text-sm text-fg-muted\">\n <Loader2Icon aria-hidden className=\"mx-auto mb-3 size-5 animate-spin text-fg\" />\n {label}\n </div>\n </section>\n );\n}\n\nexport function ArtifactProblem({\n view,\n onRetry,\n}: {\n view: ArtifactLoadErrorView;\n onRetry?: (() => void) | undefined;\n}) {\n const labels = useArtifactLabels();\n return (\n <section\n role=\"alert\"\n className=\"grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center\"\n >\n <div className=\"w-full max-w-md rounded-lg border border-border bg-surface p-5\">\n <AlertTriangleIcon aria-hidden className=\"mx-auto mb-3 size-5 text-status-waiting\" />\n <h2 className=\"m-0 text-base font-semibold\">{view.title}</h2>\n <p className=\"mb-0 mt-2 text-sm leading-5 text-fg-muted\">\n {artifactLoadErrorMessage(view, labels)}\n </p>\n {view.retryable && onRetry ? (\n <div className=\"mt-4 flex justify-center\">\n <ArtifactButton variant=\"outline\" onClick={onRetry}>\n <RotateCcwIcon aria-hidden=\"true\" />\n {labels.tryAgain}\n </ArtifactButton>\n </div>\n ) : null}\n </div>\n </section>\n );\n}\n\nexport type ArtifactLoadErrorKind = \"site\" | \"editable\";\n\nexport type ArtifactLoadErrorView = Readonly<{\n title: string;\n message: string;\n retryable: boolean;\n correlationId?: string;\n}>;\n\n/** Site/editor load copy. Never surfaces raw Opengeni API status text. */\nexport function artifactLoadErrorView(\n error: unknown,\n kind: ArtifactLoadErrorKind,\n labels: ArtifactLabels = DEFAULT_ARTIFACT_LABELS,\n): ArtifactLoadErrorView {\n const copy = kind === \"site\" ? labels.siteErrors : labels.editableErrors;\n const correlationId = error instanceof OpenGeniApiError ? error.correlationId : undefined;\n const withSupport = (view: {\n title: string;\n message: string;\n retryable: boolean;\n }): ArtifactLoadErrorView => (correlationId ? { ...view, correlationId } : view);\n if (error instanceof OpenGeniApiError) {\n if (error.status === 401 || error.status === 403 || error.status === 404) {\n return withSupport({ ...copy.unavailable, retryable: false });\n }\n if (error.status === 422) return withSupport({ ...copy.invalid, retryable: false });\n return withSupport({ ...copy.transient, retryable: error.retryable });\n }\n return { ...copy.transient, retryable: true };\n}\n\nexport function artifactLoadErrorMessage(\n view: ArtifactLoadErrorView,\n labels: ArtifactLabels = DEFAULT_ARTIFACT_LABELS,\n): string {\n return view.correlationId\n ? `${view.message} ${labels.reference(view.correlationId)}`\n : view.message;\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  // src/lib/relay-wire.ts
2
4
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
3
5
  var STREAM_KIND_DESKTOP = 2;
@@ -92,13 +94,6 @@ function decodeStreamFrame(bytes) {
92
94
  return { seq, data };
93
95
  }
94
96
 
95
- // src/lib/host-platform.ts
96
- function interactionHostPlatform() {
97
- if (typeof navigator === "undefined") return "other";
98
- const platform = navigator.platform || navigator.userAgent;
99
- return /Mac|iPhone|iPad|iPod/u.test(platform) ? "mac" : "other";
100
- }
101
-
102
97
  export {
103
98
  STREAM_KIND_DESKTOP,
104
99
  STREAM_KIND_PTY,
@@ -110,7 +105,6 @@ export {
110
105
  encodeStreamClose,
111
106
  encodeStreamFrame,
112
107
  decodeStreamOpenAck,
113
- decodeStreamFrame,
114
- interactionHostPlatform
108
+ decodeStreamFrame
115
109
  };
116
- //# sourceMappingURL=chunk-5YK2ZDIG.js.map
110
+ //# sourceMappingURL=chunk-TNEZNMSN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/relay-wire.ts"],"sourcesContent":["// Minimal HAND-MIRROR of the relay stream wire messages the desktop frame client\n// needs (`StreamOpen`/`StreamClose` encode; `StreamOpenAck` + `StreamFrame` decode). It exists\n// because the publish-closure guard (scripts/publish-closure-guard.ts) forbids\n// `@opengeni/react` from depending on `@opengeni/agent-proto` — the published SDK\n// closure may only reach `@opengeni/sdk` among `@opengeni/*` packages. So, exactly\n// as the guard prescribes (\"hand-mirror it\"), we re-encode just these three\n// messages against the third-party `@bufbuild/protobuf/wire` runtime (the same\n// runtime `@opengeni/agent-proto` generates against), byte-compatible with the\n// generated code. Field numbers copied verbatim from\n// `packages/agent-proto/src/gen/opengeni_agent.ts`:\n// StreamChannel: channelId=1, workspaceId=2, agentId=3, kind=4(int32), port=5(uint32)\n// StreamOpen: channel=1(msg), token=2, role=3(int32), resumeFromSeq=4(uint64, omitted when \"0\")\n// StreamOpenAck: accepted=1(bool), error=2(AgentError msg), resumeFromSeq=3\n// AgentError: code=1, message=2, retryable=3, detail=4 (we read only message)\n// StreamFrame: channelId=1, seq=2, data=3(bytes), producedAtMs=4 (we read only data)\n// StreamClose: channelId=1, reason=2(int32), message=3\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\n/** `StreamKind.STREAM_KIND_DESKTOP` (agent-proto enum value). */\nexport const STREAM_KIND_DESKTOP = 2;\n/** `StreamKind.STREAM_KIND_PTY` (agent-proto enum value). */\nexport const STREAM_KIND_PTY = 1;\n/** `StreamKind.STREAM_KIND_BROWSER` (agent-proto enum value). */\nexport const STREAM_KIND_BROWSER = 3;\n/** `StreamKind.STREAM_KIND_COMPUTER` (agent-proto enum value). */\nexport const STREAM_KIND_COMPUTER = 4;\n/** `StreamRole.STREAM_ROLE_CLIENT` (agent-proto enum value). */\nexport const STREAM_ROLE_CLIENT = 2;\n/** `StreamCloseReason.STREAM_CLOSE_REASON_NORMAL`. */\nexport const STREAM_CLOSE_REASON_NORMAL = 1;\n\nexport interface RelayChannel {\n channelId: string;\n workspaceId: string;\n agentId: string;\n kind: number;\n port: number;\n}\n\nexport interface RelayStreamOpen {\n channel: RelayChannel;\n token: string;\n role: number;\n resumeFromSeq: string;\n}\n\nfunction encodeChannel(message: RelayChannel, writer: BinaryWriter): BinaryWriter {\n if (message.channelId !== \"\") writer.uint32(10).string(message.channelId);\n if (message.workspaceId !== \"\") writer.uint32(18).string(message.workspaceId);\n if (message.agentId !== \"\") writer.uint32(26).string(message.agentId);\n if (message.kind !== 0) writer.uint32(32).int32(message.kind);\n if (message.port !== 0) writer.uint32(40).uint32(message.port);\n return writer;\n}\n\n/** Encode a `StreamOpen`, byte-compatible with `StreamOpen.encode(...).finish()`. */\nexport function encodeStreamOpen(message: RelayStreamOpen): Uint8Array {\n const writer = new BinaryWriter();\n encodeChannel(message.channel, writer.uint32(10).fork()).join();\n if (message.token !== \"\") writer.uint32(18).string(message.token);\n if (message.role !== 0) writer.uint32(24).int32(message.role);\n if (message.resumeFromSeq !== \"0\") writer.uint32(32).uint64(message.resumeFromSeq);\n return writer.finish();\n}\n\n/** Encode an intentional viewer detach. Transport loss omits this message so\n * reconnect/resume remains available. */\nexport function encodeStreamClose(message: {\n channelId: string;\n reason: number;\n message: string;\n}): Uint8Array {\n const writer = new BinaryWriter();\n if (message.channelId !== \"\") writer.uint32(10).string(message.channelId);\n if (message.reason !== 0) writer.uint32(16).int32(message.reason);\n if (message.message !== \"\") writer.uint32(26).string(message.message);\n return writer.finish();\n}\n\n/** Encode a viewer→agent PTY input `StreamFrame`. */\nexport function encodeStreamFrame(message: {\n channelId: string;\n seq: string;\n data: Uint8Array;\n producedAtMs: string;\n}): Uint8Array {\n const writer = new BinaryWriter();\n if (message.channelId !== \"\") writer.uint32(10).string(message.channelId);\n if (message.seq !== \"0\") writer.uint32(16).uint64(message.seq);\n if (message.data.length > 0) writer.uint32(26).bytes(message.data);\n if (message.producedAtMs !== \"0\") writer.uint32(32).uint64(message.producedAtMs);\n return writer.finish();\n}\n\n/** The only `AgentError` field we surface from a rejected ack. */\nfunction decodeAgentErrorMessage(reader: BinaryReader, length: number): { message?: string } {\n const end = reader.pos + length;\n let message: string | undefined;\n while (reader.pos < end) {\n const tag = reader.uint32();\n if (tag >>> 3 === 2 && tag === 18) {\n message = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) break;\n reader.skip(tag & 7);\n }\n return message !== undefined ? { message } : {};\n}\n\n/** Decode a `StreamOpenAck` (we need `accepted` + the error message). */\nexport function decodeStreamOpenAck(bytes: Uint8Array): {\n accepted: boolean;\n error?: { message?: string };\n} {\n const reader = new BinaryReader(bytes);\n const end = reader.len;\n let accepted = false;\n let error: { message?: string } | undefined;\n while (reader.pos < end) {\n const tag = reader.uint32();\n if (tag >>> 3 === 1 && tag === 8) {\n accepted = reader.bool();\n continue;\n }\n if (tag >>> 3 === 2 && tag === 18) {\n error = decodeAgentErrorMessage(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) break;\n reader.skip(tag & 7);\n }\n return error !== undefined ? { accepted, error } : { accepted };\n}\n\n/** Decode the sequence plus `data` from a `StreamFrame`. */\nexport function decodeStreamFrame(bytes: Uint8Array): { seq: string; data: Uint8Array } {\n const reader = new BinaryReader(bytes);\n const end = reader.len;\n let seq = \"0\";\n let data = new Uint8Array(0);\n while (reader.pos < end) {\n const tag = reader.uint32();\n if (tag >>> 3 === 2 && tag === 16) {\n seq = reader.uint64().toString();\n continue;\n }\n if (tag >>> 3 === 3 && tag === 26) {\n // Copy into a fresh ArrayBuffer-backed view: BinaryReader.bytes() returns\n // `Uint8Array<ArrayBufferLike>` (a view into the message buffer), which both\n // narrows the type to `Uint8Array<ArrayBuffer>` and isolates just this frame.\n data = new Uint8Array(reader.bytes());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) break;\n reader.skip(tag & 7);\n }\n return { seq, data };\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  // src/lib/cn.ts
2
4
  import { clsx } from "clsx";
3
5
  import { extendTailwindMerge } from "tailwind-merge";
@@ -28,4 +30,4 @@ function cn(...inputs) {
28
30
  export {
29
31
  cn
30
32
  };
31
- //# sourceMappingURL=chunk-22KP6LR5.js.map
33
+ //# sourceMappingURL=chunk-TXS65BB2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n/* ----------------------------------------------------------------------------\n tailwind-merge, taught our design tokens.\n\n Our type scale and color ramp share the `og-` prefix: `text-og-base` is a\n FONT SIZE, `text-og-fg-muted` is a COLOR. Stock tailwind-merge can't tell\n them apart — it lumps every `text-og-*` into one `font-size` group and, when\n two land in the same class list, drops the earlier one. That silently ate the\n size off rows like `text-og-base text-og-fg-muted`, leaving titles at the\n browser-default 16px. Register the custom font-size scale so the size and the\n color live in different conflict groups and both survive a merge.\n -------------------------------------------------------------------------- */\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n \"font-size\": [\n {\n text: [\n \"og-xs\",\n \"og-sm\",\n \"og-base\",\n \"og-md\",\n \"og-control\",\n \"og-menu\",\n \"og-composer\",\n \"og-composer-wide\",\n ],\n },\n ],\n },\n },\n});\n\n/** Merge class names with Tailwind-aware conflict resolution. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAAS,YAA6B;AACtC,SAAS,2BAA2B;AAapC,IAAM,UAAU,oBAAoB;AAAA,EAClC,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,aAAa;AAAA,QACX;AAAA,UACE,MAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAGM,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../src/lib/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n/* ----------------------------------------------------------------------------\n tailwind-merge, taught our design tokens.\n\n Our type scale and color ramp share the `og-` prefix: `text-og-base` is a\n FONT SIZE, `text-og-fg-muted` is a COLOR. Stock tailwind-merge can't tell\n them apart — it lumps every `text-og-*` into one `font-size` group and, when\n two land in the same class list, drops the earlier one. That silently ate the\n size off rows like `text-og-base text-og-fg-muted`, leaving titles at the\n browser-default 16px. Register the custom font-size scale so the size and the\n color live in different conflict groups and both survive a merge.\n -------------------------------------------------------------------------- */\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n \"font-size\": [\n {\n text: [\n \"og-xs\",\n \"og-sm\",\n \"og-base\",\n \"og-md\",\n \"og-control\",\n \"og-menu\",\n \"og-composer\",\n \"og-composer-wide\",\n ],\n },\n ],\n },\n },\n});\n\n/** Merge class names with Tailwind-aware conflict resolution. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;AAAA,SAAS,YAA6B;AACtC,SAAS,2BAA2B;AAapC,IAAM,UAAU,oBAAoB;AAAA,EAClC,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,aAAa;AAAA,QACX;AAAA,UACE,MAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAGM,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;","names":[]}
@@ -0,0 +1,63 @@
1
+ "use client";
2
+
3
+ // src/preview-loading-paint.ts
4
+ function paintPreviewLoading(context, width, height, time, ink, glowColor) {
5
+ context.clearRect(0, 0, width, height);
6
+ const cx = width * (0.5 + 0.13 * Math.sin(time * 0.21));
7
+ const cy = height * (0.5 + 0.12 * Math.cos(time * 0.27));
8
+ const glow = context.createRadialGradient(cx, cy, 0, cx, cy, Math.max(width, height) * 0.65);
9
+ glow.addColorStop(0, glowColor);
10
+ glow.addColorStop(1, "transparent");
11
+ context.globalAlpha = 0.09;
12
+ context.fillStyle = glow;
13
+ context.fillRect(0, 0, width, height);
14
+ const rows = Math.ceil(height / 18) + 7;
15
+ const cols = Math.ceil(width / 18) + 7;
16
+ const points = Array.from(
17
+ { length: rows },
18
+ (_row, r) => Array.from({ length: cols }, (_col, c) => {
19
+ const x = (c - 3) * 18;
20
+ const y = (r - 3) * 18;
21
+ const dist = Math.hypot((x - cx) * 0.8, y - cy);
22
+ const wave = Math.sin(dist * 0.032 - time * 0.95);
23
+ return {
24
+ x: x + (x - cx) / Math.max(dist, 1) * wave * 4,
25
+ y: y + (y - cy) / Math.max(dist, 1) * wave * 4,
26
+ l: Math.pow((wave + 1) / 2, 5)
27
+ };
28
+ })
29
+ );
30
+ context.strokeStyle = ink;
31
+ context.fillStyle = ink;
32
+ context.lineWidth = 0.65;
33
+ points.forEach(
34
+ (row, r) => row.forEach((p, c) => {
35
+ context.globalAlpha = 0.035 + p.l * 0.055;
36
+ context.beginPath();
37
+ if (c + 1 < cols) {
38
+ context.moveTo(p.x, p.y);
39
+ context.lineTo(row[c + 1].x, row[c + 1].y);
40
+ }
41
+ if (r + 1 < rows) {
42
+ context.moveTo(p.x, p.y);
43
+ context.lineTo(points[r + 1][c].x, points[r + 1][c].y);
44
+ }
45
+ context.stroke();
46
+ context.globalAlpha = 0.15 + p.l * 0.55;
47
+ context.beginPath();
48
+ context.arc(p.x, p.y, 0.85 + p.l * 0.65, 0, Math.PI * 2);
49
+ context.fill();
50
+ })
51
+ );
52
+ context.globalAlpha = 1;
53
+ }
54
+ var PREVIEW_LOADING_COLORS = {
55
+ dark: { ink: "#9fdccd", glow: "#5fb8a3", background: "#1b1b1b" },
56
+ light: { ink: "#5f8f84", glow: "#9fe3d3", background: "#f9f9f9" }
57
+ };
58
+
59
+ export {
60
+ paintPreviewLoading,
61
+ PREVIEW_LOADING_COLORS
62
+ };
63
+ //# sourceMappingURL=chunk-UNJPZGNK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/preview-loading-paint.ts"],"sourcesContent":["/**\n * One frame of the \"Preparing preview…\" ripple: a soft drifting glow under an\n * 18px lattice whose points swell along an outward wave. DOM-free and\n * self-contained (it closes over nothing), so the web canvas effect and the\n * native preview document (which embeds its source) draw the same thing.\n */\nexport function paintPreviewLoading(\n context: CanvasRenderingContext2D,\n width: number,\n height: number,\n time: number,\n ink: string,\n glowColor: string,\n): void {\n context.clearRect(0, 0, width, height);\n const cx = width * (0.5 + 0.13 * Math.sin(time * 0.21));\n const cy = height * (0.5 + 0.12 * Math.cos(time * 0.27));\n const glow = context.createRadialGradient(cx, cy, 0, cx, cy, Math.max(width, height) * 0.65);\n glow.addColorStop(0, glowColor);\n glow.addColorStop(1, \"transparent\");\n context.globalAlpha = 0.09;\n context.fillStyle = glow;\n context.fillRect(0, 0, width, height);\n const rows = Math.ceil(height / 18) + 7;\n const cols = Math.ceil(width / 18) + 7;\n const points = Array.from({ length: rows }, (_row, r) =>\n Array.from({ length: cols }, (_col, c) => {\n const x = (c - 3) * 18;\n const y = (r - 3) * 18;\n const dist = Math.hypot((x - cx) * 0.8, y - cy);\n const wave = Math.sin(dist * 0.032 - time * 0.95);\n return {\n x: x + ((x - cx) / Math.max(dist, 1)) * wave * 4,\n y: y + ((y - cy) / Math.max(dist, 1)) * wave * 4,\n l: Math.pow((wave + 1) / 2, 5),\n };\n }),\n );\n context.strokeStyle = ink;\n context.fillStyle = ink;\n context.lineWidth = 0.65;\n points.forEach((row, r) =>\n row.forEach((p, c) => {\n context.globalAlpha = 0.035 + p.l * 0.055;\n context.beginPath();\n if (c + 1 < cols) {\n context.moveTo(p.x, p.y);\n context.lineTo(row[c + 1]!.x, row[c + 1]!.y);\n }\n if (r + 1 < rows) {\n context.moveTo(p.x, p.y);\n context.lineTo(points[r + 1]![c]!.x, points[r + 1]![c]!.y);\n }\n context.stroke();\n context.globalAlpha = 0.15 + p.l * 0.55;\n context.beginPath();\n context.arc(p.x, p.y, 0.85 + p.l * 0.65, 0, Math.PI * 2);\n context.fill();\n }),\n );\n context.globalAlpha = 1;\n}\n\n/** The ripple's private ink and glow, tuned to the app's teal on a neutral ground. */\nexport const PREVIEW_LOADING_COLORS = {\n dark: { ink: \"#9fdccd\", glow: \"#5fb8a3\", background: \"#1b1b1b\" },\n light: { ink: \"#5f8f84\", glow: \"#9fe3d3\", background: \"#f9f9f9\" },\n} as const;\n"],"mappings":";;;AAMO,SAAS,oBACd,SACA,OACA,QACA,MACA,KACA,WACM;AACN,UAAQ,UAAU,GAAG,GAAG,OAAO,MAAM;AACrC,QAAM,KAAK,SAAS,MAAM,OAAO,KAAK,IAAI,OAAO,IAAI;AACrD,QAAM,KAAK,UAAU,MAAM,OAAO,KAAK,IAAI,OAAO,IAAI;AACtD,QAAM,OAAO,QAAQ,qBAAqB,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAC3F,OAAK,aAAa,GAAG,SAAS;AAC9B,OAAK,aAAa,GAAG,aAAa;AAClC,UAAQ,cAAc;AACtB,UAAQ,YAAY;AACpB,UAAQ,SAAS,GAAG,GAAG,OAAO,MAAM;AACpC,QAAM,OAAO,KAAK,KAAK,SAAS,EAAE,IAAI;AACtC,QAAM,OAAO,KAAK,KAAK,QAAQ,EAAE,IAAI;AACrC,QAAM,SAAS,MAAM;AAAA,IAAK,EAAE,QAAQ,KAAK;AAAA,IAAG,CAAC,MAAM,MACjD,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC,MAAM,MAAM;AACxC,YAAM,KAAK,IAAI,KAAK;AACpB,YAAM,KAAK,IAAI,KAAK;AACpB,YAAM,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,IAAI,EAAE;AAC9C,YAAM,OAAO,KAAK,IAAI,OAAO,QAAQ,OAAO,IAAI;AAChD,aAAO;AAAA,QACL,GAAG,KAAM,IAAI,MAAM,KAAK,IAAI,MAAM,CAAC,IAAK,OAAO;AAAA,QAC/C,GAAG,KAAM,IAAI,MAAM,KAAK,IAAI,MAAM,CAAC,IAAK,OAAO;AAAA,QAC/C,GAAG,KAAK,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AACA,UAAQ,cAAc;AACtB,UAAQ,YAAY;AACpB,UAAQ,YAAY;AACpB,SAAO;AAAA,IAAQ,CAAC,KAAK,MACnB,IAAI,QAAQ,CAAC,GAAG,MAAM;AACpB,cAAQ,cAAc,QAAQ,EAAE,IAAI;AACpC,cAAQ,UAAU;AAClB,UAAI,IAAI,IAAI,MAAM;AAChB,gBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC;AACvB,gBAAQ,OAAO,IAAI,IAAI,CAAC,EAAG,GAAG,IAAI,IAAI,CAAC,EAAG,CAAC;AAAA,MAC7C;AACA,UAAI,IAAI,IAAI,MAAM;AAChB,gBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC;AACvB,gBAAQ,OAAO,OAAO,IAAI,CAAC,EAAG,CAAC,EAAG,GAAG,OAAO,IAAI,CAAC,EAAG,CAAC,EAAG,CAAC;AAAA,MAC3D;AACA,cAAQ,OAAO;AACf,cAAQ,cAAc,OAAO,EAAE,IAAI;AACnC,cAAQ,UAAU;AAClB,cAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,MAAM,GAAG,KAAK,KAAK,CAAC;AACvD,cAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AACA,UAAQ,cAAc;AACxB;AAGO,IAAM,yBAAyB;AAAA,EACpC,MAAM,EAAE,KAAK,WAAW,MAAM,WAAW,YAAY,UAAU;AAAA,EAC/D,OAAO,EAAE,KAAK,WAAW,MAAM,WAAW,YAAY,UAAU;AAClE;","names":[]}