@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
@@ -17,6 +17,7 @@ import {
17
17
  } from "@dnd-kit/sortable";
18
18
  import { CSS } from "@dnd-kit/utilities";
19
19
  import type { SessionPendingInputPreview, SessionTurn, TimelineAnnotation } from "@opengeni/sdk";
20
+ import { modelDisplayName } from "@opengeni/sdk/model-display";
20
21
  import {
21
22
  ArrowDownToLineIcon,
22
23
  ArrowUpToLineIcon,
@@ -37,6 +38,7 @@ import {
37
38
  } from "react";
38
39
 
39
40
  import { DropdownMenu } from "radix-ui";
41
+ import { MENU_ITEM_CLASS, MENU_SEPARATOR_CLASS, MENU_SURFACE_CLASS } from "../lib/menu-styles";
40
42
  import type { ComposerState } from "../hooks/use-composer";
41
43
  import type { QueueMutationKind, UseTurnQueueResult } from "../hooks/use-turn-queue";
42
44
  import {
@@ -45,9 +47,23 @@ import {
45
47
  usePortalTokenStyle,
46
48
  } from "../lib/use-portal-token-style";
47
49
  import { requestQueueDraftEdit } from "./queue-draft-policy";
50
+ import {
51
+ projectPendingQueueMove,
52
+ QUEUE_COLLAPSED_PREVIEW_CHARACTERS,
53
+ QUEUE_REPLACE_DRAFT_COPY,
54
+ QUEUE_ROW_PREVIEW_CHARACTERS,
55
+ queueContentPreview,
56
+ queueMovePlan,
57
+ queuePromptPreview,
58
+ queueTurnPreview,
59
+ } from "../queue-presentation-model";
60
+ import { QUEUE_ITEM_CONTENT_UNAVAILABLE, queueItemContent } from "./queue-item-content";
48
61
  import { QueueErrorAlert, QueueStoppingStatus } from "./queue-surface-state";
49
62
  import { TimelineAnnotationsChip } from "./timeline-annotations";
50
63
 
64
+ // Queued prompts can be long; menu rows wrap instead of truncating.
65
+ const QUEUE_MENU_ITEM_CLASS = `${MENU_ITEM_CLASS} whitespace-normal break-words`;
66
+
51
67
  /** The sole pending-input surface: compact above Goal, Agents, and composer. */
52
68
  type QueueSurfaceCommonProps = {
53
69
  /** Focus the composer owned by this queue after checkout/removal. */
@@ -121,36 +137,21 @@ export function QueueSurface({
121
137
  if (oldIndex < 0) return queue.queue;
122
138
  return arrayMove(queue.queue, oldIndex, keyboardDrag.projectedIndex);
123
139
  }
124
- if (
125
- !pendingMove ||
126
- pendingMove.baseVersion === null ||
127
- queue.snapshot?.version !== pendingMove.baseVersion
128
- ) {
129
- return queue.queue;
130
- }
131
- const byId = new Map(queue.queue.map((turn) => [turn.id, turn]));
132
- const projected = pendingMove.turnIds.map((turnId) => byId.get(turnId));
133
140
  // Never let an optimistic ordering projection omit or invent a row. Any
134
141
  // concurrent authoritative membership change wins immediately.
135
- if (projected.some((turn) => !turn) || projected.length !== queue.queue.length) {
136
- return queue.queue;
137
- }
138
- return projected as SessionTurn[];
139
- }, [keyboardDrag, pendingMove, queue.queue, queue.snapshot?.version]);
142
+ return projectPendingQueueMove(queue.queue, pendingMove, queue.snapshot);
143
+ }, [keyboardDrag, pendingMove, queue.queue, queue.snapshot]);
140
144
 
141
145
  const ids = useMemo(() => displayedQueue.map((turn) => turn.id), [displayedQueue]);
