@opengeni/react 3.3.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -1,3 +1,7 @@
1
+ "use client";
2
+ import {
3
+ useLatestTaskRunner
4
+ } from "./chunk-2DDJ6YH6.js";
1
5
  import {
2
6
  ArtifactSurface,
3
7
  EditableArtifactMessage,
@@ -6,10 +10,10 @@ import {
6
10
  editableArtifactProjectionKey,
7
11
  editableArtifactStatusLabel,
8
12
  useEditableArtifactView
9
- } from "./chunk-KCGXPP5V.js";
13
+ } from "./chunk-PYEOPA4M.js";
10
14
  import {
11
15
  cn
12
- } from "./chunk-22KP6LR5.js";
16
+ } from "./chunk-TXS65BB2.js";
13
17
 
14
18
  // src/components/artifacts/presentation-editor.tsx
15
19
  import {
@@ -37,6 +41,9 @@ var MAX_ZOOM = 4;
37
41
  var RAIL_ITEM_HEIGHT = 116;
38
42
  var RAIL_OVERSCAN = 3;
39
43
  var DEFAULT_RAIL_HEIGHT = 640;
44
+ var MOBILE_RAIL_ITEM_HEIGHT = 44;
45
+ var MOBILE_RAIL_OVERSCAN = 3;
46
+ var DEFAULT_MOBILE_LIST_HEIGHT = 264;
40
47
  var DEFAULT_VIEWPORT = { width: 960, height: 640 };
41
48
  var SPATIAL_TILE = 256;
42
49
  var MAX_SPATIAL_BUCKETS_PER_OBJECT = 1024;
@@ -87,6 +94,14 @@ function PresentationProjectionEditor({
87
94
  }
88
95
  );
89
96
  }
