@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,231 @@
1
+ import { ArrowUpRightIcon, ChevronRightIcon } from "lucide-react";
2
+ import { useContext, useState, type ReactNode } from "react";
3
+ import { cn } from "../lib/cn";
4
+ import { useForcedDefaultOpen } from "./disclosure-context";
5
+ import type { AgentTitleParts } from "./platform-activity-presentation";
6
+ import { ActivityDisclosure, CompactActivityContext } from "./shared";
7
+
8
+ /* ----------------------------------------------------------------------------
9
+ Agent row
10
+
11
+ One row for everything that crosses between agents: spawning one, messaging
12
+ one, and every update one sends back. It names the agent, previews what was
13
+ said, opens the full text in place, and deep-links to the agent's session.
14
+ It reuses the rail's row geometry (chevron, icon, title) so it reads as a
15
+ sibling of tool rows, and spends color only on failure.
16
+ -------------------------------------------------------------------------- */
17
+
18
+ export type AgentRowProps = {
19
+ icon: ReactNode;
20
+ title: AgentTitleParts;
21
+ /** Quiet secondary text shown while collapsed. */
22
+ preview?: string | null | undefined;
23
+ /** Two lines suit inbound messages; spawns and messages use one. */
24
+ previewLines?: 1 | 2 | undefined;
25
+ /** Short trailing note after the title, e.g. "+2 earlier". */
26
+ meta?: string | null | undefined;
27
+ /** The agent session the row deep-links to. */
28
+ sessionId?: string | null | undefined;
29
+ onOpenSession?: ((sessionId: string) => void) | undefined;
30
+ running?: boolean | undefined;
31
+ failed?: boolean | undefined;
32
+ cancelled?: boolean | undefined;
33
+ /** Expanded body; the row is static when absent. */
34
+ children?: ReactNode | undefined;
35
+ };
36
+
37
+ export function AgentRow({
38
+ icon,
39
+ title,
40
+ preview,
41
+ previewLines = 1,
42
+ meta,
43
+ sessionId,
44
+ onOpenSession,
45
+ running,
46
+ failed,
47
+ cancelled,
48
+ children,
49
+ }: AgentRowProps) {
50
+ const compact = useContext(CompactActivityContext);
51
+ const forcedDefaultOpen = useForcedDefaultOpen();
52
+ const [open, setOpen] = useState(forcedDefaultOpen ?? false);
53
+ if (compact) {
54
+ return (
55
+ <ActivityDisclosure
56
+ icon={icon}
57
+ title={title.text}
58
+ preview={preview ?? undefined}
59
+ running={running}
60
+ failed={failed}
61
+ cancelled={cancelled}
62
+ />
63
+ );
64
+ }
65
+ const hasBody = children != null;
66
+ const canOpen = Boolean(sessionId && onOpenSession);
67
+ const openLabel = title.name ? `Open ${title.name}` : "Open agent session";
68
+ const status = failed ? "failed" : cancelled ? "cancelled" : running ? "running" : undefined;
69
+
70
+ const inner = (
71
+ <>
72
+ {hasBody ? (
73
+ <ChevronRightIcon
74
+ aria-hidden
75
+ className="mt-[3px] size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/agent:rotate-90"
76
+ />
77
+ ) : (
78
+ <span className="size-3.5 shrink-0" aria-hidden />
79
+ )}
80
+ <span
81
+ aria-hidden
82
+ className={cn(
83
+ "mt-[3px] shrink-0 [&_svg]:size-3.5",
84
+ failed ? "text-og-status-failed" : "text-og-fg-subtle",
85
+ )}
86
+ >
87
+ {icon}
88
+ </span>
89
+ <span className="min-w-0 flex-1">
90
+ <span className="flex min-w-0 items-baseline gap-2">
91
+ <span
92
+ className={cn(
93
+ "min-w-0 truncate text-og-base leading-5",
94
+ running && "og-shimmer-text",
95
+ failed && "text-og-status-failed",
96
+ )}
97
+ >
98
+ {title.name ? (
99
+ <>
100
+ {title.before ? <span className="text-og-fg-muted">{title.before}</span> : null}
101
+ <span className={cn("font-medium", failed ? undefined : "text-og-fg")}>
102
+ {title.name}
103
+ </span>
104
+ {title.after ? <span className="text-og-fg-muted">{title.after}</span> : null}
105
+ </>
106
+ ) : (
107
+ <span className={cn("font-medium", failed ? undefined : "text-og-fg")}>
108
+ {title.text}
109
+ </span>
110
+ )}
111
+ </span>
112
+ {meta ? (
113
+ <span className="shrink-0 text-og-xs text-og-fg-subtle tabular-nums">{meta}</span>
114
+ ) : null}
115
+ </span>
116
+ {preview && !open ? (
117
+ <span
118
+ data-og-agent-preview=""
119
+ className={cn(
120
+ "mt-0.5 block text-og-sm leading-5 text-og-fg-muted",
121
+ previewLines === 2 ? "line-clamp-2 break-words" : "truncate",
122
+ )}
123
+ >
124
+ {preview}
125
+ </span>
126
+ ) : null}
127
+ </span>
128
+ {failed ? (
129
+ <span className="inline-flex shrink-0 items-center gap-1.5 self-center font-og-mono text-og-xs leading-none text-og-status-failed">
130
+ <span className="size-1.5 rounded-full bg-og-status-failed" />
131
+ failed
132
+ </span>
133
+ ) : cancelled ? (
134
+ <span className="og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle">
135
+ interrupted
136
+ </span>
137
+ ) : null}
138
+ {canOpen && sessionId && onOpenSession ? (
139
+ <button
140
+ type="button"
141
+ aria-label={openLabel}
142
+ title={openLabel}
143
+ onClick={(event) => {
144
+ event.stopPropagation();
145
+ onOpenSession(sessionId);
146
+ }}
147
+ onKeyDown={(event) => event.stopPropagation()}
148
+ className={cn(
149
+ "-my-0.5 inline-grid size-6 shrink-0 place-items-center rounded-og-sm text-og-fg-subtle",
150
+ "outline-hidden transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent",
151
+ "pointer-coarse:size-10",
152
+ )}
153
+ >
154
+ <ArrowUpRightIcon aria-hidden className="size-3.5" />
155
+ </button>
156
+ ) : null}
157
+ </>
158
+ );
159
+
160
+ const rowClass = cn(
161
+ "group/agent flex w-full min-w-0 items-start gap-2 rounded-og-sm px-1.5 py-1.5 text-left",
162
+ "pointer-coarse:min-h-11 pointer-coarse:py-2.5",
163
+ );
164
+
165
+ if (!hasBody) {
166
+ return (
167
+ <div data-og-agent-row="" data-status={status} className={rowClass}>
168
+ {inner}
169
+ </div>
170
+ );
171
+ }
172
+
173
+ // A div with button semantics (like ActivityDisclosure) so the open-session
174
+ // button can live inside the row without nesting native buttons.
175
+ return (
176
+ <div data-og-agent-row="" data-status={status}>
177
+ <div
178
+ role="button"
179
+ tabIndex={0}
180
+ aria-expanded={open}
181
+ data-state={open ? "open" : "closed"}
182
+ onClick={() => setOpen((previous) => !previous)}
183
+ onKeyDown={(event) => {
184
+ if (event.key === "Enter" || event.key === " ") {
185
+ event.preventDefault();
186
+ setOpen((previous) => !previous);
187
+ }
188
+ }}
189
+ className={cn(
190
+ rowClass,
191
+ "cursor-pointer outline-hidden transition-colors duration-150 hover:bg-og-surface-1",
192
+ "focus-visible:ring-2 focus-visible:ring-og-accent",
193
+ )}
194
+ >
195
+ {inner}
196
+ </div>
197
+ {open ? (
198
+ <div className="mb-2 ml-[2.125rem] mr-1.5 mt-0.5 flex flex-col gap-2 border-l border-og-border pl-4 text-og-sm leading-6 text-og-fg animate-og-expand">
199
+ {children}
200
+ </div>
201
+ ) : null}
202
+ </div>
203
+ );
204
+ }
205
+
206
+ /** Plain multi-line text for an expanded agent row. */
207
+ export function AgentRowText({ children }: { children: string }) {
208
+ return <p className="whitespace-pre-wrap break-words">{children}</p>;
209
+ }
210
+
211
+ /** A labelled section inside an expanded agent row (Brief, Report, Evidence). */
212
+ export function AgentRowSection({
213
+ label,
214
+ children,
215
+ muted,
216
+ }: {
217
+ label: string;
218
+ children: string;
219
+ muted?: boolean | undefined;
220
+ }) {
221
+ return (
222
+ <div className="min-w-0">
223
+ <p className="text-og-xs font-medium text-og-fg-subtle">{label}</p>
224
+ <p
225
+ className={cn("whitespace-pre-wrap break-words", muted ? "text-og-fg-muted" : "text-og-fg")}
226
+ >
227
+ {children}
228
+ </p>
229
+ </div>
230
+ );
231
+ }
@@ -0,0 +1,86 @@
1
+ import type { AllowanceExhaustedRefusal } from "@opengeni/sdk";
2
+ import { GaugeIcon } from "lucide-react";
3
+ import { createContext, useContext, useMemo, type ReactNode } from "react";
4
+
5
+ import { cn } from "../lib/cn";
6
+ import {
7
+ allowanceLabels,
8
+ allowanceResetSentence,
9
+ formatAllowanceInstant,
10
+ type AllowanceLabels,
11
+ } from "../usage/allowance-copy";
12
+ import { useEntranceAnimation } from "./entrance";
13
+
14
+ /**
15
+ * Replace the built-in "usage limit reached" row. Return `undefined` to keep
16
+ * the default for this refusal (for example, only customize member limits).
17
+ */
18
+ export type RenderAllowanceExhausted = (
19
+ refusal: AllowanceExhaustedRefusal,
20
+ context: { labels: AllowanceLabels; defaultRow: ReactNode },
21
+ ) => ReactNode | undefined;
22
+
23
+ type AllowancePresentation = {
24
+ render: RenderAllowanceExhausted | undefined;
25
+ labels: AllowanceLabels;
26
+ };
27
+
28
+ const AllowancePresentationContext = createContext<AllowancePresentation>({
29
+ render: undefined,
30
+ labels: allowanceLabels(),
31
+ });
32
+
33
+ export function AllowancePresentationProvider({
34
+ render,
35
+ labels,
36
+ children,
37
+ }: {
38
+ render: RenderAllowanceExhausted | undefined;
39
+ labels: Partial<AllowanceLabels> | undefined;
40
+ children: ReactNode;
41
+ }) {
42
+ const value = useMemo(() => ({ render, labels: allowanceLabels(labels) }), [render, labels]);
43
+ return (
44
+ <AllowancePresentationContext.Provider value={value}>
45
+ {children}
46
+ </AllowancePresentationContext.Provider>
47
+ );
48
+ }
49
+
50
+ /**
51
+ * A usage ceiling stopped further work. Calm by design: nothing failed, the
52
+ * conversation is kept, and the row says who can raise the limit and when it
53
+ * resets. Never the server's prose or a member identifier.
54
+ */
55
+ export function AllowanceExhaustedRow({ refusal }: { refusal: AllowanceExhaustedRefusal }) {
56
+ const { render, labels } = useContext(AllowancePresentationContext);
57
+ const enter = useEntranceAnimation();
58
+ const workspace = refusal.scope === "workspace";
59
+ const defaultRow = (
60
+ <div
61
+ className={cn(
62
+ enter && "animate-og-enter",
63
+ "flex items-start gap-2.5 rounded-og-md border border-og-status-waiting/35 bg-og-status-waiting/8 px-3.5 py-2.5 text-og-menu text-og-fg",
64
+ )}
65
+ role="status"
66
+ data-og-allowance-exhausted={refusal.scope}
67
+ >
68
+ <GaugeIcon aria-hidden className="mt-0.5 size-4 shrink-0 text-og-status-waiting" />
69
+ <div className="min-w-0 flex-1">
70
+ <p className="font-medium">
71
+ {workspace ? labels.workspaceLimitReachedTitle : labels.memberLimitReachedTitle}
72
+ </p>
73
+ <p className="mt-0.5 text-og-fg-muted">
74
+ {workspace ? labels.workspaceRemedy : labels.memberRemedy}{" "}
75
+ <span
76
+ title={refusal.resetsAt ? formatAllowanceInstant(refusal.resetsAt) : undefined}
77
+ className="whitespace-nowrap"
78
+ >
79
+ {allowanceResetSentence(labels, refusal.resetsAt)}
80
+ </span>
81
+ </p>
82
+ </div>
83
+ </div>
84
+ );
85
+ return <>{render?.(refusal, { labels, defaultRow }) ?? defaultRow}</>;
86
+ }
@@ -0,0 +1,115 @@
1
+ import type { ContextCompactionItem } from "./types";
2
+
3
+ /** Headline for a compaction that could not produce a checkpoint. */
4
+ export const COMPACTION_FAILURE_TITLE = "Couldn’t compact conversation history";
5
+
6
+ /**
7
+ * Headline for a compaction cut short by its own attempt's cancellation (for
8
+ * example a worker restarting during a deploy). Not a failure: the recovered
9
+ * attempt checks again and compacts if the history still needs it.
10
+ */
11
+ export const COMPACTION_INTERRUPTED_TITLE = "Compaction interrupted";
12
+
13
+ /** Headline for a settled `skipped` compaction landmark. */
14
+ export function compactionSkipTitle(reason: string | null): string {
15
+ return reason === "interrupted" ? COMPACTION_INTERRUPTED_TITLE : COMPACTION_FAILURE_TITLE;
16
+ }
17
+
18
+ /** Why a definitive provider rejection repeats; shown behind Details. */
19
+ export const COMPACTION_REJECTION_NOTE =
20
+ "The provider rejects this request the same way until the conversation changes.";
21
+
22
+ /**
23
+ * Subtitle for a settled compaction landmark. Kept short: a definitive provider
24
+ * rejection withholds the generic retry promise, names the one recovery step,
25
+ * and moves its identifiers behind Details ({@link compactionFailureDetails}).
26
+ */
27
+ export function compactionSkipSubtitle(
28
+ reason: string | null,
29
+ providerRejection: ContextCompactionItem["providerRejection"] = null,
30
+ ): string {
31
+ switch (reason) {
32
+ case "no_history":
33
+ return "No active history to compact";
34
+ case "replacement_not_smaller":
35
+ return "Checkpoint would not reduce memory size";
36
+ case "replacement_exceeds_model_budget":
37
+ return "Checkpoint exceeds this model's context budget. Chat history is unchanged.";
38
+ case "replacement_unchanged":
39
+ return "Checkpoint made no progress";
40
+ case "interrupted":
41
+ return "It will retry if still needed. Chat history is unchanged.";
42
+ case "summarization_failed":
43
+ return providerRejection
44
+ ? "Chat history is unchanged. If your next message fails too, start a new session."
45
+ : "Request it again to retry. Chat history is unchanged.";
46
+ default:
47
+ return "Compaction was not needed. Chat history is unchanged.";
48
+ }
49
+ }
50
+
51
+ export type CompactionFailureDetails = {
52
+ /** One plain sentence on why it failed, when known. */
53
+ note: string | null;
54
+ /** Provider identifiers or the recorded error text, in display order. */
55
+ facts: Array<{ label: string; value: string }>;
56
+ };
57
+
58
+ /**
59
+ * Technical diagnostics for a failed compaction landmark, or null when it has
60
+ * none: a definitive provider rejection lists its content-free identifiers;
61
+ * any other failure shows the turn's recorded error text. Presentation only.
62
+ */
63
+ export function compactionFailureDetails(
64
+ item: Pick<ContextCompactionItem, "phase" | "skipReason" | "providerRejection" | "failureDetail">,
65
+ ): CompactionFailureDetails | null {
66
+ if (item.phase !== "skipped" || item.skipReason !== "summarization_failed") return null;
67
+ const rejection = item.providerRejection;
68
+ if (!rejection) {
69
+ const recorded = item.failureDetail?.trim();
70
+ return recorded ? { note: null, facts: [{ label: "Error", value: recorded }] } : null;
71
+ }
72
+ const facts = [
73
+ {
74
+ label: "Response",
75
+ value: [`HTTP ${rejection.httpStatus}`, rejection.type, rejection.code]
76
+ .filter((part): part is string => Boolean(part))
77
+ .join(" · "),
78
+ },
79
+ ];
80
+ if (rejection.param) facts.push({ label: "Parameter", value: rejection.param });
81
+ if (rejection.requestId) facts.push({ label: "Request ID", value: rejection.requestId });
82
+ return { note: COMPACTION_REJECTION_NOTE, facts };
83
+ }
84
+
85
+ const COMPACTION_TURN_FAILURE_PREFIX = "compaction summarization failed:";
86
+
87
+ /**
88
+ * Short chip copy for a turn's failure reason. A compaction failure records the
89
+ * raw provider text after a fixed prefix; the chip names the outcome instead
90
+ * and keeps the recorded text as `detail` (a hover title). Every other reason
91
+ * passes through unchanged.
92
+ */
93
+ export function presentTurnFailureText(
94
+ failureText: string | null | undefined,
95
+ ): { summary: string; detail?: string } | null {
96
+ const text = failureText?.trim();
97
+ if (!text) return null;
98
+ if (text.toLowerCase().startsWith(COMPACTION_TURN_FAILURE_PREFIX)) {
99
+ return { summary: COMPACTION_FAILURE_TITLE, detail: text };
100
+ }
101
+ return { summary: text };
102
+ }
103
+
104
+ /** `HTTP 400 invalid_request_error, param input[3].encrypted_content`; identifiers only. */
105
+ export function describeCompactionProviderRejection(
106
+ rejection: NonNullable<ContextCompactionItem["providerRejection"]>,
107
+ ): string {
108
+ const parts = [
109
+ `HTTP ${rejection.httpStatus}${rejection.type ? ` ${rejection.type}` : ""}${
110
+ rejection.code ? ` ${rejection.code}` : ""
111
+ }`,
112
+ ];
113
+ if (rejection.param) parts.push(`param ${rejection.param}`);
114
+ return parts.join(", ");
115
+ }
@@ -8,6 +8,7 @@ const FLEET_ACTUAL_REASONS = [
8
8
  "rotation",
9
9
  "active",
10
10
  "all_capped",
11
+ "allocator_disabled",
11
12
  "none",
12
13
  ] as const;
