@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
@@ -0,0 +1,382 @@
1
+ import type { UsageAllowancePeriod, WorkspaceUsageResponse } from "@opengeni/sdk/usage-allowances";
2
+ import type { ReactNode } from "react";
3
+
4
+ import { useUsage, type UsageClientLike } from "../hooks/use-usage";
5
+ import { cn } from "../lib/cn";
6
+ import {
7
+ allowanceLabels,
8
+ allowanceResetSentence,
9
+ formatAllowanceInstant,
10
+ type AllowanceLabels,
11
+ } from "../usage/allowance-copy";
12
+ import {
13
+ summarizeUsage,
14
+ usagePercentLabel,
15
+ type UsageReading,
16
+ type UsageSummary,
17
+ } from "../usage/summary";
18
+
19
+ export type UsageMeterLabels = AllowanceLabels & {
20
+ /** Heading for the member's own ceiling. */
21
+ title: string;
22
+ /** Heading when only the shared workspace pool applies. */
23
+ workspaceTitle: string;
24
+ /** "38% left" — `percent` is preformatted ("38", "<1"). */
25
+ left: (percent: string) => string;
26
+ /** "62% used". */
27
+ used: (percent: string) => string;
28
+ limitReached: string;
29
+ /** Status chip beside a hero meter that is close to its limit. */
30
+ nearLimit: string;
31
+ /** "$13.00 left" for a hero meter with amounts. */
32
+ amountLeft: (amount: string) => string;
33
+ /** No ceiling applies to this member. */
34
+ unlimited: string;
35
+ loading: string;
36
+ error: string;
37
+ retry: string;
38
+ /** "$31.00 of $50.00 used" when the host passes `formatAmount`. */
39
+ amounts: (used: string, limit: string) => string;
40
+ /** The shared pool, under a member's own meter: "Workspace: 9% left". */
41
+ workspaceLine: (value: string) => string;
42
+ };
43
+
44
+ export const DEFAULT_USAGE_METER_LABELS: UsageMeterLabels = {
45
+ ...allowanceLabels(),
46
+ title: "Your usage",
47
+ workspaceTitle: "Workspace usage",
48
+ left: (percent) => `${percent}% left`,
49
+ used: (percent) => `${percent}% used`,
50
+ limitReached: "Limit reached",
51
+ nearLimit: "Near limit",
52
+ amountLeft: (amount) => `${amount} left`,
53
+ unlimited: "No usage limit",
54
+ loading: "Checking usage…",
55
+ error: "Couldn't load usage",
56
+ retry: "Try again",
57
+ amounts: (used, limit) => `${used} of ${limit} used`,
58
+ workspaceLine: (value) => `Workspace: ${value}`,
59
+ };
60
+
61
+ export type UsageMeterBaseProps = {
62
+ /** "left" (default) reads like a battery; "used" reads like spend. */
63
+ measure?: "left" | "used" | undefined;
64
+ /**
65
+ * Opt in to amounts. Receives USD micros; return your own unit ("$31.00",
66
+ * "3.1 credits", "1.5× plan"). Without it the meter shows only shares.
67
+ */
68
+ formatAmount?: ((micros: number) => string) | undefined;
69
+ labels?: Partial<UsageMeterLabels> | undefined;
70
+ /**
71
+ * `compact` is one line for menus and headers; `hero` leads a page with the
72
+ * amount (or share) left in large type. An empty `labels.title` hides the
73
+ * heading when the page already names it.
74
+ */
75
+ density?: "default" | "compact" | "hero" | undefined;
76
+ /** Show the shared pool under the member's own meter when it is the tighter one. Default true. */
77
+ showWorkspace?: boolean | undefined;
78
+ className?: string | undefined;
79
+ };
80
+
81
+ export type UsageMeterProps = UsageMeterBaseProps & {
82
+ /**
83
+ * A usage response you already loaded (for example from `useUsage`).
84
+ * Omit it to let the meter read `/usage/me` itself.
85
+ */
86
+ usage?: WorkspaceUsageResponse | null | undefined;
87
+ client?: UsageClientLike | undefined;
88
+ workspaceId?: string | undefined;
89
+ period?: UsageAllowancePeriod | undefined;
90
+ /** Re-read when this changes (see `useUsage`). */
91
+ refreshKey?: unknown;
92
+ };
93
+
94
+ /**
95
+ * The signed-in member's own usage: how much of their limit is left and when
96
+ * it resets. Shares only by default; hosts opt in to amounts.
97
+ */
98
+ export function UsageMeter({
99
+ usage,
100
+ client,
101
+ workspaceId,
102
+ period,
103
+ refreshKey,
104
+ ...view
105
+ }: UsageMeterProps) {
106
+ if (usage !== undefined) {
107
+ return (
108
+ <UsageMeterView
109
+ {...view}
110
+ summary={usage ? summarizeUsage(usage) : null}
111
+ loading={usage === null}
112
+ />
113
+ );
114
+ }
115
+ return (
116
+ <LoadingUsageMeter
117
+ {...view}
118
+ client={client}
119
+ workspaceId={workspaceId}
120
+ period={period}
121
+ refreshKey={refreshKey}
122
+ />
123
+ );
124
+ }
125
+
126
+ function LoadingUsageMeter({
127
+ client,
128
+ workspaceId,
129
+ period,
130
+ refreshKey,
131
+ ...view
132
+ }: UsageMeterBaseProps &
133
+ Pick<UsageMeterProps, "client" | "workspaceId" | "period" | "refreshKey">) {
134
+ const state = useUsage({ client, workspaceId, period, refreshKey });
135
+ return (
136
+ <UsageMeterView
137
+ {...view}
138
+ summary={state.summary}
139
+ loading={state.loading && !state.summary}
140
+ error={state.summary ? null : state.error}
141
+ onRetry={() => void state.refresh()}
142
+ />
143
+ );
144
+ }
145
+
146
+ export type UsageMeterViewProps = UsageMeterBaseProps & {
147
+ summary: UsageSummary | null;
148
+ loading?: boolean | undefined;
149
+ error?: Error | null | undefined;
150
+ onRetry?: (() => void) | undefined;
151
+ };
152
+
153
+ const FILL: Record<UsageReading["status"], string> = {
154
+ ok: "bg-og-accent",
155
+ warning: "bg-og-status-waiting",
156
+ exhausted: "bg-og-danger",
157
+ };
158
+
159
+ function valueText(
160
+ reading: UsageReading,
161
+ measure: "left" | "used",
162
+ labels: UsageMeterLabels,
163
+ ): string {
164
+ if (reading.status === "exhausted") return labels.limitReached;
165
+ return measure === "left"
166
+ ? labels.left(usagePercentLabel(Math.max(0, 1 - reading.fraction)))
167
+ : labels.used(usagePercentLabel(reading.fraction));
168
+ }
169
+
170
+ /** Presentational meter for a summary you computed (`summarizeUsage`). */
171
+ export function UsageMeterView({
172
+ summary,
173
+ loading = false,
174
+ error = null,
175
+ onRetry,
176
+ measure = "left",
177
+ formatAmount,
178
+ labels: overrides,
179
+ density = "default",
180
+ showWorkspace = true,
181
+ className,
182
+ }: UsageMeterViewProps) {
183
+ const labels = { ...DEFAULT_USAGE_METER_LABELS, ...overrides };
184
+ const compact = density === "compact";
185
+ if (loading || error || !summary) {
186
+ return (
187
+ <div
188
+ className={cn("og-root min-w-0 text-og-sm", className)}
189
+ data-og-usage-meter={error ? "error" : "loading"}
190
+ aria-busy={loading || undefined}
191
+ >
192
+ {error ? (
193
+ <p className="flex flex-wrap items-center gap-x-2 text-og-fg-muted" role="alert">
194
+ {labels.error}
195
+ {onRetry ? (
196
+ <button
197
+ type="button"
198
+ onClick={onRetry}
199
+ className="rounded-og-sm og-link focus-visible:outline-2 focus-visible:outline-og-accent"
200
+ >
201
+ {labels.retry}
202
+ </button>
203
+ ) : null}
204
+ </p>
205
+ ) : (
206
+ <span className="text-og-fg-subtle">{labels.loading}</span>
207
+ )}
208
+ </div>
209
+ );
210
+ }
211
+ const primary = summary.member ?? summary.workspace;
212
+ if (!primary) {
213
+ return (
214
+ <div
215
+ className={cn("og-root min-w-0 text-og-sm text-og-fg-muted", className)}
216
+ data-og-usage-meter="unlimited"
217
+ >
218
+ {compact ? null : <span className="font-medium text-og-fg">{labels.title} · </span>}
219
+ {labels.unlimited}
220
+ </div>
221
+ );
222
+ }
223
+ const title = summary.member ? labels.title : labels.workspaceTitle;
224
+ const value = valueText(primary, measure, labels);
225
+ // The bar always fills with what's used, so "near the limit" reads as a
226
+ // nearly full bar whichever way the words count.
227
+ const fill = Math.min(1, Math.max(0, primary.fraction));
228
+ const reset = allowanceResetSentence(labels, primary.resetsAt);
229
+ const pool =
230
+ showWorkspace &&
231
+ summary.member &&
232
+ summary.workspace &&
233
+ (summary.binding?.scope === "workspace" || summary.workspace.status !== "ok")
234
+ ? summary.workspace
235
+ : null;
236
+ const meterProps = {
237
+ role: "meter" as const,
238
+ "aria-label": title || labels.title,
239
+ "aria-valuemin": 0,
240
+ "aria-valuemax": 100,
241
+ "aria-valuenow": Math.round(fill * 100),
242
+ "aria-valuetext": `${value}. ${reset}${
243
+ pool ? ` ${labels.workspaceLine(valueText(pool, measure, labels))}.` : ""
244
+ }`,
245
+ };
246
+ const bar = (
247
+ <span
248
+ aria-hidden
249
+ className={cn(
250
+ "relative block overflow-hidden rounded-full",
251
+ density === "hero" ? "h-1.5" : "h-1",
252
+ primary.status === "exhausted" ? "bg-og-danger/15" : "bg-og-surface-3",
253
+ compact ? "w-16 shrink-0" : "w-full",
254
+ )}
255
+ >
256
+ <span
257
+ className={cn("absolute inset-y-0 left-0 rounded-full", FILL[primary.status])}
258
+ style={{ width: `${Math.round(fill * 1000) / 10}%` }}
259
+ />
260
+ </span>
261
+ );
262
+ const valueClass = cn(
263
+ "shrink-0 whitespace-nowrap tabular-nums",
264
+ primary.status === "ok" ? "text-og-fg-muted" : "font-medium",
265
+ primary.status === "warning" && "text-og-status-waiting",
266
+ primary.status === "exhausted" && "text-og-danger",
267
+ );
268
+ if (compact) {
269
+ return (
270
+ <span
271
+ {...meterProps}
272
+ data-og-usage-meter={primary.status}
273
+ title={primary.resetsAt ? `${reset} ${formatAllowanceInstant(primary.resetsAt)}` : reset}
274
+ className={cn("og-root inline-flex min-w-0 items-center gap-2 text-og-xs", className)}
275
+ >
276
+ <span className={valueClass}>{value}</span>
277
+ {bar}
278
+ </span>
279
+ );
280
+ }
281
+ const amounts = formatAmount
282
+ ? labels.amounts(formatAmount(primary.used), formatAmount(primary.limit))
283
+ : null;
284
+ if (density === "hero") {
285
+ // Lead with what's left, even at zero; the chip names the state.
286
+ const headline = formatAmount
287
+ ? labels.amountLeft(formatAmount(primary.remaining))
288
+ : labels.left(usagePercentLabel(Math.max(0, 1 - primary.fraction)));
289
+ return (
290
+ <div
291
+ {...meterProps}
292
+ data-og-usage-meter={primary.status}
293
+ className={cn("og-root flex min-w-0 flex-col gap-3", className)}
294
+ >
295
+ {title ? <span className="text-og-sm font-medium text-og-fg-muted">{title}</span> : null}
296
+ <div className="flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1">
297
+ <span className="text-2xl leading-8 font-semibold tracking-[-0.5px] text-og-fg tabular-nums">
298
+ {headline}
299
+ </span>
300
+ {primary.status !== "ok" ? (
301
+ <span
302
+ className={cn(
303
+ "inline-flex h-[22px] items-center gap-1.5 rounded-full border px-2 text-og-xs font-medium",
304
+ primary.status === "warning"
305
+ ? "border-og-status-waiting/30 text-og-status-waiting"
306
+ : "border-og-danger/30 text-og-danger",
307
+ )}
308
+ >
309
+ <span
310
+ aria-hidden
311
+ className={cn(
312
+ "size-1.5 rounded-full",
313
+ primary.status === "warning" ? "bg-og-status-waiting" : "bg-og-danger",
314
+ )}
315
+ />
316
+ {primary.status === "warning" ? labels.nearLimit : labels.limitReached}
317
+ </span>
318
+ ) : null}
319
+ </div>
320
+ {bar}
321
+ <p className="text-og-xs text-og-fg-muted tabular-nums">
322
+ {[
323
+ amounts ?? labels.used(usagePercentLabel(primary.fraction)),
324
+ amounts ? `${usagePercentLabel(primary.fraction)}%` : null,
325
+ ]
326
+ .filter(Boolean)
327
+ .join(" · ")}{" "}
328
+ ·{" "}
329
+ <span title={primary.resetsAt ? formatAllowanceInstant(primary.resetsAt) : undefined}>
330
+ {reset}
331
+ </span>
332
+ </p>
333
+ {pool ? <PoolLine reading={pool} measure={measure} labels={labels} /> : null}
334
+ </div>
335
+ );
336
+ }
337
+ return (
338
+ <div
339
+ {...meterProps}
340
+ data-og-usage-meter={primary.status}
341
+ className={cn("og-root flex min-w-0 flex-col gap-2 text-og-sm", className)}
342
+ >
343
+ <div className="flex min-w-0 items-baseline justify-between gap-3">
344
+ <span className="min-w-0 truncate font-medium text-og-fg">{title}</span>
345
+ <span className={valueClass}>{value}</span>
346
+ </div>
347
+ {bar}
348
+ <div className="flex min-w-0 flex-wrap items-baseline justify-between gap-x-3 gap-y-1 text-og-xs text-og-fg-subtle">
349
+ <span title={primary.resetsAt ? formatAllowanceInstant(primary.resetsAt) : undefined}>
350
+ {reset}
351
+ </span>
352
+ {amounts ? <span className="tabular-nums">{amounts}</span> : null}
353
+ </div>
354
+ {pool ? <PoolLine reading={pool} measure={measure} labels={labels} /> : null}
355
+ </div>
356
+ );
357
+ }
358
+
359
+ function PoolLine({
360
+ reading,
361
+ measure,
362
+ labels,
363
+ }: {
364
+ reading: UsageReading;
365
+ measure: "left" | "used";
366
+ labels: UsageMeterLabels;
367
+ }): ReactNode {
368
+ return (
369
+ <p
370
+ className={cn(
371
+ "text-og-xs",
372
+ reading.status === "exhausted"
373
+ ? "font-medium text-og-danger"
374
+ : reading.status === "warning"
375
+ ? "text-og-status-waiting"
376
+ : "text-og-fg-muted",
377
+ )}
378
+ >
379
+ {labels.workspaceLine(valueText(reading, measure, labels))}
380
+ </p>
381
+ );
382
+ }
@@ -0,0 +1,33 @@
1
+ import { useEffect, useRef } from "react";
2
+
3
+ /** Keep native details menus dismissible without letting Escape close the dock. */
4
+ export function useViewerMenuDismiss(enabled = true) {
5
+ const ref = useRef<HTMLDetailsElement | null>(null);
6
+ useEffect(() => {
7
+ const menu = ref.current;
8
+ if (!enabled || !menu) return;
9
+ const document = menu.ownerDocument;
10
+ const pointerDown = (event: PointerEvent) => {
11
+ if (menu.open && !event.composedPath().includes(menu)) menu.open = false;
12
+ };
13
+ const focusIn = (event: FocusEvent) => {
14
+ if (menu.open && !event.composedPath().includes(menu)) menu.open = false;
15
+ };
16
+ const keyDown = (event: KeyboardEvent) => {
17
+ if (!menu.open || event.key !== "Escape" || !event.composedPath().includes(menu)) return;
18
+ event.preventDefault();
19
+ event.stopPropagation();
20
+ menu.open = false;
21
+ menu.querySelector("summary")?.focus();
22
+ };
23
+ document.addEventListener("pointerdown", pointerDown, true);
24
+ document.addEventListener("focusin", focusIn, true);
25
+ document.addEventListener("keydown", keyDown, true);
26
+ return () => {
27
+ document.removeEventListener("pointerdown", pointerDown, true);
28
+ document.removeEventListener("focusin", focusIn, true);
29
+ document.removeEventListener("keydown", keyDown, true);
30
+ };
31
+ }, [enabled]);
32
+ return ref;
33
+ }
@@ -9,6 +9,7 @@ import {
9
9
  type ReactNode,
10
10
  } from "react";