142
146
  const moveToIndex = useCallback(
143
147
  async (turnId: string, nextIndex: number): Promise<void> => {
144
148
  if (queue.mutating || pendingMove) return;
145
- const oldIndex = queue.queue.findIndex((turn) => turn.id === turnId);
146
- if (oldIndex < 0) return;
147
- const boundedIndex = Math.max(0, Math.min(nextIndex, queue.queue.length - 1));
148
- if (oldIndex === boundedIndex) return;
149
- const ordered = arrayMove(queue.queue, oldIndex, boundedIndex);
150
- const beforeTurnId = ordered[boundedIndex + 1]?.id ?? null;
149
+ const plan = queueMovePlan(queue.queue, turnId, nextIndex);
150
+ if (!plan) return;
151
+ const { beforeTurnId, index: boundedIndex } = plan;
151
152
  setPendingMove({
152
153
  baseVersion: queue.snapshot?.version ?? null,
153
- turnIds: ordered.map((turn) => turn.id),
154
+ turnIds: plan.turnIds,
154
155
  });
155
156
  setAnnouncement(`Saving queued prompt at position ${boundedIndex + 1}.`);
156
157
  try {
@@ -504,314 +505,6 @@ function PendingMachineInputs({
504
505
  );
505
506
  }
506
507
 
507
- const QUEUE_ROW_PREVIEW_CHARACTERS = 360;
508
- const QUEUE_COLLAPSED_PREVIEW_CHARACTERS = 180;
509
- const QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS = 32;
510
- const QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS = 32;
511
- const QUEUE_VISIBLE_END_IDENTITY_CHARACTERS = 18;
512
- const QUEUE_PREVIEW_SEPARATOR = " … ";
513
- const queuePreviewSegmenter = new Intl.Segmenter(undefined, { granularity: "grapheme" });
514
- const queuePromptNonRenderingCodePoint =
515
- /[\p{White_Space}\p{Control}\p{Default_Ignorable_Code_Point}]/u;
516
-
517
- type BoundedPromptSample = {
518
- value: string;
519
- characters: number;
520
- truncated: boolean;
521
- };
522
-
523
- type QueuePromptPreview = {
524
- summary: string;
525
- collapsedVisual: string;
526
- visibleStart: string;
527
- visibleIdentity: string | null;
528
- visibleIdentityLabel: "End" | "Safe boundary" | null;
529
- isFallback: boolean;
530
- };
531
-
532
- function annotationOnlyQueuePreview(count: number): QueuePromptPreview {
533
- const summary = `${count} timeline ${count === 1 ? "annotation" : "annotations"}`;
534
- return {
535
- summary,
536
- collapsedVisual: summary,
537
- visibleStart: summary,
538
- visibleIdentity: null,
539
- visibleIdentityLabel: null,
540
- isFallback: false,
541
- };
542
- }
543
-
544
- function queueTurnPreview(
545
- turn: SessionTurn | undefined,
546
- maxCharacters: number,
547
- ): QueuePromptPreview {
548
- if (!turn) return queuePromptPreview("", maxCharacters);
549
- const annotations = turn.annotations ?? [];
550
- return turn.prompt.length === 0 && annotations.length > 0
551
- ? annotationOnlyQueuePreview(annotations.length)
552
- : queuePromptPreview(turn.prompt, maxCharacters);
553
- }
554
-
555
- /**
556
- * Build a bounded head/tail summary of an arbitrary queued prompt. Sampling
557
- * both ends distinguishes prompts with equal long prefixes. Each sampled edge
558
- * has a small amount of grapheme context so ordinary emoji/combining sequences
559
- * can be retained whole. A cluster that exceeds that context is omitted rather
560
- * than fragmented, and malformed UTF-16 is replaced only in the summary. The
561
- * durable prompt remains exact and no operation scans or copies it in full.
562
- */
563
- function queuePromptPreview(prompt: string, maxCharacters: number): QueuePromptPreview {
564
- const wholePromptProbe = samplePromptStart(prompt, maxCharacters + 1);
565
- if (!wholePromptProbe.truncated && wholePromptProbe.characters <= maxCharacters) {
566
- const summary = replaceLoneSurrogates(wholePromptProbe.value);
567
- return hasVisiblePromptContent(summary)
568
- ? {
569
- summary,
570
- collapsedVisual: summary,
571
- visibleStart: summary,
572
- visibleIdentity: null,
573
- visibleIdentityLabel: null,
574
- isFallback: false,
575
- }
576
- : fallbackPromptPreview(prompt.length, wholePromptProbe.value, wholePromptProbe.value);
577
- }
578
-
579
- const suffixCharacters = Math.min(Math.floor(maxCharacters / 3), 120);
580
- const prefixCharacters =
581
- maxCharacters - codePointLength(QUEUE_PREVIEW_SEPARATOR) - suffixCharacters;
582
- const prefixSample = samplePromptStart(
583
- prompt,
584
- prefixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
585
- );
586
- const suffixSample = samplePromptEnd(
587
- prompt,
588
- suffixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
589
- );
590
- const prefixSegments = segmentPromptSample(prefixSample.value);
591
- const suffixSegments = segmentPromptSample(suffixSample.value);
592
-
593
- // A cluster at a truncated sampling edge may continue outside the sample.
594
- // Prefix sampling starts at the true source start, so only its last segment
595
- // is ambiguous. Suffix sampling ends at the true source end, so its first is.
596
- if (prefixSample.truncated) prefixSegments.pop();
597
- if (suffixSample.truncated) {
598
- let ambiguousSegment = suffixSegments.shift();
599
- // A locally segmented leading fragment ending in ZWJ can join the next
600
- // pictographic segment when omitted left context supplies its base. Keep
601
- // backing off until that uncertainty no longer propagates to the right.
602
- while (ambiguousSegment?.endsWith("\u200d") && suffixSegments.length > 0) {
603
- ambiguousSegment = suffixSegments.shift();
604
- }
605
- // Regional Indicator pairing depends on the parity of the preceding run.
606
- // If that run reaches the unknown sample boundary, omit all of its visible
607
- // leading segments rather than potentially recombining halves of flags.
608
- while (suffixSegments[0] && startsWithRegionalIndicator(suffixSegments[0])) {
609
- suffixSegments.shift();
610
- }
611
- }
612
-
613
- const prefix = takeWholeGraphemesFromStart(prefixSegments, prefixCharacters);
614
- const suffix = takeWholeGraphemesFromEnd(suffixSegments, suffixCharacters);
615
- const reference = boundedPromptSampleReference(
616
- prompt.length,
617
- prefixSample.value,
618
- suffixSample.value,
619
- );
620
-
621
- if (!hasVisiblePromptContent(prefix) && !hasVisiblePromptContent(suffix)) {
622
- return fallbackPromptPreview(prompt.length, prefixSample.value, suffixSample.value);
623
- }
624
-
625
- const safeSuffix = hasVisiblePromptContent(suffix)
626
- ? suffix
627
- : promptPreviewFallbackLabel(reference);
628
- const summary = `${prefix}${QUEUE_PREVIEW_SEPARATOR}${safeSuffix}`;
629
- if (!hasVisiblePromptContent(prefix)) {
630
- return {
631
- summary,
632
- collapsedVisual: summary,
633
- visibleStart: safeSuffix,
634
- visibleIdentity: null,
635
- visibleIdentityLabel: null,
636
- isFallback: false,
637
- };
638
- }
639
-
640
- const endIdentity = takeWholeGraphemesFromEnd(
641
- suffixSegments,
642
- QUEUE_VISIBLE_END_IDENTITY_CHARACTERS,
643
- );
644
- return {
645
- summary,
646
- collapsedVisual: summary,
647
- visibleStart: prefix,
648
- visibleIdentity: hasVisiblePromptContent(endIdentity) ? endIdentity : `ref ${reference}`,
649
- visibleIdentityLabel: hasVisiblePromptContent(endIdentity) ? "End" : "Safe boundary",
650
- isFallback: false,
651
- };
652
- }
653
-
654
- function fallbackPromptPreview(
655
- promptLength: number,
656
- startSample: string,
657
- endSample: string,
658
- ): QueuePromptPreview {
659
- const reference = boundedPromptSampleReference(promptLength, startSample, endSample);
660
- const summary = promptPreviewFallbackLabel(reference);
661
- return {
662
- summary,
663
- collapsedVisual: `Omitted · ${reference}`,
664
- // The complete fallback remains the canonical accessible summary. Narrow
665
- // collapsed/row layouts paint the bounded reference in a compact truthful
666
- // form so ellipsis cannot hide the only identifying portion.
667
- visibleStart: `Omitted · ${reference}`,
668
- visibleIdentity: null,
669
- visibleIdentityLabel: null,
670
- isFallback: true,
671
- };
672
- }
673
-
674
- function promptPreviewFallbackLabel(reference: string): string {
675
- return `Content omitted at safe boundary · ref ${reference}`;
676
- }
677
-
678
- function boundedPromptSampleReference(
679
- promptLength: number,
680
- startSample: string,
681
- endSample: string,
682
- ): string {
683
- const head = samplePromptStart(startSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
684
- const tail = samplePromptEnd(endSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
685
- let hash = 0x811c9dc5;
686
- for (const value of [String(promptLength), head, tail]) {
687
- for (let index = 0; index < value.length; index += 1) {
688
- hash ^= value.charCodeAt(index);
689
- hash = Math.imul(hash, 0x01000193);
690
- }
691
- hash ^= 0xffff;
692
- hash = Math.imul(hash, 0x01000193);
693
- }
694
- return (hash >>> 0).toString(16).padStart(8, "0").toUpperCase();
695
- }
696
-
697
- function hasVisiblePromptContent(value: string): boolean {
698
- // Callers pass only the already-bounded whole/head/tail preview samples.
699
- // Default-ignorables and controls can survive trim() while painting no row
700
- // identity at all (for example ZWJ, VS16, bidi controls, and tag characters).
701
- for (const character of value) {
702
- if (!queuePromptNonRenderingCodePoint.test(character)) return true;
703
- }
704
- return false;
705
- }
706
-
707
- function samplePromptStart(prompt: string, maxCharacters: number): BoundedPromptSample {
708
- let end = 0;
709
- let characters = 0;
710
- while (end < prompt.length && characters < maxCharacters) {
711
- const first = prompt.charCodeAt(end);
712
- end +=
713
- isHighSurrogate(first) &&
714
- end + 1 < prompt.length &&
715
- isLowSurrogate(prompt.charCodeAt(end + 1))
716
- ? 2
717
- : 1;
718
- characters += 1;
719
- }
720
- return { value: prompt.slice(0, end), characters, truncated: end < prompt.length };
721
- }
722
-
723
- function samplePromptEnd(prompt: string, maxCharacters: number): BoundedPromptSample {
724
- let start = prompt.length;
725
- let characters = 0;
726
- while (start > 0 && characters < maxCharacters) {
727
- start -= 1;
728
- if (
729
- isLowSurrogate(prompt.charCodeAt(start)) &&
730
- start > 0 &&
731
- isHighSurrogate(prompt.charCodeAt(start - 1))
732
- ) {
733
- start -= 1;
734
- }
735
- characters += 1;
736
- }
737
- return { value: prompt.slice(start), characters, truncated: start > 0 };
738
- }
739
-
740
- function segmentPromptSample(sample: string): string[] {
741
- return Array.from(
742
- queuePreviewSegmenter.segment(replaceLoneSurrogates(sample)),
743
- ({ segment }) => segment,
744
- );
745
- }
746
-
747
- function replaceLoneSurrogates(value: string): string {
748
- let sanitized = "";
749
- for (let index = 0; index < value.length; index += 1) {
750
- const current = value.charCodeAt(index);
751
- if (
752
- isHighSurrogate(current) &&
753
- index + 1 < value.length &&
754
- isLowSurrogate(value.charCodeAt(index + 1))
755
- ) {
756
- sanitized += value.slice(index, index + 2);
757
- index += 1;
758
- } else if (isHighSurrogate(current) || isLowSurrogate(current)) {
759
- sanitized += "�";
760
- } else {
761
- sanitized += value[index];
762
- }
763
- }
764
- return sanitized;
765
- }
766
-
767
- function takeWholeGraphemesFromStart(segments: string[], maxCharacters: number): string {
768
- const selected: string[] = [];
769
- let characters = 0;
770
- for (const segment of segments) {
771
- const segmentCharacters = codePointLength(segment);
772
- if (characters + segmentCharacters > maxCharacters) break;
773
- selected.push(segment);
774
- characters += segmentCharacters;
775
- }
776
- while (selected.at(-1)?.trim().length === 0) selected.pop();
777
- return selected.join("");
778
- }
779
-
780
- function takeWholeGraphemesFromEnd(segments: string[], maxCharacters: number): string {
781
- const selected: string[] = [];
782
- let characters = 0;
783
- for (let index = segments.length - 1; index >= 0; index -= 1) {
784
- const segment = segments[index];
785
- if (!segment) continue;
786
- const segmentCharacters = codePointLength(segment);
787
- if (characters + segmentCharacters > maxCharacters) break;
788
- selected.unshift(segment);
789
- characters += segmentCharacters;
790
- }
791
- while (selected[0]?.trim().length === 0) selected.shift();
792
- while (selected.at(-1)?.trim().length === 0) selected.pop();
793
- return selected.join("");
794
- }
795
-
796
- function codePointLength(value: string): number {
797
- let characters = 0;
798
- for (const _character of value) characters += 1;
799
- return characters;
800
- }
801
-
802
- function startsWithRegionalIndicator(value: string): boolean {
803
- const codePoint = value.codePointAt(0);
804
- return codePoint !== undefined && codePoint >= 0x1f1e6 && codePoint <= 0x1f1ff;
805
- }
806
-
807
- function isHighSurrogate(codeUnit: number): boolean {
808
- return codeUnit >= 0xd800 && codeUnit <= 0xdbff;
809
- }
810
-
811
- function isLowSurrogate(codeUnit: number): boolean {
812
- return codeUnit >= 0xdc00 && codeUnit <= 0xdfff;
813
- }
814
-
815
508
  function QueuePrompt({
816
509
  prompt,
817
510
  annotations,
@@ -825,11 +518,9 @@ function QueuePrompt({
825
518
  }) {
826
519
  const [expanded, setExpanded] = useState(false);
827
520
  const fullContentId = useId();
521
+ const content = queueItemContent(prompt, annotations.length);
828
522
  const preview = useMemo(
829
- () =>
830
- prompt.length === 0 && annotations.length > 0
831
- ? annotationOnlyQueuePreview(annotations.length)
832
- : queuePromptPreview(prompt, QUEUE_ROW_PREVIEW_CHARACTERS),
523
+ () => queueContentPreview(prompt, annotations.length, QUEUE_ROW_PREVIEW_CHARACTERS),
833
524
  [annotations.length, prompt],
834
525
  );
835
526
 
@@ -880,6 +571,14 @@ function QueuePrompt({
880
571
  className={prompt ? "mt-1" : undefined}
881
572
  />
882
573
  ) : null}
574
+ {content === "unavailable" ? (
575
+ <p
576
+ className="text-og-control leading-5 text-fg-muted italic"
577
+ data-testid={`queue-prompt-unavailable-${index + 1}`}
578
+ >
579
+ {QUEUE_ITEM_CONTENT_UNAVAILABLE}
580
+ </p>
581
+ ) : null}
883
582
  {prompt ? (
884
583
  <button
885
584
  type="button"
@@ -953,7 +652,7 @@ function ReadOnlyQueueRow({
953
652
  {turn.tools.length} tool{turn.tools.length === 1 ? "" : "s"}
954
653
  </span>
955
654
  ) : null}
956
- <span className="min-w-0 truncate">{turn.model}</span>
655
+ <span className="min-w-0 truncate">{modelDisplayName(turn.model)}</span>
957
656
  <span className="shrink-0">{turn.reasoningEffort}</span>
958
657
  </div>
959
658
  </div>
@@ -1051,7 +750,7 @@ function SortableQueueRow({
1051
750
  {turn.tools.length} tool{turn.tools.length === 1 ? "" : "s"}
1052
751
  </span>
1053
752
  ) : null}
1054
- <span className="min-w-0 truncate">{turn.model}</span>
753
+ <span className="min-w-0 truncate">{modelDisplayName(turn.model)}</span>
1055
754
  <span className="shrink-0">{turn.reasoningEffort}</span>
1056
755
  </div>
1057
756
  {pending ? (
@@ -1075,6 +774,7 @@ function SortableQueueRow({
1075
774
  disabled={pending !== null}
1076
775
  onClick={onSteer}
1077
776
  aria-label={`Steer queued prompt ${index + 1}`}
777
+ data-analytics-action="steer"
1078
778
  title="Steer — interrupt the current turn and send this message now"
1079
779
  className="inline-flex h-7 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-og-control font-medium text-fg outline-hidden transition-[background-color] hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-50 pointer-coarse:min-h-[44px] pointer-coarse:min-w-[44px]"
1080
780
  >
@@ -1118,48 +818,46 @@ function SortableQueueRow({
1118
818
  <DropdownMenu.Content
1119
819
  align="end"
1120
820
  sideOffset={4}
1121
- className="og-root z-50 w-48 max-w-[calc(100vw-16px)] rounded-md border border-border bg-surface p-1 text-og-control text-fg shadow-lg"
821
+ collisionPadding={8}
822
+ className={`${MENU_SURFACE_CLASS} og-root z-50 max-h-(--radix-dropdown-menu-content-available-height) w-52 max-w-[calc(100vw-16px)] overflow-x-hidden overflow-y-auto`}
1122
823
  style={portalTokenStyle}
1123
824
  data-testid={`queue-actions-menu-${index + 1}`}
1124
825
  >
1125
826
  {onEdit ? (
1126
827
  <>
1127
- <DropdownMenu.Item
1128
- className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 pointer-coarse:min-h-[44px]"
1129
- onSelect={onEdit}
1130
- >
1131
- <PencilIcon className="size-3.5" /> Edit in composer
828
+ <DropdownMenu.Item className={QUEUE_MENU_ITEM_CLASS} onSelect={onEdit}>
829
+ <PencilIcon /> Edit in composer
1132
830
  </DropdownMenu.Item>
1133
- <DropdownMenu.Separator className="my-1 h-px bg-border" />
831
+ <DropdownMenu.Separator className={MENU_SEPARATOR_CLASS} />
1134
832
  </>
1135
833
  ) : null}
1136
834
  <DropdownMenu.Item
1137
- className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
835
+ className={QUEUE_MENU_ITEM_CLASS}
1138
836
  disabled={index === 0}
1139
837
  onSelect={() => onMove(0)}
1140
838
  >
1141
- <ArrowUpToLineIcon className="size-3.5" /> Move to top
839
+ <ArrowUpToLineIcon /> Move to top
1142
840
  </DropdownMenu.Item>
1143
841
  <DropdownMenu.Item
1144
- className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
842
+ className={QUEUE_MENU_ITEM_CLASS}
1145
843
  disabled={index === 0}
1146
844
  onSelect={() => onMove(index - 1)}
1147
845
  >
1148
846
  Move up
1149
847
  </DropdownMenu.Item>
1150
848
  <DropdownMenu.Item
1151
- className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
849
+ className={QUEUE_MENU_ITEM_CLASS}
1152
850
  disabled={index === count - 1}
1153
851
  onSelect={() => onMove(index + 1)}
1154
852
  >
1155
853
  Move down
1156
854
  </DropdownMenu.Item>
1157
855
  <DropdownMenu.Item
1158
- className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
856
+ className={QUEUE_MENU_ITEM_CLASS}
1159
857
  disabled={index === count - 1}
1160
858
  onSelect={() => onMove(count - 1)}
1161
859
  >
1162
- <ArrowDownToLineIcon className="size-3.5" /> Move to bottom
860
+ <ArrowDownToLineIcon /> Move to bottom
1163
861
  </DropdownMenu.Item>
1164
862
  </DropdownMenu.Content>
1165
863
  </DropdownMenu.Portal>
@@ -1168,25 +866,22 @@ function SortableQueueRow({
1168
866
  </div>
1169
867
  {confirmingReplace ? (
1170
868
  <div className="mx-3 mb-2 rounded-md border border-status-waiting/30 bg-status-waiting/10 p-2 text-og-control text-fg">
1171
- <p>Your composer already has a draft. Replace it with this queued prompt?</p>
1172
- <p className="mt-0.5 text-fg-muted">
1173
- The current draft will be permanently discarded; this queued prompt is preserved until
1174
- you confirm.
1175
- </p>
869
+ <p>{QUEUE_REPLACE_DRAFT_COPY.title}</p>
870
+ <p className="mt-0.5 text-fg-muted">{QUEUE_REPLACE_DRAFT_COPY.detail}</p>
1176
871
  <div className="mt-2 flex justify-end gap-1.5">
1177
872
  <button
1178
873
  type="button"
1179
874
  className="rounded-md px-2 py-1 font-medium hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40"
1180
875
  onClick={onCancelReplace}
1181
876
  >
1182
- Keep current draft
877
+ {QUEUE_REPLACE_DRAFT_COPY.keep}
1183
878
  </button>
1184
879
  <button
1185
880
  type="button"
1186
- className="rounded-md bg-brand px-2 py-1 font-medium text-white hover:bg-brand/90 focus-visible:ring-2 focus-visible:ring-ring/40"
881
+ className="rounded-md border border-og-primary-border bg-og-primary text-og-primary-fg px-2 py-1 font-medium hover:bg-og-primary-hover focus-visible:ring-2 focus-visible:ring-ring/40"
1187
882
  onClick={onConfirmReplace}
1188
883
  >
1189
- Replace and edit
884
+ {QUEUE_REPLACE_DRAFT_COPY.replace}
1190
885
  </button>
1191
886
  </div>
1192
887
  </div>
@@ -1,6 +1,7 @@
1
1
  import { Loader2Icon, RotateCwIcon } from "lucide-react";
2
2
 
3
3
  import type { UseTurnQueueResult } from "../hooks/use-turn-queue";
4
+ import { useErrorMessage } from "../lib/error-message";
4
5
 
5
6
  type QueueStateProps = {
6
7
  queue: UseTurnQueueResult;
@@ -60,6 +61,7 @@ export function QueueErrorAlert({
60
61
  queue,
61
62
  dividerBefore = false,
62
63
  }: QueueStateProps & { dividerBefore?: boolean }) {
64
+ const formatError = useErrorMessage();
63
65
  return (
64
66
  <div className={`${dividerBefore ? "border-t border-border" : ""} p-2`}>
65
67
  <div
@@ -74,7 +76,7 @@ export function QueueErrorAlert({
74
76
  data-testid="queue-error-message"
75
77
  dir="auto"
76
78
  >
77
- {(queue.mutationError ?? queue.error)?.message}
79
+ {formatError(queue.mutationError ?? queue.error)}
78
80
  </span>
79
81
  <button
80
82
  type="button"
@@ -0,0 +1,98 @@
1
+ import type { SecretTextTokenLike } from "../secrets-ui";
2
+
3
+ /* Turn secret references in rendered Markdown into chip placeholders
4
+ (`<span data-og-secret-ref="{{secret:…}}">`), which the Markdown `span`
5
+ renderer draws as a SecretRefChip.
6
+
7
+ Where references become chips:
8
+ - prose text (paragraphs, lists, tables, headings, emphasis);
9
+ - inline code whose whole content is exactly one reference, because the
10
+ agent often writes `{{secret:GitHub/password}}` in backticks and the chip
11
+ says the same thing more clearly.
12
+ Where they stay literal:
13
+ - fenced code blocks and inline code with anything else in it, so code reads
14
+ and copies exactly as written;
15
+ - link text, so a chip never nests inside a link.
16
+
17
+ Structural hast types keep the module dependency-free, like stream-reveal. */
18
+
19
+ type HastText = { type: "text"; value: string; position?: unknown };
20
+ type HastElement = {
21
+ type: "element";
22
+ tagName: string;
23
+ properties?: Record<string, unknown>;
24
+ children: HastChild[];
25
+ };
26
+ type HastChild = HastText | HastElement | { type: string; children?: HastChild[] };
27
+ type HastParent = { children?: HastChild[] };
28
+
29
+ const MARKER = "{{secret";
30
+
31
+ export function rehypeSecretRefs(options: { tokenize: (text: string) => SecretTextTokenLike[] }) {
32
+ const { tokenize } = options;
33
+ return (tree: HastParent) => {
34
+ walk(tree);
35
+ };
36
+
37
+ function walk(node: HastParent): void {
38
+ if (!node.children) return;
39
+ let changed = false;
40
+ const next: HastChild[] = [];
41
+ for (const child of node.children) {
42
+ if (child.type === "text" && (child as HastText).value.includes(MARKER)) {
43
+ const split = splitText(child as HastText);
44
+ if (split) {
45
+ next.push(...split);
46
+ changed = true;
47
+ continue;
48
+ }
49
+ } else if (child.type === "element") {
50
+ const element = child as HastElement;
51
+ if (element.tagName === "code") {
52
+ const chip = wholeReference(element);
53
+ if (chip) {
54
+ next.push(chip);
55
+ changed = true;
56
+ continue;
57
+ }
58
+ } else if (element.tagName !== "pre" && element.tagName !== "a") {
59
+ walk(element);
60
+ }
61
+ } else if ("children" in child) {
62
+ walk(child as HastParent);
63
+ }
64
+ next.push(child);
65
+ }
66
+ if (changed) node.children = next;
67
+ }
68
+
69
+ function splitText(node: HastText): HastChild[] | null {
70
+ const tokens = tokenize(node.value);
71
+ if (!tokens.some((token) => token.type === "reference")) return null;
72
+ return tokens.map((token) =>
73
+ token.type === "reference"
74
+ ? chipPlaceholder(token.reference.raw)
75
+ : ({ type: "text", value: token.type === "text" ? token.value : token.raw } as HastText),
76
+ );
77
+ }
78
+
79
+ function wholeReference(code: HastElement): HastElement | null {
80
+ if (code.children.length !== 1) return null;
81
+ const only = code.children[0]!;
82
+ if (only.type !== "text") return null;
83
+ const value = (only as HastText).value;
84
+ if (!value.includes(MARKER)) return null;
85
+ const tokens = tokenize(value.trim());
86
+ const token = tokens.length === 1 ? tokens[0]! : null;
87
+ return token?.type === "reference" ? chipPlaceholder(token.reference.raw) : null;
88
+ }
89
+ }
90
+
91
+ function chipPlaceholder(raw: string): HastElement {
92
+ return {
93
+ type: "element",
94
+ tagName: "span",
95
+ properties: { dataOgSecretRef: raw },
96
+ children: [{ type: "text", value: raw }],
97
+ };
98
+ }