13
14
  const FLEET_SHADOW_OUTCOMES = ["selected", "paced", "none"] as const;
@@ -334,7 +335,7 @@ function fleetDecisionSemanticsAreConsistent(input: {
334
335
  input.actualOutcome === "selected"
335
336
  ? ["lease_reused", "pin", "rotation", "active"].includes(input.actualReason)
336
337
  : input.actualOutcome === "waiting"
337
- ? input.actualReason === "all_capped"
338
+ ? ["all_capped", "allocator_disabled"].includes(input.actualReason)
338
339
  : input.actualReason === "none";
339
340
  const shadowConsistent =
340
341
  input.shadowOutcome === "selected"
@@ -28,6 +28,7 @@ const FLEET_ACTUAL_REASON_LABEL: Record<FleetDecisionItem["actualReason"], strin
28
28
  rotation: "Rotated for capacity",
29
29
  active: "Used the active subscription",
30
30
  all_capped: "All observed subscriptions were capped",
31
+ allocator_disabled: "The policy-selected subscription was disabled for new allocations",
31
32
  none: "No production candidate was selected",
32
33
  };
33
34
 
@@ -0,0 +1,44 @@
1
+ import type { TimelineGroup, TimelineItem } from "./types";
2
+
3
+ /*
4
+ * Landing on a moment in a session: an inbox item or a phone notification
5
+ * points at the durable event that raised it, and the timeline opens on the
6
+ * row that holds that moment. Events that render no row of their own (an
7
+ * agent's notification, a goal change) land on the nearest row before them.
8
+ */
9
+
10
+ function itemSequences(item: TimelineItem): number[] {
11
+ const sources =
12
+ item.sourceEvents ??
13
+ ("annotationSource" in item && item.annotationSource ? [item.annotationSource] : []);
14
+ return sources.map((source) => source.sequence);
15
+ }
16
+
17
+ /** Every durable event sequence a group renders, nested work included. */
18
+ export function timelineGroupSequences(group: TimelineGroup): number[] {
19
+ if (group.kind === "item") return itemSequences(group.item);
20
+ if (group.kind === "turn") return group.groups.flatMap(timelineGroupSequences);
21
+ return [
22
+ ...group.items.flatMap((item) => itemSequences(item)),
23
+ ...(group.work?.details.flatMap(timelineGroupSequences) ?? []),
24
+ ];
25
+ }
26
+
27
+ /**
28
+ * The index of the group to land on for `sequence`: the group that holds it,
29
+ * else the last group that starts before it. -1 when every loaded group is
30
+ * later (the moment is in older history) or nothing is loaded.
31
+ */
32
+ export function timelineGroupIndexAtSequence(
33
+ groups: readonly TimelineGroup[],
34
+ sequence: number,
35
+ ): number {
36
+ let landing = -1;
37
+ for (let index = 0; index < groups.length; index += 1) {
38
+ const sequences = timelineGroupSequences(groups[index]!);
39
+ if (sequences.length === 0) continue;
40
+ if (sequences.includes(sequence)) return index;
41
+ if (Math.min(...sequences) <= sequence) landing = index;
42
+ }
43
+ return landing;
44
+ }
@@ -0,0 +1,19 @@
1
+ /** Decorative loading copy shared by every renderer of the preparing state. */
2
+ export const GENIE_PREPARING_PHRASES: readonly string[] = [
3
+ "Polishing the lamp…",
4
+ "Consulting the carpet…",
5
+ "Untangling wishes…",
6
+ "Summoning a little cleverness…",
7
+ "Checking the fine print on infinity…",
8
+ "Warming up the abracadabra…",
9
+ "Rearranging the stars…",
10
+ "Negotiating with the lamp…",
11
+ "Dusting off a thousand years…",
12
+ "Wishful thinking…",
13
+ "Decanting a little magic…",
14
+ "Finding the good stardust…",
15
+ "Fluffing the magic carpet…",
16
+ "Putting a wish into motion…",
17
+ "A little hocus. A little pocus…",
18
+ ];
19
+ export const GENIE_WAITING_PHRASES: readonly string[] = ["Waiting for a response…"];
@@ -0,0 +1,143 @@
1
+ import { ThinkingOrb } from "thinking-orbs";
2
+ import { useThemeType } from "../lib/use-theme-type";
3
+ import { GENIE_PREPARING_PHRASES, GENIE_WAITING_PHRASES } from "./genie-copy";
4
+ import { createContext, useContext, useEffect, useState, type ReactNode } from "react";
5
+
6
+ export type GenieLoadingRenderProps = {
7
+ startedAt: string;
8
+ phase: "preparing" | "waiting";
9
+ detailsOpen: boolean;
10
+ onShowDetails: () => void;
11
+ };
12
+
13
+ export type GenieLoadingOptions = {
14
+ /** Replace the visual while preserving SDK loading visibility and transitions. */
15
+ render?: (props: GenieLoadingRenderProps) => ReactNode;
16
+ phrases?: readonly string[];
17
+ /** Native copy overrides. Omitted messages retain the default English copy. */
18
+ messages?: {
19
+ status?: string;
20
+ slowStatus?: string;
21
+ slowText?: string;
22
+ showDetails?: string;
23
+ hideDetails?: string;
24
+ };
25
+ /** Public adapter options; the renderer dependency's declarations stay private. */
26
+ orb?: {
27
+ state?:
28
+ | "working"
29
+ | "searching"
30
+ | "solving"
31
+ | "listening"
32
+ | "connecting"
33
+ | "weaving"
34
+ | "composing"
35
+ | "breathing"
36
+ | "shaping";
37
+ size?: 64 | 20;
38
+ speed?: number;
39
+ };
40
+ };
41
+ export const GenieLoadingOptionsContext = createContext<GenieLoadingOptions | undefined>(undefined);
42
+
43
+ /**
44
+ * Neutral defaults for conversations embedded in another product
45
+ * (`SessionConversation`, `OpenGeniChat`), which should not carry Opengeni's
46
+ * own playful copy. The Opengeni app keeps the defaults above.
47
+ */
48
+ export const EMBEDDED_GENIE_LOADING = {
49
+ phrases: ["Thinking…"],
50
+ messages: { showDetails: "Show details" },
51
+ } as const satisfies GenieLoadingOptions;
52
+
53
+ /** Decorative copy never substitutes for a failure or claims measurable progress. */
54
+ export function GenieLoading({
55
+ startedAt,
56
+ phase = "preparing",
57
+ onShowDetails,
58
+ detailsOpen = false,
59
+ notice,
60
+ }: {
61
+ startedAt: string;
62
+ phase?: GenieLoadingRenderProps["phase"];
63
+ onShowDetails: () => void;
64
+ detailsOpen?: boolean;
65
+ /** An actionable startup problem takes precedence over decorative copy. */
66
+ notice?: string | undefined;
67
+ }) {
68
+ const options = useContext(GenieLoadingOptionsContext);
69
+ const waiting = phase === "waiting";
70
+ const phrases = options?.phrases?.length
71
+ ? options.phrases
72
+ : waiting
73
+ ? GENIE_WAITING_PHRASES
74
+ : GENIE_PREPARING_PHRASES;
75
+ const theme = useThemeType(undefined);
76
+ const [phrase, setPhrase] = useState(0);
77
+ const [showDetails, setShowDetails] = useState(false);
78
+ const [slow, setSlow] = useState(false);
79
+ useEffect(() => {
80
+ const update = () => {
81
+ setShowDetails(Date.now() - Date.parse(startedAt) >= 30_000);
82
+ setSlow(Date.now() - Date.parse(startedAt) >= 60_000);
83
+ if (!document.hidden) setPhrase(Math.floor(Math.random() * phrases.length));
84
+ };
85
+ update();
86
+ const timer = window.setInterval(update, 5_000);
87
+ return () => window.clearInterval(timer);
88
+ }, [startedAt, phrases]);
89
+ if (options?.render && !notice)
90
+ return options.render({ startedAt, phase, detailsOpen, onShowDetails });
91
+ return (
92
+ <div className="og-genie-loading">
93
+ <div
94
+ className="og-genie-orb"
95
+ aria-hidden="true"
96
+ style={{
97
+ width: options?.orb?.size ?? 64,
98
+ height: options?.orb?.size ?? 64,
99
+ flexBasis: options?.orb?.size ?? 64,
100
+ }}
101
+ >
102
+ <ThinkingOrb state="searching" size={64} theme={theme} speed={0.8} {...options?.orb} />
103
+ </div>
104
+ <div className="og-genie-copy">
105
+ <span className="sr-only" role="status">
106
+ {notice ??
107
+ (slow
108
+ ? (options?.messages?.slowStatus ??
109
+ (waiting
110
+ ? "Waiting for a response. Taking longer than usual."
111
+ : "Preparing your task. Taking longer than usual."))
112
+ : (options?.messages?.status ??
113
+ (waiting ? "Waiting for a response." : "Preparing your task.")))}
114
+ </span>
115
+ <span
116
+ key={notice ?? (slow ? "slow" : phrase)}
117
+ className="og-genie-phrase"
118
+ style={notice ? { animation: "none" } : undefined}
119
+ aria-hidden="true"
120
+ >
121
+ {notice ??
122
+ (slow
123
+ ? (options?.messages?.slowText ??
124
+ (waiting ? "Still waiting for a response…" : "A little longer than usual…"))
125
+ : phrases[phrase % phrases.length])}
126
+ </span>
127
+ {showDetails || detailsOpen || notice ? (
128
+ <button
129
+ type="button"
130
+ className="og-genie-details"
131
+ aria-expanded={detailsOpen}
132
+ onClick={onShowDetails}
133
+ >
134
+ {detailsOpen
135
+ ? (options?.messages?.hideDetails ?? "Hide details")
136
+ : (options?.messages?.showDetails ?? (waiting ? "Show details" : "Behind the magic"))}
137
+ <span aria-hidden="true"> ↗</span>
138
+ </button>
139
+ ) : null}
140
+ </div>
141
+ </div>
142
+ );
143
+ }