11
11
  import { cn } from "../lib/cn";
12
+ import { useTimelineSearchReveal } from "./timeline-search";
12
13
 
13
14
  const FALLBACK_LINE_THRESHOLD = 12;
14
15
  const FALLBACK_TEXT_THRESHOLD = 900;
@@ -190,7 +191,15 @@ function observeSharedResize(element: Element, callback: () => void): (() => voi
190
191
  };
191
192
  }
192
193
 
194
+ export type UserMessageDisclosureLabels = {
195
+ /** Collapsed disclosure action. Defaults to "Show more". */
196
+ showMore?: string | undefined;
197
+ /** Expanded disclosure action. Defaults to "Show less". */
198
+ showLess?: string | undefined;
199
+ };
200
+
193
201
  export type UserMessageDisclosureContextValue = {
202
+ labels?: UserMessageDisclosureLabels | undefined;
194
203
  expandedByMessageId: Map<string, boolean>;
195
204
  beginChange: (
196
205
  messageBody: HTMLElement,
@@ -235,6 +244,8 @@ export type UserMessageBodyProps = {
235
244
  text: string;
236
245
  children: ReactNode;
237
246
  className?: string | undefined;
247
+ /** Per-field overrides for timeline labels, then the English defaults. */
248
+ disclosureLabels?: UserMessageDisclosureLabels | undefined;
238
249
  };
239
250
 
240
251
  /**
@@ -247,11 +258,23 @@ export type UserMessageBodyProps = {
247
258
  * remembers expansion per durable message id and preserves the reader's scroll
248
259
  * anchor when height changes.
249
260
  */
250
- export function UserMessageBody({ messageId, text, children, className }: UserMessageBodyProps) {
261
+ export function UserMessageBody({
262
+ messageId,
263
+ text,
264
+ children,
265
+ className,
266
+ disclosureLabels,
267
+ }: UserMessageBodyProps) {
251
268
  const disclosure = useContext(UserMessageDisclosureContext);
252
269
  const [expanded, setExpanded] = useState(
253
270
  () => disclosure?.expandedByMessageId.get(messageId) ?? false,
254
271
  );
272
+ const searchReveal = useTimelineSearchReveal();
273
+ useLayoutEffect(() => {
274
+ if (!searchReveal) return;
275
+ setExpanded(true);
276
+ disclosure?.expandedByMessageId.set(messageId, true);
277
+ }, [searchReveal, messageId, disclosure]);
255
278
  const collapsibleRef = useRef(userMessageLikelyNeedsDisclosure(text));
256
279
  const expandedRef = useRef(expanded);
257
280
  expandedRef.current = expanded;
@@ -454,7 +477,9 @@ export function UserMessageBody({ messageId, text, children, className }: UserMe
454
477
  className="mt-1.5 inline-flex min-h-7 items-center rounded-og-sm px-1.5 text-og-xs font-medium text-og-fg-muted outline-hidden transition-colors hover:bg-og-surface-3/60 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent/45 pointer-coarse:min-h-11"
455
478
  onClick={(event) => toggle(event.currentTarget)}
456
479
  >
457
- {expanded ? "Show less" : "Show more"}
480
+ {expanded
481
+ ? (disclosureLabels?.showLess ?? disclosure?.labels?.showLess ?? "Show less")
482
+ : (disclosureLabels?.showMore ?? disclosure?.labels?.showMore ?? "Show more")}
458
483
  </button>
459
484
  </div>
460
485
  );
@@ -109,6 +109,9 @@ const useDockLayoutEffect = typeof window === "undefined" ? useEffect : useLayou
109
109
  */
110
110
  const DOCK_OVERLAY_BREAKPOINT = 1024;
111
111
 
112
+ /** The panel group's layout while the dock is closed. */
113
+ const CLOSED_LAYOUT: Layout = { primary: 100, dock: 0 };
114
+
112
115
  /** SSR-safe `(max-width: …)` match; false until mounted, then live. */
113
116
  function useIsNarrow(maxWidth: number): boolean {
114
117
  const [narrow, setNarrow] = useState(false);
@@ -161,6 +164,8 @@ export function WorkspaceDock({
161
164
  // dismiss it; standalone usage keeps the thin reopen rail as well.
162
165
  const hostControlled = collapsedProp !== undefined;
163
166
  const previousCollapsedRef = useRef(collapsed);
167
+ const collapsedNowRef = useRef(collapsed);
168
+ collapsedNowRef.current = collapsed;
164
169
 
165
170
  // Persisted layout (width split) keyed by autoSaveId.
166
171
  const { defaultLayout, onLayoutChanged } = useDefaultLayout({
@@ -170,6 +175,11 @@ export function WorkspaceDock({
170
175
  });
171
176
  const expandedDefaultLayout =
172
177
  defaultLayout && (defaultLayout.dock ?? 0) > 1 ? defaultLayout : undefined;
178
+ // A panel group reads its starting layout once, when it mounts (on first
179
+ // render, and again whenever the window widens out of the overlay). A
180
+ // closed dock starts closed, so it never shows its saved width for a frame
181
+ // or keeps it as an invisible column.
182
+ const mountLayout = collapsed ? CLOSED_LAYOUT : expandedDefaultLayout;
173
183
  const lastExpandedSizeRef = useRef(expandedDefaultLayout?.dock ?? defaultSize);
174
184
  const layoutIdentityRef = useRef(autoSaveId);
175
185
  if (layoutIdentityRef.current !== autoSaveId) {
@@ -220,6 +230,13 @@ export function WorkspaceDock({
220
230
  }
221
231
  }, [collapsedProp, dockPanelRef]);
222
232
 
233
+ // Widening past the overlay breakpoint mounts a fresh panel group at its
234
+ // saved split. A closed dock must stay closed there, not hold its old width
235
+ // as an invisible column beside the chat.
236
+ useDockLayoutEffect(() => {
237
+ if (!narrow && collapsedNowRef.current) dockPanelRef.current?.collapse();
238
+ }, [narrow, dockPanelRef]);
239
+
223
240
  // Treat the narrow overlay like a real modal: remember the external opener,
224
241
  // move focus into the selected tab, and restore it on close. The standalone
225
242
  // desktop dock instead focuses its newly-visible reopen rail after collapse.
@@ -453,7 +470,7 @@ export function WorkspaceDock({
453
470
  <Group
454
471
  orientation="horizontal"
455
472
  className="min-h-0 flex-1"
456
- {...(expandedDefaultLayout ? { defaultLayout: expandedDefaultLayout } : {})}
473
+ {...(mountLayout ? { defaultLayout: mountLayout } : {})}
457
474
  onLayoutChanged={persistExpandedLayout}
458
475
  >
459
476
  <Panel id="primary" minSize="30%" className="min-h-0 min-w-0">
@@ -0,0 +1,150 @@
1
+ /**
2
+ * The composer's user-facing copy, renderer-free so web and native composers
3
+ * (and hosts translating them) share one message catalog.
4
+ */
5
+ import type { SlashCommand } from "./commands/types";
6
+ import { formatBytes, formatRelativeTime } from "./lib/format";
7
+
8
+ export type ChatComposerMessages = {
9
+ messagePlaceholder: string;
10
+ pausedPlaceholder: string;
11
+ inputLabel: string;
12
+ keyboardHint: string;
13
+ slashCommandBlocked: string;
14
+ controlChangedError: string;
15
+ sendFailedError: string;
16
+ dropFiles: string;
17
+ attachFiles: string;
18
+ pauseAriaLabel: string;
19
+ pauseTitle: string;
20
+ /** Stop control shown while a response runs (`runControl="stop"`). */
21
+ stopAriaLabel?: string | undefined;
22
+ stopTitle?: string | undefined;
23
+ sendMessageAriaLabel: string;
24
+ sendAndResumeAriaLabel: string;
25
+ sendTitle: string;
26
+ sendAndResumeTitle: string;
27
+ annotationNotesRequired: string;
28
+ workspacePaused: string;
29
+ pausedHere: string;
30
+ parentBlocker: string;
31
+ narrowerPause: string;
32
+ pausedBy: (displayName: string) => string;
33
+ queuedAhead: (count: number) => string;
34
+ resumingAndSending: string;
35
+ nextMessageResumes: string;
36
+ resumeThisWorkstream: string;
37
+ resumeShort: string;
38
+ hidePauseDetails: string;
39
+ showPauseDetails: string;
40
+ pauseReasonsLabel: string;
41
+ pausedByLabel: string;
42
+ alsoPausedByLabel: string;
43
+ resumeWorkspace: string;
44
+ resumeFromSession: string;
45
+ sessionCanRun: string;
46
+ stillPausedBy: (displayName: string) => string;
47
+ restoredResourcesLabel: string;
48
+ restoredFile: (fileId: string) => string;
49
+ removeRestoredResource: (index: number) => string;
50
+ uploading: string;
51
+ uploadFailed: string;
52
+ previewAttachment: (name: string) => string;
53
+ previewUnavailable?: string | undefined;
54
+ attachmentPreviewLabel: string;
55
+ downloadAttachment: (name: string) => string;
56
+ closeAttachmentPreview: string;
57
+ retryAttachment: (name: string) => string;
58
+ retryUpload: string;
59
+ removeAttachment: (name: string) => string;
60
+ confirmCommand: (name: string) => string;
61
+ confirmDescription: (command: SlashCommand) => string;
62
+ cancel: string;
63
+ runCommand: (name: string) => string;
64
+ commands: string;
65
+ slashCommandsLabel: string;
66
+ modelLabel: string;
67
+ close: string;
68
+ danger: string;
69
+ draftConflict: string;
70
+ useOtherDraft: string;
71
+ keepMine: string;
72
+ savingDraft: string;
73
+ formatBytes: (bytes: number) => string;
74
+ formatRelativeTime: (changedAt: string) => string;
75
+ };
76
+
77
+ export const defaultChatComposerMessages: ChatComposerMessages = {
78
+ messagePlaceholder: "Message the agent…",
79
+ pausedPlaceholder: "Message the agent — it will wait in the queue…",
80
+ inputLabel: "Message the agent",
81
+ // Shortcuts live in the send button's title; the footer stays quiet unless
82
+ // the host supplies its own hint.
83
+ keyboardHint: "",
84
+ slashCommandBlocked:
85
+ "That's a slash command — press Enter in the command list to run it, or edit the line to send a message.",
86
+ controlChangedError:
87
+ "This workstream was paused while you were sending. Nothing was sent, and your draft is still here.",
88
+ sendFailedError: "Sending failed — your draft is still here. Try again.",
89
+ dropFiles: "Drop files to attach",
90
+ attachFiles: "Attach files",
91
+ pauseAriaLabel: "Pause this workstream",
92
+ pauseTitle: "Pause this workstream; queued prompts and approvals are preserved",
93
+ stopAriaLabel: "Stop",
94
+ stopTitle: "Stop the response",
95
+ sendMessageAriaLabel: "Send message",
96
+ sendAndResumeAriaLabel: "Add message to queue",
97
+ sendTitle: "Queue message (Enter); steer with Cmd/Ctrl+Enter",
98
+ sendAndResumeTitle: "Add to queue (Enter); steer now with Cmd/Ctrl+Enter",
99
+ annotationNotesRequired: "Add a note to each quote before sending.",
100
+ workspacePaused: "Workspace paused",
101
+ pausedHere: "Paused here",
102
+ parentBlocker: "parent",
103
+ narrowerPause: "a narrower pause",
104
+ pausedBy: (displayName) => `Paused by ${displayName}`,
105
+ queuedAhead: (count) =>
106
+ `${count} waiting prompt${count === 1 ? "" : "s"}; your message joins the queue.`,
107
+ resumingAndSending: "Sending…",
108
+ nextMessageResumes: "Messages wait in the queue until you resume.",
109
+ resumeThisWorkstream: "Resume this workstream",
110
+ resumeShort: "Resume",
111
+ hidePauseDetails: "Hide pause details",
112
+ showPauseDetails: "Show pause details",
113
+ pauseReasonsLabel: "Reasons this workstream is paused",
114
+ pausedByLabel: "Paused by ",
115
+ alsoPausedByLabel: "Also paused by ",
116
+ resumeWorkspace: "Resume workspace",
117
+ resumeFromSession: "Resume from this session",
118
+ sessionCanRun: "This session will be able to run",
119
+ stillPausedBy: (displayName) => `Still paused by ${displayName}`,
120
+ restoredResourcesLabel: "Restored prompt resources",
121
+ restoredFile: (fileId) => `File ${fileId.slice(0, 8)}`,
122
+ removeRestoredResource: (index) => `Remove restored resource ${index + 1}`,
123
+ uploading: "Uploading",
124
+ uploadFailed: "Upload failed",
125
+ previewAttachment: (name) => `Preview ${name}`,
126
+ previewUnavailable: "Preview unavailable",
127
+ attachmentPreviewLabel: "Attachment preview",
128
+ downloadAttachment: (name) => `Download ${name}`,
129
+ closeAttachmentPreview: "Close",
130
+ retryAttachment: (name) => `Retry ${name}`,
131
+ retryUpload: "Retry upload",
132
+ removeAttachment: (name) => `Remove ${name}`,
133
+ confirmCommand: (name) => `Confirm /${name}`,
134
+ confirmDescription: (command) => `Run /${command.name}? ${command.description}`,
135
+ cancel: "Cancel",
136
+ runCommand: (name) => `Run /${name}`,
137
+ commands: "Commands",
138
+ slashCommandsLabel: "Slash commands",
139
+ modelLabel: "Model",
140
+ close: "Close",
141
+ danger: "danger",
142
+ draftConflict: "This draft changed in another tab. Your local draft is still here.",
143
+ useOtherDraft: "Use other draft",
144
+ keepMine: "Keep mine",
145
+ // Kept for embedder message overrides / back-compat. Routine autosave is
146
+ // silent — only draft conflicts surface under the composer.
147
+ savingDraft: "Saving draft…",
148
+ formatBytes,
149
+ formatRelativeTime,
150
+ };