@opengeni/react 2.5.0-canary.2 → 3.0.1-canary.38817070914001

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 (865) hide show
  1. package/README.md +784 -22
  2. package/dist/accounts.d.ts +64 -0
  3. package/dist/accounts.js +824 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/approvals.d.ts +2 -1
  6. package/dist/artifacts-document.js +5 -3
  7. package/dist/artifacts-presentation.js +5 -3
  8. package/dist/artifacts-spreadsheet.d.ts +1 -1
  9. package/dist/artifacts-spreadsheet.js +5 -3
  10. package/dist/artifacts.d.ts +5 -1
  11. package/dist/artifacts.js +536 -42
  12. package/dist/artifacts.js.map +1 -1
  13. package/dist/browser-viewer-M7BIVFTW.js +19 -0
  14. package/dist/capability-catalog-row.d.ts +20 -0
  15. package/dist/capability-logo-fallback.d.ts +3 -0
  16. package/dist/chat-interactive-block-BO2IWXVK.js +14 -0
  17. package/dist/chunk-2DDJ6YH6.js +41 -0
  18. package/dist/chunk-2DDJ6YH6.js.map +1 -0
  19. package/dist/chunk-2HVLQ26H.js +183 -0
  20. package/dist/chunk-2HVLQ26H.js.map +1 -0
  21. package/dist/chunk-3PVDYTTB.js +24 -0
  22. package/dist/chunk-3PVDYTTB.js.map +1 -0
  23. package/dist/chunk-3UZCWK46.js +298 -0
  24. package/dist/chunk-3UZCWK46.js.map +1 -0
  25. package/dist/chunk-47CKUXTW.js +293 -0
  26. package/dist/chunk-47CKUXTW.js.map +1 -0
  27. package/dist/chunk-4QYP6QUI.js +109 -0
  28. package/dist/chunk-4QYP6QUI.js.map +1 -0
  29. package/dist/chunk-5EY26VZ7.js +1053 -0
  30. package/dist/chunk-5EY26VZ7.js.map +1 -0
  31. package/dist/chunk-5I4VRWBB.js +56 -0
  32. package/dist/chunk-5I4VRWBB.js.map +1 -0
  33. package/dist/chunk-5WOR7UCL.js +191 -0
  34. package/dist/chunk-5WOR7UCL.js.map +1 -0
  35. package/dist/chunk-5XEXTWEM.js +1911 -0
  36. package/dist/chunk-5XEXTWEM.js.map +1 -0
  37. package/dist/chunk-5YJLGOM5.js +51 -0
  38. package/dist/chunk-5YJLGOM5.js.map +1 -0
  39. package/dist/chunk-6JFN3OWG.js +386 -0
  40. package/dist/chunk-6JFN3OWG.js.map +1 -0
  41. package/dist/chunk-6SNDCUPB.js +83 -0
  42. package/dist/chunk-6SNDCUPB.js.map +1 -0
  43. package/dist/chunk-7QJT5O4S.js +35 -0
  44. package/dist/chunk-7QJT5O4S.js.map +1 -0
  45. package/dist/chunk-A55KV72M.js +402 -0
  46. package/dist/chunk-A55KV72M.js.map +1 -0
  47. package/dist/chunk-B27E3V37.js +29 -0
  48. package/dist/chunk-B27E3V37.js.map +1 -0
  49. package/dist/chunk-BOFEQC6K.js +162 -0
  50. package/dist/chunk-BOFEQC6K.js.map +1 -0
  51. package/dist/chunk-CM7LVUKC.js +35 -0
  52. package/dist/chunk-CM7LVUKC.js.map +1 -0
  53. package/dist/chunk-CORUP6JB.js +122 -0
  54. package/dist/chunk-CORUP6JB.js.map +1 -0
  55. package/dist/chunk-CSX5FFKZ.js +35 -0
  56. package/dist/chunk-CSX5FFKZ.js.map +1 -0
  57. package/dist/chunk-EGVHJKGJ.js +3125 -0
  58. package/dist/chunk-EGVHJKGJ.js.map +1 -0
  59. package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
  60. package/dist/chunk-G76LSA76.js.map +1 -0
  61. package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
  62. package/dist/chunk-GQMRL52F.js.map +1 -0
  63. package/dist/{chunk-QGBJ6GHG.js → chunk-GUUXOISA.js} +1113 -457
  64. package/dist/chunk-GUUXOISA.js.map +1 -0
  65. package/dist/{chunk-MXJGO7LE.js → chunk-HGKELH6Z.js} +1178 -115
  66. package/dist/chunk-HGKELH6Z.js.map +1 -0
  67. package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
  68. package/dist/chunk-I7X2P4FU.js.map +1 -0
  69. package/dist/chunk-IGFZFLI2.js +1390 -0
  70. package/dist/chunk-IGFZFLI2.js.map +1 -0
  71. package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
  72. package/dist/chunk-IMSUVYQB.js.map +1 -0
  73. package/dist/chunk-IOYHDEP3.js +38 -0
  74. package/dist/chunk-IOYHDEP3.js.map +1 -0
  75. package/dist/{chunk-X4JAFD5R.js → chunk-ISN726VG.js} +1513 -697
  76. package/dist/chunk-ISN726VG.js.map +1 -0
  77. package/dist/chunk-IZV5FTJC.js +55 -0
  78. package/dist/chunk-IZV5FTJC.js.map +1 -0
  79. package/dist/chunk-KF33GTWN.js +343 -0
  80. package/dist/chunk-KF33GTWN.js.map +1 -0
  81. package/dist/chunk-KSGQ5ODA.js +457 -0
  82. package/dist/chunk-KSGQ5ODA.js.map +1 -0
  83. package/dist/chunk-KZENYIA2.js +382 -0
  84. package/dist/chunk-KZENYIA2.js.map +1 -0
  85. package/dist/chunk-LJUMYUBO.js +218 -0
  86. package/dist/chunk-LJUMYUBO.js.map +1 -0
  87. package/dist/chunk-LSW2OJVV.js +380 -0
  88. package/dist/chunk-LSW2OJVV.js.map +1 -0
  89. package/dist/chunk-M357MHH3.js +2 -0
  90. package/dist/chunk-M357MHH3.js.map +1 -0
  91. package/dist/chunk-N7S72EXK.js +25 -0
  92. package/dist/chunk-N7S72EXK.js.map +1 -0
  93. package/dist/chunk-NX4ADH73.js +14 -0
  94. package/dist/chunk-NX4ADH73.js.map +1 -0
  95. package/dist/chunk-O5GPRG76.js +3006 -0
  96. package/dist/chunk-O5GPRG76.js.map +1 -0
  97. package/dist/chunk-O7F6UJO4.js +71 -0
  98. package/dist/chunk-O7F6UJO4.js.map +1 -0
  99. package/dist/chunk-OYQQJL3J.js +16 -0
  100. package/dist/chunk-OYQQJL3J.js.map +1 -0
  101. package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
  102. package/dist/chunk-P4BNUO57.js.map +1 -0
  103. package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
  104. package/dist/chunk-PEHTX3V7.js.map +1 -0
  105. package/dist/chunk-PMV53IMM.js +26 -0
  106. package/dist/chunk-PMV53IMM.js.map +1 -0
  107. package/dist/{chunk-ZUT5QSQB.js → chunk-PWCBMEV2.js} +4262 -3917
  108. package/dist/chunk-PWCBMEV2.js.map +1 -0
  109. package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
  110. package/dist/chunk-PYEOPA4M.js.map +1 -0
  111. package/dist/{chunk-T7VAYG2I.js → chunk-Q26UAIXI.js} +257 -45
  112. package/dist/chunk-Q26UAIXI.js.map +1 -0
  113. package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
  114. package/dist/chunk-QHUE7E4N.js.map +1 -0
  115. package/dist/chunk-QV3DJVRZ.js +11 -0
  116. package/dist/chunk-QV3DJVRZ.js.map +1 -0
  117. package/dist/chunk-R5SBNG7S.js +810 -0
  118. package/dist/chunk-R5SBNG7S.js.map +1 -0
  119. package/dist/chunk-RI42H5IU.js +326 -0
  120. package/dist/chunk-RI42H5IU.js.map +1 -0
  121. package/dist/chunk-S2QH6EZ5.js +211 -0
  122. package/dist/chunk-S2QH6EZ5.js.map +1 -0
  123. package/dist/chunk-S5ZT4TBR.js +2028 -0
  124. package/dist/chunk-S5ZT4TBR.js.map +1 -0
  125. package/dist/chunk-SHLZMAJN.js +304 -0
  126. package/dist/chunk-SHLZMAJN.js.map +1 -0
  127. package/dist/chunk-TGXK4BAZ.js +293 -0
  128. package/dist/chunk-TGXK4BAZ.js.map +1 -0
  129. package/dist/{chunk-XXWH2JLC.js → chunk-TIHSXNBC.js} +616 -621
  130. package/dist/chunk-TIHSXNBC.js.map +1 -0
  131. package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
  132. package/dist/chunk-TNEZNMSN.js.map +1 -0
  133. package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
  134. package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
  135. package/dist/chunk-UNJPZGNK.js +63 -0
  136. package/dist/chunk-UNJPZGNK.js.map +1 -0
  137. package/dist/chunk-VIUEOHXY.js +394 -0
  138. package/dist/chunk-VIUEOHXY.js.map +1 -0
  139. package/dist/chunk-VWH3YAV7.js +14058 -0
  140. package/dist/chunk-VWH3YAV7.js.map +1 -0
  141. package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
  142. package/dist/chunk-WNN7NO2N.js.map +1 -0
  143. package/dist/chunk-XDA5QJE7.js +402 -0
  144. package/dist/chunk-XDA5QJE7.js.map +1 -0
  145. package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
  146. package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
  147. package/dist/chunk-XHF7OYAN.js +1150 -0
  148. package/dist/chunk-XHF7OYAN.js.map +1 -0
  149. package/dist/chunk-YSRBFJMQ.js +43 -0
  150. package/dist/chunk-YSRBFJMQ.js.map +1 -0
  151. package/dist/chunk-ZOZAPAUO.js +174 -0
  152. package/dist/chunk-ZOZAPAUO.js.map +1 -0
  153. package/dist/chunk-ZQV5W7YC.js +809 -0
  154. package/dist/chunk-ZQV5W7YC.js.map +1 -0
  155. package/dist/chunk-ZUWF4NF7.js +13 -0
  156. package/dist/chunk-ZUWF4NF7.js.map +1 -0
  157. package/dist/client.d.ts +16 -7
  158. package/dist/clipboard.js +3 -1
  159. package/dist/commands/types.d.ts +2 -0
  160. package/dist/components/anthropic-mark.d.ts +3 -0
  161. package/dist/components/approval-surface.d.ts +19 -6
  162. package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
  163. package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
  164. package/dist/components/artifacts/artifact-surface.d.ts +4 -2
  165. package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
  166. package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
  167. package/dist/components/artifacts/document-editor.d.ts +4 -2
  168. package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
  169. package/dist/components/artifacts/editable-artifact-view.d.ts +48 -0
  170. package/dist/components/artifacts/editable-document.d.ts +1 -1
  171. package/dist/components/artifacts/editable-presentation.d.ts +2 -2
  172. package/dist/components/artifacts/editable-spreadsheet.d.ts +8 -3
  173. package/dist/components/artifacts/index.d.ts +9 -2
  174. package/dist/components/artifacts/inline-html-document.d.ts +2 -0
  175. package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
  176. package/dist/components/artifacts/presentation-editor.d.ts +6 -2
  177. package/dist/components/artifacts/published-html-artifact-frame.d.ts +23 -3
  178. package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
  179. package/dist/components/artifacts/site-view.d.ts +26 -0
  180. package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
  181. package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
  182. package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
  183. package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
  184. package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
  185. package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -0
  186. package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
  187. package/dist/components/browser-select-control.d.ts +16 -0
  188. package/dist/components/browser-viewer.d.ts +11 -2
  189. package/dist/components/chat-composer.d.ts +21 -3
  190. package/dist/components/child-session-link.d.ts +9 -0
  191. package/dist/components/claude-mark.d.ts +3 -0
  192. package/dist/components/code-editor.d.ts +1 -4
  193. package/dist/components/composer-transcription-control.d.ts +7 -0
  194. package/dist/components/composer.d.ts +38 -63
  195. package/dist/components/computer-viewer.d.ts +1 -1
  196. package/dist/components/copy-button.d.ts +3 -1
  197. package/dist/components/desktop-viewer.d.ts +1 -1
  198. package/dist/components/file-browser.d.ts +4 -1
  199. package/dist/components/fleet-tile.d.ts +2 -2
  200. package/dist/components/grok-mark.d.ts +26 -0
  201. package/dist/components/human-input-form.d.ts +28 -32
  202. package/dist/components/human-input-surface.d.ts +7 -2
  203. package/dist/components/linkified-text.d.ts +18 -0
  204. package/dist/components/machine-input-display.d.ts +22 -1
  205. package/dist/components/machines/agent-status-icon.d.ts +6 -0
  206. package/dist/components/machines/machine-detail.d.ts +7 -1
  207. package/dist/components/machines/machine-status.d.ts +48 -0
  208. package/dist/components/markdown-table-layout.d.ts +18 -0
  209. package/dist/components/markdown.d.ts +37 -4
  210. package/dist/components/message-timeline.d.ts +86 -7
  211. package/dist/components/model-mark.d.ts +29 -0
  212. package/dist/components/model-policy-picker-menu.d.ts +9 -0
  213. package/dist/components/model-policy-picker.d.ts +41 -25
  214. package/dist/components/new-conversation.d.ts +32 -0
  215. package/dist/components/open-geni-chat.d.ts +73 -0
  216. package/dist/components/open-geni-links.d.ts +68 -0
  217. package/dist/components/openrouter-mark.d.ts +6 -0
  218. package/dist/components/opper-mark.d.ts +7 -0
  219. package/dist/components/preview-loading.d.ts +2 -0
  220. package/dist/components/provider-recovery-notice.d.ts +16 -0
  221. package/dist/components/queue-item-content.d.ts +9 -0
  222. package/dist/components/rehype-secret-refs.d.ts +23 -0
  223. package/dist/components/remark-soft-line-breaks.d.ts +38 -0
  224. package/dist/components/sandbox-files.d.ts +6 -1
  225. package/dist/components/sandbox-workspace.d.ts +23 -0
  226. package/dist/components/secret-question-field.d.ts +31 -0
  227. package/dist/components/secret-ref-chip.d.ts +35 -0
  228. package/dist/components/session-capability-frame.d.ts +37 -0
  229. package/dist/components/session-chrome.d.ts +57 -8
  230. package/dist/components/session-commands-panel.d.ts +6 -0
  231. package/dist/components/session-commands.d.ts +6 -0
  232. package/dist/components/session-connection-request.d.ts +8 -0
  233. package/dist/components/session-conversation.d.ts +157 -0
  234. package/dist/components/session-list.d.ts +39 -0
  235. package/dist/components/session-mcp-capability-card.d.ts +41 -0
  236. package/dist/components/session-proxy-scope.d.ts +35 -0
  237. package/dist/components/session-status.d.ts +4 -1
  238. package/dist/components/session-usage-limit-notice.d.ts +39 -0
  239. package/dist/components/timeline-anchor.d.ts +24 -0
  240. package/dist/components/timeline-annotation-chrome.d.ts +25 -0
  241. package/dist/components/timeline-annotation-layout.d.ts +42 -0
  242. package/dist/components/timeline-annotation-markers.d.ts +8 -0
  243. package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
  244. package/dist/components/timeline-annotation-shared.d.ts +31 -0
  245. package/dist/components/timeline-annotations-dialog.d.ts +3 -2
  246. package/dist/components/timeline-annotations.d.ts +13 -3
  247. package/dist/components/timeline-reading-progress.d.ts +11 -0
  248. package/dist/components/timeline-search.d.ts +34 -0
  249. package/dist/components/timeline-settlement.d.ts +16 -0
  250. package/dist/components/tip-follow.d.ts +16 -0
  251. package/dist/components/tool-action-review.d.ts +47 -0
  252. package/dist/components/tool-review-history.d.ts +25 -0
  253. package/dist/components/usage-limit-notice.d.ts +49 -0
  254. package/dist/components/usage-member-list.d.ts +91 -0
  255. package/dist/components/usage-meter.d.ts +73 -0
  256. package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
  257. package/dist/components/user-message-body.d.ts +10 -1
  258. package/dist/composer-messages.d.ts +74 -0
  259. package/dist/composer-messages.js +9 -0
  260. package/dist/composer-messages.js.map +1 -0
  261. package/dist/composer-voice-events.d.ts +8 -0
  262. package/dist/composer.d.ts +5 -4
  263. package/dist/composer.js +26 -13
  264. package/dist/computer-viewer-GMLDXPON.js +20 -0
  265. package/dist/computer-viewer-GMLDXPON.js.map +1 -0
  266. package/dist/connect-account-identity.d.ts +8 -0
  267. package/dist/connect-accounts.d.ts +15 -0
  268. package/dist/connect-chooser.d.ts +18 -0
  269. package/dist/connect-panel.d.ts +18 -0
  270. package/dist/connect-setup.d.ts +18 -0
  271. package/dist/connect.d.ts +21 -0
  272. package/dist/connect.js +2149 -0
  273. package/dist/connect.js.map +1 -0
  274. package/dist/connection-catalog.d.ts +38 -0
  275. package/dist/connection-discovery.d.ts +12 -0
  276. package/dist/connection-installed.d.ts +17 -0
  277. package/dist/connection-logo.d.ts +9 -0
  278. package/dist/connection-service-logo.d.ts +8 -0
  279. package/dist/connection-service-presentation.d.ts +13 -0
  280. package/dist/connection-skeleton.d.ts +5 -0
  281. package/dist/connection-type-picker.d.ts +6 -0
  282. package/dist/conversation-timeline.d.ts +5 -0
  283. package/dist/desktop.d.ts +7 -0
  284. package/dist/desktop.js +27 -0
  285. package/dist/desktop.js.map +1 -0
  286. package/dist/device-authorization.d.ts +23 -0
  287. package/dist/diffs.d.ts +8 -0
  288. package/dist/diffs.js +15 -0
  289. package/dist/diffs.js.map +1 -0
  290. package/dist/discovery-cache.d.ts +5 -0
  291. package/dist/editor.d.ts +7 -0
  292. package/dist/editor.js +22 -0
  293. package/dist/editor.js.map +1 -0
  294. package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
  295. package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
  296. package/dist/embedded-session-client.d.ts +23 -0
  297. package/dist/embedded-voice-RPHPYVBT.js +18 -0
  298. package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
  299. package/dist/file-node-visibility.d.ts +15 -0
  300. package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
  301. package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
  302. package/dist/hooks/latest-question.d.ts +25 -0
  303. package/dist/hooks/shared-machines-list.d.ts +4 -0
  304. package/dist/hooks/shared-query.d.ts +113 -0
  305. package/dist/hooks/use-attached-browsers.d.ts +1 -1
  306. package/dist/hooks/use-auth-runs.d.ts +1 -4
  307. package/dist/hooks/use-available-models.d.ts +1 -1
  308. package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
  309. package/dist/hooks/use-browser-session.d.ts +12 -1
  310. package/dist/hooks/use-client-config-flags.d.ts +49 -0
  311. package/dist/hooks/use-codex-accounts.d.ts +59 -10
  312. package/dist/hooks/use-composer.d.ts +24 -2
  313. package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
  314. package/dist/hooks/use-computer-input-posture.d.ts +13 -0
  315. package/dist/hooks/use-computer-session.d.ts +4 -0
  316. package/dist/hooks/use-connect.d.ts +23 -0
  317. package/dist/hooks/use-desktop-stream.d.ts +1 -1
  318. package/dist/hooks/use-file-attachments.d.ts +21 -2
  319. package/dist/hooks/use-goal.d.ts +2 -1
  320. package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
  321. package/dist/hooks/use-new-conversation.d.ts +56 -0
  322. package/dist/hooks/use-new-session-draft.d.ts +74 -0
  323. package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
  324. package/dist/hooks/use-sandbox-files.d.ts +4 -1
  325. package/dist/hooks/use-session-conversation.d.ts +49 -0
  326. package/dist/hooks/use-session-events.d.ts +28 -7
  327. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  328. package/dist/hooks/use-session-model-account.d.ts +48 -0
  329. package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
  330. package/dist/hooks/use-terminal-stream.d.ts +11 -5
  331. package/dist/hooks/use-usage.d.ts +40 -0
  332. package/dist/hooks/use-vaults.d.ts +53 -0
  333. package/dist/hooks/use-voice-input.d.ts +8 -1
  334. package/dist/hooks/use-workspace-edit.d.ts +4 -0
  335. package/dist/hooks/use-workspace-sessions.d.ts +22 -5
  336. package/dist/human-input-model.d.ts +122 -0
  337. package/dist/human-input.d.ts +3 -1
  338. package/dist/identity-link-accounts.d.ts +11 -0
  339. package/dist/identity-link-consent.d.ts +18 -0
  340. package/dist/index.d.ts +85 -20
  341. package/dist/index.js +2371 -6544
  342. package/dist/index.js.map +1 -1
  343. package/dist/interaction.d.ts +1 -1
  344. package/dist/interaction.js +14 -24
  345. package/dist/interaction.js.map +1 -1
  346. package/dist/latest-question-CHE7E753.js +118 -0
  347. package/dist/latest-question-CHE7E753.js.map +1 -0
  348. package/dist/lib/clipboard.d.ts +7 -0
  349. package/dist/lib/error-message.d.ts +7 -0
  350. package/dist/lib/format.d.ts +58 -4
  351. package/dist/lib/host-theme.d.ts +77 -0
  352. package/dist/lib/interaction-errors.d.ts +3 -0
  353. package/dist/lib/menu-styles.d.ts +22 -0
  354. package/dist/lib/notify-observer.d.ts +2 -0
  355. package/dist/lib/pierre-diffs-loader.d.ts +20 -0
  356. package/dist/lib/provider-recovery.d.ts +55 -0
  357. package/dist/lib/terminal-input-readiness.d.ts +11 -0
  358. package/dist/lib/transient-retry.d.ts +25 -0
  359. package/dist/lib/workbench-peers.d.ts +36 -0
  360. package/dist/lib/xterm-theme.d.ts +7 -5
  361. package/dist/machines.js +9 -5
  362. package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
  363. package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
  364. package/dist/mcp-connection-status.d.ts +14 -0
  365. package/dist/model-mark-paths.d.ts +34 -0
  366. package/dist/model-mark-paths.js +16 -0
  367. package/dist/model-mark-paths.js.map +1 -0
  368. package/dist/model-picker-model.d.ts +111 -0
  369. package/dist/model-picker-model.js +25 -0
  370. package/dist/model-picker-model.js.map +1 -0
  371. package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
  372. package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
  373. package/dist/model-policy.d.ts +30 -3
  374. package/dist/model-policy.js +14 -1
  375. package/dist/native-previews.d.ts +28 -0
  376. package/dist/native-previews.js +82 -0
  377. package/dist/native-previews.js.map +1 -0
  378. package/dist/new-session-draft.d.ts +7 -0
  379. package/dist/new-session-draft.js +639 -0
  380. package/dist/new-session-draft.js.map +1 -0
  381. package/dist/notification-text.d.ts +27 -0
  382. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
  383. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
  384. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
  385. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
  386. package/dist/older-history.d.ts +3 -2
  387. package/dist/organization-model.d.ts +32 -0
  388. package/dist/organization-model.js +65 -0
  389. package/dist/organization-model.js.map +1 -0
  390. package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
  391. package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
  392. package/dist/plugin-details.d.ts +14 -0
  393. package/dist/plugin-discovery.d.ts +25 -0
  394. package/dist/preview-loading-paint.d.ts +20 -0
  395. package/dist/provider.d.ts +25 -2
  396. package/dist/queue-presentation-model.d.ts +72 -0
  397. package/dist/queue-presentation-model.js +38 -0
  398. package/dist/queue-presentation-model.js.map +1 -0
  399. package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
  400. package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
  401. package/dist/realtime/embedded-new-voice.d.ts +1 -0
  402. package/dist/realtime/embedded-voice.d.ts +1 -0
  403. package/dist/realtime/realtime-control.d.ts +4 -65
  404. package/dist/realtime/session-realtime.d.ts +78 -0
  405. package/dist/realtime.js +25 -1294
  406. package/dist/realtime.js.map +1 -1
  407. package/dist/sandbox-files-O27IPOZW.js +21 -0
  408. package/dist/sandbox-files-O27IPOZW.js.map +1 -0
  409. package/dist/sandbox-label-model.d.ts +30 -0
  410. package/dist/sandbox-label-model.js +20 -0
  411. package/dist/sandbox-label-model.js.map +1 -0
  412. package/dist/secret-reference-label.d.ts +14 -0
  413. package/dist/secrets-ui.d.ts +57 -0
  414. package/dist/session-agents-model.d.ts +10 -0
  415. package/dist/session-agents-model.js +25 -0
  416. package/dist/session-agents-model.js.map +1 -0
  417. package/dist/session-attention-model.d.ts +8 -0
  418. package/dist/session-attention-model.js +47 -0
  419. package/dist/session-attention-model.js.map +1 -0
  420. package/dist/session-auth-recommendation.d.ts +5 -0
  421. package/dist/session-capability-policy.d.ts +31 -0
  422. package/dist/session-feedback-model.d.ts +20 -0
  423. package/dist/session-feedback-model.js +56 -0
  424. package/dist/session-feedback-model.js.map +1 -0
  425. package/dist/session-list-model.d.ts +138 -0
  426. package/dist/session-list-model.js +274 -0
  427. package/dist/session-list-model.js.map +1 -0
  428. package/dist/session-realtime-7DJOIHQW.js +21 -0
  429. package/dist/session-realtime-7DJOIHQW.js.map +1 -0
  430. package/dist/session-realtime.d.ts +7 -0
  431. package/dist/session-realtime.js +19 -0
  432. package/dist/session-realtime.js.map +1 -0
  433. package/dist/session-status-model.d.ts +36 -0
  434. package/dist/session-ui.d.ts +39 -1
  435. package/dist/session-ui.js +125 -12
  436. package/dist/session-ui.js.map +1 -1
  437. package/dist/session.d.ts +10 -2
  438. package/dist/session.js +37 -20
  439. package/dist/site-snapshot.d.ts +14 -0
  440. package/dist/sites-ui.d.ts +24 -0
  441. package/dist/sites.d.ts +3 -0
  442. package/dist/sites.js +14 -0
  443. package/dist/sites.js.map +1 -0
  444. package/dist/skill-discovery.d.ts +47 -0
  445. package/dist/terminal.d.ts +8 -0
  446. package/dist/terminal.js +32 -0
  447. package/dist/terminal.js.map +1 -0
  448. package/dist/testing/session-scenarios.d.ts +10 -0
  449. package/dist/testing/session-scenarios.js +367 -0
  450. package/dist/testing/session-scenarios.js.map +1 -0
  451. package/dist/timeline/activity-rail.d.ts +11 -2
  452. package/dist/timeline/agent-identity.d.ts +30 -0
  453. package/dist/timeline/agent-row.d.ts +31 -0
  454. package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
  455. package/dist/timeline/compaction-copy.d.ts +46 -0
  456. package/dist/timeline/entrance.d.ts +13 -1
  457. package/dist/timeline/focus-sequence.d.ts +9 -0
  458. package/dist/timeline/genie-copy.d.ts +3 -0
  459. package/dist/timeline/genie-loading.d.ts +47 -0
  460. package/dist/timeline/index.d.ts +10 -4
  461. package/dist/timeline/knowledge-receipt.d.ts +17 -0
  462. package/dist/timeline/message-sender.d.ts +19 -0
  463. package/dist/timeline/notice-presentation.d.ts +13 -0
  464. package/dist/timeline/parsers.d.ts +11 -0
  465. package/dist/timeline/patch-apply-command.d.ts +18 -0
  466. package/dist/timeline/platform-activity-presentation.d.ts +21 -0
  467. package/dist/timeline/platform-activity-row.d.ts +1 -2
  468. package/dist/timeline/presented-image.d.ts +11 -0
  469. package/dist/timeline/projection.d.ts +31 -2
  470. package/dist/timeline/provider-logo.d.ts +15 -0
  471. package/dist/timeline/question-nav-model.d.ts +23 -0
  472. package/dist/timeline/registry.d.ts +12 -1
  473. package/dist/timeline/retained-image.d.ts +18 -0
  474. package/dist/timeline/retained-loaders.d.ts +27 -0
  475. package/dist/timeline/rolling-activity.d.ts +11 -0
  476. package/dist/timeline/screenshot-lightbox.d.ts +39 -2
  477. package/dist/timeline/session-usage-limit-row.d.ts +11 -0
  478. package/dist/timeline/shared.d.ts +4 -1
  479. package/dist/timeline/startup-dispatch-details.d.ts +5 -0
  480. package/dist/timeline/startup-preference.d.ts +3 -0
  481. package/dist/timeline/startup-timings.d.ts +4 -0
  482. package/dist/timeline/tool-display-name.d.ts +5 -2
  483. package/dist/timeline/tool-presentation.d.ts +172 -0
  484. package/dist/timeline/turn-summary-model.d.ts +95 -0
  485. package/dist/timeline/turn-summary.d.ts +20 -54
  486. package/dist/timeline/types.d.ts +179 -7
  487. package/dist/timeline/work-presentation.d.ts +60 -0
  488. package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
  489. package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
  490. package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
  491. package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
  492. package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
  493. package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
  494. package/dist/timeline-model.d.ts +29 -0
  495. package/dist/timeline-model.js +254 -0
  496. package/dist/timeline-model.js.map +1 -0
  497. package/dist/usage/allowance-copy.d.ts +25 -0
  498. package/dist/usage/session-usage-limit.d.ts +88 -0
  499. package/dist/usage/summary.d.ts +35 -0
  500. package/dist/usage.d.ts +17 -0
  501. package/dist/usage.js +1187 -0
  502. package/dist/usage.js.map +1 -0
  503. package/dist/voice-recording-owner.d.ts +7 -0
  504. package/package.json +105 -5
  505. package/src/accounts.tsx +1072 -0
  506. package/src/approvals.ts +8 -1
  507. package/src/artifacts-spreadsheet.ts +1 -0
  508. package/src/artifacts.ts +44 -0
  509. package/src/assets/README.md +8 -0
  510. package/src/assets/gmail.ico +0 -0
  511. package/src/assets/outlook.ico +0 -0
  512. package/src/capability-catalog-row.tsx +94 -0
  513. package/src/capability-logo-fallback.ts +22 -0
  514. package/src/client.ts +20 -31
  515. package/src/commands/registry.ts +18 -15
  516. package/src/commands/types.ts +2 -0
  517. package/src/components/anthropic-mark.tsx +10 -0
  518. package/src/components/approval-surface.tsx +401 -138
  519. package/src/components/artifacts/artifact-chrome.tsx +413 -0
  520. package/src/components/artifacts/artifact-sandbox.tsx +189 -0
  521. package/src/components/artifacts/artifact-surface.tsx +40 -20
  522. package/src/components/artifacts/chat-interactive-block.tsx +260 -0
  523. package/src/components/artifacts/deferred-chat-media.tsx +67 -0
  524. package/src/components/artifacts/document-editor.tsx +141 -16
  525. package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
  526. package/src/components/artifacts/editable-artifact-view.tsx +197 -0
  527. package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
  528. package/src/components/artifacts/editable-document.tsx +37 -36
  529. package/src/components/artifacts/editable-presentation.tsx +36 -18
  530. package/src/components/artifacts/editable-spreadsheet.tsx +543 -103
  531. package/src/components/artifacts/index.ts +45 -0
  532. package/src/components/artifacts/inline-html-document.ts +24 -0
  533. package/src/components/artifacts/latest-task-runner.ts +49 -0
  534. package/src/components/artifacts/presentation-editor.tsx +323 -67
  535. package/src/components/artifacts/published-html-artifact-frame.tsx +122 -5
  536. package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
  537. package/src/components/artifacts/site-view.tsx +121 -0
  538. package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
  539. package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
  540. package/src/components/artifacts/spreadsheet-download.tsx +109 -0
  541. package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
  542. package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
  543. package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
  544. package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
  545. package/src/components/artifacts/visualization-assets/base.css +1015 -0
  546. package/src/components/artifacts/visualization-assets/helpers.html +349 -0
  547. package/src/components/artifacts/visualization-assets.gen.ts +3 -0
  548. package/src/components/browser-select-control.tsx +312 -0
  549. package/src/components/browser-viewer.tsx +778 -318
  550. package/src/components/chat-composer.tsx +131 -85
  551. package/src/components/child-session-link.tsx +36 -0
  552. package/src/components/claude-mark.tsx +11 -0
  553. package/src/components/code-editor.tsx +13 -16
  554. package/src/components/composer-transcription-control.tsx +128 -30
  555. package/src/components/composer.tsx +426 -175
  556. package/src/components/computer-viewer.tsx +880 -253
  557. package/src/components/copy-button.tsx +13 -5
  558. package/src/components/desktop-viewer.tsx +1 -1
  559. package/src/components/enrollment-consent.tsx +1 -1
  560. package/src/components/enrollment-device-flow.tsx +1 -1
  561. package/src/components/file-browser.tsx +43 -34
  562. package/src/components/fleet-tile.tsx +9 -18
  563. package/src/components/generated-video-player.tsx +4 -2
  564. package/src/components/grok-mark.tsx +34 -0
  565. package/src/components/human-input-form.tsx +590 -283
  566. package/src/components/human-input-surface.tsx +21 -6
  567. package/src/components/interaction-intervention-banner.tsx +2 -2
  568. package/src/components/linkified-text.tsx +79 -0
  569. package/src/components/machine-card.tsx +35 -78
  570. package/src/components/machine-dock-bar.tsx +1 -1
  571. package/src/components/machine-input-display.ts +197 -3
  572. package/src/components/machines/agent-status-icon.tsx +31 -0
  573. package/src/components/machines/machine-detail.tsx +200 -31
  574. package/src/components/machines/machine-operation-policy.tsx +1 -1
  575. package/src/components/machines/machine-status.ts +241 -0
  576. package/src/components/machines-dashboard.tsx +2 -17
  577. package/src/components/markdown-table-layout.ts +143 -0
  578. package/src/components/markdown.tsx +466 -129
  579. package/src/components/message-timeline.tsx +2601 -734
  580. package/src/components/model-mark.tsx +102 -0
  581. package/src/components/model-picker.tsx +15 -4
  582. package/src/components/model-policy-picker-menu.tsx +371 -0
  583. package/src/components/model-policy-picker.tsx +256 -412
  584. package/src/components/new-conversation.tsx +221 -0
  585. package/src/components/open-geni-chat.tsx +309 -0
  586. package/src/components/open-geni-links.tsx +179 -0
  587. package/src/components/openrouter-mark.tsx +13 -0
  588. package/src/components/opper-mark.tsx +18 -0
  589. package/src/components/pierre-diff.tsx +41 -16
  590. package/src/components/pierre-file.tsx +35 -10
  591. package/src/components/preview-loading.tsx +109 -0
  592. package/src/components/provider-recovery-notice.tsx +49 -0
  593. package/src/components/queue-item-content.ts +14 -0
  594. package/src/components/queue-surface-implementation.tsx +51 -356
  595. package/src/components/queue-surface-state.tsx +3 -1
  596. package/src/components/rehype-secret-refs.ts +98 -0
  597. package/src/components/remark-soft-line-breaks.ts +166 -0
  598. package/src/components/sandbox-files.tsx +133 -17
  599. package/src/components/sandbox-terminal.tsx +84 -13
  600. package/src/components/sandbox-workspace.tsx +157 -51
  601. package/src/components/secret-question-field.tsx +324 -0
  602. package/src/components/secret-ref-chip.tsx +185 -0
  603. package/src/components/session-capability-frame.tsx +197 -0
  604. package/src/components/session-chrome.tsx +842 -251
  605. package/src/components/session-commands-panel.tsx +126 -0
  606. package/src/components/session-commands.tsx +18 -0
  607. package/src/components/session-connection-request.tsx +97 -0
  608. package/src/components/session-conversation.tsx +876 -0
  609. package/src/components/session-list.tsx +257 -0
  610. package/src/components/session-mcp-capability-card.tsx +680 -0
  611. package/src/components/session-proxy-scope.tsx +153 -0
  612. package/src/components/session-status.tsx +26 -17
  613. package/src/components/session-usage-limit-notice.tsx +174 -0
  614. package/src/components/timeline-anchor.tsx +119 -0
  615. package/src/components/timeline-annotation-chrome.tsx +196 -0
  616. package/src/components/timeline-annotation-layout.ts +268 -0
  617. package/src/components/timeline-annotation-markers.tsx +185 -0
  618. package/src/components/timeline-annotation-reveal-context.ts +9 -0
  619. package/src/components/timeline-annotation-selection.tsx +106 -54
  620. package/src/components/timeline-annotation-shared.ts +245 -0
  621. package/src/components/timeline-annotations-dialog.tsx +185 -128
  622. package/src/components/timeline-annotations.tsx +189 -45
  623. package/src/components/timeline-reading-progress.ts +80 -0
  624. package/src/components/timeline-search.tsx +168 -0
  625. package/src/components/timeline-settlement.ts +60 -0
  626. package/src/components/tip-follow.ts +52 -0
  627. package/src/components/tool-action-review.tsx +650 -0
  628. package/src/components/tool-review-history.tsx +88 -0
  629. package/src/components/tooltip.tsx +38 -5
  630. package/src/components/usage-limit-notice.tsx +179 -0
  631. package/src/components/usage-member-list.tsx +792 -0
  632. package/src/components/usage-meter.tsx +382 -0
  633. package/src/components/use-viewer-menu-dismiss.ts +33 -0
  634. package/src/components/user-message-body.tsx +27 -2
  635. package/src/components/workspace-dock.tsx +18 -1
  636. package/src/composer-messages.ts +150 -0
  637. package/src/composer-voice-events.ts +12 -0
  638. package/src/composer.ts +6 -1
  639. package/src/connect-account-identity.tsx +34 -0
  640. package/src/connect-accounts.tsx +233 -0
  641. package/src/connect-chooser.tsx +336 -0
  642. package/src/connect-panel.tsx +99 -0
  643. package/src/connect-setup.tsx +355 -0
  644. package/src/connect.ts +60 -0
  645. package/src/connection-assets.d.ts +4 -0
  646. package/src/connection-catalog.tsx +162 -0
  647. package/src/connection-discovery.tsx +238 -0
  648. package/src/connection-installed.tsx +51 -0
  649. package/src/connection-logo.tsx +37 -0
  650. package/src/connection-service-logo.tsx +55 -0
  651. package/src/connection-service-presentation.ts +46 -0
  652. package/src/connection-skeleton.tsx +16 -0
  653. package/src/connection-type-picker.tsx +36 -0
  654. package/src/conversation-timeline.ts +92 -0
  655. package/src/desktop.ts +24 -0
  656. package/src/device-authorization.tsx +98 -0
  657. package/src/diffs.ts +16 -0
  658. package/src/discovery-cache.ts +42 -0
  659. package/src/editor.ts +13 -0
  660. package/src/embedded-session-client.ts +104 -0
  661. package/src/file-node-visibility.ts +66 -0
  662. package/src/hooks/internal.ts +3 -2
  663. package/src/hooks/latest-question.ts +164 -0
  664. package/src/hooks/shared-machines-list.ts +34 -1
  665. package/src/hooks/shared-query.ts +721 -0
  666. package/src/hooks/use-attached-browsers.ts +1 -1
  667. package/src/hooks/use-auth-runs.ts +0 -27
  668. package/src/hooks/use-available-models.ts +21 -15
  669. package/src/hooks/use-browser-frame-stream.ts +19 -2
  670. package/src/hooks/use-browser-session.ts +680 -205
  671. package/src/hooks/use-browser-sessions.ts +32 -1
  672. package/src/hooks/use-client-config-flags.ts +118 -0
  673. package/src/hooks/use-codex-accounts.ts +247 -47
  674. package/src/hooks/use-composer.ts +340 -49
  675. package/src/hooks/use-computer-frame-stream.ts +25 -7
  676. package/src/hooks/use-computer-input-posture.ts +94 -0
  677. package/src/hooks/use-computer-session.ts +409 -95
  678. package/src/hooks/use-connect.ts +23 -0
  679. package/src/hooks/use-desktop-stream.ts +19 -28
  680. package/src/hooks/use-file-attachments.ts +118 -10
  681. package/src/hooks/use-goal.ts +107 -13
  682. package/src/hooks/use-human-input.ts +31 -4
  683. package/src/hooks/use-last-started-turn-policy.ts +46 -14
  684. package/src/hooks/use-machines.ts +4 -0
  685. package/src/hooks/use-new-conversation.ts +374 -0
  686. package/src/hooks/use-new-session-draft.ts +813 -0
  687. package/src/hooks/use-realtime-voice-models.ts +46 -0
  688. package/src/hooks/use-sandbox-files.ts +68 -20
  689. package/src/hooks/use-session-background-commands.ts +22 -11
  690. package/src/hooks/use-session-capabilities.ts +3 -2
  691. package/src/hooks/use-session-conversation.ts +150 -0
  692. package/src/hooks/use-session-events.ts +703 -382
  693. package/src/hooks/use-session-lineage.ts +20 -16
  694. package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
  695. package/src/hooks/use-session-model-account.ts +174 -0
  696. package/src/hooks/use-session.ts +53 -21
  697. package/src/hooks/use-slash-commands.ts +6 -11
  698. package/src/hooks/use-supergrok-accounts.ts +22 -8
  699. package/src/hooks/use-terminal-stream.ts +153 -27
  700. package/src/hooks/use-transcription.ts +6 -0
  701. package/src/hooks/use-turn-queue.ts +2 -1
  702. package/src/hooks/use-usage.ts +100 -0
  703. package/src/hooks/use-vaults.ts +153 -0
  704. package/src/hooks/use-video-artifact-playback.ts +1 -1
  705. package/src/hooks/use-voice-input.ts +127 -19
  706. package/src/hooks/use-workspace-capture.ts +3 -2
  707. package/src/hooks/use-workspace-edit.ts +23 -5
  708. package/src/hooks/use-workspace-sessions.ts +97 -32
  709. package/src/human-input-model.ts +359 -0
  710. package/src/human-input.ts +12 -1
  711. package/src/identity-link-accounts.tsx +148 -0
  712. package/src/identity-link-consent.tsx +192 -0
  713. package/src/index.ts +273 -16
  714. package/src/interaction.ts +1 -0
  715. package/src/lib/clipboard.ts +29 -0
  716. package/src/lib/error-message.ts +37 -0
  717. package/src/lib/format.ts +213 -16
  718. package/src/lib/host-theme.ts +524 -0
  719. package/src/lib/interaction-errors.ts +15 -0
  720. package/src/lib/menu-styles.ts +44 -0
  721. package/src/lib/notify-observer.ts +15 -0
  722. package/src/lib/pierre-diffs-loader.ts +53 -0
  723. package/src/lib/provider-recovery.ts +240 -0
  724. package/src/lib/terminal-input-readiness.ts +51 -0
  725. package/src/lib/transient-retry.ts +99 -0
  726. package/src/lib/workbench-peers.ts +62 -0
  727. package/src/lib/xterm-theme.ts +23 -21
  728. package/src/mcp-connection-status.ts +35 -0
  729. package/src/model-mark-paths.ts +53 -0
  730. package/src/model-picker-model.ts +330 -0
  731. package/src/model-policy.ts +299 -74
  732. package/src/native-previews.ts +100 -0
  733. package/src/new-session-draft.ts +22 -0
  734. package/src/notification-text.ts +81 -0
  735. package/src/older-history.ts +22 -4
  736. package/src/organization-model.ts +118 -0
  737. package/src/plugin-details.tsx +185 -0
  738. package/src/plugin-discovery.tsx +196 -0
  739. package/src/preview-loading-paint.ts +68 -0
  740. package/src/provider.tsx +74 -15
  741. package/src/queue-presentation-model.ts +464 -0
  742. package/src/realtime/dropdown-menu.tsx +19 -12
  743. package/src/realtime/embedded-new-voice.tsx +1 -0
  744. package/src/realtime/embedded-voice.tsx +3 -0
  745. package/src/realtime/realtime-control.tsx +138 -501
  746. package/src/realtime/session-realtime.ts +566 -0
  747. package/src/sandbox-label-model.ts +53 -0
  748. package/src/secret-reference-label.ts +43 -0
  749. package/src/secrets-ui.tsx +59 -0
  750. package/src/session-agents-model.ts +33 -0
  751. package/src/session-attention-model.ts +62 -0
  752. package/src/session-auth-recommendation.ts +48 -0
  753. package/src/session-capability-policy.ts +196 -0
  754. package/src/session-context.ts +3 -4
  755. package/src/session-feedback-model.ts +95 -0
  756. package/src/session-list-model.ts +434 -0
  757. package/src/session-realtime.ts +18 -0
  758. package/src/session-status-model.ts +99 -0
  759. package/src/session-ui.ts +98 -1
  760. package/src/session.ts +22 -1
  761. package/src/site-snapshot.ts +74 -0
  762. package/src/sites-ui.tsx +348 -0
  763. package/src/sites.ts +3 -0
  764. package/src/skill-discovery.tsx +208 -0
  765. package/src/terminal.ts +26 -0
  766. package/src/testing/session-scenarios.ts +404 -0
  767. package/src/timeline/activity-rail.tsx +242 -101
  768. package/src/timeline/agent-identity.tsx +84 -0
  769. package/src/timeline/agent-row.tsx +231 -0
  770. package/src/timeline/allowance-exhausted-row.tsx +86 -0
  771. package/src/timeline/compaction-copy.ts +115 -0
  772. package/src/timeline/entrance.tsx +28 -3
  773. package/src/timeline/fleet-decision-projection.ts +2 -1
  774. package/src/timeline/fleet-decision-row.tsx +1 -0
  775. package/src/timeline/focus-sequence.ts +44 -0
  776. package/src/timeline/genie-copy.ts +19 -0
  777. package/src/timeline/genie-loading.tsx +143 -0
  778. package/src/timeline/index.ts +30 -1
  779. package/src/timeline/knowledge-receipt.tsx +100 -0
  780. package/src/timeline/message-sender.tsx +71 -0
  781. package/src/timeline/notice-presentation.ts +48 -0
  782. package/src/timeline/parsers.ts +42 -2
  783. package/src/timeline/patch-apply-command.tsx +135 -0
  784. package/src/timeline/platform-activity-presentation.ts +166 -0
  785. package/src/timeline/platform-activity-row.tsx +15 -90
  786. package/src/timeline/presented-image.ts +63 -0
  787. package/src/timeline/projection.ts +1743 -76
  788. package/src/timeline/provider-logo.tsx +53 -0
  789. package/src/timeline/question-nav-model.ts +28 -0
  790. package/src/timeline/registry.ts +26 -4
  791. package/src/timeline/retained-image.ts +97 -0
  792. package/src/timeline/retained-loaders.ts +91 -0
  793. package/src/timeline/rolling-activity.tsx +80 -0
  794. package/src/timeline/screenshot-lightbox.tsx +319 -32
  795. package/src/timeline/session-usage-limit-row.tsx +42 -0
  796. package/src/timeline/shared.tsx +42 -15
  797. package/src/timeline/startup-dispatch-details.tsx +36 -0
  798. package/src/timeline/startup-preference.ts +33 -0
  799. package/src/timeline/startup-timings.tsx +145 -0
  800. package/src/timeline/tool-display-name.ts +19 -7
  801. package/src/timeline/tool-presentation.ts +1316 -0
  802. package/src/timeline/tool-renderers.tsx +835 -1138
  803. package/src/timeline/turn-summary-model.ts +343 -0
  804. package/src/timeline/turn-summary.tsx +272 -365
  805. package/src/timeline/types.ts +189 -6
  806. package/src/timeline/work-presentation.ts +189 -0
  807. package/src/timeline-model.ts +143 -0
  808. package/src/usage/allowance-copy.ts +64 -0
  809. package/src/usage/session-usage-limit.ts +266 -0
  810. package/src/usage/summary.ts +93 -0
  811. package/src/usage.ts +70 -0
  812. package/src/voice-recording-owner.ts +22 -0
  813. package/styles/compiled.css +2303 -745
  814. package/styles/connect.css +290 -0
  815. package/styles/connect.d.ts +1 -0
  816. package/styles/effective-tokens.css +1 -0
  817. package/styles/index.css +278 -9
  818. package/styles/responsive.css +99 -7
  819. package/styles/session-capability.css +44 -0
  820. package/styles/tokens.css +136 -66
  821. package/dist/browser-viewer-GXUICIAG.js +0 -14
  822. package/dist/chunk-4MDLEHXL.js.map +0 -1
  823. package/dist/chunk-5YK2ZDIG.js.map +0 -1
  824. package/dist/chunk-6H6S5V4Z.js +0 -9571
  825. package/dist/chunk-6H6S5V4Z.js.map +0 -1
  826. package/dist/chunk-ATQJEWCA.js +0 -2263
  827. package/dist/chunk-ATQJEWCA.js.map +0 -1
  828. package/dist/chunk-FK6VG4LL.js +0 -90
  829. package/dist/chunk-FK6VG4LL.js.map +0 -1
  830. package/dist/chunk-H5YGYNXS.js.map +0 -1
  831. package/dist/chunk-HUIKIDM5.js.map +0 -1
  832. package/dist/chunk-ICA6R6TW.js.map +0 -1
  833. package/dist/chunk-JVYQRRC4.js.map +0 -1
  834. package/dist/chunk-KCGXPP5V.js.map +0 -1
  835. package/dist/chunk-KZ73RL76.js.map +0 -1
  836. package/dist/chunk-LAKLF4PA.js +0 -141
  837. package/dist/chunk-LAKLF4PA.js.map +0 -1
  838. package/dist/chunk-MXJGO7LE.js.map +0 -1
  839. package/dist/chunk-NEXLLTP4.js.map +0 -1
  840. package/dist/chunk-PEI6RANI.js.map +0 -1
  841. package/dist/chunk-QGBJ6GHG.js.map +0 -1
  842. package/dist/chunk-T7VAYG2I.js.map +0 -1
  843. package/dist/chunk-W6NFJXSA.js +0 -454
  844. package/dist/chunk-W6NFJXSA.js.map +0 -1
  845. package/dist/chunk-WSK7G5LE.js +0 -170
  846. package/dist/chunk-WSK7G5LE.js.map +0 -1
  847. package/dist/chunk-X4A66EWZ.js +0 -223
  848. package/dist/chunk-X4A66EWZ.js.map +0 -1
  849. package/dist/chunk-X4JAFD5R.js.map +0 -1
  850. package/dist/chunk-XXWH2JLC.js.map +0 -1
  851. package/dist/chunk-ZUT5QSQB.js.map +0 -1
  852. package/dist/computer-viewer-ZOP4Q7A7.js +0 -16
  853. package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
  854. package/dist/hooks/use-environments.d.ts +0 -41
  855. package/dist/hooks/use-packs.d.ts +0 -32
  856. package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
  857. package/dist/queue-surface-implementation-BSKUWHRI.js.map +0 -1
  858. package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
  859. package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
  860. package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
  861. package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
  862. package/src/hooks/use-environments.ts +0 -182
  863. package/src/hooks/use-packs.ts +0 -157
  864. /package/dist/{browser-viewer-GXUICIAG.js.map → browser-viewer-M7BIVFTW.js.map} +0 -0
  865. /package/dist/{computer-viewer-ZOP4Q7A7.js.map → chat-interactive-block-BO2IWXVK.js.map} +0 -0
