@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,434 @@
1
+ // Pure session-list presentation shared by the web app (rail and recent
2
+ // sessions) and native renderers: relative-time labels, recency bucketing
3
+ // (Today / Yesterday / Previous 7 days / Older), the running-first ordering
4
+ // rule, status tones and the compact row metadata. No DOM, no React.
5
+ import {
6
+ deriveAutomaticSessionTitlePreview,
7
+ deriveSessionDisplayTitle,
8
+ sessionTitleIsPending,
9
+ type ClientModel,
10
+ type Session,
11
+ type SessionListEntry,
12
+ type SessionStatus,
13
+ } from "@opengeni/sdk";
14
+ import { modelDisplayName } from "@opengeni/sdk/model-display";
15
+ import { findPickerRow, type PickerModelRow } from "./model-policy";
16
+ import { sessionDisplayStatus, type SessionDisplayStatus } from "./session-status-model";
17
+
18
+ /** A list row may be a compact page entry or a complete session response. */
19
+ export type SessionListRow = Session | SessionListEntry;
20
+
21
+ /**
22
+ * The title shown for a session: durable agent/user metadata once available,
23
+ * otherwise a bounded opening-prompt preview while automatic naming is still
24
+ * pending. Every list, header and row reads identically.
25
+ */
26
+ export function sessionDisplayTitle(session: SessionListRow): string {
27
+ return "displayTitle" in session ? session.displayTitle : deriveSessionDisplayTitle(session);
28
+ }
29
+
30
+ /** The maximum length a session title may be renamed to. */
31
+ export const SESSION_TITLE_MAX_LENGTH = 200;
32
+
33
+ /**
34
+ * The value a rename editor seeds from. A safe provisional prompt preview is
35
+ * editable because it is also what the user sees; the UUID-derived reference
36
+ * remains an empty draft rather than becoming an accidental rename.
37
+ */
38
+ export function sessionRenameSeed(session: SessionListRow): string {
39
+ if ("renameSeed" in session) return session.renameSeed;
40
+ if (!sessionTitleIsPending(session)) {
41
+ return session.title?.trim() || "";
42
+ }
43
+ return deriveAutomaticSessionTitlePreview(session.initialMessage) ?? "";
44
+ }
45
+
46
+ /**
47
+ * Resolve a submitted draft against the current display title. Returns the
48
+ * trimmed title to persist, or `null` when the edit is a no-op (empty,
49
+ * unchanged from what is already shown, or still equal to the value that
50
+ * seeded this edit) and should simply cancel.
51
+ */
52
+ export function resolveRenameSubmission(
53
+ draft: string,
54
+ display: string,
55
+ editSeed?: string,
56
+ ): string | null {
57
+ const next = draft.trim();
58
+ if (!next || next === display || (editSeed !== undefined && next === editSeed.trim())) {
59
+ return null;
60
+ }
61
+ return next;
62
+ }
63
+
64
+ export type SessionRecencyGroup = "today" | "yesterday" | "previous7" | "older";
65
+
66
+ export const SESSION_GROUP_LABELS: Record<SessionRecencyGroup, string> = {
67
+ today: "Today",
68
+ yesterday: "Yesterday",
69
+ previous7: "Previous 7 days",
70
+ older: "Older",
71
+ };
72
+
73
+ /** The render order of recency groups, top → bottom. */
74
+ export const SESSION_GROUP_ORDER: SessionRecencyGroup[] = [
75
+ "today",
76
+ "yesterday",
77
+ "previous7",
78
+ "older",
79
+ ];
80
+
81
+ /** Live states that earn the pinned-to-top, breathing-dot treatment. */
82
+ const RUNNING_STATUSES = new Set<SessionStatus>([
83
+ "running",
84
+ "queued",
85
+ "waiting_capacity",
86
+ "recovering",
87
+ "requires_action",
88
+ ]);
89
+
90
+ export function isRunningStatus(status: SessionStatus): boolean {
91
+ return RUNNING_STATUSES.has(status);
92
+ }
93
+
94
+ /** An idle session waiting on its own timer, while its control is active. */
95
+ export function sessionInputWait(
96
+ session: Pick<SessionListRow, "status" | "effectiveControl" | "inputWait">,
97
+ ) {
98
+ return session.status === "idle" && session.effectiveControl?.state === "active"
99
+ ? (session.inputWait ?? null)
100
+ : null;
101
+ }
102
+
103
+ export function hasActiveEffectiveControl(session: SessionListRow): boolean {
104
+ return (session.effectiveControl?.state ?? "active") === "active";
105
+ }
106
+
107
+ export function isEffectivelyRunning(session: SessionListRow): boolean {
108
+ // Background commands have their own chat indicator, not agent working status.
109
+ return (
110
+ hasActiveEffectiveControl(session) &&
111
+ (isRunningStatus(session.status) || Boolean(sessionInputWait(session)))
112
+ );
113
+ }
114
+
115
+ /** Most-recent activity timestamp for a session (updatedAt, then createdAt). */
116
+ export function sessionActivityTime(session: SessionListRow): number {
117
+ const updated = Date.parse(session.updatedAt);
118
+ if (!Number.isNaN(updated)) {
119
+ return updated;
120
+ }
121
+ const created = Date.parse(session.createdAt);
122
+ return Number.isNaN(created) ? 0 : created;
123
+ }
124
+
125
+ /** Deterministic newest-first ordering for every flat or forest session list. */
126
+ export function compareSessionActivity(left: SessionListRow, right: SessionListRow): number {
127
+ return sessionActivityTime(right) - sessionActivityTime(left) || right.id.localeCompare(left.id);
128
+ }
129
+
130
+ /** Deterministic personal-pin order: newest pin first, then descending id. */
131
+ export function compareSessionPins(left: SessionListRow, right: SessionListRow): number {
132
+ const leftPinnedAt = Date.parse(left.pinnedAt ?? "");
133
+ const rightPinnedAt = Date.parse(right.pinnedAt ?? "");
134
+ const leftTime = Number.isNaN(leftPinnedAt) ? 0 : leftPinnedAt;
135
+ const rightTime = Number.isNaN(rightPinnedAt) ? 0 : rightPinnedAt;
136
+ return rightTime - leftTime || right.id.localeCompare(left.id);
137
+ }
138
+
139
+ /** Split explicit personal pins from ordinary rows without changing the input. */
140
+ export function partitionPinnedSessions<T extends SessionListRow>(
141
+ sessions: T[],
142
+ ): {
143
+ pinned: T[];
144
+ ordinary: T[];
145
+ } {
146
+ const pinned: T[] = [];
147
+ const ordinary: T[] = [];
148
+ for (const session of sessions) {
149
+ (session.pinned ? pinned : ordinary).push(session);
150
+ }
151
+ return { pinned: pinned.sort(compareSessionPins), ordinary };
152
+ }
153
+
154
+ /** A pin-aware list as the session page returns it: the person's pins, then ordinary rows. */
155
+ export type PinnedSessionLists<T extends SessionListRow> = {
156
+ pinned: T[];
157
+ sessions: T[];
158
+ };
159
+
160
+ /** The personal pin fields a pin change or a newer read carries. */
161
+ export type SessionPinProjection = Pick<Session, "id"> &
162
+ Partial<Pick<Session, "pinned" | "pinnedAt" | "pinVersion">>;
163
+
164
+ /**
165
+ * Apply one session's pin state to a pin-aware list: the row moves between the
166
+ * pinned section (newest pin first) and the ordinary rows (newest activity
167
+ * first). Pin revisions are monotonic, so a projection older than the row
168
+ * already shown (a slow response after a newer change) leaves the lists as
169
+ * they are, unless it is `authoritative` (a fresh read after a failed change,
170
+ * which replaces an optimistic revision). A session in neither list is left out.
171
+ */
172
+ export function applySessionPinToLists<T extends SessionListRow>(
173
+ lists: PinnedSessionLists<T>,
174
+ projection: SessionPinProjection,
175
+ options: { authoritative?: boolean } = {},
176
+ ): PinnedSessionLists<T> {
177
+ const current =
178
+ lists.pinned.find((row) => row.id === projection.id) ??
179
+ lists.sessions.find((row) => row.id === projection.id);
180
+ if (!current) return lists;
181
+ const pinVersion = projection.pinVersion ?? current.pinVersion ?? 0;
182
+ if (!options.authoritative && pinVersion < (current.pinVersion ?? 0)) return lists;
183
+ const pinned = Boolean(projection.pinned);
184
+ const next = {
185
+ ...current,
186
+ pinned,
187
+ pinnedAt: pinned ? (projection.pinnedAt ?? current.pinnedAt ?? null) : null,
188
+ pinVersion,
189
+ } as T;
190
+ const others = (rows: T[]) => rows.filter((row) => row.id !== projection.id);
191
+ return pinned
192
+ ? {
193
+ pinned: [...others(lists.pinned), next].sort(compareSessionPins),
194
+ sessions: others(lists.sessions),
195
+ }
196
+ : {
197
+ pinned: others(lists.pinned),
198
+ sessions: [...others(lists.sessions), next].sort(compareSessionActivity),
199
+ };
200
+ }
201
+
202
+ /**
203
+ * Which recency bucket a timestamp falls into, relative to `now`. "Today" and
204
+ * "Yesterday" are calendar-local; "Previous 7 days" is the rest of the trailing
205
+ * week; everything earlier is "Older".
206
+ */
207
+ export function recencyGroupFor(timestampMs: number, now: Date = new Date()): SessionRecencyGroup {
208
+ const startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
209
+ const startOfYesterday = startOfToday - 24 * 60 * 60 * 1000;
210
+ const startOfWeekWindow = startOfToday - 7 * 24 * 60 * 60 * 1000;
211
+ if (timestampMs >= startOfToday) {
212
+ return "today";
213
+ }
214
+ if (timestampMs >= startOfYesterday) {
215
+ return "yesterday";
216
+ }
217
+ if (timestampMs >= startOfWeekWindow) {
218
+ return "previous7";
219
+ }
220
+ return "older";
221
+ }
222
+
223
+ export type SessionRecencyBucket<T extends SessionListRow = SessionListRow> = {
224
+ group: SessionRecencyGroup;
225
+ label: string;
226
+ sessions: T[];
227
+ };
228
+
229
+ export type GroupedSessions<T extends SessionListRow = SessionListRow> = {
230
+ /** Running sessions, pinned above every recency group, most-recent first. */
231
+ running: T[];
232
+ /** Non-running sessions bucketed by recency (empty buckets dropped). */
233
+ grouped: SessionRecencyBucket<T>[];
234
+ };
235
+
236
+ /**
237
+ * Order + bucket the sessions for the rail. Running sessions are lifted into a
238
+ * synthetic, always-first position regardless of recency (rendered with a
239
+ * "running" marker); the remainder are bucketed by recency, most-recent first
240
+ * within each bucket. Empty groups are dropped.
241
+ */
242
+ export function groupSessionsForRail<T extends SessionListRow>(
243
+ sessions: T[],
244
+ now: Date = new Date(),
245
+ ): GroupedSessions<T> {
246
+ const running = sessions.filter(isEffectivelyRunning).sort(compareSessionActivity);
247
+ const rest = sessions
248
+ .filter((session) => !isEffectivelyRunning(session))
249
+ .sort(compareSessionActivity);
250
+
251
+ const buckets = new Map<SessionRecencyGroup, T[]>();
252
+ for (const session of rest) {
253
+ const group = recencyGroupFor(sessionActivityTime(session), now);
254
+ const list = buckets.get(group) ?? [];
255
+ list.push(session);
256
+ buckets.set(group, list);
257
+ }
258
+
259
+ const grouped: SessionRecencyBucket<T>[] = [];
260
+ for (const group of SESSION_GROUP_ORDER) {
261
+ const list = buckets.get(group);
262
+ if (list && list.length > 0) {
263
+ grouped.push({
264
+ group,
265
+ label: SESSION_GROUP_LABELS[group],
266
+ sessions: list,
267
+ });
268
+ }
269
+ }
270
+ return { running, grouped };
271
+ }
272
+
273
+ export function relativeTimeLabel(value: string, now: Date = new Date()): string {
274
+ const timestamp = Date.parse(value);
275
+ if (Number.isNaN(timestamp)) {
276
+ return "";
277
+ }
278
+ const diffSeconds = Math.max(0, Math.floor((now.getTime() - timestamp) / 1000));
279
+ if (diffSeconds < 45) {
280
+ return "now";
281
+ }
282
+ const minutes = Math.floor(diffSeconds / 60);
283
+ if (minutes < 60) {
284
+ return `${minutes}m`;
285
+ }
286
+ const hours = Math.floor(minutes / 60);
287
+ if (hours < 24) {
288
+ return `${hours}h`;
289
+ }
290
+ const days = Math.floor(hours / 24);
291
+ if (days < 7) {
292
+ return `${days}d`;
293
+ }
294
+ return new Date(timestamp).toLocaleDateString(undefined, {
295
+ month: "short",
296
+ day: "numeric",
297
+ });
298
+ }
299
+
300
+ /** Codex subscription product ids are prefixed `codex/`. */
301
+ export function isCodexProductModel(modelId: string): boolean {
302
+ return modelId.startsWith("codex/");
303
+ }
304
+
305
+ export type SessionStatusTone = "queued" | "running" | "waiting" | "idle" | "failed" | "cancelled";
306
+
307
+ export const SESSION_STATUS_TONE: Record<SessionDisplayStatus, SessionStatusTone> = {
308
+ queued: "queued",
309
+ running: "running",
310
+ recovering: "running",
311
+ waiting_capacity: "waiting",
312
+ requires_action: "waiting",
313
+ blocked: "failed",
314
+ idle: "idle",
315
+ failed: "failed",
316
+ cancelled: "cancelled",
317
+ };
318
+
319
+ /** The status dot of a recent-session row: a background command reads as running. */
320
+ export function recentSessionStatus(
321
+ session: Pick<SessionListRow, "status" | "backgroundCommandActivity" | "admissionBlock">,
322
+ ): { tone: SessionStatusTone; pulse: boolean } {
323
+ const hasBackgroundCommand = session.backgroundCommandActivity !== undefined;
324
+ return {
325
+ tone: hasBackgroundCommand ? "running" : SESSION_STATUS_TONE[sessionDisplayStatus(session)],
326
+ pulse: hasBackgroundCommand || session.status === "running",
327
+ };
328
+ }
329
+
330
+ /** A short `owner/repo` label from the session's first repository resource. */
331
+ export function sessionRepoLabel(session: Pick<Session, "resources">): string | null {
332
+ const repo = session.resources.find((resource) => resource.kind === "repository");
333
+ if (!repo || repo.kind !== "repository") {
334
+ return null;
335
+ }
336
+ const parts = repo.uri
337
+ .replace(/\.git$/, "")
338
+ .split("/")
339
+ .filter(Boolean);
340
+ return parts.length >= 2 ? parts.slice(-2).join("/") : (parts.at(-1) ?? null);
341
+ }
342
+
343
+ export function recentSessionModelPresentation<TCatalog extends ClientModel>(
344
+ modelId: string,
345
+ catalogRows: readonly PickerModelRow<TCatalog>[],
346
+ ): {
347
+ label: string;
348
+ billingClass: PickerModelRow["billingClass"];
349
+ logoUrl?: string | undefined;
350
+ } {
351
+ const row = findPickerRow([...catalogRows], modelId);
352
+ return {
353
+ label: row?.label ?? modelDisplayName(modelId),
354
+ logoUrl: row?.catalog.logoUrl,
355
+ billingClass:
356
+ row?.billingClass ??
357
+ (isCodexProductModel(modelId) ? "codex_subscription" : "opengeni_credits"),
358
+ };
359
+ }
360
+
361
+ /**
362
+ * The home screen's recent sessions: server pins first, then running, then
363
+ * recency buckets, capped. `sessions` keeps the all-visible-row contract, so
364
+ * its pins are removed before recombining the explicit pinned section.
365
+ */
366
+ export function recentSessionsForHome<T extends SessionListRow>(
367
+ sessions: T[],
368
+ pinned: T[],
369
+ limit = 6,
370
+ now: Date = new Date(),
371
+ ): T[] {
372
+ // Sub-agent sessions are reached from their parent. In a workspace that runs
373
+ // many sub-agents they would otherwise take every slot (they run often) and
374
+ // push the person's own conversations out of the list.
375
+ const ordinary = sessions.filter((session) => !session.pinned && !session.parentSessionId);
376
+ const { running, grouped } = groupSessionsForRail(ordinary, now);
377
+ const topLevelPinned = pinned.filter((session) => !session.parentSessionId);
378
+ return [...topLevelPinned, ...running, ...grouped.flatMap((bucket) => bucket.sessions)].slice(
379
+ 0,
380
+ limit,
381
+ );
382
+ }
383
+
384
+ /** One project (workspace channel) and its sessions, as the web rail groups them. */
385
+ export type SessionProjectSection<T extends SessionListRow = SessionListRow> = {
386
+ /** The channel id, or "default" for unfiled sessions. */
387
+ key: string;
388
+ channelId: string | null;
389
+ name: string;
390
+ sessions: T[];
391
+ };
392
+
393
+ /**
394
+ * Group top-level sessions by project in the server's project order (pinned
395
+ * projects first), then "Default" for unfiled ones and those whose project no
396
+ * longer exists. Running sessions lead each project, then the most recent.
397
+ * Sub-agent sessions are reached from their parent, so they are left out.
398
+ * Projects without sessions are kept only when `keepEmpty` is set.
399
+ */
400
+ export function groupSessionsByProject<T extends SessionListRow & { channelId?: string | null }>(
401
+ sessions: readonly T[],
402
+ projects: readonly { id: string; name: string }[],
403
+ options: { keepEmpty?: boolean } = {},
404
+ ): SessionProjectSection<T>[] {
405
+ const known = new Set(projects.map((project) => project.id));
406
+ const byProject = new Map<string | null, T[]>();
407
+ for (const session of sessions) {
408
+ if ("parentSessionId" in session && session.parentSessionId) continue;
409
+ const channelId = session.channelId ?? null;
410
+ const key = channelId !== null && known.has(channelId) ? channelId : null;
411
+ byProject.set(key, [...(byProject.get(key) ?? []), session]);
412
+ }
413
+ const order = (list: T[]) =>
414
+ [...list].sort(
415
+ (left, right) =>
416
+ Number(isEffectivelyRunning(right)) - Number(isEffectivelyRunning(left)) ||
417
+ compareSessionActivity(left, right),
418
+ );
419
+ const sections: SessionProjectSection<T>[] = projects
420
+ .map((project) => ({
421
+ key: project.id,
422
+ channelId: project.id,
423
+ name: project.name,
424
+ sessions: order(byProject.get(project.id) ?? []),
425
+ }))
426
+ .filter((section) => options.keepEmpty || section.sessions.length > 0);
427
+ const unfiled = byProject.get(null) ?? [];
428
+ if (unfiled.length > 0) {
429
+ sections.push({ key: "default", channelId: null, name: "Default", sessions: order(unfiled) });
430
+ }
431
+ return sections;
432
+ }
433
+
434
+ export { findPickerRow };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Platform-neutral session realtime for any React host (web or React Native):
3
+ * the controller hook, admission rules and the workspace voice-model catalog.
4
+ * Native hosts inject their WebRTC through `controllerFactory`.
5
+ */
6
+ export {
7
+ CODEX_LIVE_MODEL,
8
+ codexRealtimeAdmissionAllowed,
9
+ codexRealtimeAdmissionBlocker,
10
+ sessionRealtimeLifecycleIsActive,
11
+ useRealtimeModelSelection,
12
+ useSessionRealtime,
13
+ } from "./realtime/session-realtime";
14
+ export type {
15
+ RealtimeControllerClient,
16
+ RealtimeModelOption,
17
+ SessionRealtimeControllerFactory,
18
+ } from "./realtime/session-realtime";
@@ -0,0 +1,99 @@
1
+ import type { SessionStatus } from "@opengeni/sdk";
2
+
3
+ /** Status token family (`--og-color-status-<tone>`) for a session status. */
4
+ export type SessionStatusTone = "queued" | "running" | "waiting" | "idle" | "failed" | "cancelled";
5
+
6
+ /**
7
+ * The status a person sees. `blocked` is a `requires_action` session whose
8
+ * next turn the runtime refused to start (an admission block): nothing is
9
+ * asked of the person, so it must not read as "Waiting on you". Accepted work
10
+ * is kept, and Resume (or a new message) rechecks and starts it again.
11
+ */
12
+ export type SessionDisplayStatus = SessionStatus | "blocked";
13
+
14
+ /** True when a `requires_action` session is held by an admission block, not by a person. */
15
+ export function sessionAdmissionBlocked(session: {
16
+ status: SessionStatus;
17
+ admissionBlock?: unknown;
18
+ }): boolean {
19
+ return (
20
+ session.status === "requires_action" &&
21
+ typeof session.admissionBlock === "object" &&
22
+ session.admissionBlock !== null
23
+ );
24
+ }
25
+
26
+ /** The status to present for a session (or a list row carrying its admission block). */
27
+ export function sessionDisplayStatus(session: {
28
+ status: SessionStatus;
29
+ admissionBlock?: unknown;
30
+ }): SessionDisplayStatus {
31
+ return sessionAdmissionBlocked(session) ? "blocked" : session.status;
32
+ }
33
+
34
+ /** Renderer-neutral session status presentation: label, color family and liveness. */
35
+ export const SESSION_STATUS_PRESENTATION: Record<
36
+ SessionDisplayStatus,
37
+ { label: string; tone: SessionStatusTone; pulse: boolean }
38
+ > = {
39
+ queued: { label: "Queued", tone: "queued", pulse: false },
40
+ running: { label: "Running", tone: "running", pulse: true },
41
+ recovering: { label: "Recovering", tone: "running", pulse: true },
42
+ // Model subscription capacity is exhausted; the turn continues by itself.
43
+ waiting_capacity: { label: "Limit reached", tone: "waiting", pulse: true },
44
+ idle: { label: "Idle", tone: "idle", pulse: false },
45
+ requires_action: { label: "Waiting on you", tone: "waiting", pulse: true },
46
+ // The runtime could not start the next turn. Nothing moves until a recheck.
47
+ blocked: { label: "Stuck", tone: "failed", pulse: false },
48
+ failed: { label: "Failed", tone: "failed", pulse: false },
49
+ cancelled: { label: "Cancelled", tone: "cancelled", pulse: false },
50
+ };
51
+
52
+ /**
53
+ * The status badge's color tokens (text, border and its alpha); the fill is the
54
+ * status color at 10%. Mirrors the web badge classes, for non-DOM renderers.
55
+ */
56
+ export const SESSION_STATUS_BADGE: Record<
57
+ SessionDisplayStatus,
58
+ { text: string; border: string; borderAlpha: number; fill: string }
59
+ > = {
60
+ queued: { text: "fg-muted", border: "border", borderAlpha: 1, fill: "status-queued" },
61
+ running: {
62
+ text: "status-running",
63
+ border: "status-running",
64
+ borderAlpha: 0.3,
65
+ fill: "status-running",
66
+ },
67
+ recovering: {
68
+ text: "status-running",
69
+ border: "status-running",
70
+ borderAlpha: 0.3,
71
+ fill: "status-running",
72
+ },
73
+ waiting_capacity: {
74
+ text: "status-waiting",
75
+ border: "status-waiting",
76
+ borderAlpha: 0.35,
77
+ fill: "status-waiting",
78
+ },
79
+ idle: { text: "status-idle", border: "status-idle", borderAlpha: 0.3, fill: "status-idle" },
80
+ requires_action: {
81
+ text: "status-waiting",
82
+ border: "status-waiting",
83
+ borderAlpha: 0.35,
84
+ fill: "status-waiting",
85
+ },
86
+ blocked: {
87
+ text: "status-failed",
88
+ border: "status-failed",
89
+ borderAlpha: 0.35,
90
+ fill: "status-failed",
91
+ },
92
+ failed: {
93
+ text: "status-failed",
94
+ border: "status-failed",
95
+ borderAlpha: 0.35,
96
+ fill: "status-failed",
97
+ },
98
+ cancelled: { text: "fg-subtle", border: "border", borderAlpha: 1, fill: "status-cancelled" },
99
+ };
package/src/session-ui.ts CHANGED
@@ -8,13 +8,55 @@ export type {
8
8
  HumanInputFormProps,
9
9
  } from "./components/human-input-form";