97
+ function nextSlideIndexFromKey(key, activeIndex, length) {
98
+ if (length === 0) return null;
99
+ if (key === "ArrowDown") return Math.min(length - 1, activeIndex + 1);
100
+ if (key === "ArrowUp") return Math.max(0, activeIndex - 1);
101
+ if (key === "Home") return 0;
102
+ if (key === "End") return length - 1;
103
+ return null;
104
+ }
90
105
  function PresentationEditorCore({
91
106
  presentation,
92
107
  revision,
@@ -97,6 +112,7 @@ function PresentationEditorCore({
97
112
  zoom: controlledZoom,
98
113
  defaultZoom = 0.75,
99
114
  readOnly = false,
115
+ authoringBlockedReason,
100
116
  className,
101
117
  onSlideChange,
102
118
  onSelectionChange,
@@ -104,6 +120,8 @@ function PresentationEditorCore({
104
120
  onCommandError,
105
121
  onZoomChange
106
122
  }) {
123
+ const mutationsBlocked = readOnly || authoringBlockedReason !== void 0;
124
+ const authoringStatus = readOnly ? null : authoringBlockedReason === "pending_conflict" ? "An earlier change needs attention" : authoringBlockedReason === "prior_writer" ? "Saving earlier changes\u2026" : null;
107
125
  const slides = presentation.slides.items;
108
126
  const firstSlideId = slides[0]?.id ?? null;
109
127
  const [localSlideId, setLocalSlideId] = useState(
@@ -125,6 +143,11 @@ function PresentationEditorCore({
125
143
  scrollTop: 0,
126
144
  height: DEFAULT_RAIL_HEIGHT
127
145
  });
146
+ const [mobileSelectorOpen, setMobileSelectorOpen] = useState(false);
147
+ const [mobileRail, setMobileRail] = useState({
148
+ scrollTop: 0,
149
+ height: DEFAULT_MOBILE_LIST_HEIGHT
150
+ });
128
151
  const [viewport, setViewport] = useState({
129
152
  scrollLeft: 0,
130
153
  scrollTop: 0,
@@ -137,6 +160,9 @@ function PresentationEditorCore({
137
160
  const [textDraft, setTextDraft] = useState("");
138
161
  const [paintEpoch, setPaintEpoch] = useState(0);
139
162
  const railRef = useRef(null);
163
+ const mobileSelectorTriggerRef = useRef(null);
164
+ const mobileSelectorPanelRef = useRef(null);
165
+ const mobileRailRef = useRef(null);
140
166
  const viewportRef = useRef(null);
141
167
  const stageRef = useRef(null);
142
168
  const canvasRef = useRef(null);
@@ -150,6 +176,7 @@ function PresentationEditorCore({
150
176
  const commandVersionsRef = useRef(/* @__PURE__ */ new Map());
151
177
  const pendingSlideIdRef = useRef(null);
152
178
  const pendingObjectIdRef = useRef(null);
179
+ const mobileRailScrollOnOpenRef = useRef(0);
153
180
  const domId = useId().replaceAll(":", "");
154
181
  const selectionProxyId = `${domId}-presentation-selection`;
155
182
  const instructionsId = `${domId}-presentation-instructions`;
@@ -208,6 +235,44 @@ function PresentationEditorCore({
208
235
  observer.observe(element);
209
236
  return () => observer.disconnect();
210
237
  }, []);
238
+ useLayoutEffect(() => {
239
+ if (!mobileSelectorOpen) return;
240
+ const element = mobileRailRef.current;
241
+ if (!element) return;
242
+ element.scrollTop = mobileRailScrollOnOpenRef.current;
243
+ element.focus();
244
+ const measure = () => setMobileRail((current) => ({
245
+ scrollTop: element.scrollTop,
246
+ height: element.clientHeight || current.height
247
+ }));
248
+ measure();
249
+ if (typeof ResizeObserver === "undefined") return;
250
+ const observer = new ResizeObserver(measure);
251
+ observer.observe(element);
252
+ return () => observer.disconnect();
253
+ }, [mobileSelectorOpen]);
254
+ useEffect(() => {
255
+ if (!mobileSelectorOpen) return;
256
+ const onPointerDown = (event) => {
257
+ const target = event.target;
258
+ if (!(target instanceof Node)) return;
259
+ if (mobileSelectorTriggerRef.current?.contains(target)) return;
260
+ if (mobileSelectorPanelRef.current?.contains(target)) return;
261
+ setMobileSelectorOpen(false);
262
+ };
263
+ const onKeyDown = (event) => {
264
+ if (event.key !== "Escape") return;
265
+ event.preventDefault();
266
+ setMobileSelectorOpen(false);
267
+ mobileSelectorTriggerRef.current?.focus();
268
+ };
269
+ document.addEventListener("pointerdown", onPointerDown);
270
+ document.addEventListener("keydown", onKeyDown);
271
+ return () => {
272
+ document.removeEventListener("pointerdown", onPointerDown);
273
+ document.removeEventListener("keydown", onKeyDown);
274
+ };
275
+ }, [mobileSelectorOpen]);
211
276
  useLayoutEffect(() => {
212
277
  const element = viewportRef.current;
213
278
  if (!element) return;
@@ -419,7 +484,7 @@ function PresentationEditorCore({
419
484
  ]);
420
485
  const runCommit = useCallback(
421
486
  (key, command, rollback, retry) => {
422
- if (!onCommit) return;
487
+ if (mutationsBlocked || !onCommit) return;
423
488
  const version = (commandVersionsRef.current.get(key) ?? 0) + 1;
424
489
  commandVersionsRef.current.set(key, version);
425
490
  const scope = commandScopeRef.current;
@@ -455,11 +520,11 @@ function PresentationEditorCore({
455
520
  }
456
521
  );
457
522
  },
458
- [onCommandError, onCommit]
523
+ [mutationsBlocked, onCommandError, onCommit]
459
524
  );
460
525
  const commitPosition = useCallback(
461
526
  (entry, kind, next) => {
462
- if (!activeSlide || readOnly || entry.readOnly) return;
527
+ if (!activeSlide || mutationsBlocked || entry.readOnly) return;
463
528
  const before = copyPosition(entry.object.position);
464
529
  const after = normalizeEditorPosition(next);
465
530
  if (samePosition(before, after)) return;
@@ -487,10 +552,10 @@ function PresentationEditorCore({
487
552
  );
488
553
  submit();
489
554
  },
490
- [activeSlide, readOnly, runCommit]
555
+ [activeSlide, mutationsBlocked, runCommit]
491
556
  );
492
557
  const insertSlide = useCallback(() => {
493
- if (readOnly) return;
558
+ if (mutationsBlocked) return;
494
559
  const slideId = randomPresentationId();
495
560
  const index = activeIndex < 0 ? slides.length : activeIndex + 1;
496
561
  const command = { kind: "slide-insert", slideId, index };
@@ -506,9 +571,9 @@ function PresentationEditorCore({
506
571
  );
507
572
  };
508
573
  submit();
509
- }, [activeIndex, readOnly, runCommit, slides.length]);
574
+ }, [activeIndex, mutationsBlocked, runCommit, slides.length]);
510
575
  const deleteSlide = useCallback(() => {
511
- if (readOnly || !activeSlide) return;
576
+ if (mutationsBlocked || !activeSlide) return;
512
577
  const command = {
513
578
  kind: "slide-delete",
514
579
  slideId: activeSlide.id,
@@ -516,9 +581,9 @@ function PresentationEditorCore({
516
581
  };
517
582
  const submit = () => runCommit(`slide-delete:${activeSlide.id}`, command, () => void 0, submit);
518
583
  submit();
519
- }, [activeIndex, activeSlide, readOnly, runCommit]);
584
+ }, [activeIndex, activeSlide, mutationsBlocked, runCommit]);
520
585
  const insertTextBox = useCallback(() => {
521
- if (readOnly || !activeSlide) return;
586
+ if (mutationsBlocked || !activeSlide) return;
522
587
  const objectId = randomPresentationId();
523
588
  const position = nextTextBoxPosition(objects, presentation.slideSize);
524
589
  const command = {
@@ -540,9 +605,9 @@ function PresentationEditorCore({
540
605
  );
541
606
  };
542
607
  submit();
543
- }, [activeSlide, objects, presentation.slideSize, readOnly, runCommit]);
608
+ }, [activeSlide, objects, presentation.slideSize, mutationsBlocked, runCommit]);
544
609
  const deleteObject = useCallback(() => {
545
- if (readOnly || !activeSlide || !selected || selected.readOnly) return;
610
+ if (mutationsBlocked || !activeSlide || !selected || selected.readOnly) return;
546
611
  const command = {
547
612
  kind: "object-delete",
548
613
  slideId: activeSlide.id,
@@ -550,10 +615,10 @@ function PresentationEditorCore({
550
615
  };
551
616
  const submit = () => runCommit(`object-delete:${activeSlide.id}:${selected.id}`, command, () => void 0, submit);
552
617
  submit();
553
- }, [activeSlide, readOnly, runCommit, selected]);
618
+ }, [activeSlide, mutationsBlocked, runCommit, selected]);
554
619
  const startTextEdit = useCallback(
555
620
  (entry) => {
556
- if (readOnly || !entry || entry.readOnly || entry.kind !== "shape") return;
621
+ if (mutationsBlocked || !entry || entry.readOnly || entry.kind !== "shape") return;
557
622
  const shape = entry.object;
558
623
  if (shape.geometry === "line") return;
559
624
  const before = shape.text.toString();
@@ -563,7 +628,7 @@ function PresentationEditorCore({
563
628
  setTextEdit(edit);
564
629
  setTextDraft(before);
565
630
  },
566
- [activeSlide, readOnly]
631
+ [activeSlide, mutationsBlocked]
567
632
  );
568
633
  useEffect(() => {
569
634
  if (!textEdit) return;
@@ -573,12 +638,12 @@ function PresentationEditorCore({
573
638
  const finishTextEdit = useCallback(
574
639
  (cancel = false) => {
575
640
  const edit = textEditRef.current;
576
- if (!edit) return;
641
+ if (!edit || !cancel && authoringBlockedReason !== void 0) return;
577
642
  textEditRef.current = null;
578
643
  setTextEdit(null);
579
644
  const { shape, before, slideId } = edit;
580
645
  if (!activeSlide || activeSlide.id !== slideId) return;
581
- if (cancel || readOnly || before === textDraft) return;
646
+ if (cancel || mutationsBlocked || before === textDraft) return;
582
647
  shape.text.set(textDraft);
583
648
  setModelEpoch((value) => value + 1);
584
649
  const command = {
@@ -603,7 +668,7 @@ function PresentationEditorCore({
603
668
  );
604
669
  submit();
605
670
  },
606
- [activeSlide, readOnly, runCommit, textDraft]
671
+ [activeSlide, authoringBlockedReason, mutationsBlocked, runCommit, textDraft]
607
672
  );
608
673
  const cycleObject = useCallback(
609
674
  (direction) => {
@@ -623,6 +688,32 @@ function PresentationEditorCore({
623
688
  },
624
689
  [activeIndex, activeSlide, selectSlide, slides]
625
690
  );
691
+ const toggleMobileSlideSelector = useCallback(() => {
692
+ setMobileSelectorOpen((open) => {
693
+ if (open) return false;
694
+ const index = Math.max(0, activeIndex);
695
+ const height = DEFAULT_MOBILE_LIST_HEIGHT;
696
+ const maxScroll = Math.max(0, slides.length * MOBILE_RAIL_ITEM_HEIGHT - height);
697
+ const scrollTop = Math.max(
698
+ 0,
699
+ Math.min(
700
+ maxScroll,
701
+ index * MOBILE_RAIL_ITEM_HEIGHT - height / 2 + MOBILE_RAIL_ITEM_HEIGHT / 2
702
+ )
703
+ );
704
+ mobileRailScrollOnOpenRef.current = scrollTop;
705
+ setMobileRail({ scrollTop, height });
706
+ return true;
707
+ });
708
+ }, [activeIndex, slides.length]);
709
+ const chooseMobileSlide = useCallback(
710
+ (slide, index) => {
711
+ if (slide !== activeSlide) selectSlide(slide, index);
712
+ setMobileSelectorOpen(false);
713
+ mobileSelectorTriggerRef.current?.focus();
714
+ },
715
+ [activeSlide, selectSlide]
716
+ );
626
717
  const handleCanvasKeyDown = useCallback(
627
718
  (event) => {
628
719
  if (event.metaKey || event.ctrlKey) {
@@ -672,7 +763,7 @@ function PresentationEditorCore({
672
763
  }
673
764
  if (!selected || !event.key.startsWith("Arrow")) return;
674
765
  event.preventDefault();
675
- if (readOnly || selected.readOnly) return;
766
+ if (mutationsBlocked || selected.readOnly) return;
676
767
  const amount = event.shiftKey ? 10 : 1;
677
768
  const dx = event.key === "ArrowLeft" ? -amount : event.key === "ArrowRight" ? amount : 0;
678
769
  const dy = event.key === "ArrowUp" ? -amount : event.key === "ArrowDown" ? amount : 0;
@@ -693,7 +784,7 @@ function PresentationEditorCore({
693
784
  commitPosition,
694
785
  cycleObject,
695
786
  fitSlide,
696
- readOnly,
787
+ mutationsBlocked,
697
788
  selectObject,
698
789
  selected,
699
790
  startTextEdit,
@@ -717,7 +808,7 @@ function PresentationEditorCore({
717
808
  event.preventDefault();
718
809
  event.stopPropagation();
719
810
  selectObject(entry);
720
- if (readOnly || entry.readOnly) return;
811
+ if (mutationsBlocked || entry.readOnly) return;
721
812
  const start = pointFromPointer(event);
722
813
  const before = copyPosition(entry.object.position);
723
814
  dragRef.current = {
@@ -731,7 +822,7 @@ function PresentationEditorCore({
731
822
  setDraftPosition({ objectId: entry.id, position: before });
732
823
  overlayRef.current?.setPointerCapture?.(event.pointerId);
733
824
  },
734
- [pointFromPointer, readOnly, selectObject]
825
+ [pointFromPointer, mutationsBlocked, selectObject]
735
826
  );
736
827
  const handlePointerDown = useCallback(
737
828
  (event) => {
@@ -749,16 +840,17 @@ function PresentationEditorCore({
749
840
  const handlePointerMove = useCallback(
750
841
  (event) => {
751
842
  const drag = dragRef.current;
752
- if (!drag || drag.pointerId !== event.pointerId) return;
843
+ if (!drag || drag.pointerId !== event.pointerId || mutationsBlocked) return;
753
844
  const point = pointFromPointer(event);
754
845
  setDraftPosition({ objectId: drag.object.id, position: positionFromDrag(drag, point) });
755
846
  },
756
- [pointFromPointer]
847
+ [mutationsBlocked, pointFromPointer]
757
848
  );
758
849
  const finishDrag = useCallback(
759
850
  (event, cancel = false) => {
760
851
  const drag = dragRef.current;
761
- if (!drag || drag.pointerId !== event.pointerId) return;
852
+ if (!drag || drag.pointerId !== event.pointerId || !cancel && authoringBlockedReason !== void 0)
853
+ return;
762
854
  dragRef.current = null;
763
855
  const captureTarget = overlayRef.current;
764
856
  if (captureTarget?.hasPointerCapture?.(event.pointerId)) {
@@ -771,19 +863,32 @@ function PresentationEditorCore({
771
863
  const point = pointFromPointer(event);
772
864
  commitPosition(entry, drag.mode, positionFromDrag(drag, point));
773
865
  },
774
- [commitPosition, objectById, pointFromPointer]
866
+ [authoringBlockedReason, commitPosition, objectById, pointFromPointer]
867
+ );
868
+ const handleLostPointerCapture = useCallback(
869
+ (event) => {
870
+ const drag = dragRef.current;
871
+ if (!drag || drag.pointerId !== event.pointerId || authoringBlockedReason !== void 0)
872
+ return;
873
+ dragRef.current = null;
874
+ setDraftPosition(null);
875
+ },
876
+ [authoringBlockedReason]
775
877
  );
776
- const handleLostPointerCapture = useCallback((event) => {
777
- const drag = dragRef.current;
778
- if (!drag || drag.pointerId !== event.pointerId) return;
779
- dragRef.current = null;
780
- setDraftPosition(null);
781
- }, []);
782
878
  const railStart = Math.max(0, Math.floor(rail.scrollTop / RAIL_ITEM_HEIGHT) - RAIL_OVERSCAN);
783
879
  const railEnd = Math.min(
784
880
  slides.length,
785
881
  Math.ceil((rail.scrollTop + rail.height) / RAIL_ITEM_HEIGHT) + RAIL_OVERSCAN
786
882
  );
883
+ const mobileRailStart = Math.max(
884
+ 0,
885
+ Math.floor(mobileRail.scrollTop / MOBILE_RAIL_ITEM_HEIGHT) - MOBILE_RAIL_OVERSCAN
886
+ );
887
+ const mobileRailEnd = Math.min(
888
+ slides.length,
889
+ Math.ceil((mobileRail.scrollTop + mobileRail.height) / MOBILE_RAIL_ITEM_HEIGHT) + MOBILE_RAIL_OVERSCAN
890
+ );
891
+ const slideCountLabel = activeIndex >= 0 ? `${activeIndex + 1} / ${slides.length}` : `0 / ${slides.length}`;
787
892
  const stageWidth = presentation.slideSize.width * zoom;
788
893
  const stageHeight = presentation.slideSize.height * zoom;
789
894
  return /* @__PURE__ */ jsxs(
@@ -793,8 +898,8 @@ function PresentationEditorCore({
793
898
  style: { minHeight: "22rem" },
794
899
  "data-og-presentation-editor": true,
795
900
  "data-og-painted-object-count": visibleObjectIndexes.length,
796
- "data-og-command-state": commandFailure ? "error" : pendingCommands > 0 ? "pending" : "idle",
797
- "aria-busy": pendingCommands > 0 ? "true" : void 0,
901
+ "data-og-command-state": commandFailure || authoringBlockedReason === "pending_conflict" ? "error" : pendingCommands > 0 || authoringBlockedReason === "prior_writer" ? "pending" : "idle",
902
+ "aria-busy": pendingCommands > 0 || authoringBlockedReason === "prior_writer" ? "true" : void 0,
798
903
  children: [
799
904
  /* @__PURE__ */ jsxs(
800
905
  "div",
@@ -815,7 +920,23 @@ function PresentationEditorCore({
815
920
  children: /* @__PURE__ */ jsx(ChevronLeftIcon, {})
816
921
  }
817
922
  ),
818
- /* @__PURE__ */ jsx("span", { className: "min-w-16 shrink-0 text-center text-og-xs tabular-nums text-og-fg-muted", children: activeIndex >= 0 ? `${activeIndex + 1} / ${slides.length}` : `0 / ${slides.length}` }),
923
+ /* @__PURE__ */ jsx(
924
+ "button",
925
+ {
926
+ ref: mobileSelectorTriggerRef,
927
+ type: "button",
928
+ "aria-label": "Choose slide",
929
+ "aria-haspopup": "listbox",
930
+ "aria-expanded": mobileSelectorOpen,
931
+ "aria-controls": mobileSelectorOpen ? `${domId}-mobile-slides` : void 0,
932
+ disabled: slides.length === 0,
933
+ "data-og-mobile-slide-selector": true,
934
+ onClick: toggleMobileSlideSelector,
935
+ className: "inline-flex min-h-11 min-w-16 shrink-0 items-center justify-center rounded-og-sm px-2 text-og-xs tabular-nums text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 sm:hidden",
936
+ children: /* @__PURE__ */ jsx("span", { children: slideCountLabel })
937
+ }
938
+ ),
939
+ /* @__PURE__ */ jsx("span", { className: "hidden min-w-16 shrink-0 text-center text-og-xs tabular-nums text-og-fg-muted sm:inline", children: slideCountLabel }),
819
940
  /* @__PURE__ */ jsx(
820
941
  "button",
821
942
  {
@@ -832,7 +953,7 @@ function PresentationEditorCore({
832
953
  {
833
954
  type: "button",
834
955
  "aria-label": "Add slide",
835
- disabled: readOnly,
956
+ disabled: mutationsBlocked,
836
957
  onClick: insertSlide,
837
958
  className: "ml-0.5 grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 [&>svg]:size-3.5",
838
959
  children: /* @__PURE__ */ jsx(FilePlus2Icon, {})
@@ -843,7 +964,7 @@ function PresentationEditorCore({
843
964
  {
844
965
  type: "button",
845
966
  "aria-label": "Delete slide",
846
- disabled: readOnly || !activeSlide,
967
+ disabled: mutationsBlocked || !activeSlide,
847
968
  onClick: deleteSlide,
848
969
  className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-status-failed disabled:opacity-35 [&>svg]:size-3.5",
849
970
  children: /* @__PURE__ */ jsx(Trash2Icon, {})
@@ -890,7 +1011,7 @@ function PresentationEditorCore({
890
1011
  {
891
1012
  type: "button",
892
1013
  "aria-label": "Add text box",
893
- disabled: readOnly || !activeSlide,
1014
+ disabled: mutationsBlocked || !activeSlide,
894
1015
  onClick: insertTextBox,
895
1016
  className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 [&>svg]:size-3.5",
896
1017
  children: /* @__PURE__ */ jsx(TypeIcon, {})
@@ -901,7 +1022,7 @@ function PresentationEditorCore({
901
1022
  {
902
1023
  type: "button",
903
1024
  "aria-label": "Delete selected object",
904
- disabled: readOnly || !selected || selected.readOnly,
1025
+ disabled: mutationsBlocked || !selected || selected.readOnly,
905
1026
  onClick: deleteObject,
906
1027
  className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-status-failed disabled:opacity-35 [&>svg]:size-3.5",
907
1028
  children: /* @__PURE__ */ jsx(Trash2Icon, {})
@@ -912,15 +1033,15 @@ function PresentationEditorCore({
912
1033
  "span",
913
1034
  {
914
1035
  className: "hidden max-w-44 shrink-0 truncate border-l border-og-border px-2 text-og-xs text-og-fg-subtle sm:block",
915
- title: commandFailure ? "Change not saved" : pendingCommands > 0 ? "Saving\u2026" : readOnly ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit",
916
- children: commandFailure ? "Change not saved" : pendingCommands > 0 ? "Saving\u2026" : readOnly ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit"
1036
+ title: commandFailure ? "Change not saved" : authoringStatus ? authoringStatus : pendingCommands > 0 ? "Saving\u2026" : mutationsBlocked ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit",
1037
+ children: commandFailure ? "Change not saved" : authoringStatus ? authoringStatus : pendingCommands > 0 ? "Saving\u2026" : mutationsBlocked ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit"
917
1038
  }
918
1039
  )
919
1040
  ]
920
1041
  }
921
1042
  ),
922
- /* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: commandFailure?.message ?? (pendingCommands > 0 ? "Saving presentation changes" : "") }),
923
- /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 min-w-0 flex-1", children: [
1043
+ /* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: commandFailure?.message ?? authoringStatus ?? (pendingCommands > 0 ? "Saving presentation changes" : "") }),
1044
+ /* @__PURE__ */ jsxs("div", { className: "relative flex min-h-0 min-w-0 flex-1", children: [
924
1045
  /* @__PURE__ */ jsx(
925
1046
  "div",
926
1047
  {
@@ -943,12 +1064,7 @@ function PresentationEditorCore({
943
1064
  }));
944
1065
  },
945
1066
  onKeyDown: (event) => {
946
- if (slides.length === 0) return;
947
- let nextIndex = null;
948
- if (event.key === "ArrowDown") nextIndex = Math.min(slides.length - 1, activeIndex + 1);
949
- else if (event.key === "ArrowUp") nextIndex = Math.max(0, activeIndex - 1);
950
- else if (event.key === "Home") nextIndex = 0;
951
- else if (event.key === "End") nextIndex = slides.length - 1;
1067
+ const nextIndex = nextSlideIndexFromKey(event.key, activeIndex, slides.length);
952
1068
  if (nextIndex === null) return;
953
1069
  event.preventDefault();
954
1070
  const next = slides[nextIndex];
@@ -1001,6 +1117,96 @@ function PresentationEditorCore({
1001
1117
  }) })
1002
1118
  }
1003
1119
  ),
1120
+ mobileSelectorOpen ? /* @__PURE__ */ jsx(
1121
+ "div",
1122
+ {
1123
+ ref: mobileSelectorPanelRef,
1124
+ className: "absolute left-2 top-2 z-40 max-w-56 overflow-hidden rounded-og-md border border-og-border bg-og-surface-1 shadow-og-md sm:hidden",
1125
+ style: { width: "calc(100% - 1rem)" },
1126
+ children: /* @__PURE__ */ jsx(
1127
+ "div",
1128
+ {
1129
+ ref: mobileRailRef,
1130
+ id: `${domId}-mobile-slides`,
1131
+ role: "listbox",
1132
+ tabIndex: 0,
1133
+ "aria-label": "Slides",
1134
+ "aria-orientation": "vertical",
1135
+ "aria-activedescendant": activeSlide && activeIndex >= mobileRailStart && activeIndex < mobileRailEnd ? `${domId}-mobile-slide-${safeDomId(activeSlide.id)}` : void 0,
1136
+ className: "max-h-72 overflow-y-auto outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-og-accent",
1137
+ "data-og-mobile-slide-list": true,
1138
+ "data-og-window-start": mobileRailStart,
1139
+ "data-og-window-end": mobileRailEnd,
1140
+ onScroll: (event) => {
1141
+ const scrollTop = event.currentTarget.scrollTop;
1142
+ const height = event.currentTarget.clientHeight;
1143
+ setMobileRail((current) => ({
1144
+ scrollTop,
1145
+ height: height || current.height
1146
+ }));
1147
+ },
1148
+ onKeyDown: (event) => {
1149
+ if (event.key === "Escape") {
1150
+ event.preventDefault();
1151
+ setMobileSelectorOpen(false);
1152
+ mobileSelectorTriggerRef.current?.focus();
1153
+ return;
1154
+ }
1155
+ const nextIndex = nextSlideIndexFromKey(event.key, activeIndex, slides.length);
1156
+ if (nextIndex === null) return;
1157
+ event.preventDefault();
1158
+ const next = slides[nextIndex];
1159
+ if (!next) return;
1160
+ if (next !== activeSlide) selectSlide(next, nextIndex);
1161
+ const list = event.currentTarget;
1162
+ const top = nextIndex * MOBILE_RAIL_ITEM_HEIGHT;
1163
+ const bottom = top + MOBILE_RAIL_ITEM_HEIGHT;
1164
+ if (top < list.scrollTop) list.scrollTop = top;
1165
+ else if (bottom > list.scrollTop + list.clientHeight) {
1166
+ list.scrollTop = bottom - list.clientHeight;
1167
+ }
1168
+ },
1169
+ children: /* @__PURE__ */ jsx(
1170
+ "div",
1171
+ {
1172
+ className: "relative w-full",
1173
+ style: { height: slides.length * MOBILE_RAIL_ITEM_HEIGHT },
1174
+ children: slides.slice(mobileRailStart, mobileRailEnd).map((slide, offset) => {
1175
+ const index = mobileRailStart + offset;
1176
+ const active = slide === activeSlide;
1177
+ return /* @__PURE__ */ jsxs(
1178
+ "button",
1179
+ {
1180
+ id: `${domId}-mobile-slide-${safeDomId(slide.id)}`,
1181
+ type: "button",
1182
+ role: "option",
1183
+ tabIndex: -1,
1184
+ "aria-selected": active,
1185
+ "aria-label": `Slide ${index + 1}${slide.title ? `: ${slide.title}` : ""}`,
1186
+ onClick: () => chooseMobileSlide(slide, index),
1187
+ className: cn(
1188
+ "absolute left-0 flex min-h-11 w-full items-center gap-2 px-2 text-left",
1189
+ active ? "bg-og-surface-3 text-og-fg" : "text-og-fg-muted hover:bg-og-surface-3/70"
1190
+ ),
1191
+ style: {
1192
+ top: index * MOBILE_RAIL_ITEM_HEIGHT,
1193
+ height: MOBILE_RAIL_ITEM_HEIGHT
1194
+ },
1195
+ "data-og-mobile-slide-index": index,
1196
+ children: [
1197
+ /* @__PURE__ */ jsx("span", { className: "w-7 shrink-0 text-right text-og-xs tabular-nums text-og-fg-subtle", children: index + 1 }),
1198
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-og-sm", children: slide.title || `Slide ${index + 1}` })
1199
+ ]
1200
+ },
1201
+ slide.id
1202
+ );
1203
+ })
1204
+ }
1205
+ )
1206
+ }
1207
+ )
1208
+ }
1209
+ ) : null,
1004
1210
  /* @__PURE__ */ jsxs(
1005
1211
  "div",
1006
1212
  {
@@ -1035,7 +1241,10 @@ function PresentationEditorCore({
1035
1241
  "button",
1036
1242
  {
1037
1243
  type: "button",
1038
- onClick: commandFailure.retry,
1244
+ disabled: mutationsBlocked,
1245
+ onClick: () => {
1246
+ if (!mutationsBlocked) commandFailure.retry();
1247
+ },
1039
1248
  className: "shrink-0 rounded-og-xs px-1.5 py-0.5 font-medium outline-hidden hover:bg-og-surface-3 focus-visible:ring-2 focus-visible:ring-og-accent",
1040
1249
  children: "Retry"
1041
1250
  }
@@ -1050,6 +1259,7 @@ function PresentationEditorCore({
1050
1259
  className: "relative mx-auto shrink-0 overflow-hidden shadow-og-lg",
1051
1260
  style: { width: stageWidth, height: stageHeight, backgroundColor: "#fff" },
1052
1261
  "data-og-presentation-stage": true,
1262
+ "data-og-theme": "light",
1053
1263
  children: [
1054
1264
  /* @__PURE__ */ jsx(
1055
1265
  "canvas",
@@ -1068,7 +1278,7 @@ function PresentationEditorCore({
1068
1278
  tabIndex: 0,
1069
1279
  "aria-label": `Slide ${activeIndex + 1} editor`,
1070
1280
  "aria-describedby": selected ? `${instructionsId} ${selectionProxyId}` : instructionsId,
1071
- "aria-readonly": readOnly || selected?.readOnly || void 0,
1281
+ "aria-readonly": mutationsBlocked || selected?.readOnly || void 0,
1072
1282
  viewBox: `0 0 ${presentation.slideSize.width} ${presentation.slideSize.height}`,
1073
1283
  className: "absolute inset-0 size-full touch-none outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-og-accent",
1074
1284
  onKeyDown: handleCanvasKeyDown,
@@ -1092,19 +1302,19 @@ function PresentationEditorCore({
1092
1302
  width: effectiveSelectedPosition.width,
1093
1303
  height: effectiveSelectedPosition.height,
1094
1304
  fill: "transparent",
1095
- stroke: "var(--og-accent, #3b82f6)",
1305
+ stroke: "var(--og-color-accent-deep)",
1096
1306
  strokeWidth: 2,
1097
1307
  vectorEffect: "non-scaling-stroke",
1098
1308
  pointerEvents: "none"
1099
1309
  }
1100
1310
  ),
1101
- !readOnly && !selected.readOnly ? /* @__PURE__ */ jsx(
1311
+ !mutationsBlocked && !selected.readOnly ? /* @__PURE__ */ jsx(
1102
1312
  "circle",
1103
1313
  {
1104
1314
  cx: effectiveSelectedPosition.left + effectiveSelectedPosition.width,
1105
1315
  cy: effectiveSelectedPosition.top + effectiveSelectedPosition.height,
1106
1316
  r: 6 / zoom,
1107
- fill: "var(--og-accent, #3b82f6)",
1317
+ fill: "var(--og-color-accent-deep)",
1108
1318
  stroke: "white",
1109
1319
  strokeWidth: 1.5,
1110
1320
  vectorEffect: "non-scaling-stroke",
@@ -1125,9 +1335,14 @@ function PresentationEditorCore({
1125
1335
  ref: editorRef,
1126
1336
  "aria-label": `Edit ${textEdit.shape.name}`,
1127
1337
  value: textDraft,
1338
+ readOnly: mutationsBlocked,
1128
1339
  maxLength: 1e6,
1129
- onChange: (event) => setTextDraft(event.currentTarget.value),
1130
- onInput: (event) => setTextDraft(event.currentTarget.value),
1340
+ onChange: (event) => {
1341
+ if (!mutationsBlocked) setTextDraft(event.currentTarget.value);
1342
+ },
1343
+ onInput: (event) => {
1344
+ if (!mutationsBlocked) setTextDraft(event.currentTarget.value);
1345
+ },
1131
1346
  onBlur: () => finishTextEdit(),
1132
1347
  onKeyDown: (event) => {
1133
1348
  if (event.key === "Escape") {
@@ -1170,6 +1385,7 @@ function PresentationEditorCore({
1170
1385
  function PresentationArtifactSurface({
1171
1386
  presentation,
1172
1387
  title = "Presentation",
1388
+ showHeader,
1173
1389
  subtitle,
1174
1390
  actions,
1175
1391
  busy,
@@ -1182,6 +1398,7 @@ function PresentationArtifactSurface({
1182
1398
  {
1183
1399
  modality: "presentation",
1184
1400
  title,
1401
+ showHeader,
1185
1402
  subtitle: subtitle ?? `${count} slide${count === 1 ? "" : "s"}`,
1186
1403
  actions,
1187
1404
  busy,
@@ -1193,6 +1410,7 @@ function PresentationArtifactSurface({
1193
1410
  function PresentationProjectionArtifactSurface({
1194
1411
  projection,
1195
1412
  title = "Presentation",
1413
+ showHeader,
1196
1414
  subtitle,
1197
1415
  actions,
1198
1416
  busy,
@@ -1205,6 +1423,7 @@ function PresentationProjectionArtifactSurface({
1205
1423
  {
1206
1424
  modality: "presentation",
1207
1425
  title,
1426
+ showHeader,
1208
1427
  subtitle: subtitle ?? `${count} slide${count === 1 ? "" : "s"}`,
1209
1428
  actions,
1210
1429
  busy,
@@ -2464,6 +2683,7 @@ var DEFAULT_PRESENTATION_TEXT_STYLE = Object.freeze({
2464
2683
  function EditablePresentationArtifactSurface({
2465
2684
  session,
2466
2685
  title = "Presentation",
2686
+ showHeader,
2467
2687
  subtitle,
2468
2688
  readOnly = false,
2469
2689
  onCommit,
@@ -2479,30 +2699,34 @@ function EditablePresentationArtifactSurface({
2479
2699
  error: null
2480
2700
  });
2481
2701
  const loadGeneration = useRef2(0);
2702
+ const scheduleLoad = useLatestTaskRunner(session);
2482
2703
  const sceneNodes = useRef2(/* @__PURE__ */ new Map());
2483
2704
  useEffect2(() => {
2484
2705
  const generation = ++loadGeneration.current;
2485
2706
  let cancelled = false;
2486
2707
  setState((current) => ({ ...current, loading: true, error: null }));
2487
- void composePresentationEditorProjection(session).then(
2488
- (composed) => {
2489
- if (cancelled || generation !== loadGeneration.current) return;
2490
- sceneNodes.current = new Map(composed.sceneNodes);
2491
- setState({ composed, loading: false, error: null });
2492
- },
2493
- (cause) => {
2494
- if (cancelled || generation !== loadGeneration.current) return;
2495
- setState({
2496
- composed: null,
2497
- loading: false,
2498
- error: asEditableArtifactError(cause, "Could not open this presentation")
2499
- });
2500
- }
2501
- );
2708
+ scheduleLoad(async () => {
2709
+ if (cancelled || generation !== loadGeneration.current) return;
2710
+ await composePresentationEditorProjection(session).then(
2711
+ (composed) => {
2712
+ if (cancelled || generation !== loadGeneration.current) return;
2713
+ sceneNodes.current = new Map(composed.sceneNodes);
2714
+ setState({ composed, loading: false, error: null });
2715
+ },
2716
+ (cause) => {
2717
+ if (cancelled || generation !== loadGeneration.current) return;
2718
+ setState({
2719
+ composed: null,
2720
+ loading: false,
2721
+ error: asEditableArtifactError(cause, "Could not open this presentation")
2722
+ });
2723
+ }
2724
+ );
2725
+ });
2502
2726
  return () => {
2503
2727
  cancelled = true;
2504
2728
  };
2505
- }, [invalidator, retryEpoch, session]);
2729
+ }, [invalidator, retryEpoch, scheduleLoad, session]);
2506
2730
  const refresh = useCallback2(() => setRetryEpoch((value) => value + 1), []);
2507
2731
  const writable = !readOnly && view.writable;
2508
2732
  const applyCommit = useCallback2(
@@ -2510,6 +2734,7 @@ function EditablePresentationArtifactSurface({
2510
2734
  const composed = state.composed;
2511
2735
  if (!composed) throw new Error("Presentation projection is not ready");
2512
2736
  if (!writable) throw new Error("This presentation is read only");
2737
+ if (view.authoringBlockedReason) throw new Error("An earlier change must settle first");
2513
2738
  if (commit.revision !== void 0 && String(commit.revision) !== String(composed.projection.revision)) {
2514
2739
  throw new Error("The presentation changed; retry this edit on the latest version");
2515
2740
  }
@@ -2619,7 +2844,15 @@ function EditablePresentationArtifactSurface({
2619
2844
  notifyPresentationCommit(onCommit, onCommandError, commit);
2620
2845
  refresh();
2621
2846
  },
2622
- [onCommandError, onCommit, refresh, session, state.composed, writable]
2847
+ [
2848
+ onCommandError,
2849
+ onCommit,
2850
+ refresh,
2851
+ session,
2852
+ state.composed,
2853
+ view.authoringBlockedReason,
2854
+ writable
2855
+ ]
2623
2856
  );
2624
2857
  const projection = state.composed?.projection ?? null;
2625
2858
  const status = editableArtifactStatusLabel(view);
@@ -2629,10 +2862,12 @@ function EditablePresentationArtifactSurface({
2629
2862
  {
2630
2863
  ...surfaceProps,
2631
2864
  title,
2865
+ showHeader,
2632
2866
  subtitle: subtitle ?? `${projection.slides.length} slide${projection.slides.length === 1 ? "" : "s"}${writable ? "" : " \xB7 Read only"}`,
2633
2867
  projection,
2634
2868
  commit: writable ? applyCommit : void 0,
2635
2869
  readOnly: !writable,
2870
+ authoringBlockedReason: view.authoringBlockedReason,
2636
2871
  busy: state.loading,
2637
2872
  onCommandError
2638
2873
  }
@@ -2641,6 +2876,7 @@ function EditablePresentationArtifactSurface({
2641
2876
  {
2642
2877
  modality: "presentation",
2643
2878
  title,
2879
+ showHeader,
2644
2880
  subtitle: subtitle ?? status,
2645
2881
  actions: surfaceProps.actions,
2646
2882
  busy: !accessRevoked && !state.error,
@@ -3231,4 +3467,4 @@ export {
3231
3467
  PresentationProjectionArtifactSurface,
3232
3468
  EditablePresentationArtifactSurface
3233
3469
  };
3234
- //# sourceMappingURL=chunk-PEI6RANI.js.map
3470
+ //# sourceMappingURL=chunk-GQMRL52F.js.map