@@ -0,0 +1,464 @@
1
+ /**
2
+ * Queue presentation shared by the web queue surface and native docks: the
3
+ * bounded head/tail previews of queued prompts, and the reorder plan and its
4
+ * optimistic projection. No DOM, no React.
5
+ */
6
+ import type { SessionQueueSnapshot, SessionTurn } from "@opengeni/sdk";
7
+ import { QUEUE_ITEM_CONTENT_UNAVAILABLE, queueItemContent } from "./components/queue-item-content";
8
+
9
+ export { QUEUE_ITEM_CONTENT_UNAVAILABLE, queueItemContent };
10
+
11
+ export const QUEUE_ROW_PREVIEW_CHARACTERS = 360;
12
+ export const QUEUE_COLLAPSED_PREVIEW_CHARACTERS = 180;
13
+ const QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS = 32;
14
+ const QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS = 32;
15
+ const QUEUE_VISIBLE_END_IDENTITY_CHARACTERS = 18;
16
+ const QUEUE_PREVIEW_SEPARATOR = " … ";
17
+ // Hermes (React Native) has no Intl.Segmenter; there, previews fall back to
18
+ // code points, which keeps every boundary rule except grapheme joining.
19
+ let queuePreviewSegmenterCache: Intl.Segmenter | null | undefined;
20
+ function queuePreviewSegments(sample: string): string[] {
21
+ if (queuePreviewSegmenterCache === undefined) {
22
+ queuePreviewSegmenterCache =
23
+ typeof Intl !== "undefined" && typeof Intl.Segmenter === "function"
24
+ ? new Intl.Segmenter(undefined, { granularity: "grapheme" })
25
+ : null;
26
+ }
27
+ if (!queuePreviewSegmenterCache) return Array.from(sample);
28
+ return Array.from(queuePreviewSegmenterCache.segment(sample), (part) => part.segment);
29
+ }
30
+ const queuePromptNonRenderingCodePoint =
31
+ /[\p{White_Space}\p{Control}\p{Default_Ignorable_Code_Point}]/u;
32
+
33
+ type BoundedPromptSample = {
34
+ value: string;
35
+ characters: number;
36
+ truncated: boolean;
37
+ };
38
+
39
+ export type QueuePromptPreview = {
40
+ summary: string;
41
+ collapsedVisual: string;
42
+ visibleStart: string;
43
+ visibleIdentity: string | null;
44
+ visibleIdentityLabel: "End" | "Safe boundary" | null;
45
+ isFallback: boolean;
46
+ };
47
+
48
+ function labelQueuePreview(summary: string): QueuePromptPreview {
49
+ return {
50
+ summary,
51
+ collapsedVisual: summary,
52
+ visibleStart: summary,
53
+ visibleIdentity: null,
54
+ visibleIdentityLabel: null,
55
+ isFallback: false,
56
+ };
57
+ }
58
+
59
+ export function queueTurnPreview(
60
+ turn: SessionTurn | undefined,
61
+ maxCharacters: number,
62
+ ): QueuePromptPreview {
63
+ if (!turn) return queuePromptPreview("", maxCharacters);
64
+ return queueContentPreview(turn.prompt, turn.annotations?.length ?? 0, maxCharacters);
65
+ }
66
+
67
+ export function queueContentPreview(
68
+ prompt: string,
69
+ annotationCount: number,
70
+ maxCharacters: number,
71
+ ): QueuePromptPreview {
72
+ switch (queueItemContent(prompt, annotationCount)) {
73
+ case "text":
74
+ return queuePromptPreview(prompt, maxCharacters);
75
+ case "annotations":
76
+ return labelQueuePreview(
77
+ `${annotationCount} timeline ${annotationCount === 1 ? "annotation" : "annotations"}`,
78
+ );
79
+ case "unavailable":
80
+ return labelQueuePreview(QUEUE_ITEM_CONTENT_UNAVAILABLE);
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Build a bounded head/tail summary of an arbitrary queued prompt. Sampling
86
+ * both ends distinguishes prompts with equal long prefixes. Each sampled edge
87
+ * has a small amount of grapheme context so ordinary emoji/combining sequences
88
+ * can be retained whole. A cluster that exceeds that context is omitted rather
89
+ * than fragmented, and malformed UTF-16 is replaced only in the summary. The
90
+ * durable prompt remains exact and no operation scans or copies it in full.
91
+ */
92
+ export function queuePromptPreview(prompt: string, maxCharacters: number): QueuePromptPreview {
93
+ const wholePromptProbe = samplePromptStart(prompt, maxCharacters + 1);
94
+ if (!wholePromptProbe.truncated && wholePromptProbe.characters <= maxCharacters) {
95
+ const summary = replaceLoneSurrogates(wholePromptProbe.value);
96
+ return hasVisiblePromptContent(summary)
97
+ ? {
98
+ summary,
99
+ collapsedVisual: summary,
100
+ visibleStart: summary,
101
+ visibleIdentity: null,
102
+ visibleIdentityLabel: null,
103
+ isFallback: false,
104
+ }
105
+ : fallbackPromptPreview(prompt.length, wholePromptProbe.value, wholePromptProbe.value);
106
+ }
107
+
108
+ const suffixCharacters = Math.min(Math.floor(maxCharacters / 3), 120);
109
+ const prefixCharacters =
110
+ maxCharacters - codePointLength(QUEUE_PREVIEW_SEPARATOR) - suffixCharacters;
111
+ const prefixSample = samplePromptStart(
112
+ prompt,
113
+ prefixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
114
+ );
115
+ const suffixSample = samplePromptEnd(
116
+ prompt,
117
+ suffixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
118
+ );
119
+ const prefixSegments = segmentPromptSample(prefixSample.value);
120
+ const suffixSegments = segmentPromptSample(suffixSample.value);
121
+
122
+ // A cluster at a truncated sampling edge may continue outside the sample.
123
+ // Prefix sampling starts at the true source start, so only its last segment
124
+ // is ambiguous. Suffix sampling ends at the true source end, so its first is.
125
+ if (prefixSample.truncated) prefixSegments.pop();
126
+ if (suffixSample.truncated) {
127
+ let ambiguousSegment = suffixSegments.shift();
128
+ // A locally segmented leading fragment ending in ZWJ can join the next
129
+ // pictographic segment when omitted left context supplies its base. Keep
130
+ // backing off until that uncertainty no longer propagates to the right.
131
+ while (ambiguousSegment?.endsWith("\u200d") && suffixSegments.length > 0) {
132
+ ambiguousSegment = suffixSegments.shift();
133
+ }
134
+ // Regional Indicator pairing depends on the parity of the preceding run.
135
+ // If that run reaches the unknown sample boundary, omit all of its visible
136
+ // leading segments rather than potentially recombining halves of flags.
137
+ while (suffixSegments[0] && startsWithRegionalIndicator(suffixSegments[0])) {
138
+ suffixSegments.shift();
139
+ }
140
+ }
141
+
142
+ const prefix = takeWholeGraphemesFromStart(prefixSegments, prefixCharacters);
143
+ const suffix = takeWholeGraphemesFromEnd(suffixSegments, suffixCharacters);
144
+ const reference = boundedPromptSampleReference(
145
+ prompt.length,
146
+ prefixSample.value,
147
+ suffixSample.value,
148
+ );
149
+
150
+ if (!hasVisiblePromptContent(prefix) && !hasVisiblePromptContent(suffix)) {
151
+ return fallbackPromptPreview(prompt.length, prefixSample.value, suffixSample.value);
152
+ }
153
+
154
+ const safeSuffix = hasVisiblePromptContent(suffix)
155
+ ? suffix
156
+ : promptPreviewFallbackLabel(reference);
157
+ const summary = `${prefix}${QUEUE_PREVIEW_SEPARATOR}${safeSuffix}`;
158
+ if (!hasVisiblePromptContent(prefix)) {
159
+ return {
160
+ summary,
161
+ collapsedVisual: summary,
162
+ visibleStart: safeSuffix,
163
+ visibleIdentity: null,
164
+ visibleIdentityLabel: null,
165
+ isFallback: false,
166
+ };
167
+ }
168
+
169
+ const endIdentity = takeWholeGraphemesFromEnd(
170
+ suffixSegments,
171
+ QUEUE_VISIBLE_END_IDENTITY_CHARACTERS,
172
+ );
173
+ return {
174
+ summary,
175
+ collapsedVisual: summary,
176
+ visibleStart: prefix,
177
+ visibleIdentity: hasVisiblePromptContent(endIdentity) ? endIdentity : `ref ${reference}`,
178
+ visibleIdentityLabel: hasVisiblePromptContent(endIdentity) ? "End" : "Safe boundary",
179
+ isFallback: false,
180
+ };
181
+ }
182
+
183
+ function fallbackPromptPreview(
184
+ promptLength: number,
185
+ startSample: string,
186
+ endSample: string,
187
+ ): QueuePromptPreview {
188
+ const reference = boundedPromptSampleReference(promptLength, startSample, endSample);
189
+ const summary = promptPreviewFallbackLabel(reference);
190
+ return {
191
+ summary,
192
+ collapsedVisual: `Omitted · ${reference}`,
193
+ // The complete fallback remains the canonical accessible summary. Narrow
194
+ // collapsed/row layouts paint the bounded reference in a compact truthful
195
+ // form so ellipsis cannot hide the only identifying portion.
196
+ visibleStart: `Omitted · ${reference}`,
197
+ visibleIdentity: null,
198
+ visibleIdentityLabel: null,
199
+ isFallback: true,
200
+ };
201
+ }
202
+
203
+ function promptPreviewFallbackLabel(reference: string): string {
204
+ return `Content omitted at safe boundary · ref ${reference}`;
205
+ }
206
+
207
+ function boundedPromptSampleReference(
208
+ promptLength: number,
209
+ startSample: string,
210
+ endSample: string,
211
+ ): string {
212
+ const head = samplePromptStart(startSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
213
+ const tail = samplePromptEnd(endSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
214
+ let hash = 0x811c9dc5;
215
+ for (const value of [String(promptLength), head, tail]) {
216
+ for (let index = 0; index < value.length; index += 1) {
217
+ hash ^= value.charCodeAt(index);
218
+ hash = Math.imul(hash, 0x01000193);
219
+ }
220
+ hash ^= 0xffff;
221
+ hash = Math.imul(hash, 0x01000193);
222
+ }
223
+ return (hash >>> 0).toString(16).padStart(8, "0").toUpperCase();
224
+ }
225
+
226
+ function hasVisiblePromptContent(value: string): boolean {
227
+ // Callers pass only the already-bounded whole/head/tail preview samples.
228
+ // Default-ignorables and controls can survive trim() while painting no row
229
+ // identity at all (for example ZWJ, VS16, bidi controls, and tag characters).
230
+ for (const character of value) {
231
+ if (!queuePromptNonRenderingCodePoint.test(character)) return true;
232
+ }
233
+ return false;
234
+ }
235
+
236
+ function samplePromptStart(prompt: string, maxCharacters: number): BoundedPromptSample {
237
+ let end = 0;
238
+ let characters = 0;
239
+ while (end < prompt.length && characters < maxCharacters) {
240
+ const first = prompt.charCodeAt(end);
241
+ end +=
242
+ isHighSurrogate(first) &&
243
+ end + 1 < prompt.length &&
244
+ isLowSurrogate(prompt.charCodeAt(end + 1))
245
+ ? 2
246
+ : 1;
247
+ characters += 1;
248
+ }
249
+ return { value: prompt.slice(0, end), characters, truncated: end < prompt.length };
250
+ }
251
+
252
+ function samplePromptEnd(prompt: string, maxCharacters: number): BoundedPromptSample {
253
+ let start = prompt.length;
254
+ let characters = 0;
255
+ while (start > 0 && characters < maxCharacters) {
256
+ start -= 1;
257
+ if (
258
+ isLowSurrogate(prompt.charCodeAt(start)) &&
259
+ start > 0 &&
260
+ isHighSurrogate(prompt.charCodeAt(start - 1))
261
+ ) {
262
+ start -= 1;
263
+ }
264
+ characters += 1;
265
+ }
266
+ return { value: prompt.slice(start), characters, truncated: start > 0 };
267
+ }
268
+
269
+ function segmentPromptSample(sample: string): string[] {
270
+ return queuePreviewSegments(replaceLoneSurrogates(sample));
271
+ }
272
+
273
+ function replaceLoneSurrogates(value: string): string {
274
+ let sanitized = "";
275
+ for (let index = 0; index < value.length; index += 1) {
276
+ const current = value.charCodeAt(index);
277
+ if (
278
+ isHighSurrogate(current) &&
279
+ index + 1 < value.length &&
280
+ isLowSurrogate(value.charCodeAt(index + 1))
281
+ ) {
282
+ sanitized += value.slice(index, index + 2);
283
+ index += 1;
284
+ } else if (isHighSurrogate(current) || isLowSurrogate(current)) {
285
+ sanitized += "�";
286
+ } else {
287
+ sanitized += value[index];
288
+ }
289
+ }
290
+ return sanitized;
291
+ }
292
+
293
+ function takeWholeGraphemesFromStart(segments: string[], maxCharacters: number): string {
294
+ const selected: string[] = [];
295
+ let characters = 0;
296
+ for (const segment of segments) {
297
+ const segmentCharacters = codePointLength(segment);
298
+ if (characters + segmentCharacters > maxCharacters) break;
299
+ selected.push(segment);
300
+ characters += segmentCharacters;
301
+ }
302
+ while (selected.at(-1)?.trim().length === 0) selected.pop();
303
+ return selected.join("");
304
+ }
305
+
306
+ function takeWholeGraphemesFromEnd(segments: string[], maxCharacters: number): string {
307
+ const selected: string[] = [];
308
+ let characters = 0;
309
+ for (let index = segments.length - 1; index >= 0; index -= 1) {
310
+ const segment = segments[index];
311
+ if (!segment) continue;
312
+ const segmentCharacters = codePointLength(segment);
313
+ if (characters + segmentCharacters > maxCharacters) break;
314
+ selected.unshift(segment);
315
+ characters += segmentCharacters;
316
+ }
317
+ while (selected[0]?.trim().length === 0) selected.shift();
318
+ while (selected.at(-1)?.trim().length === 0) selected.pop();
319
+ return selected.join("");
320
+ }
321
+
322
+ function codePointLength(value: string): number {
323
+ let characters = 0;
324
+ for (const _character of value) characters += 1;
325
+ return characters;
326
+ }
327
+
328
+ function startsWithRegionalIndicator(value: string): boolean {
329
+ const codePoint = value.codePointAt(0);
330
+ return codePoint !== undefined && codePoint >= 0x1f1e6 && codePoint <= 0x1f1ff;
331
+ }
332
+
333
+ function isHighSurrogate(codeUnit: number): boolean {
334
+ return codeUnit >= 0xd800 && codeUnit <= 0xdbff;
335
+ }
336
+
337
+ function isLowSurrogate(codeUnit: number): boolean {
338
+ return codeUnit >= 0xdc00 && codeUnit <= 0xdfff;
339
+ }
340
+
341
+ /** Move one item, as dnd-kit's arrayMove does. */
342
+ export function moveQueueItem<T>(items: readonly T[], from: number, to: number): T[] {
343
+ const next = items.slice();
344
+ const [item] = next.splice(from, 1);
345
+ if (item === undefined) return next;
346
+ next.splice(to < 0 ? next.length + to : to, 0, item);
347
+ return next;
348
+ }
349
+
350
+ export type QueueMovePlan = {
351
+ /** The turn ids in their new order. */
352
+ turnIds: string[];
353
+ /** The server anchor: the turn the moved one now precedes, null for last. */
354
+ beforeTurnId: string | null;
355
+ /** The bounded destination index. */
356
+ index: number;
357
+ };
358
+
359
+ /** The reorder request for moving a queued turn to an index, or null for a no-op. */
360
+ export function queueMovePlan(
361
+ queue: readonly SessionTurn[],
362
+ turnId: string,
363
+ nextIndex: number,
364
+ ): QueueMovePlan | null {
365
+ const oldIndex = queue.findIndex((turn) => turn.id === turnId);
366
+ if (oldIndex < 0) return null;
367
+ const index = Math.max(0, Math.min(nextIndex, queue.length - 1));
368
+ if (oldIndex === index) return null;
369
+ const ordered = moveQueueItem(queue, oldIndex, index);
370
+ return {
371
+ turnIds: ordered.map((turn) => turn.id),
372
+ beforeTurnId: ordered[index + 1]?.id ?? null,
373
+ index,
374
+ };
375
+ }
376
+
377
+ export type PendingQueueMove = { baseVersion: number | null; turnIds: string[] };
378
+
379
+ /**
380
+ * The queue as shown while a move is in flight: the optimistic order, unless
381
+ * any authoritative change arrived. A projection never omits or invents a row.
382
+ */
383
+ export function projectPendingQueueMove(
384
+ queue: SessionTurn[],
385
+ pendingMove: PendingQueueMove | null,
386
+ snapshot: Pick<SessionQueueSnapshot, "version"> | null,
387
+ ): SessionTurn[] {
388
+ if (
389
+ !pendingMove ||
390
+ pendingMove.baseVersion === null ||
391
+ snapshot?.version !== pendingMove.baseVersion
392
+ ) {
393
+ return queue;
394
+ }
395
+ const byId = new Map(queue.map((turn) => [turn.id, turn]));
396
+ const projected = pendingMove.turnIds.map((turnId) => byId.get(turnId));
397
+ if (projected.some((turn) => !turn) || projected.length !== queue.length) {
398
+ return queue;
399
+ }
400
+ return projected as SessionTurn[];
401
+ }
402
+
403
+ /** Copy for the "replace your draft with this queued prompt" confirmation. */
404
+ export const QUEUE_REPLACE_DRAFT_COPY = {
405
+ title: "Your composer already has a draft. Replace it with this queued prompt?",
406
+ detail:
407
+ "The current draft will be permanently discarded; this queued prompt is preserved until you confirm.",
408
+ keep: "Keep current draft",
409
+ replace: "Replace and edit",
410
+ } as const;
411
+
412
+ export type QueuedTurnPresentation = {
413
+ kind: "prompt" | "realtime_voice" | "realtime_voice_handoff";
414
+ text: string;
415
+ };
416
+
417
+ function objectValue(value: unknown): Record<string, unknown> | null {
418
+ return value !== null && typeof value === "object" && !Array.isArray(value)
419
+ ? (value as Record<string, unknown>)
420
+ : null;
421
+ }
422
+
423
+ /** What a queued row shows: the prompt, or the transcript of a voice request. */
424
+ export function queuedTurnPresentation(turn: SessionTurn): QueuedTurnPresentation {
425
+ const realtimeDelegation = objectValue(turn.metadata.realtimeDelegation);
426
+ const inputTranscript = realtimeDelegation?.inputTranscript;
427
+ if (typeof inputTranscript === "string" && inputTranscript.trim()) {
428
+ return { kind: "realtime_voice", text: inputTranscript.trim() };
429
+ }
430
+ if (objectValue(turn.metadata.realtimeTailFlush)) {
431
+ return { kind: "realtime_voice_handoff", text: "Remaining voice context" };
432
+ }
433
+ return { kind: "prompt", text: turn.prompt };
434
+ }
435
+
436
+ export function isSteeringTurn(turn: SessionTurn): boolean {
437
+ return turn.metadata.delivery === "steer";
438
+ }
439
+
440
+ /** A queued turn that is really waiting: not already a steer in flight. */
441
+ export function isAuthoritativeQueuedTurn(
442
+ turn: SessionTurn,
443
+ mutationFor: (turnId: string) => string | null,
444
+ ): boolean {
445
+ return !isSteeringTurn(turn) && mutationFor(turn.id) !== "steer";
446
+ }
447
+
448
+ export function countAuthoritativeQueuedTurns(
449
+ turns: readonly SessionTurn[],
450
+ mutationFor: (turnId: string) => string | null,
451
+ ): number {
452
+ return turns.filter((turn) => isAuthoritativeQueuedTurn(turn, mutationFor)).length;
453
+ }
454
+
455
+ /** The move anchors for one row's Move up / Move down. */
456
+ export function queueNeighborAnchors(
457
+ turns: readonly SessionTurn[],
458
+ index: number,
459
+ ): { beforeUp: string | null; beforeDown: string | null } {
460
+ return {
461
+ beforeUp: index > 0 ? (turns[index - 1]?.id ?? null) : null,
462
+ beforeDown: index < turns.length - 1 ? (turns[index + 2]?.id ?? null) : null,
463
+ };
464
+ }
@@ -4,6 +4,15 @@ import { ChevronRightIcon } from "lucide-react";
4
4
  import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
5
5
  import { createContext, useContext, type ComponentProps, type Ref } from "react";
6
6
  import { cn } from "../lib/cn";
7
+ import {
8
+ MENU_CHEVRON_CLASS,
9
+ MENU_ITEM_CLASS,
10
+ MENU_SEPARATOR_CLASS,
11
+ MENU_SURFACE_CLASS,
12
+ } from "../lib/menu-styles";
13
+
14
+ const MENU_MOTION_CLASS =
15
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95";
7
16
  import { usePortalTokenSource, usePortalTokenStyle } from "../lib/use-portal-token-style";
8
17
 
9
18
  type DropdownMenuSourceContextValue = {
@@ -58,7 +67,9 @@ function DropdownMenuContent({
58
67
  data-slot="dropdown-menu-content"
59
68
  sideOffset={sideOffset}
60
69
  className={cn(
61
- "og-root z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
70
+ "og-root z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto",
71
+ MENU_SURFACE_CLASS,
72
+ MENU_MOTION_CLASS,
62
73
  className,
63
74
  )}
64
75
  style={{ ...portalStyle, ...style }}
@@ -82,10 +93,7 @@ function DropdownMenuItem({
82
93
  data-slot="dropdown-menu-item"
83
94
  data-inset={inset}
84
95
  data-variant={variant}
85
- className={cn(
86
- "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-og-menu outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!",
87
- className,
88
- )}
96
+ className={cn(MENU_ITEM_CLASS, "data-[inset]:pl-9", className)}
89
97
  {...props}
90
98
  />
91
99
  );
@@ -98,7 +106,7 @@ function DropdownMenuSeparator({
98
106
  return (
99
107
  <DropdownMenuPrimitive.Separator
100
108
  data-slot="dropdown-menu-separator"
101
- className={cn("-mx-1 my-1 h-px bg-border", className)}
109
+ className={cn(MENU_SEPARATOR_CLASS, className)}
102
110
  {...props}
103
111
  />
104
112
  );
@@ -118,14 +126,11 @@ function DropdownMenuSubTrigger({
118
126
  <DropdownMenuPrimitive.SubTrigger
119
127
  data-slot="dropdown-menu-sub-trigger"
120
128
  data-inset={inset}
121
- className={cn(
122
- "flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-og-menu outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
123
- className,
124
- )}
129
+ className={cn(MENU_ITEM_CLASS, "data-[inset]:pl-9", className)}
125
130
  {...props}
126
131
  >
127
132
  {children}
128
- <ChevronRightIcon className="ml-auto size-4" />
133
+ <ChevronRightIcon aria-hidden="true" className={cn(MENU_CHEVRON_CLASS, "ml-auto")} />
129
134
  </DropdownMenuPrimitive.SubTrigger>
130
135
  );
131
136
  }
@@ -141,7 +146,9 @@ function DropdownMenuSubContent({
141
146
  <DropdownMenuPrimitive.SubContent
142
147
  data-slot="dropdown-menu-sub-content"
143
148
  className={cn(
144
- "og-root z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
149
+ "og-root z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden",
150
+ MENU_SURFACE_CLASS,
151
+ MENU_MOTION_CLASS,
145
152
  className,
146
153
  )}
147
154
  style={{ ...portalStyle, ...style }}
@@ -0,0 +1 @@
1
+ export { NewSessionRealtimeControl as default } from "./realtime-control";
@@ -0,0 +1,3 @@
1
+ // Keep the complete conversation's voice control lazy without a second call,
2
+ // model-selection or autostart implementation.
3
+ export { SessionRealtimeControl as default } from "./realtime-control";