10
10
  export { HumanInputSurface } from "./components/human-input-surface";
11
+ export {
12
+ SecretAnswerChip,
13
+ SecretRefChip,
14
+ SecretRefText,
15
+ secretReferenceLabel,
16
+ } from "./components/secret-ref-chip";
17
+ export type {
18
+ SecretAnswerChipProps,
19
+ SecretRefChipProps,
20
+ SecretRefTextProps,
21
+ SecretReferenceLabel,
22
+ } from "./components/secret-ref-chip";
23
+ export { SecretsUiProvider } from "./secrets-ui";
24
+ export { ApprovalSurface } from "./components/approval-surface";
25
+ export { ToolActionReviewCard, ToolActionReviewDetails } from "./components/tool-action-review";
26
+ export type { ToolReviewDetailsLoader } from "./components/tool-action-review";
27
+ export type { ApprovalSurfaceProps, ApprovalSurfaceMessages } from "./components/approval-surface";
11
28
  export type { HumanInputSurfaceProps } from "./components/human-input-surface";
12
29
  export { MessageTimeline, TimelineRow } from "./components/message-timeline";
13
30
  export type { MessageTimelineProps } from "./components/message-timeline";
31
+ export type { RenderAllowanceExhausted } from "./timeline/allowance-exhausted-row";
32
+ export type { AllowanceLabels, AllowanceScope } from "./usage/allowance-copy";
33
+ export {
34
+ OpenGeniLinkProvider,
35
+ chainLinkResolvers,
36
+ sessionLinkResolver,
37
+ useOpenGeniLinkResolver,
38
+ viewerLinkResolver,
39
+ } from "./components/open-geni-links";
40
+ export type {
41
+ OpenGeniLinkResolution,
42
+ OpenGeniLinkResolver,
43
+ OpenGeniLinkTarget,
44
+ OpenGeniViewerTarget,
45
+ } from "./components/open-geni-links";
46
+ export { parseOpenGeniLink } from "@opengeni/sdk";
47
+ export {
48
+ ArtifactLabelsProvider,
49
+ DEFAULT_ARTIFACT_LABELS,
50
+ type ArtifactLabels,
51
+ } from "./components/artifacts/artifact-chrome";
52
+ export type { TimelineSearchTarget } from "./components/timeline-search";
14
53
  export { createOlderHistoryLoadReceipt } from "./older-history";
