@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,413 @@
1
+ import { OpenGeniApiError } from "@opengeni/sdk";
2
+ import {
3
+ AlertTriangleIcon,
4
+ ArrowLeftIcon,
5
+ ChevronDownIcon,
6
+ FileIcon,
7
+ FilePenLineIcon,
8
+ GalleryHorizontalEndIcon,
9
+ ImageIcon,
10
+ Loader2Icon,
11
+ PanelsTopLeftIcon,
12
+ RotateCcwIcon,
13
+ Table2Icon,
14
+ XIcon,
15
+ } from "lucide-react";
16
+ import {
17
+ createContext,
18
+ forwardRef,
19
+ useContext,
20
+ useMemo,
21
+ type ComponentProps,
22
+ type ReactNode,
23
+ } from "react";
24
+
25
+ import { cn } from "../../lib/cn";
26
+
27
+ /**
28
+ * Shared chrome for artifact surfaces: the Opengeni console and embedding hosts
29
+ * render the same header, controls, and load states. Class names use the
30
+ * package theme aliases, so the console's own Tailwind build and the compiled
31
+ * `.og-root` stylesheet resolve them identically.
32
+ */
33
+
34
+ export type ArtifactKind = "document" | "spreadsheet" | "presentation" | "site" | "image" | "file";
35
+
36
+ const BUTTON_BASE =
37
+ "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";
38
+ const BUTTON_VARIANT = {
39
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
40
+ outline:
41
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-border dark:bg-input/30 dark:hover:bg-input/50",
42
+ } as const;
43
+ const BUTTON_SIZE = {
44
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
45
+ icon: "size-9",
46
+ "icon-sm": "size-8",
47
+ } as const;
48
+
49
+ export function ArtifactButton({
50
+ variant = "ghost",
51
+ size = "sm",
52
+ className,
53
+ type = "button",
54
+ ...props
55
+ }: ComponentProps<"button"> & {
56
+ variant?: keyof typeof BUTTON_VARIANT;
57
+ size?: keyof typeof BUTTON_SIZE;
58
+ }) {
59
+ return (
60
+ <button
61
+ type={type}
62
+ className={cn(BUTTON_BASE, BUTTON_VARIANT[variant], BUTTON_SIZE[size], className)}
63
+ {...props}
64
+ />
65
+ );
66
+ }
67
+
68
+ export function ArtifactBadge({ className, ...props }: ComponentProps<"span">) {
69
+ return (
70
+ <span
71
+ className={cn(
72
+ "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",
73
+ className,
74
+ )}
75
+ {...props}
76
+ />
77
+ );
78
+ }
79
+
80
+ export const ArtifactSelect = forwardRef<HTMLSelectElement, ComponentProps<"select">>(
81
+ ({ className, children, ...props }, ref) => (
82
+ <span className="relative inline-block max-w-full">
83
+ <select
84
+ ref={ref}
85
+ className={cn(
86
+ "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",
87
+ className,
88
+ )}
89
+ {...props}
90
+ >
91
+ {children}
92
+ </select>
93
+ <ChevronDownIcon
94
+ aria-hidden="true"
95
+ className="pointer-events-none absolute right-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle"
96
+ />
97
+ </span>
98
+ ),
99
+ );
100
+ ArtifactSelect.displayName = "ArtifactSelect";
101
+
102
+ export function artifactKindIcon(kind: ArtifactKind): ReactNode {
103
+ if (kind === "image") return <ImageIcon className="size-4" />;
104
+ if (kind === "file") return <FileIcon className="size-4" />;
105
+ if (kind === "site") return <PanelsTopLeftIcon className="size-4" />;
106
+ if (kind === "document") return <FilePenLineIcon className="size-4" />;
107
+ if (kind === "spreadsheet") return <Table2Icon className="size-4" />;
108
+ return <GalleryHorizontalEndIcon className="size-4" />;
109
+ }
110
+
111
+ export function artifactKindSubtitle(kind: ArtifactKind): string {
112
+ if (kind === "site") return "Site · published preview";
113
+ if (kind === "image") return "Image · retained file";
114
+ if (kind === "file") return "File · retained file";
115
+ return `${kind[0]!.toUpperCase()}${kind.slice(1)} · shared editor`;
116
+ }
117
+
118
+ type LoadErrorCopy = Readonly<
119
+ Record<
120
+ "unavailable" | "invalid" | "transient",
121
+ {
122
+ title: string;
123
+ message: string;
124
+ }
125
+ >
126
+ >;
127
+
128
+ /**
129
+ * Every user-facing string in the artifact surfaces (inline Site preview, Site
130
+ * frame, viewer header and states). Hosts translate by passing a partial
131
+ * `labels` object; unspecified keys keep the English defaults.
132
+ */
133
+ export type ArtifactLabels = Readonly<{
134
+ back: string;
135
+ close: string;
136
+ /** Header title and loading copy until an artifact's title is known. */
137
+ opening: string;
138
+ /** Header title when an artifact cannot be opened. */
139
+ artifact: string;
140
+ startingEditor: string;
141
+ kindSubtitle: (kind: ArtifactKind) => string;
142
+ live: string;
143
+ reloadSite: string;
144
+ openFullScreen: string;
145
+ editWithAgent: string;
146
+ editShort: string;
147
+ preview: string;
148
+ loadPreview: string;
149
+ loadSitePreview: string;
150
+ siteVersion: string;
151
+ savedVersion: string;
152
+ version: (revision: number) => string;
153
+ openSite: string;
154
+ loadingSite: string;
155
+ siteArchived: string;
156
+ siteUnpublished: string;
157
+ siteReferenceInvalid: string;
158
+ siteLoadFailed: string;
159
+ retry: string;
160
+ tryAgain: string;
161
+ toolCount: (count: number) => string;
162
+ toolsAvailable: (count: number) => string;
163
+ sourceFileCount: (count: number) => string;
164
+ viewingDisabled: { title: string; message: string };
165
+ editorsMissing: { title: string; message: string };
166
+ siteErrors: LoadErrorCopy;
167
+ editableErrors: LoadErrorCopy;
168
+ reference: (id: string) => string;
169
+ }>;
170
+
171
+ export const DEFAULT_ARTIFACT_LABELS: ArtifactLabels = Object.freeze({
172
+ back: "Back",
173
+ close: "Close",
174
+ opening: "Opening artifact…",
175
+ artifact: "Artifact",
176
+ startingEditor: "Starting the secure editing session…",
177
+ kindSubtitle: (kind: ArtifactKind) => artifactKindSubtitle(kind),
178
+ live: "Live",
179
+ reloadSite: "Reload Site",
180
+ openFullScreen: "Open Site full screen",
181
+ editWithAgent: "Edit with Opengeni",
182
+ editShort: "Edit",
183
+ preview: "Preview",
184
+ loadPreview: "Load preview",
185
+ loadSitePreview: "Load Site preview",
186
+ siteVersion: "Site version",
187
+ savedVersion: "Saved version",
188
+ version: (revision: number) => `Version ${revision}`,
189
+ openSite: "Open Site",
190
+ loadingSite: "Loading Site…",
191
+ siteArchived: "This Site is archived.",
192
+ siteUnpublished: "This Site is archived or unpublished.",
193
+ siteReferenceInvalid: "This Site reference is invalid.",
194
+ siteLoadFailed: "Couldn’t load this Site.",
195
+ retry: "Retry",
196
+ tryAgain: "Try again",
197
+ toolCount: (count: number) => `${count} ${count === 1 ? "tool" : "tools"}`,
198
+ toolsAvailable: (count: number) => `${count} workspace tools available to this Site`,
199
+ sourceFileCount: (count: number) => `${count} source ${count === 1 ? "file" : "files"}`,
200
+ viewingDisabled: {
201
+ title: "Artifact viewing isn't enabled",
202
+ message: "This app doesn't serve editable artifacts yet.",
203
+ },
204
+ editorsMissing: {
205
+ title: "This artifact can't open here",
206
+ message: "This app hasn't installed the document, spreadsheet, and presentation editors.",
207
+ },
208
+ siteErrors: {
209
+ unavailable: {
210
+ title: "This Site isn't available",
211
+ message: "It may have been removed, or you may not have access.",
212
+ },
213
+ invalid: {
214
+ title: "This Site link isn't valid",
215
+ message: "Check the address and open a Site from your workspace library.",
216
+ },
217
+ transient: {
218
+ title: "Couldn't load this Site",
219
+ message: "A temporary problem prevented this Site from loading. Try again.",
220
+ },
221
+ },
222
+ editableErrors: {
223
+ unavailable: {
224
+ title: "This artifact isn't available",
225
+ message: "It may have been removed, or you may not have access.",
226
+ },
227
+ invalid: {
228
+ title: "This artifact link isn't valid",
229
+ message: "Check the address and open the artifact from your workspace library.",
230
+ },
231
+ transient: {
232
+ title: "Could not open this artifact",
233
+ message: "A temporary problem prevented this artifact from opening. Try again.",
234
+ },
235
+ },
236
+ reference: (id: string) => `Reference: ${id}`,
237
+ });
238
+
239
+ const ArtifactLabelsContext = createContext<ArtifactLabels>(DEFAULT_ARTIFACT_LABELS);
240
+
241
+ /** Translate every artifact surface below; nested providers override outer ones. */
242
+ export function ArtifactLabelsProvider({
243
+ labels,
244
+ children,
245
+ }: {
246
+ labels: Partial<ArtifactLabels> | undefined;
247
+ children: ReactNode;
248
+ }) {
249
+ const parent = useContext(ArtifactLabelsContext);
250
+ const value = useMemo(() => (labels ? { ...parent, ...labels } : parent), [labels, parent]);
251
+ return <ArtifactLabelsContext.Provider value={value}>{children}</ArtifactLabelsContext.Provider>;
252
+ }
253
+
254
+ export function useArtifactLabels(): ArtifactLabels {
255
+ return useContext(ArtifactLabelsContext);
256
+ }
257
+
258
+ /**
259
+ * One artifact header: optional Back, the kind tile, title (or a host-supplied
260
+ * title control), trailing actions, and optional Close. The console dock and
261
+ * embedded viewers share it.
262
+ */
263
+ export function ArtifactViewerHeader({
264
+ kind,
265
+ title,
266
+ subtitle,
267
+ titleSlot,
268
+ onBack,
269
+ backLabel,
270
+ actions,
271
+ onClose,
272
+ closeLabel,
273
+ }: Readonly<{
274
+ /** `null` while the host does not know the modality yet. */
275
+ kind: ArtifactKind | null;
276
+ title: string;
277
+ subtitle?: string | undefined;
278
+ /** Replaces the title text, for example with a picker. */
279
+ titleSlot?: ReactNode;
280
+ onBack?: (() => void) | undefined;
281
+ backLabel?: string | undefined;
282
+ actions?: ReactNode;
283
+ onClose?: (() => void) | undefined;
284
+ closeLabel?: string | undefined;
285
+ }>) {
286
+ const labels = useArtifactLabels();
287
+ backLabel ??= labels.back;
288
+ closeLabel ??= labels.close;
289
+ return (
290
+ <div
291
+ data-og-artifact-header=""
292
+ className="flex min-h-11 shrink-0 items-center gap-2 border-b border-border px-2"
293
+ >
294
+ {onBack ? (
295
+ <ArtifactButton size="icon-sm" aria-label={backLabel} title={backLabel} onClick={onBack}>
296
+ <ArrowLeftIcon className="size-4" />
297
+ </ArtifactButton>
298
+ ) : null}
299
+ <span className="flex size-7 shrink-0 items-center justify-center rounded-md bg-accent text-accent-foreground">
300
+ {kind ? artifactKindIcon(kind) : <FileIcon className="size-4" />}
301
+ </span>
302
+ {titleSlot ?? (
303
+ <div className="min-w-0 flex-1">
304
+ <p className="m-0 truncate text-sm font-medium">{title}</p>
305
+ {(subtitle ?? (kind ? labels.kindSubtitle(kind) : "")) ? (
306
+ <p className="m-0 truncate text-xs text-fg-subtle">
307
+ {subtitle ?? (kind ? labels.kindSubtitle(kind) : "")}
308
+ </p>
309
+ ) : null}
310
+ </div>
311
+ )}
312
+ {actions}
313
+ {onClose ? (
314
+ <ArtifactButton
315
+ size="icon-sm"
316
+ className="shrink-0"
317
+ aria-label={closeLabel}
318
+ title={closeLabel}
319
+ onClick={onClose}
320
+ >
321
+ <XIcon className="size-4" />
322
+ </ArtifactButton>
323
+ ) : null}
324
+ </div>
325
+ );
326
+ }
327
+
328
+ export function ArtifactLoading({ label }: { label: string }) {
329
+ return (
330
+ <section
331
+ role="status"
332
+ className="grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center"
333
+ >
334
+ <div className="max-w-sm rounded-lg border border-border bg-surface p-5 text-sm text-fg-muted">
335
+ <Loader2Icon aria-hidden className="mx-auto mb-3 size-5 animate-spin text-fg" />
336
+ {label}
337
+ </div>
338
+ </section>
339
+ );
340
+ }
341
+
342
+ export function ArtifactProblem({
343
+ view,
344
+ onRetry,
345
+ }: {
346
+ view: ArtifactLoadErrorView;
347
+ onRetry?: (() => void) | undefined;
348
+ }) {
349
+ const labels = useArtifactLabels();
350
+ return (
351
+ <section
352
+ role="alert"
353
+ className="grid h-full min-h-0 flex-1 grid-cols-[minmax(0,1fr)] place-items-center px-4 text-center"
354
+ >
355
+ <div className="w-full max-w-md rounded-lg border border-border bg-surface p-5">
356
+ <AlertTriangleIcon aria-hidden className="mx-auto mb-3 size-5 text-status-waiting" />
357
+ <h2 className="m-0 text-base font-semibold">{view.title}</h2>
358
+ <p className="mb-0 mt-2 text-sm leading-5 text-fg-muted">
359
+ {artifactLoadErrorMessage(view, labels)}
360
+ </p>
361
+ {view.retryable && onRetry ? (
362
+ <div className="mt-4 flex justify-center">
363
+ <ArtifactButton variant="outline" onClick={onRetry}>
364
+ <RotateCcwIcon aria-hidden="true" />
365
+ {labels.tryAgain}
366
+ </ArtifactButton>
367
+ </div>
368
+ ) : null}
369
+ </div>
370
+ </section>
371
+ );
372
+ }
373
+
374
+ export type ArtifactLoadErrorKind = "site" | "editable";
375
+
376
+ export type ArtifactLoadErrorView = Readonly<{
377
+ title: string;
378
+ message: string;
379
+ retryable: boolean;
380
+ correlationId?: string;
381
+ }>;
382
+
383
+ /** Site/editor load copy. Never surfaces raw Opengeni API status text. */
384
+ export function artifactLoadErrorView(
385
+ error: unknown,
386
+ kind: ArtifactLoadErrorKind,
387
+ labels: ArtifactLabels = DEFAULT_ARTIFACT_LABELS,
388
+ ): ArtifactLoadErrorView {
389
+ const copy = kind === "site" ? labels.siteErrors : labels.editableErrors;
390
+ const correlationId = error instanceof OpenGeniApiError ? error.correlationId : undefined;
391
+ const withSupport = (view: {
392
+ title: string;
393
+ message: string;
394
+ retryable: boolean;
395
+ }): ArtifactLoadErrorView => (correlationId ? { ...view, correlationId } : view);
396
+ if (error instanceof OpenGeniApiError) {
397
+ if (error.status === 401 || error.status === 403 || error.status === 404) {
398
+ return withSupport({ ...copy.unavailable, retryable: false });
399
+ }
400
+ if (error.status === 422) return withSupport({ ...copy.invalid, retryable: false });
401
+ return withSupport({ ...copy.transient, retryable: error.retryable });
402
+ }
403
+ return { ...copy.transient, retryable: true };
404
+ }
405
+
406
+ export function artifactLoadErrorMessage(
407
+ view: ArtifactLoadErrorView,
408
+ labels: ArtifactLabels = DEFAULT_ARTIFACT_LABELS,
409
+ ): string {
410
+ return view.correlationId
411
+ ? `${view.message} ${labels.reference(view.correlationId)}`
412
+ : view.message;
413
+ }
@@ -0,0 +1,193 @@
1
+ import {
2
+ ArrowLeftIcon,
3
+ Globe2Icon,
4
+ Maximize2Icon,
5
+ PlugZapIcon,
6
+ RefreshCwIcon,
7
+ SparklesIcon,
8
+ } from "lucide-react";
9
+ import { useLayoutEffect, useRef, useState, type ReactNode } from "react";
10
+ import type { SiteViewer } from "@opengeni/sdk";
11
+
12
+ import { cn } from "../../lib/cn";
13
+ import { ArtifactBadge, ArtifactButton, useArtifactLabels } from "./artifact-chrome";
14
+ import {
15
+ PublishedHtmlArtifactFrame,
16
+ type PublishedHtmlArtifactToolBridge,
17
+ } from "./published-html-artifact-frame";
18
+
19
+ export type ArtifactSandboxProps = {
20
+ html: string;
21
+ height?: number | undefined;
22
+ autoHeight?: boolean | undefined;
23
+ theme?: "light" | "dark" | undefined;
24
+ headerControls?: ReactNode | undefined;
25
+ title: string;
26
+ /** Hide the visible title/icon while retaining the accessible iframe title. */
27
+ showTitle?: boolean | undefined;
28
+ showLiveStatus?: boolean | undefined;
29
+ versionLabel?: string | undefined;
30
+ className?: string | undefined;
31
+ editDisabled?: boolean | undefined;
32
+ onEdit?: (() => void) | undefined;
33
+ toolBridge?: PublishedHtmlArtifactToolBridge | undefined;
34
+ /** Who is viewing, answered to the Site's `site.viewer` over the bridge. */
35
+ viewer?: SiteViewer | undefined;
36
+ connectedToolCount?: number | undefined;
37
+ sourceFileCount?: number | undefined;
38
+ fill?: boolean | undefined;
39
+ };
40
+
41
+ /**
42
+ * The Site/preview frame chrome shared by the console and embedding hosts:
43
+ * title, version and tool badges, live status, reload, and a full-screen mode
44
+ * that escapes the host's scroll containers through the modal top layer.
45
+ */
46
+ export function ArtifactSandbox(props: ArtifactSandboxProps) {
47
+ const labels = useArtifactLabels();
48
+ const [reloadKey, setReloadKey] = useState(0);
49
+ const [focused, setFocused] = useState(false);
50
+ const frameRef = useRef<HTMLDialogElement>(null);
51
+ const modalRef = useRef(false);
52
+ useLayoutEffect(() => {
53
+ const frame = frameRef.current;
54
+ if (!frame) return;
55
+ if (focused) {
56
+ // A fixed child of the chat timeline is still clipped and layered by its
57
+ // scroll pane and the sibling workspace dock. The modal top layer escapes
58
+ // both while keeping the live Site iframe mounted in the same DOM node.
59
+ frame.close();
60
+ frame.showModal();
61
+ modalRef.current = true;
62
+ } else if (modalRef.current) {
63
+ frame.close();
64
+ frame.show();
65
+ modalRef.current = false;
66
+ }
67
+ }, [focused]);
68
+ const reload = () => {
69
+ setReloadKey((value) => value + 1);
70
+ };
71
+ return (
72
+ <dialog
73
+ ref={frameRef}
74
+ open
75
+ aria-label={props.title}
76
+ data-artifact-fullscreen={focused || undefined}
77
+ onCancel={(event) => {
78
+ event.preventDefault();
79
+ setFocused(false);
80
+ }}
81
+ className={cn(
82
+ "og-root static m-0 w-full max-h-none max-w-none overflow-hidden rounded-2xl border border-border/80 bg-white p-0 text-left shadow-sm",
83
+ props.className,
84
+ props.fill && "flex min-h-0 flex-col",
85
+ focused &&
86
+ "fixed inset-0 z-50 flex h-dvh w-dvw flex-col rounded-none border-0 bg-surface shadow-none",
87
+ )}
88
+ >
89
+ <div
90
+ data-window-drag={focused || undefined}
91
+ className="flex min-h-12 shrink-0 items-center justify-between gap-3 border-b border-border/80 bg-surface/95 px-3 sm:px-4"
92
+ >
93
+ <div className="flex min-w-0 items-center gap-2.5">
94
+ {focused ? (
95
+ <ArtifactButton
96
+ variant="ghost"
97
+ size="sm"
98
+ className="h-8 shrink-0 px-2"
99
+ onClick={() => setFocused(false)}
100
+ >
101
+ <ArrowLeftIcon className="mr-2 size-3.5" />
102
+ {labels.back}
103
+ </ArtifactButton>
104
+ ) : null}
105
+ {!focused && props.showTitle !== false ? (
106
+ <span className="grid size-6 shrink-0 place-items-center rounded-md bg-surface-2 text-fg-muted">
107
+ <Globe2Icon className="size-3.5" />
108
+ </span>
109
+ ) : null}
110
+ {props.showTitle !== false && (
111
+ <span className="truncate text-xs font-semibold text-fg">{props.title}</span>
112
+ )}
113
+ {props.headerControls}
114
+ {props.versionLabel ? (
115
+ <ArtifactBadge className="hidden h-5 rounded-md border-border/80 px-1.5 text-2xs font-normal text-fg-muted sm:inline-flex">
116
+ {props.versionLabel}
117
+ </ArtifactBadge>
118
+ ) : null}
119
+ {props.connectedToolCount ? (
120
+ <ArtifactBadge
121
+ className="hidden h-5 max-w-40 gap-1 rounded-md border-border/80 px-1.5 text-2xs font-normal text-fg-muted sm:inline-flex"
122
+ title={labels.toolsAvailable(props.connectedToolCount)}
123
+ >
124
+ <PlugZapIcon className="size-3" />
125
+ {labels.toolCount(props.connectedToolCount)}
126
+ </ArtifactBadge>
127
+ ) : null}
128
+ {props.sourceFileCount ? (
129
+ <span className="hidden text-2xs text-fg-subtle xl:inline">
130
+ {labels.sourceFileCount(props.sourceFileCount)}
131
+ </span>
132
+ ) : null}
133
+ </div>
134
+ <div className="flex shrink-0 items-center gap-1">
135
+ {focused && props.onEdit ? (
136
+ <ArtifactButton
137
+ variant="ghost"
138
+ size="sm"
139
+ className="h-8 px-2"
140
+ disabled={props.editDisabled}
141
+ onClick={props.onEdit}
142
+ >
143
+ <SparklesIcon className="mr-2 size-3.5" />
144
+ <span className="hidden sm:inline">{labels.editWithAgent}</span>
145
+ <span className="sm:hidden">{labels.editShort}</span>
146
+ </ArtifactButton>
147
+ ) : null}
148
+ {props.showLiveStatus !== false && (
149
+ <span className="mr-1 hidden items-center gap-1.5 text-2xs font-medium text-fg-muted sm:inline-flex">
150
+ <span className="size-1.5 rounded-full bg-status-success ring-4 ring-status-success/10" />
151
+ {labels.live}
152
+ </span>
153
+ )}
154
+ <ArtifactButton
155
+ variant="ghost"
156
+ size="icon"
157
+ className="size-8 rounded-md text-fg-muted hover:text-fg"
158
+ aria-label={labels.reloadSite}
159
+ onClick={reload}
160
+ >
161
+ <RefreshCwIcon className="size-3.5" />
162
+ </ArtifactButton>
163
+ {!focused ? (
164
+ <ArtifactButton
165
+ variant="ghost"
166
+ size="icon"
167
+ className="size-8 rounded-md text-fg-muted hover:text-fg"
168
+ aria-label={labels.openFullScreen}
169
+ onClick={() => setFocused(true)}
170
+ >
171
+ <Maximize2Icon className="size-3.5" />
172
+ </ArtifactButton>
173
+ ) : null}
174
+ </div>
175
+ </div>
176
+ <PublishedHtmlArtifactFrame
177
+ key={reloadKey}
178
+ title={props.title}
179
+ html={props.html}
180
+ autoHeight={Boolean(props.autoHeight && !focused)}
181
+ {...(props.theme ? { theme: props.theme } : {})}
182
+ {...(!focused && props.height ? { style: { height: props.height } } : {})}
183
+ {...(props.toolBridge ? { toolBridge: props.toolBridge } : {})}
184
+ {...(props.viewer ? { viewer: props.viewer } : {})}
185
+ className={cn(
186
+ "block h-[clamp(30rem,62vh,48rem)] w-full border-0 bg-white",
187
+ props.fill && "h-0 min-h-0 flex-1",
188
+ focused && "min-h-0 flex-1",
189
+ )}
190
+ />
191
+ </dialog>
192
+ );
193
+ }
@@ -13,6 +13,8 @@ export type ArtifactModality = "spreadsheet" | "document" | "presentation";
13
13
  export type ArtifactSurfaceProps = {
14
14
  modality: ArtifactModality;
15
15
  title: string;
16
+ /** An embedding host may already provide the artifact title and navigation. */
17
+ showHeader?: boolean | undefined;
16
18
  subtitle?: ReactNode | undefined;
17
19
  actions?: ReactNode | undefined;
18
20
  children: ReactNode;
@@ -41,11 +43,12 @@ function ModalityIcon({ modality }: { modality: ArtifactModality }) {
41
43
  /**
42
44
  * Modality-neutral artifact chrome. It deliberately owns no file, session, or
43
45
  * persistence state: hosts can use the same surface for a local draft, a
44
- * durable OpenGeni artifact, or a collaborative projection.
46
+ * durable Opengeni artifact, or a collaborative projection.
45
47
  */
46
48
  export function ArtifactSurface({
47
49
  modality,
48
50
  title,
51
+ showHeader = true,
49
52
  subtitle,
50
53
  actions,
51
54
  children,
@@ -63,25 +66,42 @@ export function ArtifactSurface({
63
66
  className,
64
67
  )}
65
68
  >
66
- <header className="flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3">
67
- <span
68
- aria-hidden
69
- className="grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted"
70
- >
71
- <ModalityIcon modality={modality} />
72
- </span>
73
- <div className="min-w-0 flex-1">
74
- <h2 className="truncate text-og-base font-medium text-og-fg">{title}</h2>
75
- {subtitle ? <div className="truncate text-og-xs text-og-fg-muted">{subtitle}</div> : null}
76
- </div>
77
- {busy ? (
78
- <LoaderCircleIcon
79
- aria-label="Updating artifact"
80
- className="size-4 shrink-0 animate-spin text-og-fg-muted"
81
- />
82
- ) : null}
83
- {actions ? <div className="flex shrink-0 items-center gap-1">{actions}</div> : null}
84
- </header>
69
+ {showHeader ? (
70
+ <header className="flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3">
71
+ <span
72
+ aria-hidden
73
+ className="grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted"
74
+ >
75
+ <ModalityIcon modality={modality} />
76
+ </span>
77
+ <div className="min-w-0 flex-1">
78
+ <h2 className="truncate text-og-base font-medium text-og-fg">{title}</h2>
79
+ {subtitle ? (
80
+ <div className="truncate text-og-xs text-og-fg-muted">{subtitle}</div>
81
+ ) : null}
82
+ </div>
83
+ {busy ? (
84
+ <LoaderCircleIcon
85
+ aria-label="Updating artifact"
86
+ className="size-4 shrink-0 animate-spin text-og-fg-muted"
87
+ />
88
+ ) : null}
89
+ {actions ? <div className="flex shrink-0 items-center gap-1">{actions}</div> : null}
90
+ </header>
91
+ ) : (
92
+ <>
93
+ {typeof subtitle === "string" || typeof subtitle === "number" ? (
94
+ <span role="status" className="sr-only">
95
+ {subtitle}
96
+ </span>
97
+ ) : null}
98
+ {actions ? (
99
+ <div className="flex shrink-0 items-center justify-end gap-1 border-b border-og-border px-3 py-1">
100
+ {actions}
101
+ </div>
102
+ ) : null}
103
+ </>
104
+ )}
85
105
 
86
106
  <div className="min-h-0 min-w-0 flex-1">{children}</div>
87
107