15
54
  export type { OlderHistoryLoader, OlderHistoryLoadReceipt } from "./older-history";
16
55
  export { UserMessageBody, userMessageLikelyNeedsDisclosure } from "./components/user-message-body";
17
- export type { UserMessageBodyProps } from "./components/user-message-body";
56
+ export type {
57
+ UserMessageBodyProps,
58
+ UserMessageDisclosureLabels,
59
+ } from "./components/user-message-body";
18
60
  export { BUILT_IN_TURN_SUMMARY_FACET_IDS } from "./timeline/turn-summary";
19
61
  export type {
20
62
  BuiltInTurnSummaryFacetId,
@@ -25,6 +67,51 @@ export type {
25
67
  TurnSummaryOptions,
26
68
  } from "./timeline/turn-summary";
27
69
  export { QueueSurface } from "./components/queue-surface";
70
+ // The provider too, so a host needs only this entry (the root also exports the
71
+ // workbench, whose editors, terminal and desktop are optional peers).
72
+ export { OpenGeniProvider } from "./provider";
73
+ export type { OpenGeniProviderProps, ErrorMessageFormatter } from "./provider";
74
+ // The tool-renderer registry, so custom tool renderers need no root import.
75
+ export { createDefaultToolRegistry, createToolRegistry, defaultToolRegistry } from "./timeline";
76
+ export type {
77
+ CreateToolRegistryOptions,
78
+ ToolRegistry,
79
+ ToolRegistryEntry,
80
+ ToolRenderer,
81
+ ToolRendererProps,
82
+ } from "./timeline";
83
+ export { SessionConversation, SessionConversationView } from "./components/session-conversation";
84
+ export { useSessionConversation } from "./hooks/use-session-conversation";
85
+ export { useNewConversation } from "./hooks/use-new-conversation";
86
+ export type {
87
+ NewConversationController,
88
+ UseNewConversationOptions,
89
+ NewConversationCreateOptions,
90
+ CreatedConversation,
91
+ } from "./hooks/use-new-conversation";
92
+ export { NewConversation, NewConversationView } from "./components/new-conversation";
93
+ export type {
94
+ NewConversationProps,
95
+ NewConversationViewProps,
96
+ NewConversationLabels,
97
+ } from "./components/new-conversation";
98
+ export type {
99
+ SessionConversationController,
100
+ UseSessionConversationOptions,
101
+ } from "./hooks/use-session-conversation";
102
+ export { SessionList } from "./components/session-list";
103
+ export type { SessionListLabels, SessionListProps } from "./components/session-list";
104
+ export { OpenGeniChat } from "./components/open-geni-chat";
105
+ export type {
106
+ OpenGeniChatCreateOptions,
107
+ OpenGeniChatLabels,
108
+ OpenGeniChatProps,
109
+ } from "./components/open-geni-chat";
110
+ export type {
111
+ SessionConversationLabels,
112
+ SessionConversationProps,
113
+ SessionConversationViewProps,
114
+ } from "./components/session-conversation";
28
115
  export type { QueueSurfaceProps } from "./components/queue-surface";
29
116
  export {
30
117
  SessionChrome,
@@ -38,3 +125,13 @@ export type {
38
125
  SessionChromeSignalId,
39
126
  SessionChromeSignalTone,
40
127
  } from "./components/session-chrome";
128
+ export { SessionCommandsPanel } from "./components/session-commands-panel";
129
+ export { SessionCommands } from "./components/session-commands";
130
+
131
+ export { KnowledgeActivityProvider } from "./timeline/knowledge-receipt";
132
+ export type { KnowledgeActivityActions } from "./timeline/knowledge-receipt";
133
+ export { StartupTimings } from "./timeline/startup-timings";
134
+ export { useStartupDetails, setStartupDetails } from "./timeline/startup-preference";
135
+ export type { GenieLoadingOptions } from "./timeline/genie-loading";
136
+
137
+ export { ToolReviewHistoryProvider } from "./components/tool-review-history";