@opengeni/react 4.3.3-canary.39786771332001 → 4.5.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 (710) hide show
  1. package/dist/app/app-state.js +29 -29
  2. package/dist/app/components/Composer.js +27 -27
  3. package/dist/app/components/agent/agent-capability-picker.js +4 -4
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +2 -2
  5. package/dist/app/components/artifacts/artifact-library.js +19 -19
  6. package/dist/app/components/artifacts/artifact-page-chrome.js +2 -2
  7. package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
  8. package/dist/app/components/artifacts/inline-chat-image.js +31 -30
  9. package/dist/app/components/artifacts/retained-file-preview.js +35 -34
  10. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  11. package/dist/app/components/artifacts/site-audience.js +4 -4
  12. package/dist/app/components/artifacts/site-conversations.js +22 -21
  13. package/dist/app/components/artifacts/site-data.js +19 -19
  14. package/dist/app/components/artifacts/site-publishing.js +41 -41
  15. package/dist/app/components/artifacts/site-settings.js +50 -50
  16. package/dist/app/components/billing-class-mark.js +5 -5
  17. package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
  18. package/dist/app/components/capabilities/capability-logo-source.js +12 -12
  19. package/dist/app/components/capabilities/connector-tool-permissions.js +3 -3
  20. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  21. package/dist/app/components/capabilities/perform-capability-action.js +1 -1
  22. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +16 -16
  23. package/dist/app/components/capabilities/session-capability-card.js +94 -76
  24. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  25. package/dist/app/components/capabilities/session-chrome-card.css +1023 -0
  26. package/dist/app/components/capabilities/session-chrome-card.css.map +1 -0
  27. package/dist/app/components/capabilities/session-chrome-card.d.ts +18 -0
  28. package/dist/app/components/capabilities/session-chrome-card.js +72 -0
  29. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -20
  30. package/dist/app/components/capabilities/session-github-card.js +24 -24
  31. package/dist/app/components/capabilities/session-machine-card.d.ts +27 -1
  32. package/dist/app/components/capabilities/session-machine-card.js +40 -36
  33. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  34. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  35. package/dist/app/components/command-menu/chat-status.js +18 -17
  36. package/dist/app/components/command-menu/chat-switcher.js +19 -18
  37. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  38. package/dist/app/components/command-menu/command-menu.js +36 -114
  39. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  40. package/dist/app/components/command-menu/shortcut-sheet.js +17 -17
  41. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  42. package/dist/app/components/composer-mobile-plus-panel.js +20 -20
  43. package/dist/app/components/composer-mobile-plus.js +1 -1
  44. package/dist/app/components/credit-required-gate.js +1 -1
  45. package/dist/app/components/credit-required-prompt.js +12 -12
  46. package/dist/app/components/credits/coupon-redeem.js +2 -2
  47. package/dist/app/components/credits/credit-refusal-notice.js +2 -2
  48. package/dist/app/components/desktop/app-shots.js +7 -7
  49. package/dist/app/components/desktop/this-computer.js +4 -4
  50. package/dist/app/components/feedback.js +4 -4
  51. package/dist/app/components/follow-up-repository-menu-body.js +5 -5
  52. package/dist/app/components/follow-up-repository-picker.js +1 -1
  53. package/dist/app/components/github-app-connect-launcher.js +2 -2
  54. package/dist/app/components/in-app-help-link.js +2 -2
  55. package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
  56. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  57. package/dist/app/components/markdown.js +9 -9
  58. package/dist/app/components/message-context-pills.js +2 -2
  59. package/dist/app/components/models/models-ui.js +8 -8
  60. package/dist/app/components/new-session-starters.js +2 -2
  61. package/dist/app/components/pickers.js +9 -9
  62. package/dist/app/components/rail/rail-context.js +2 -2
  63. package/dist/app/components/rail/rail-sections.js +69 -66
  64. package/dist/app/components/rail/session-header.js +49 -48
  65. package/dist/app/components/rail/session-list.js +68 -65
  66. package/dist/app/components/rail/session-row-content.d.ts +6 -2
  67. package/dist/app/components/rail/session-row-content.js +1 -1
  68. package/dist/app/components/rail/session-row-hover-details.js +24 -23
  69. package/dist/app/components/rail/session-shell.js +107 -104
  70. package/dist/app/components/rail/site-session-group-heading.d.ts +7 -1
  71. package/dist/app/components/rail/site-session-group-heading.js +20 -3
  72. package/dist/app/components/repository-picker.js +5 -5
  73. package/dist/app/components/secrets/session-secrets-panel.js +3 -3
  74. package/dist/app/components/session/agent-configuration-panel.js +38 -38
  75. package/dist/app/components/session/artifact-link-boundary.js +2 -2
  76. package/dist/app/components/session/artifact-session-page.js +4 -4
  77. package/dist/app/components/session/banners.js +11 -11
  78. package/dist/app/components/session/codex-account-indicator.js +12 -12
  79. package/dist/app/components/session/editable-artifacts-workspace.js +45 -45
  80. package/dist/app/components/session/failed-session-banner.js +11 -11
  81. package/dist/app/components/session/human-input.js +59 -55
  82. package/dist/app/components/session/inspector.js +91 -87
  83. package/dist/app/components/session/inspector.js.map +1 -1
  84. package/dist/app/components/session/message-actions.js +4 -4
  85. package/dist/app/components/session/message-resource-attachments.js +21 -20
  86. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  87. package/dist/app/components/session/model-account-indicator.js +11 -11
  88. package/dist/app/components/session/model-context-inspector.js +2 -2
  89. package/dist/app/components/session/model-recovery-notice.js +3 -3
  90. package/dist/app/components/session/new-session-settings-menu.js +12 -12
  91. package/dist/app/components/session/sandbox-switcher.js +16 -16
  92. package/dist/app/components/session/sandbox-workspace.js +83 -79
  93. package/dist/app/components/session/search-markdown-highlight.js +10 -10
  94. package/dist/app/components/session/search-results-view.js +11 -11
  95. package/dist/app/components/session/session-admin-access.js +9 -9
  96. package/dist/app/components/session/session-admission-notice.js +6 -6
  97. package/dist/app/components/session/session-machine-access-notice.js +6 -6
  98. package/dist/app/components/session/session-retention.js +4 -4
  99. package/dist/app/components/session/session-search-dialog.js +12 -12
  100. package/dist/app/components/session/session-skill-reviews.js +1 -1
  101. package/dist/app/components/session/session-tenancy-control.d.ts +2 -0
  102. package/dist/app/components/session/session-tenancy-control.js +41 -26
  103. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  104. package/dist/app/components/session/session-usage-limit-section.js +11 -11
  105. package/dist/app/components/session/session-wait-status.js +10 -9
  106. package/dist/app/components/session/session-wait-status.js.map +1 -1
  107. package/dist/app/components/session/site-origin-link.d.ts +1 -0
  108. package/dist/app/components/session/site-origin-link.js +2 -2
  109. package/dist/app/components/session/subagents.js +17 -16
  110. package/dist/app/components/session-connectors-menu-body.js +5 -5
  111. package/dist/app/components/settings/row-select.js +1 -1
  112. package/dist/app/components/transcription-settings.js +2 -2
  113. package/dist/app/components/ui/destructive-confirm.js +6 -6
  114. package/dist/app/components/usage/usage-entry.js +8 -8
  115. package/dist/app/components/workspace-composer-plus.js +22 -22
  116. package/dist/app/embed/memory-navigation.js +2 -2
  117. package/dist/app/embed/session-app.js +275 -269
  118. package/dist/app/lib/actions/actions-provider.js +14 -14
  119. package/dist/app/lib/actions/held-modifier.d.ts +11 -0
  120. package/dist/app/lib/app-surfaces.js +2 -2
  121. package/dist/app/lib/codex-usage-query.js +6 -6
  122. package/dist/app/lib/composer-connectors.js +13 -13
  123. package/dist/app/lib/console-site.d.ts +6 -0
  124. package/dist/app/lib/console-site.js +14 -0
  125. package/dist/app/lib/console-text.js +2 -2
  126. package/dist/app/lib/events.js +18 -17
  127. package/dist/app/lib/failed-session-copy.js +3 -3
  128. package/dist/app/lib/model-access-onboarding.js +3 -3
  129. package/dist/app/lib/move-chat-to-machine.js +3 -3
  130. package/dist/app/lib/navigation.d.ts +5 -0
  131. package/dist/app/lib/navigation.js +1 -1
  132. package/dist/app/lib/routes.d.ts +17 -0
  133. package/dist/app/lib/routes.js +9 -3
  134. package/dist/app/lib/session-branch-cache.js +14 -13
  135. package/dist/app/lib/session-create.js +2 -2
  136. package/dist/app/lib/session-deep-link.js +2 -2
  137. package/dist/app/lib/session-failure-toasts.d.ts +8 -0
  138. package/dist/app/lib/session-group-pagination.js +14 -13
  139. package/dist/app/lib/session-hover-facts.js +15 -14
  140. package/dist/app/lib/session-model.js +3 -3
  141. package/dist/app/lib/session-rail.js +10 -9
  142. package/dist/app/lib/session-rename.js +3 -3
  143. package/dist/app/lib/session-ui-features.d.ts +6 -1
  144. package/dist/app/lib/session-ui-features.js +1 -1
  145. package/dist/app/lib/sessions-group.d.ts +43 -3
  146. package/dist/app/lib/sessions-group.js +22 -15
  147. package/dist/app/lib/shared-query.js +3 -3
  148. package/dist/app/lib/site-opened.d.ts +6 -0
  149. package/dist/app/lib/site-opened.js +10 -0
  150. package/dist/app/lib/turn-failure-analytics.js +5 -5
  151. package/dist/app/lib/use-duplicate-site.js +3 -3
  152. package/dist/app/lib/use-follow-up-repositories.js +4 -4
  153. package/dist/app/lib/use-session-list-hint-refresh.d.ts +20 -2
  154. package/dist/app/lib/use-session-list-hint-refresh.js +5 -1
  155. package/dist/app/lib/use-workspace-machines.js +6 -6
  156. package/dist/app/lib/use-workspace-model-catalog.js +8 -8
  157. package/dist/app/lib/use-workspace-rigs.js +8 -8
  158. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  159. package/dist/app/lib/workspace-scope-context.js +4 -4
  160. package/dist/app/routes/artifacts.js +136 -153
  161. package/dist/app/routes/artifacts.js.map +1 -1
  162. package/dist/app/routes/retained-artifact.js +63 -62
  163. package/dist/app/routes/retained-artifact.js.map +1 -1
  164. package/dist/app/routes/session-unavailable.js +7 -5
  165. package/dist/app/routes/session.js +177 -173
  166. package/dist/app/routes/sessions-index-hydration.js +3 -3
  167. package/dist/app/routes/sessions-index.js +123 -121
  168. package/dist/app/routes/site-view.d.ts +11 -0
  169. package/dist/app/routes/site-view.js +597 -0
  170. package/dist/app/routes/site-view.js.map +1 -0
  171. package/dist/artifacts-document.js +4 -4
  172. package/dist/artifacts-presentation.js +4 -4
  173. package/dist/artifacts-spreadsheet.js +4 -4
  174. package/dist/artifacts.js +39 -39
  175. package/dist/{browser-viewer-RYYQSRTC.js → browser-viewer-QMCNV4RI.js} +9 -7
  176. package/dist/{chat-interactive-block-ABCRKXJ4.js → chat-interactive-block-PMIAUXSO.js} +6 -6
  177. package/dist/{chunk-GIZGNFIX.js → chunk-22FFOHPT.js} +11 -11
  178. package/dist/chunk-22GTC4MZ.js +15 -0
  179. package/dist/chunk-22GTC4MZ.js.map +1 -0
  180. package/dist/{chunk-Z5WMLJKI.js → chunk-22JFMNMF.js} +92 -4
  181. package/dist/chunk-22JFMNMF.js.map +1 -0
  182. package/dist/{chunk-UHFWF6ZU.js → chunk-2FPS5H2D.js} +2 -2
  183. package/dist/{chunk-NAWXARTY.js → chunk-2KO2G3RI.js} +72 -6
  184. package/dist/chunk-2KO2G3RI.js.map +1 -0
  185. package/dist/{chunk-5POTDNQT.js → chunk-2NC7NZCE.js} +6 -6
  186. package/dist/{chunk-ZKYYZH6L.js → chunk-2QBYDGWO.js} +9 -9
  187. package/dist/{chunk-TWXIFWBD.js → chunk-34EU25RL.js} +2 -2
  188. package/dist/{chunk-LQKKSUCR.js → chunk-35BC2FU2.js} +19 -19
  189. package/dist/{chunk-PTGRFAMH.js → chunk-3ABPIUCK.js} +2 -2
  190. package/dist/{chunk-S4SC5SSV.js → chunk-3GU7AWG7.js} +18 -18
  191. package/dist/{chunk-722UO6YQ.js → chunk-3PEXVG4D.js} +2 -2
  192. package/dist/{chunk-OQAAI33Y.js → chunk-3RMKPHBL.js} +3 -3
  193. package/dist/{chunk-6JKZILLF.js → chunk-3RQUWFZT.js} +67 -67
  194. package/dist/{chunk-6JKZILLF.js.map → chunk-3RQUWFZT.js.map} +1 -1
  195. package/dist/{chunk-GCGTYXJJ.js → chunk-3STBLX4O.js} +9 -9
  196. package/dist/{chunk-YXIW7H4N.js → chunk-3X5FKDYQ.js} +28 -28
  197. package/dist/{chunk-KTRKZRID.js → chunk-4GLLWX33.js} +11 -11
  198. package/dist/{chunk-ROQOVH4N.js → chunk-4HEXNAFI.js} +20 -20
  199. package/dist/chunk-4HEXNAFI.js.map +1 -0
  200. package/dist/{chunk-SD2K5ZN5.js → chunk-4LPA25NQ.js} +4 -4
  201. package/dist/{chunk-DKCX643S.js → chunk-4RMN4E2Y.js} +13 -13
  202. package/dist/{chunk-E5FCEDMU.js → chunk-4SAGYEVB.js} +2 -2
  203. package/dist/{chunk-HTT3FB7T.js → chunk-4VK2R5QC.js} +3 -3
  204. package/dist/{chunk-CKG2EG62.js → chunk-4XQC7VLT.js} +14 -14
  205. package/dist/{chunk-IVOA3DXA.js → chunk-4YXAQMTD.js} +12 -12
  206. package/dist/{chunk-HOJGAJAB.js → chunk-52WK2GGK.js} +8 -8
  207. package/dist/{chunk-NYZQ7LO7.js → chunk-552UYIQ7.js} +20 -20
  208. package/dist/{chunk-LEXPBQ56.js → chunk-5DSKMG2I.js} +4 -4
  209. package/dist/{chunk-WNG757ID.js → chunk-5FA455GR.js} +4 -4
  210. package/dist/{chunk-MNWQAYY3.js → chunk-5FEN3KYH.js} +11 -11
  211. package/dist/{chunk-OSVHU2WU.js → chunk-5JHRMUAZ.js} +12 -12
  212. package/dist/{chunk-PM3OSANE.js → chunk-5MJHH72T.js} +14 -3
  213. package/dist/chunk-5MJHH72T.js.map +1 -0
  214. package/dist/{chunk-RKB2Z457.js → chunk-5VGJXWQ2.js} +2 -2
  215. package/dist/{chunk-GFUUFM2O.js → chunk-5W6ZDKRR.js} +6 -6
  216. package/dist/{chunk-NDETTZQA.js → chunk-5W7KJ5NQ.js} +37 -37
  217. package/dist/{chunk-Q35YZVDZ.js → chunk-5Y2FPLZE.js} +9 -9
  218. package/dist/{chunk-6W3LF3DB.js → chunk-5YFY4SFC.js} +2 -12
  219. package/dist/chunk-5YFY4SFC.js.map +1 -0
  220. package/dist/{chunk-F3NERYBQ.js → chunk-62VER7O4.js} +6 -6
  221. package/dist/{chunk-FBMU3VK5.js → chunk-6DCEDIF6.js} +2 -2
  222. package/dist/{chunk-WUHB422G.js → chunk-73WI7FL2.js} +18 -18
  223. package/dist/chunk-756MKA2J.js +45 -0
  224. package/dist/chunk-756MKA2J.js.map +1 -0
  225. package/dist/{chunk-QECZVL7S.js → chunk-7FJMRJDG.js} +2 -2
  226. package/dist/{chunk-7KGKDWWR.js → chunk-7HFLYNWN.js} +2 -2
  227. package/dist/{chunk-XVM566II.js → chunk-7KIENXRE.js} +2 -2
  228. package/dist/{chunk-CBY5CXBD.js → chunk-7NPCEBZE.js} +5 -5
  229. package/dist/{chunk-46VBQG2D.js → chunk-7P4AQMGA.js} +13 -13
  230. package/dist/{chunk-CKZW7A5S.js → chunk-7TCT7KPQ.js} +742 -644
  231. package/dist/chunk-7TCT7KPQ.js.map +1 -0
  232. package/dist/{chunk-O77Q4NG2.js → chunk-7XO7YKPC.js} +283 -1038
  233. package/dist/chunk-7XO7YKPC.js.map +1 -0
  234. package/dist/{chunk-S7PVL7XH.js → chunk-A4BD4ZVB.js} +4 -4
  235. package/dist/{chunk-VSQHDBHU.js → chunk-ACL2V2KE.js} +68 -35
  236. package/dist/chunk-ACL2V2KE.js.map +1 -0
  237. package/dist/{chunk-73SOCVLS.js → chunk-AIEXYO2X.js} +3 -3
  238. package/dist/{chunk-U7TC2XJQ.js → chunk-AJPW3SV4.js} +3 -3
  239. package/dist/{chunk-HRJQAFKR.js → chunk-AX6YJA5U.js} +2 -2
  240. package/dist/{chunk-P5WABK2H.js → chunk-BCM7C3MJ.js} +9 -9
  241. package/dist/{chunk-DT7BORXG.js → chunk-BMJTNPWK.js} +2 -2
  242. package/dist/{chunk-HIHO2QE7.js → chunk-BT2MVGHT.js} +2 -2
  243. package/dist/{chunk-3XOISKZC.js → chunk-BXQYAAVE.js} +4 -4
  244. package/dist/{chunk-IBTXYLBW.js → chunk-CCFWY4GF.js} +2 -2
  245. package/dist/{chunk-ZOC3OP6F.js → chunk-CCR33J7L.js} +2 -2
  246. package/dist/{chunk-GTQ3SNEI.js → chunk-CD3MO3IC.js} +2 -2
  247. package/dist/{chunk-WSMYOLHG.js → chunk-CDEXRJB6.js} +5 -5
  248. package/dist/{chunk-3GLAPCVI.js → chunk-CFFNT2OY.js} +8 -8
  249. package/dist/{chunk-FUSFVUIJ.js → chunk-CMLJSF2F.js} +12 -12
  250. package/dist/{chunk-O4DYOSOL.js → chunk-CP7ZQHBW.js} +13 -13
  251. package/dist/{chunk-IOKSNX74.js → chunk-D5OWJZQR.js} +2 -2
  252. package/dist/{chunk-SQGXMHJO.js → chunk-DGLRZMXL.js} +3 -3
  253. package/dist/{chunk-GNEHAPKV.js → chunk-DJFTH2DI.js} +3 -3
  254. package/dist/{chunk-HQG4SLTE.js → chunk-DYJGYGPB.js} +2 -2
  255. package/dist/{chunk-4EAF3HSD.js → chunk-EJ7WARW7.js} +2 -2
  256. package/dist/{chunk-3AA6RNGE.js → chunk-ENS6E4RZ.js} +2 -2
  257. package/dist/{chunk-OOEO4MKY.js → chunk-EPWD4KRA.js} +2 -2
  258. package/dist/{chunk-V5RJAWRP.js → chunk-EQE3MNQN.js} +5 -5
  259. package/dist/{chunk-TSBE4KOQ.js → chunk-EWL6NDOO.js} +3 -3
  260. package/dist/{chunk-OO2T63BY.js → chunk-EYS4ZOF5.js} +2 -2
  261. package/dist/{chunk-IC7KNOBB.js → chunk-FDAV72IX.js} +7 -7
  262. package/dist/{chunk-AG7VGUIW.js → chunk-FFNPUSVO.js} +7 -7
  263. package/dist/{chunk-P5T36BA3.js → chunk-FRP64DEK.js} +2 -2
  264. package/dist/{chunk-KBF3SE7G.js → chunk-FSP334UU.js} +2 -2
  265. package/dist/{chunk-ZHFKMMOT.js → chunk-FTX5CNHA.js} +6 -6
  266. package/dist/{chunk-KYBALSWW.js → chunk-FWOBNL2A.js} +1 -1
  267. package/dist/{chunk-HJ5XWW62.js → chunk-FWYEZ3LE.js} +34 -34
  268. package/dist/{chunk-WSLPZ43N.js → chunk-G4HQUBO4.js} +12 -12
  269. package/dist/{chunk-CSHBR2IZ.js → chunk-GDLDBR6B.js} +2 -2
  270. package/dist/chunk-GGV4NSG3.js +792 -0
  271. package/dist/chunk-GGV4NSG3.js.map +1 -0
  272. package/dist/{chunk-G3S2F35T.js → chunk-GHHM6WN4.js} +3 -3
  273. package/dist/{chunk-OANSIX34.js → chunk-GRSODLVO.js} +4 -4
  274. package/dist/{chunk-DDIBZA4X.js → chunk-GT7JFQ4E.js} +405 -148
  275. package/dist/chunk-GT7JFQ4E.js.map +1 -0
  276. package/dist/{chunk-EU6XSQFM.js → chunk-GXW2I2M2.js} +2 -2
  277. package/dist/{chunk-4246UYVG.js → chunk-GZS37O3G.js} +1 -1
  278. package/dist/{chunk-XFNLU7EW.js → chunk-H5M33DAL.js} +15 -6
  279. package/dist/chunk-H5M33DAL.js.map +1 -0
  280. package/dist/{chunk-Y7WMW74G.js → chunk-HQWVDQXW.js} +7 -7
  281. package/dist/{chunk-YTZQV2DD.js → chunk-HU6JTNWF.js} +2 -2
  282. package/dist/{chunk-QRVNI5V6.js → chunk-I6KIQKU6.js} +3 -3
  283. package/dist/{chunk-Q262Y2YX.js → chunk-IBA5FMRE.js} +141 -137
  284. package/dist/chunk-IBA5FMRE.js.map +1 -0
  285. package/dist/{chunk-BNUPYHHZ.js → chunk-IDXTASGN.js} +4 -4
  286. package/dist/{chunk-KF3MF6FP.js → chunk-IECRGM6K.js} +3 -2
  287. package/dist/chunk-IECRGM6K.js.map +1 -0
  288. package/dist/chunk-IJYL5BZM.js +38 -0
  289. package/dist/chunk-IJYL5BZM.js.map +1 -0
  290. package/dist/{chunk-L6RXRRN3.js → chunk-ILDOW2IQ.js} +3 -3
  291. package/dist/{chunk-VUHPA3XQ.js → chunk-ITX2TB4K.js} +6 -6
  292. package/dist/{chunk-ETCB6SUJ.js → chunk-J22HD2PB.js} +6 -6
  293. package/dist/{chunk-U47YDYLQ.js → chunk-J5MEDX7C.js} +8 -8
  294. package/dist/{chunk-6VQTHC4W.js → chunk-J7FBBLHF.js} +36 -36
  295. package/dist/{chunk-5JZYPZ72.js → chunk-JFK7NTEA.js} +4 -4
  296. package/dist/chunk-JFK7NTEA.js.map +1 -0
  297. package/dist/{chunk-QZRDCFHI.js → chunk-JM4HQPAI.js} +5 -5
  298. package/dist/{chunk-PIVGX42P.js → chunk-JNY5MT3I.js} +2 -2
  299. package/dist/{chunk-XWWXIZFP.js → chunk-JO6R5EXF.js} +7 -7
  300. package/dist/{chunk-MM7OKOTE.js → chunk-JQCGPTZ6.js} +9 -9
  301. package/dist/chunk-JRSNCSZN.js +37 -0
  302. package/dist/chunk-JRSNCSZN.js.map +1 -0
  303. package/dist/{chunk-KNFDWNCH.js → chunk-JXT5QDJC.js} +5 -5
  304. package/dist/{chunk-OR37STQZ.js → chunk-KEXYBG7Q.js} +3 -3
  305. package/dist/{chunk-AZVANYMB.js → chunk-KUNFUSZ7.js} +2 -2
  306. package/dist/{chunk-DXZNDKQD.js → chunk-LEEJBZ5B.js} +2 -2
  307. package/dist/{chunk-STUCI6QA.js → chunk-LEKBNKLD.js} +1 -1
  308. package/dist/{chunk-STUCI6QA.js.map → chunk-LEKBNKLD.js.map} +1 -1
  309. package/dist/{chunk-C535KSTY.js → chunk-LF5CBAOS.js} +4 -4
  310. package/dist/{chunk-BJIZ7PL7.js → chunk-LHLK7FUA.js} +145 -29
  311. package/dist/chunk-LHLK7FUA.js.map +1 -0
  312. package/dist/{chunk-RIMKJBCD.js → chunk-LMPTC4CX.js} +2 -2
  313. package/dist/{chunk-3KVWXKD6.js → chunk-LQ47YL6E.js} +2 -2
  314. package/dist/{chunk-H5WGWAYX.js → chunk-LT4J7RHI.js} +13 -13
  315. package/dist/{chunk-DSGMYES6.js → chunk-MCTTONOW.js} +28 -28
  316. package/dist/{chunk-IGHELZI7.js → chunk-MIECLOQC.js} +9 -9
  317. package/dist/{chunk-FM4OUCC2.js → chunk-MOKYT3X3.js} +3 -3
  318. package/dist/{chunk-GZ64CASI.js → chunk-MVZYNZXE.js} +5 -4
  319. package/dist/chunk-MVZYNZXE.js.map +1 -0
  320. package/dist/{chunk-RKILMLA7.js → chunk-MXLKI7BI.js} +3 -3
  321. package/dist/{chunk-45WYYFP6.js → chunk-N3ZP4IDU.js} +2 -2
  322. package/dist/{chunk-XRRSFQEV.js → chunk-NAZZLAWX.js} +2 -2
  323. package/dist/{chunk-UWJ5P5CU.js → chunk-NEK4WB5P.js} +3 -3
  324. package/dist/{chunk-6L7U46Y2.js → chunk-NKNVIO66.js} +2 -2
  325. package/dist/{chunk-JKUICTLM.js → chunk-NLAFNMPK.js} +2 -2
  326. package/dist/{chunk-4LKNIGHB.js → chunk-O2SBHS2N.js} +2 -2
  327. package/dist/{chunk-D3RK3NGM.js → chunk-PCFK7HKD.js} +17 -17
  328. package/dist/{chunk-VVCDB2T7.js → chunk-PCJLH45G.js} +3 -3
  329. package/dist/{chunk-PZ24CYDO.js → chunk-PFAUGEV5.js} +2 -2
  330. package/dist/{chunk-HGMWMK5K.js → chunk-PO3BH3KQ.js} +2 -2
  331. package/dist/{chunk-B74GSYR6.js → chunk-PUTS4DYW.js} +2 -2
  332. package/dist/{chunk-JSIDLTTG.js → chunk-PZ2V2XIK.js} +2 -2
  333. package/dist/{chunk-TMEQPODK.js → chunk-PZ37VDB5.js} +2 -2
  334. package/dist/{chunk-QIYBOFUV.js → chunk-QFMLAT7L.js} +246 -237
  335. package/dist/chunk-QFMLAT7L.js.map +1 -0
  336. package/dist/{chunk-LVONK3YQ.js → chunk-QRKTESVE.js} +2 -2
  337. package/dist/{chunk-HT5WSUC7.js → chunk-QXEDIDBZ.js} +3 -3
  338. package/dist/{chunk-WURSS6MP.js → chunk-R66YMYJU.js} +2 -2
  339. package/dist/{chunk-HDHK3SXK.js → chunk-RFLYID6H.js} +5 -5
  340. package/dist/{chunk-V77JK73U.js → chunk-RIYZFKIM.js} +37 -35
  341. package/dist/chunk-RIYZFKIM.js.map +1 -0
  342. package/dist/{chunk-VMFID36H.js → chunk-RQNZDTKT.js} +19 -19
  343. package/dist/{chunk-EHCUFCXM.js → chunk-RYSRFAHN.js} +32 -22
  344. package/dist/chunk-RYSRFAHN.js.map +1 -0
  345. package/dist/{chunk-I6VUUEXH.js → chunk-S2U4CDAC.js} +150 -150
  346. package/dist/chunk-S2U4CDAC.js.map +1 -0
  347. package/dist/chunk-S37GP7LX.js +204 -0
  348. package/dist/chunk-S37GP7LX.js.map +1 -0
  349. package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
  350. package/dist/{chunk-FBE6AIIW.js → chunk-SOKNCW5U.js} +2 -2
  351. package/dist/{chunk-Q4NM77K7.js → chunk-SSOO4GWN.js} +193 -194
  352. package/dist/chunk-SSOO4GWN.js.map +1 -0
  353. package/dist/{chunk-PFKTGZKE.js → chunk-SY2AAZNB.js} +2 -2
  354. package/dist/{chunk-DFZMKCVP.js → chunk-TIQPKOFW.js} +4 -4
  355. package/dist/{chunk-HPPKLBTJ.js → chunk-TJQDL3JH.js} +2 -2
  356. package/dist/chunk-TL7BOFFL.js +89 -0
  357. package/dist/chunk-TL7BOFFL.js.map +1 -0
  358. package/dist/{chunk-FD4Q5KFL.js → chunk-TLL22FFO.js} +2 -2
  359. package/dist/{chunk-QM5H4FPT.js → chunk-TV6BWONY.js} +3 -3
  360. package/dist/{chunk-EDFJBX3V.js → chunk-U6MPB3K6.js} +9 -9
  361. package/dist/{chunk-TZD3U2S5.js → chunk-ULJAOMJA.js} +4 -4
  362. package/dist/chunk-ULYQEFNH.js +529 -0
  363. package/dist/chunk-ULYQEFNH.js.map +1 -0
  364. package/dist/{chunk-H5EVWF6L.js → chunk-UNNJUJVD.js} +2 -2
  365. package/dist/{chunk-324X6T6G.js → chunk-UP7I3W6O.js} +57 -55
  366. package/dist/chunk-UP7I3W6O.js.map +1 -0
  367. package/dist/{chunk-VU2EWALC.js → chunk-UUGR3X5I.js} +19 -12
  368. package/dist/chunk-UUGR3X5I.js.map +1 -0
  369. package/dist/{chunk-Z6DKXQG7.js → chunk-UXXFMF4X.js} +2 -2
  370. package/dist/{chunk-OBQVTCTW.js → chunk-UYNCMZX5.js} +4 -4
  371. package/dist/{chunk-RGPYMHKI.js → chunk-V3K4RQO7.js} +9 -3
  372. package/dist/chunk-V3K4RQO7.js.map +1 -0
  373. package/dist/{chunk-KZHW27BV.js → chunk-V4QZ7UBK.js} +2 -2
  374. package/dist/{chunk-NEVRLD77.js → chunk-VH5EGTH2.js} +3 -3
  375. package/dist/{chunk-MYNUBDU7.js → chunk-VYKW6TB2.js} +1 -1
  376. package/dist/chunk-VYKW6TB2.js.map +1 -0
  377. package/dist/{chunk-QEJTQTF5.js → chunk-W6T5HR3Z.js} +3 -3
  378. package/dist/{chunk-H6WWEKEV.js → chunk-WCMG4HYI.js} +10 -10
  379. package/dist/{chunk-GZLLDA6P.js → chunk-WEFN327U.js} +2 -2
  380. package/dist/{chunk-VW3BBTMA.js → chunk-WKHUZIOW.js} +1 -1
  381. package/dist/{chunk-ANHUMDJX.js → chunk-WNDTLK44.js} +2 -2
  382. package/dist/{chunk-2DS4UOYQ.js → chunk-WSZQNTVN.js} +2 -2
  383. package/dist/{chunk-Z2DAWUO3.js → chunk-XMNUZUUA.js} +6 -6
  384. package/dist/{chunk-GAIM5RNE.js → chunk-XN7NSPE6.js} +3 -3
  385. package/dist/chunk-XV6ZYRHK.js +59 -0
  386. package/dist/chunk-XV6ZYRHK.js.map +1 -0
  387. package/dist/{chunk-FLGUVRR7.js → chunk-Y5BSA3I7.js} +5 -5
  388. package/dist/{chunk-WRLWLGEF.js → chunk-Y5E3XQ2S.js} +25 -2
  389. package/dist/{chunk-WRLWLGEF.js.map → chunk-Y5E3XQ2S.js.map} +1 -1
  390. package/dist/{chunk-QILLL4JE.js → chunk-YEROLKOA.js} +16 -16
  391. package/dist/{chunk-NDF3SH3X.js → chunk-YJPKDRI2.js} +15 -15
  392. package/dist/{chunk-TQGJN5UZ.js → chunk-YV56F4UP.js} +318 -700
  393. package/dist/chunk-YV56F4UP.js.map +1 -0
  394. package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
  395. package/dist/{chunk-AD22P5X3.js → chunk-YXA2EKV3.js} +3 -3
  396. package/dist/{chunk-FDNJVZRE.js → chunk-YYCOSTUU.js} +17 -17
  397. package/dist/{chunk-NLMTNEWW.js → chunk-Z6E6TUAE.js} +2 -2
  398. package/dist/{chunk-BJW7G6EF.js → chunk-Z7IGO5EA.js} +3 -3
  399. package/dist/{chunk-N7JKT4ZU.js → chunk-ZEIFJ6PX.js} +7 -7
  400. package/dist/{chunk-Q4OHNGGB.js → chunk-ZS2UQ3DV.js} +68 -11
  401. package/dist/chunk-ZS2UQ3DV.js.map +1 -0
  402. package/dist/{chunk-VRGOOVDB.js → chunk-ZVVT72MT.js} +2 -2
  403. package/dist/components/browser-viewer.d.ts +1 -1
  404. package/dist/composer.js +14 -14
  405. package/dist/{computer-viewer-KEDVLD42.js → computer-viewer-25AJIDYA.js} +9 -9
  406. package/dist/connect.js +11 -11
  407. package/dist/desktop.js +2 -2
  408. package/dist/editor.js +2 -2
  409. package/dist/{embedded-new-voice-5PYRDZ6T.js → embedded-new-voice-RZZEJT6M.js} +8 -8
  410. package/dist/{embedded-voice-PABC5NBD.js → embedded-voice-6OKSSPLW.js} +8 -8
  411. package/dist/{fleet-decision-row-QNSTP3VX.js → fleet-decision-row-NN2HXDX3.js} +2 -2
  412. package/dist/hooks/internal.d.ts +38 -0
  413. package/dist/hooks/use-client-config-flags.d.ts +12 -0
  414. package/dist/hooks/use-workspace-sessions.d.ts +10 -1
  415. package/dist/index.js +233 -227
  416. package/dist/interaction.js +11 -9
  417. package/dist/interaction.js.map +1 -1
  418. package/dist/{latest-question-5LIRVG4G.js → latest-question-2PFWQSSG.js} +4 -3
  419. package/dist/{latest-question-5LIRVG4G.js.map → latest-question-2PFWQSSG.js.map} +1 -1
  420. package/dist/machines.js +5 -5
  421. package/dist/messages/en.d.ts +3 -3
  422. package/dist/messages.js +1 -1
  423. package/dist/{model-policy-picker-menu-CURJ247L.js → model-policy-picker-menu-VVFGGAI6.js} +6 -6
  424. package/dist/model-policy-picker-menu-VVFGGAI6.js.map +1 -0
  425. package/dist/native-previews.js +3 -3
  426. package/dist/{platform-activity-row-BMXXNZKX.js → platform-activity-row-ENQVIFTL.js} +2 -2
  427. package/dist/{queue-surface-implementation-2X5AXB6I.js → queue-surface-implementation-4SHOQPQQ.js} +10 -8
  428. package/dist/{queue-surface-implementation-2X5AXB6I.js.map → queue-surface-implementation-4SHOQPQQ.js.map} +1 -1
  429. package/dist/realtime.js +7 -7
  430. package/dist/{sandbox-files-4FBG3GS2.js → sandbox-files-CCOTGXXA.js} +11 -11
  431. package/dist/sandbox-files-CCOTGXXA.js.map +1 -0
  432. package/dist/session-app.js +277 -271
  433. package/dist/session-list-model.d.ts +1 -0
  434. package/dist/session-list-model.js +8 -2
  435. package/dist/{session-realtime-2XIB254N.js → session-realtime-JNKDSGH7.js} +3 -3
  436. package/dist/session-realtime-JNKDSGH7.js.map +1 -0
  437. package/dist/session-realtime.js +2 -2
  438. package/dist/session-ui.js +77 -72
  439. package/dist/session.js +27 -25
  440. package/dist/sites.js +2 -2
  441. package/dist/terminal.js +2 -2
  442. package/dist/this-computer.js +3 -3
  443. package/dist/timeline/invoked-tool.d.ts +5 -0
  444. package/dist/timeline/tool-display-name.d.ts +2 -2
  445. package/dist/timeline/tool-icon.d.ts +14 -0
  446. package/dist/timeline/tool-presentation.d.ts +8 -3
  447. package/dist/timeline/types.d.ts +2 -0
  448. package/dist/{timeline-annotation-markers-X4K2IEOO.js → timeline-annotation-markers-KHNYNY2J.js} +5 -5
  449. package/dist/{timeline-annotation-selection-MEHBW676.js → timeline-annotation-selection-AXEDJHBP.js} +7 -7
  450. package/dist/{timeline-annotations-dialog-U2FPQ3UY.js → timeline-annotations-dialog-AV4ZBXRC.js} +9 -9
  451. package/dist/timeline-model.js +28 -26
  452. package/dist/ui/access-list.js +20 -20
  453. package/dist/ui/choice-cards.js +2 -2
  454. package/dist/ui/detail-page.js +2 -2
  455. package/dist/ui/detail-sheet.js +2 -2
  456. package/dist/ui/diff-view.js +2 -2
  457. package/dist/ui/disclosure.js +4 -4
  458. package/dist/ui/flush-form-page.js +3 -3
  459. package/dist/ui/form-dialog.js +2 -2
  460. package/dist/ui/list-row.js +5 -5
  461. package/dist/ui/revision-history.js +11 -11
  462. package/dist/ui/role-select.js +6 -6
  463. package/dist/ui/settings-nav.js +3 -3
  464. package/dist/usage.js +3 -3
  465. package/dist/workbench.js +11 -11
  466. package/package.json +4 -4
  467. package/src/app/app-state.tsx +3 -1
  468. package/src/app/components/capabilities/session-capability-card.tsx +14 -1
  469. package/src/app/components/capabilities/session-chrome-card.dom-fixture.tsx +377 -0
  470. package/src/app/components/capabilities/session-chrome-card.test.tsx +18 -0
  471. package/src/app/components/capabilities/session-chrome-card.tsx +243 -0
  472. package/src/app/components/capabilities/session-machine-card.dom-fixture.tsx +2 -0
  473. package/src/app/components/capabilities/session-machine-card.tsx +74 -16
  474. package/src/app/components/rail/session-list.tsx +254 -44
  475. package/src/app/components/rail/session-row-content.tsx +24 -2
  476. package/src/app/components/rail/session-shell.tsx +14 -9
  477. package/src/app/components/rail/site-session-group-heading.tsx +59 -20
  478. package/src/app/components/session/session-tenancy-control.tsx +18 -0
  479. package/src/app/components/session/site-origin-link.test.tsx +73 -0
  480. package/src/app/components/session/site-origin-link.tsx +4 -2
  481. package/src/app/embed/memory-navigation.tsx +1 -0
  482. package/src/app/lib/actions/held-modifier.test.ts +101 -0
  483. package/src/app/lib/actions/held-modifier.ts +108 -0
  484. package/src/app/lib/console-site.tsx +38 -0
  485. package/src/app/lib/navigation.tsx +4 -0
  486. package/src/app/lib/routes.tsx +42 -0
  487. package/src/app/lib/session-failure-toasts.ts +26 -0
  488. package/src/app/lib/session-ui-features.tsx +18 -4
  489. package/src/app/lib/sessions-group.tsx +219 -30
  490. package/src/app/lib/site-opened.tsx +48 -0
  491. package/src/app/lib/site-session-groups.test.ts +173 -6
  492. package/src/app/lib/site-view-routes.test.ts +55 -0
  493. package/src/app/lib/use-session-list-hint-refresh.tsx +44 -4
  494. package/src/app/routes/artifacts.tsx +2 -29
  495. package/src/app/routes/session-transient-failures.test.tsx +343 -0
  496. package/src/app/routes/session-unavailable.tsx +74 -3
  497. package/src/app/routes/session.tsx +4 -13
  498. package/src/app/routes/sessions-index.tsx +13 -9
  499. package/src/app/routes/site-view.test.tsx +476 -0
  500. package/src/app/routes/site-view.tsx +583 -0
  501. package/src/components/browser-viewer.tsx +16 -2
  502. package/src/hooks/internal.ts +129 -6
  503. package/src/hooks/use-client-config-flags.ts +8 -0
  504. package/src/hooks/use-session-events.ts +83 -9
  505. package/src/hooks/use-workspace-sessions.ts +21 -1
  506. package/src/messages/en.ts +3 -3
  507. package/src/session-list-model.ts +4 -0
  508. package/src/timeline/activity-rail.tsx +3 -2
  509. package/src/timeline/invoked-tool.ts +14 -4
  510. package/src/timeline/projection.ts +15 -8
  511. package/src/timeline/rolling-activity.tsx +6 -2
  512. package/src/timeline/tool-display-name.ts +2 -2
  513. package/src/timeline/tool-icon.tsx +165 -0
  514. package/src/timeline/tool-presentation.ts +207 -48
  515. package/src/timeline/tool-renderers.tsx +1 -70
  516. package/src/timeline/types.ts +2 -0
  517. package/styles/compiled.css +38 -0
  518. package/dist/chunk-22ZBT6CN.js +0 -50
  519. package/dist/chunk-22ZBT6CN.js.map +0 -1
  520. package/dist/chunk-324X6T6G.js.map +0 -1
  521. package/dist/chunk-5JZYPZ72.js.map +0 -1
  522. package/dist/chunk-6W3LF3DB.js.map +0 -1
  523. package/dist/chunk-BJIZ7PL7.js.map +0 -1
  524. package/dist/chunk-CKZW7A5S.js.map +0 -1
  525. package/dist/chunk-DDIBZA4X.js.map +0 -1
  526. package/dist/chunk-EHCUFCXM.js.map +0 -1
  527. package/dist/chunk-GZ64CASI.js.map +0 -1
  528. package/dist/chunk-I6VUUEXH.js.map +0 -1
  529. package/dist/chunk-KF3MF6FP.js.map +0 -1
  530. package/dist/chunk-MYNUBDU7.js.map +0 -1
  531. package/dist/chunk-NAWXARTY.js.map +0 -1
  532. package/dist/chunk-O77Q4NG2.js.map +0 -1
  533. package/dist/chunk-PM3OSANE.js.map +0 -1
  534. package/dist/chunk-Q262Y2YX.js.map +0 -1
  535. package/dist/chunk-Q4NM77K7.js.map +0 -1
  536. package/dist/chunk-Q4OHNGGB.js.map +0 -1
  537. package/dist/chunk-QIYBOFUV.js.map +0 -1
  538. package/dist/chunk-R25ZKOZR.js +0 -24
  539. package/dist/chunk-R25ZKOZR.js.map +0 -1
  540. package/dist/chunk-RGPYMHKI.js.map +0 -1
  541. package/dist/chunk-ROQOVH4N.js.map +0 -1
  542. package/dist/chunk-TQGJN5UZ.js.map +0 -1
  543. package/dist/chunk-V77JK73U.js.map +0 -1
  544. package/dist/chunk-VSQHDBHU.js.map +0 -1
  545. package/dist/chunk-VU2EWALC.js.map +0 -1
  546. package/dist/chunk-XFNLU7EW.js.map +0 -1
  547. package/dist/chunk-Z5WMLJKI.js.map +0 -1
  548. /package/dist/{browser-viewer-RYYQSRTC.js.map → app/components/capabilities/session-chrome-card.js.map} +0 -0
  549. /package/dist/{chat-interactive-block-ABCRKXJ4.js.map → app/lib/console-site.js.map} +0 -0
  550. /package/dist/{computer-viewer-KEDVLD42.js.map → app/lib/site-opened.js.map} +0 -0
  551. /package/dist/{embedded-new-voice-5PYRDZ6T.js.map → browser-viewer-QMCNV4RI.js.map} +0 -0
  552. /package/dist/{embedded-voice-PABC5NBD.js.map → chat-interactive-block-PMIAUXSO.js.map} +0 -0
  553. /package/dist/{chunk-GIZGNFIX.js.map → chunk-22FFOHPT.js.map} +0 -0
  554. /package/dist/{chunk-UHFWF6ZU.js.map → chunk-2FPS5H2D.js.map} +0 -0
  555. /package/dist/{chunk-5POTDNQT.js.map → chunk-2NC7NZCE.js.map} +0 -0
  556. /package/dist/{chunk-ZKYYZH6L.js.map → chunk-2QBYDGWO.js.map} +0 -0
  557. /package/dist/{chunk-TWXIFWBD.js.map → chunk-34EU25RL.js.map} +0 -0
  558. /package/dist/{chunk-LQKKSUCR.js.map → chunk-35BC2FU2.js.map} +0 -0
  559. /package/dist/{chunk-PTGRFAMH.js.map → chunk-3ABPIUCK.js.map} +0 -0
  560. /package/dist/{chunk-S4SC5SSV.js.map → chunk-3GU7AWG7.js.map} +0 -0
  561. /package/dist/{chunk-722UO6YQ.js.map → chunk-3PEXVG4D.js.map} +0 -0
  562. /package/dist/{chunk-OQAAI33Y.js.map → chunk-3RMKPHBL.js.map} +0 -0
  563. /package/dist/{chunk-GCGTYXJJ.js.map → chunk-3STBLX4O.js.map} +0 -0
  564. /package/dist/{chunk-YXIW7H4N.js.map → chunk-3X5FKDYQ.js.map} +0 -0
  565. /package/dist/{chunk-KTRKZRID.js.map → chunk-4GLLWX33.js.map} +0 -0
  566. /package/dist/{chunk-SD2K5ZN5.js.map → chunk-4LPA25NQ.js.map} +0 -0
  567. /package/dist/{chunk-DKCX643S.js.map → chunk-4RMN4E2Y.js.map} +0 -0
  568. /package/dist/{chunk-E5FCEDMU.js.map → chunk-4SAGYEVB.js.map} +0 -0
  569. /package/dist/{chunk-HTT3FB7T.js.map → chunk-4VK2R5QC.js.map} +0 -0
  570. /package/dist/{chunk-CKG2EG62.js.map → chunk-4XQC7VLT.js.map} +0 -0
  571. /package/dist/{chunk-IVOA3DXA.js.map → chunk-4YXAQMTD.js.map} +0 -0
  572. /package/dist/{chunk-HOJGAJAB.js.map → chunk-52WK2GGK.js.map} +0 -0
  573. /package/dist/{chunk-NYZQ7LO7.js.map → chunk-552UYIQ7.js.map} +0 -0
  574. /package/dist/{chunk-LEXPBQ56.js.map → chunk-5DSKMG2I.js.map} +0 -0
  575. /package/dist/{chunk-WNG757ID.js.map → chunk-5FA455GR.js.map} +0 -0
  576. /package/dist/{chunk-MNWQAYY3.js.map → chunk-5FEN3KYH.js.map} +0 -0
  577. /package/dist/{chunk-OSVHU2WU.js.map → chunk-5JHRMUAZ.js.map} +0 -0
  578. /package/dist/{chunk-RKB2Z457.js.map → chunk-5VGJXWQ2.js.map} +0 -0
  579. /package/dist/{chunk-GFUUFM2O.js.map → chunk-5W6ZDKRR.js.map} +0 -0
  580. /package/dist/{chunk-NDETTZQA.js.map → chunk-5W7KJ5NQ.js.map} +0 -0
  581. /package/dist/{chunk-Q35YZVDZ.js.map → chunk-5Y2FPLZE.js.map} +0 -0
  582. /package/dist/{chunk-F3NERYBQ.js.map → chunk-62VER7O4.js.map} +0 -0
  583. /package/dist/{chunk-FBMU3VK5.js.map → chunk-6DCEDIF6.js.map} +0 -0
  584. /package/dist/{chunk-WUHB422G.js.map → chunk-73WI7FL2.js.map} +0 -0
  585. /package/dist/{chunk-QECZVL7S.js.map → chunk-7FJMRJDG.js.map} +0 -0
  586. /package/dist/{chunk-7KGKDWWR.js.map → chunk-7HFLYNWN.js.map} +0 -0
  587. /package/dist/{chunk-XVM566II.js.map → chunk-7KIENXRE.js.map} +0 -0
  588. /package/dist/{chunk-CBY5CXBD.js.map → chunk-7NPCEBZE.js.map} +0 -0
  589. /package/dist/{chunk-46VBQG2D.js.map → chunk-7P4AQMGA.js.map} +0 -0
  590. /package/dist/{chunk-S7PVL7XH.js.map → chunk-A4BD4ZVB.js.map} +0 -0
  591. /package/dist/{chunk-73SOCVLS.js.map → chunk-AIEXYO2X.js.map} +0 -0
  592. /package/dist/{chunk-U7TC2XJQ.js.map → chunk-AJPW3SV4.js.map} +0 -0
  593. /package/dist/{chunk-HRJQAFKR.js.map → chunk-AX6YJA5U.js.map} +0 -0
  594. /package/dist/{chunk-P5WABK2H.js.map → chunk-BCM7C3MJ.js.map} +0 -0
  595. /package/dist/{chunk-DT7BORXG.js.map → chunk-BMJTNPWK.js.map} +0 -0
  596. /package/dist/{chunk-HIHO2QE7.js.map → chunk-BT2MVGHT.js.map} +0 -0
  597. /package/dist/{chunk-3XOISKZC.js.map → chunk-BXQYAAVE.js.map} +0 -0
  598. /package/dist/{chunk-IBTXYLBW.js.map → chunk-CCFWY4GF.js.map} +0 -0
  599. /package/dist/{chunk-ZOC3OP6F.js.map → chunk-CCR33J7L.js.map} +0 -0
  600. /package/dist/{chunk-GTQ3SNEI.js.map → chunk-CD3MO3IC.js.map} +0 -0
  601. /package/dist/{chunk-WSMYOLHG.js.map → chunk-CDEXRJB6.js.map} +0 -0
  602. /package/dist/{chunk-3GLAPCVI.js.map → chunk-CFFNT2OY.js.map} +0 -0
  603. /package/dist/{chunk-FUSFVUIJ.js.map → chunk-CMLJSF2F.js.map} +0 -0
  604. /package/dist/{chunk-O4DYOSOL.js.map → chunk-CP7ZQHBW.js.map} +0 -0
  605. /package/dist/{chunk-IOKSNX74.js.map → chunk-D5OWJZQR.js.map} +0 -0
  606. /package/dist/{chunk-SQGXMHJO.js.map → chunk-DGLRZMXL.js.map} +0 -0
  607. /package/dist/{chunk-GNEHAPKV.js.map → chunk-DJFTH2DI.js.map} +0 -0
  608. /package/dist/{chunk-HQG4SLTE.js.map → chunk-DYJGYGPB.js.map} +0 -0
  609. /package/dist/{chunk-4EAF3HSD.js.map → chunk-EJ7WARW7.js.map} +0 -0
  610. /package/dist/{chunk-3AA6RNGE.js.map → chunk-ENS6E4RZ.js.map} +0 -0
  611. /package/dist/{chunk-OOEO4MKY.js.map → chunk-EPWD4KRA.js.map} +0 -0
  612. /package/dist/{chunk-V5RJAWRP.js.map → chunk-EQE3MNQN.js.map} +0 -0
  613. /package/dist/{chunk-TSBE4KOQ.js.map → chunk-EWL6NDOO.js.map} +0 -0
  614. /package/dist/{chunk-OO2T63BY.js.map → chunk-EYS4ZOF5.js.map} +0 -0
  615. /package/dist/{chunk-IC7KNOBB.js.map → chunk-FDAV72IX.js.map} +0 -0
  616. /package/dist/{chunk-AG7VGUIW.js.map → chunk-FFNPUSVO.js.map} +0 -0
  617. /package/dist/{chunk-P5T36BA3.js.map → chunk-FRP64DEK.js.map} +0 -0
  618. /package/dist/{chunk-KBF3SE7G.js.map → chunk-FSP334UU.js.map} +0 -0
  619. /package/dist/{chunk-ZHFKMMOT.js.map → chunk-FTX5CNHA.js.map} +0 -0
  620. /package/dist/{chunk-KYBALSWW.js.map → chunk-FWOBNL2A.js.map} +0 -0
  621. /package/dist/{chunk-HJ5XWW62.js.map → chunk-FWYEZ3LE.js.map} +0 -0
  622. /package/dist/{chunk-WSLPZ43N.js.map → chunk-G4HQUBO4.js.map} +0 -0
  623. /package/dist/{chunk-CSHBR2IZ.js.map → chunk-GDLDBR6B.js.map} +0 -0
  624. /package/dist/{chunk-G3S2F35T.js.map → chunk-GHHM6WN4.js.map} +0 -0
  625. /package/dist/{chunk-OANSIX34.js.map → chunk-GRSODLVO.js.map} +0 -0
  626. /package/dist/{chunk-EU6XSQFM.js.map → chunk-GXW2I2M2.js.map} +0 -0
  627. /package/dist/{chunk-4246UYVG.js.map → chunk-GZS37O3G.js.map} +0 -0
  628. /package/dist/{chunk-Y7WMW74G.js.map → chunk-HQWVDQXW.js.map} +0 -0
  629. /package/dist/{chunk-YTZQV2DD.js.map → chunk-HU6JTNWF.js.map} +0 -0
  630. /package/dist/{chunk-QRVNI5V6.js.map → chunk-I6KIQKU6.js.map} +0 -0
  631. /package/dist/{chunk-BNUPYHHZ.js.map → chunk-IDXTASGN.js.map} +0 -0
  632. /package/dist/{chunk-L6RXRRN3.js.map → chunk-ILDOW2IQ.js.map} +0 -0
  633. /package/dist/{chunk-VUHPA3XQ.js.map → chunk-ITX2TB4K.js.map} +0 -0
  634. /package/dist/{chunk-ETCB6SUJ.js.map → chunk-J22HD2PB.js.map} +0 -0
  635. /package/dist/{chunk-U47YDYLQ.js.map → chunk-J5MEDX7C.js.map} +0 -0
  636. /package/dist/{chunk-6VQTHC4W.js.map → chunk-J7FBBLHF.js.map} +0 -0
  637. /package/dist/{chunk-QZRDCFHI.js.map → chunk-JM4HQPAI.js.map} +0 -0
  638. /package/dist/{chunk-PIVGX42P.js.map → chunk-JNY5MT3I.js.map} +0 -0
  639. /package/dist/{chunk-XWWXIZFP.js.map → chunk-JO6R5EXF.js.map} +0 -0
  640. /package/dist/{chunk-MM7OKOTE.js.map → chunk-JQCGPTZ6.js.map} +0 -0
  641. /package/dist/{chunk-KNFDWNCH.js.map → chunk-JXT5QDJC.js.map} +0 -0
  642. /package/dist/{chunk-OR37STQZ.js.map → chunk-KEXYBG7Q.js.map} +0 -0
  643. /package/dist/{chunk-AZVANYMB.js.map → chunk-KUNFUSZ7.js.map} +0 -0
  644. /package/dist/{chunk-DXZNDKQD.js.map → chunk-LEEJBZ5B.js.map} +0 -0
  645. /package/dist/{chunk-C535KSTY.js.map → chunk-LF5CBAOS.js.map} +0 -0
  646. /package/dist/{chunk-RIMKJBCD.js.map → chunk-LMPTC4CX.js.map} +0 -0
  647. /package/dist/{chunk-3KVWXKD6.js.map → chunk-LQ47YL6E.js.map} +0 -0
  648. /package/dist/{chunk-H5WGWAYX.js.map → chunk-LT4J7RHI.js.map} +0 -0
  649. /package/dist/{chunk-DSGMYES6.js.map → chunk-MCTTONOW.js.map} +0 -0
  650. /package/dist/{chunk-IGHELZI7.js.map → chunk-MIECLOQC.js.map} +0 -0
  651. /package/dist/{chunk-FM4OUCC2.js.map → chunk-MOKYT3X3.js.map} +0 -0
  652. /package/dist/{chunk-RKILMLA7.js.map → chunk-MXLKI7BI.js.map} +0 -0
  653. /package/dist/{chunk-45WYYFP6.js.map → chunk-N3ZP4IDU.js.map} +0 -0
  654. /package/dist/{chunk-XRRSFQEV.js.map → chunk-NAZZLAWX.js.map} +0 -0
  655. /package/dist/{chunk-UWJ5P5CU.js.map → chunk-NEK4WB5P.js.map} +0 -0
  656. /package/dist/{chunk-6L7U46Y2.js.map → chunk-NKNVIO66.js.map} +0 -0
  657. /package/dist/{chunk-JKUICTLM.js.map → chunk-NLAFNMPK.js.map} +0 -0
  658. /package/dist/{chunk-4LKNIGHB.js.map → chunk-O2SBHS2N.js.map} +0 -0
  659. /package/dist/{chunk-D3RK3NGM.js.map → chunk-PCFK7HKD.js.map} +0 -0
  660. /package/dist/{chunk-VVCDB2T7.js.map → chunk-PCJLH45G.js.map} +0 -0
  661. /package/dist/{chunk-PZ24CYDO.js.map → chunk-PFAUGEV5.js.map} +0 -0
  662. /package/dist/{chunk-HGMWMK5K.js.map → chunk-PO3BH3KQ.js.map} +0 -0
  663. /package/dist/{chunk-B74GSYR6.js.map → chunk-PUTS4DYW.js.map} +0 -0
  664. /package/dist/{chunk-JSIDLTTG.js.map → chunk-PZ2V2XIK.js.map} +0 -0
  665. /package/dist/{chunk-TMEQPODK.js.map → chunk-PZ37VDB5.js.map} +0 -0
  666. /package/dist/{chunk-LVONK3YQ.js.map → chunk-QRKTESVE.js.map} +0 -0
  667. /package/dist/{chunk-HT5WSUC7.js.map → chunk-QXEDIDBZ.js.map} +0 -0
  668. /package/dist/{chunk-WURSS6MP.js.map → chunk-R66YMYJU.js.map} +0 -0
  669. /package/dist/{chunk-HDHK3SXK.js.map → chunk-RFLYID6H.js.map} +0 -0
  670. /package/dist/{chunk-VMFID36H.js.map → chunk-RQNZDTKT.js.map} +0 -0
  671. /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
  672. /package/dist/{chunk-FBE6AIIW.js.map → chunk-SOKNCW5U.js.map} +0 -0
  673. /package/dist/{chunk-PFKTGZKE.js.map → chunk-SY2AAZNB.js.map} +0 -0
  674. /package/dist/{chunk-DFZMKCVP.js.map → chunk-TIQPKOFW.js.map} +0 -0
  675. /package/dist/{chunk-HPPKLBTJ.js.map → chunk-TJQDL3JH.js.map} +0 -0
  676. /package/dist/{chunk-FD4Q5KFL.js.map → chunk-TLL22FFO.js.map} +0 -0
  677. /package/dist/{chunk-QM5H4FPT.js.map → chunk-TV6BWONY.js.map} +0 -0
  678. /package/dist/{chunk-EDFJBX3V.js.map → chunk-U6MPB3K6.js.map} +0 -0
  679. /package/dist/{chunk-TZD3U2S5.js.map → chunk-ULJAOMJA.js.map} +0 -0
  680. /package/dist/{chunk-H5EVWF6L.js.map → chunk-UNNJUJVD.js.map} +0 -0
  681. /package/dist/{chunk-Z6DKXQG7.js.map → chunk-UXXFMF4X.js.map} +0 -0
  682. /package/dist/{chunk-OBQVTCTW.js.map → chunk-UYNCMZX5.js.map} +0 -0
  683. /package/dist/{chunk-KZHW27BV.js.map → chunk-V4QZ7UBK.js.map} +0 -0
  684. /package/dist/{chunk-NEVRLD77.js.map → chunk-VH5EGTH2.js.map} +0 -0
  685. /package/dist/{chunk-QEJTQTF5.js.map → chunk-W6T5HR3Z.js.map} +0 -0
  686. /package/dist/{chunk-H6WWEKEV.js.map → chunk-WCMG4HYI.js.map} +0 -0
  687. /package/dist/{chunk-GZLLDA6P.js.map → chunk-WEFN327U.js.map} +0 -0
  688. /package/dist/{chunk-VW3BBTMA.js.map → chunk-WKHUZIOW.js.map} +0 -0
  689. /package/dist/{chunk-ANHUMDJX.js.map → chunk-WNDTLK44.js.map} +0 -0
  690. /package/dist/{chunk-2DS4UOYQ.js.map → chunk-WSZQNTVN.js.map} +0 -0
  691. /package/dist/{chunk-Z2DAWUO3.js.map → chunk-XMNUZUUA.js.map} +0 -0
  692. /package/dist/{chunk-GAIM5RNE.js.map → chunk-XN7NSPE6.js.map} +0 -0
  693. /package/dist/{chunk-FLGUVRR7.js.map → chunk-Y5BSA3I7.js.map} +0 -0
  694. /package/dist/{chunk-QILLL4JE.js.map → chunk-YEROLKOA.js.map} +0 -0
  695. /package/dist/{chunk-NDF3SH3X.js.map → chunk-YJPKDRI2.js.map} +0 -0
  696. /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
  697. /package/dist/{chunk-AD22P5X3.js.map → chunk-YXA2EKV3.js.map} +0 -0
  698. /package/dist/{chunk-FDNJVZRE.js.map → chunk-YYCOSTUU.js.map} +0 -0
  699. /package/dist/{chunk-NLMTNEWW.js.map → chunk-Z6E6TUAE.js.map} +0 -0
  700. /package/dist/{chunk-BJW7G6EF.js.map → chunk-Z7IGO5EA.js.map} +0 -0
  701. /package/dist/{chunk-N7JKT4ZU.js.map → chunk-ZEIFJ6PX.js.map} +0 -0
  702. /package/dist/{chunk-VRGOOVDB.js.map → chunk-ZVVT72MT.js.map} +0 -0
  703. /package/dist/{model-policy-picker-menu-CURJ247L.js.map → computer-viewer-25AJIDYA.js.map} +0 -0
  704. /package/dist/{sandbox-files-4FBG3GS2.js.map → embedded-new-voice-RZZEJT6M.js.map} +0 -0
  705. /package/dist/{session-realtime-2XIB254N.js.map → embedded-voice-6OKSSPLW.js.map} +0 -0
  706. /package/dist/{fleet-decision-row-QNSTP3VX.js.map → fleet-decision-row-NN2HXDX3.js.map} +0 -0
  707. /package/dist/{platform-activity-row-BMXXNZKX.js.map → platform-activity-row-ENQVIFTL.js.map} +0 -0
  708. /package/dist/{timeline-annotation-markers-X4K2IEOO.js.map → timeline-annotation-markers-KHNYNY2J.js.map} +0 -0
  709. /package/dist/{timeline-annotation-selection-MEHBW676.js.map → timeline-annotation-selection-AXEDJHBP.js.map} +0 -0
  710. /package/dist/{timeline-annotations-dialog-U2FPQ3UY.js.map → timeline-annotations-dialog-AV4ZBXRC.js.map} +0 -0
@@ -5,17 +5,7 @@ import {
5
5
  import {
6
6
  PatchApplyCommand,
7
7
  useRetainedImageObjectUrl
8
- } from "./chunk-3KVWXKD6.js";
9
- import {
10
- approvalsFromRequiresAction
11
- } from "./chunk-UD2PSIIX.js";
12
- import {
13
- learningRefusalBody,
14
- learningRefusalPlace,
15
- learningRefusalPlaceLabel,
16
- learningRefusalTitle,
17
- presentTurnFailureText
18
- } from "./chunk-VU2EWALC.js";
8
+ } from "./chunk-LQ47YL6E.js";
19
9
  import {
20
10
  ActivityDisclosure,
21
11
  BodyNote,
@@ -34,7 +24,7 @@ import {
34
24
  ToolOutputPreviewProvider,
35
25
  useForcedDefaultOpen,
36
26
  useTimelineSearchReveal
37
- } from "./chunk-LQKKSUCR.js";
27
+ } from "./chunk-35BC2FU2.js";
38
28
  import {
39
29
  useToolDetails
40
30
  } from "./chunk-RZLBICR5.js";
@@ -46,6 +36,19 @@ import {
46
36
  pierreDiffsRevision,
47
37
  subscribePierreDiffs
48
38
  } from "./chunk-YSRBFJMQ.js";
39
+ import {
40
+ ShimmerText
41
+ } from "./chunk-UYNCMZX5.js";
42
+ import {
43
+ approvalsFromRequiresAction
44
+ } from "./chunk-UD2PSIIX.js";
45
+ import {
46
+ learningRefusalBody,
47
+ learningRefusalPlace,
48
+ learningRefusalPlaceLabel,
49
+ learningRefusalTitle,
50
+ presentTurnFailureText
51
+ } from "./chunk-UUGR3X5I.js";
49
52
  import {
50
53
  GENIE_PREPARING_PHRASES,
51
54
  GENIE_WAITING_PHRASES,
@@ -55,48 +58,47 @@ import {
55
58
  createTurnSummaryContext,
56
59
  execPresentation,
57
60
  formatElapsed,
58
- generatedImageReceipt,
59
61
  genericToolIconKind,
60
- invokedToolCall,
61
62
  machinePresentation,
62
- mediaPreviewFact,
63
63
  parseDisclosedTools,
64
64
  parseSearchHits,
65
- parseToolArgs,
66
65
  pathBasename,
67
66
  pathDirname,
68
67
  plainToolRow,
69
68
  presentedToolKind,
70
69
  presentsToolOutputPreview,
71
70
  resolveTurnSummaryFacets,
72
- retainedScreenshotMetadata,
73
- retainedToolResultImages,
74
71
  runOnPresentation,
75
- screenshotDataUrl,
76
72
  selectTurnSummaryFacets,
77
73
  toolRowPresentation,
78
74
  toolSearchPreview,
79
75
  toolSearchQuery,
80
76
  truncatePreview,
81
77
  turnSummaryFallbackLabel,
82
- unwrapMcpOutput,
83
78
  webSearchPresentation,
84
79
  writeStdinPresentation
85
- } from "./chunk-TQGJN5UZ.js";
80
+ } from "./chunk-YV56F4UP.js";
86
81
  import {
87
82
  workerRowTitleParts
88
83
  } from "./chunk-HEVQKE27.js";
89
84
  import {
90
85
  isPatchFilename,
91
86
  isRetainedImageContentType
92
- } from "./chunk-ANHUMDJX.js";
87
+ } from "./chunk-WNDTLK44.js";
88
+ import {
89
+ generatedImageReceipt,
90
+ invokedToolCall,
91
+ mediaPreviewFact,
92
+ parseToolArgs,
93
+ retainedScreenshotMetadata,
94
+ retainedToolResultImages,
95
+ screenshotDataUrl,
96
+ unwrapMcpOutput
97
+ } from "./chunk-ULYQEFNH.js";
93
98
  import {
94
99
  mcpToolLeaf,
95
100
  toolDisplayName
96
- } from "./chunk-STUCI6QA.js";
97
- import {
98
- ShimmerText
99
- } from "./chunk-OBQVTCTW.js";
101
+ } from "./chunk-LEKBNKLD.js";
100
102
  import {
101
103
  formatBytes,
102
104
  truncate,
@@ -107,95 +109,7 @@ import {
107
109
  } from "./chunk-TXS65BB2.js";
108
110
  import {
109
111
  useOpenGeniText
110
- } from "./chunk-5JZYPZ72.js";
111
-
112
- // src/timeline/retained-loaders.ts
113
- function createWorkspaceRetainedArtifactLoader(client, workspaceId) {
114
- return async (artifact, signal, options) => {
115
- if (artifact.kind === "file" && options?.prefer !== "url") {
116
- const download2 = await client.downloadRetainedArtifact(workspaceId, artifact, { signal });
117
- return download2.bytes;
118
- }
119
- const download = await client.createRetainedArtifactDownloadUrl(workspaceId, artifact, {
120
- signal
121
- });
122
- return { url: download.url, expiresAt: download.expiresAt };
123
- };
124
- }
125
- function createSessionRetainedScreenshotLoader(client, workspaceId, sessionId) {
126
- return async (artifact, signal) => {
127
- const download = await client.downloadRetainedScreenshot(
128
- workspaceId,
129
- sessionId,
130
- artifact.artifactId,
131
- { signal }
132
- );
133
- if (!download.metadata.available || !download.bytes) return null;
134
- if (download.metadata.artifactId !== artifact.artifactId || download.metadata.kind !== artifact.kind || download.metadata.contentType !== artifact.contentType || download.metadata.originalBytes !== artifact.originalBytes || download.metadata.sha256 !== artifact.sha256 || download.metadata.dimensions?.width !== artifact.dimensions?.width || download.metadata.dimensions?.height !== artifact.dimensions?.height) {
135
- throw new Error("Retained screenshot receipt verification failed");
136
- }
137
- return download.bytes;
138
- };
139
- }
140
- function createWorkspaceRetainedVideoLoader(client, workspaceId) {
141
- return async (artifactId, signal) => await client.createVideoArtifactPlaybackSource(workspaceId, artifactId, { signal });
142
- }
143
-
144
- // src/components/tool-review-history.tsx
145
- import { createContext, useContext, useEffect, useMemo, useState } from "react";
146
- import { jsx } from "react/jsx-runtime";
147
- var History = createContext(null);
148
- function ToolReviewHistoryProvider({
149
- events,
150
- load,
151
- onViewDetails,
152
- children
153
- }) {
154
- const value = useMemo(
155
- () => ({
156
- approvalIds: new Set(
157
- events.flatMap(
158
- (event) => event.type === "session.requiresAction" ? approvalsFromRequiresAction(event.payload).map((approval) => approval.id) : []
159
- )
160
- ),
161
- revision: [...events].reverse().find(
162
- (event) => event.type === "session.requiresAction" || event.type === "agent.toolCall.output" || event.type.startsWith("turn.") || event.type === "user.approvalDecision" || event.type.startsWith("session.control.")
163
- )?.sequence ?? 0,
164
- load,
165
- onViewDetails
166
- }),
167
- [events, load, onViewDetails]
168
- );
169
- return /* @__PURE__ */ jsx(History.Provider, { value, children });
170
- }
171
- function useHasToolReview(approvalId) {
172
- const history = useContext(History);
173
- return Boolean(approvalId && history?.approvalIds.has(approvalId));
174
- }
175
- function useRecordedToolReview(approvalId) {
176
- const history = useContext(History);
177
- const [review, setReview] = useState(null);
178
- const load = history?.load;
179
- const revision = history?.revision;
180
- useEffect(() => {
181
- if (!load || !approvalId) return;
182
- let active = true;
183
- void load(approvalId).then(
184
- (value) => {
185
- if (active && value.id === approvalId) setReview(value);
186
- },
187
- () => void 0
188
- );
189
- return () => {
190
- active = false;
191
- };
192
- }, [approvalId, load, revision]);
193
- const onViewDetails = history?.onViewDetails;
194
- return {
195
- review: review && review.id === approvalId ? review : null,
196
- onViewDetails: review && onViewDetails ? (path) => onViewDetails(review, path) : void 0
197
- };
198
- }
112
+ } from "./chunk-JFK7NTEA.js";
199
113
 
200
114
  // src/components/tool-action-review.tsx
201
115
  import {
@@ -207,8 +121,8 @@ import {
207
121
  LoaderCircleIcon,
208
122
  ShieldCheckIcon
209
123
  } from "lucide-react";
210
- import { useEffect as useEffect2, useId, useRef, useState as useState2 } from "react";
211
- import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
124
+ import { useEffect, useId, useRef, useState } from "react";
125
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
212
126
  var statusText = (t) => ({
213
127
  pending: t("toolActionReview.approvalNeeded"),
214
128
  approved: t("toolActionReview.approved"),
@@ -270,12 +184,12 @@ var VISIBLE_FIELDS = 6;
270
184
  function StatusIcon({ status, busy }) {
271
185
  const className = "size-4";
272
186
  if (busy || status === "executing" || status === "approved")
273
- return /* @__PURE__ */ jsx2(LoaderCircleIcon, { "aria-hidden": "true", className: cn(className, "animate-spin") });
274
- if (status === "pending") return /* @__PURE__ */ jsx2(ShieldCheckIcon, { "aria-hidden": "true", className });
275
- if (status === "completed") return /* @__PURE__ */ jsx2(CheckIcon, { "aria-hidden": "true", className });
187
+ return /* @__PURE__ */ jsx(LoaderCircleIcon, { "aria-hidden": "true", className: cn(className, "animate-spin") });
188
+ if (status === "pending") return /* @__PURE__ */ jsx(ShieldCheckIcon, { "aria-hidden": "true", className });
189
+ if (status === "completed") return /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true", className });
276
190
  if (statusTone[status] === "failed")
277
- return /* @__PURE__ */ jsx2(CircleAlertIcon, { "aria-hidden": "true", className });
278
- return /* @__PURE__ */ jsx2(CircleSlashIcon, { "aria-hidden": "true", className });
191
+ return /* @__PURE__ */ jsx(CircleAlertIcon, { "aria-hidden": "true", className });
192
+ return /* @__PURE__ */ jsx(CircleSlashIcon, { "aria-hidden": "true", className });
279
193
  }
280
194
  function ToolReviewFrame({
281
195
  tone,
@@ -302,7 +216,7 @@ function ToolReviewFrame({
302
216
  ),
303
217
  children: [
304
218
  /* @__PURE__ */ jsxs("header", { className: cn("flex min-w-0 items-start gap-3", bare ? "pb-1" : "px-4 py-3"), children: [
305
- /* @__PURE__ */ jsx2(
219
+ /* @__PURE__ */ jsx(
306
220
  "span",
307
221
  {
308
222
  className: cn(
@@ -313,7 +227,7 @@ function ToolReviewFrame({
313
227
  }
314
228
  ),
315
229
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
316
- /* @__PURE__ */ jsx2(
230
+ /* @__PURE__ */ jsx(
317
231
  "p",
318
232
  {
319
233
  className: cn("m-0 text-og-xs font-medium", toneText[tone]),
@@ -322,7 +236,7 @@ function ToolReviewFrame({
322
236
  children: eyebrow
323
237
  }
324
238
  ),
325
- /* @__PURE__ */ jsx2(
239
+ /* @__PURE__ */ jsx(
326
240
  "h3",
327
241
  {
328
242
  tabIndex: -1,
@@ -331,10 +245,10 @@ function ToolReviewFrame({
331
245
  children: title
332
246
  }
333
247
  ),
334
- subtitle ? /* @__PURE__ */ jsx2("p", { className: "m-0 mt-0.5 break-words text-og-xs text-og-fg-muted [overflow-wrap:anywhere]", children: subtitle }) : null
248
+ subtitle ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-0.5 break-words text-og-xs text-og-fg-muted [overflow-wrap:anywhere]", children: subtitle }) : null
335
249
  ] })
336
250
  ] }),
337
- children ? /* @__PURE__ */ jsx2(
251
+ children ? /* @__PURE__ */ jsx(
338
252
  "div",
339
253
  {
340
254
  className: cn(
@@ -346,7 +260,7 @@ function ToolReviewFrame({
346
260
  children
347
261
  }
348
262
  ) : null,
349
- footer ? /* @__PURE__ */ jsx2(
263
+ footer ? /* @__PURE__ */ jsx(
350
264
  "footer",
351
265
  {
352
266
  className: cn(
@@ -386,24 +300,24 @@ function ReviewFacts({
386
300
  const hasContent = note || effects.length || selection || shown.length || hiddenFields > 0 || samples.length;
387
301
  if (!hasContent) return null;
388
302
  return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-3 text-og-sm", children: [
389
- note ? /* @__PURE__ */ jsx2("p", { className: "m-0 leading-relaxed text-og-fg-muted", children: note }) : null,
390
- effects.length > 0 ? /* @__PURE__ */ jsx2("ul", { className: "m-0 list-none space-y-1 p-0", "aria-label": t("toolActionReview.alsoChanges"), children: effects.map((effect) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-og-fg", children: [
391
- /* @__PURE__ */ jsx2(
303
+ note ? /* @__PURE__ */ jsx("p", { className: "m-0 leading-relaxed text-og-fg-muted", children: note }) : null,
304
+ effects.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "m-0 list-none space-y-1 p-0", "aria-label": t("toolActionReview.alsoChanges"), children: effects.map((effect) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-og-fg", children: [
305
+ /* @__PURE__ */ jsx(
392
306
  "span",
393
307
  {
394
308
  "aria-hidden": "true",
395
309
  className: "mt-[0.55em] size-1 shrink-0 rounded-full bg-og-fg-muted"
396
310
  }
397
311
  ),
398
- /* @__PURE__ */ jsx2("span", { className: "min-w-0 break-words", children: effect })
312
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words", children: effect })
399
313
  ] }, effect)) }) : null,
400
314
  selection ? /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
401
315
  samples.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
402
- /* @__PURE__ */ jsx2("p", { className: "m-0 mb-1 text-og-xs text-og-fg-muted", children: t("toolActionReview.includes") }),
316
+ /* @__PURE__ */ jsx("p", { className: "m-0 mb-1 text-og-xs text-og-fg-muted", children: t("toolActionReview.includes") }),
403
317
  /* @__PURE__ */ jsxs("ul", { className: "m-0 list-none divide-y divide-og-border rounded-og-md border border-og-border bg-og-surface-1 p-0", children: [
404
318
  samples.map((sample) => /* @__PURE__ */ jsxs("li", { className: "min-w-0 px-3 py-2", children: [
405
- /* @__PURE__ */ jsx2("p", { className: "m-0 truncate text-og-sm text-og-fg", children: sample.title }),
406
- sample.subtitle ? /* @__PURE__ */ jsx2("p", { className: "m-0 mt-0.5 truncate text-og-xs text-og-fg-muted", children: sample.subtitle }) : null
319
+ /* @__PURE__ */ jsx("p", { className: "m-0 truncate text-og-sm text-og-fg", children: sample.title }),
320
+ sample.subtitle ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-0.5 truncate text-og-xs text-og-fg-muted", children: sample.subtitle }) : null
407
321
  ] }, sample.id)),
408
322
  count > samples.length ? /* @__PURE__ */ jsxs("li", { className: "px-3 py-2 text-og-xs text-og-fg-muted", children: [
409
323
  t("toolActionReview.and"),
@@ -426,18 +340,18 @@ function ReviewFacts({
426
340
  localeString: count.toLocaleString(t.locale),
427
341
  noun
428
342
  }),
429
- /* @__PURE__ */ jsx2(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
343
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
430
344
  ]
431
345
  }
432
346
  ) : null
433
347
  ] }) : null,
434
- shown.length > 0 ? /* @__PURE__ */ jsx2("dl", { className: "m-0 min-w-0 space-y-2", children: shown.map((field) => /* @__PURE__ */ jsxs(
348
+ shown.length > 0 ? /* @__PURE__ */ jsx("dl", { className: "m-0 min-w-0 space-y-2", children: shown.map((field) => /* @__PURE__ */ jsxs(
435
349
  "div",
436
350
  {
437
351
  className: "grid min-w-0 gap-x-4 gap-y-0.5 sm:grid-cols-[minmax(0,9rem)_minmax(0,1fr)]",
438
352
  children: [
439
- /* @__PURE__ */ jsx2("dt", { className: "m-0 break-words text-og-xs text-og-fg-muted sm:pt-px sm:text-og-sm", children: field.label }),
440
- /* @__PURE__ */ jsx2("dd", { className: "m-0 min-w-0 whitespace-pre-wrap break-words text-og-fg [overflow-wrap:anywhere]", children: field.protected ? /* @__PURE__ */ jsx2("span", { className: "text-og-fg-muted", children: t("toolActionReview.hidden") }) : field.truncated && canOpen ? /* @__PURE__ */ jsxs(
353
+ /* @__PURE__ */ jsx("dt", { className: "m-0 break-words text-og-xs text-og-fg-muted sm:pt-px sm:text-og-sm", children: field.label }),
354
+ /* @__PURE__ */ jsx("dd", { className: "m-0 min-w-0 whitespace-pre-wrap break-words text-og-fg [overflow-wrap:anywhere]", children: field.protected ? /* @__PURE__ */ jsx("span", { className: "text-og-fg-muted", children: t("toolActionReview.hidden") }) : field.truncated && canOpen ? /* @__PURE__ */ jsxs(
441
355
  "button",
442
356
  {
443
357
  type: "button",
@@ -449,11 +363,11 @@ function ReviewFacts({
449
363
  onClick: () => onViewDetails(field.path),
450
364
  className: cn(linkButton, "max-w-full"),
451
365
  children: [
452
- /* @__PURE__ */ jsx2("span", { className: "line-clamp-4 min-w-0 break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ jsx2(SecretRefText, { text: field.preview, linkable: false }) }),
453
- /* @__PURE__ */ jsx2(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
366
+ /* @__PURE__ */ jsx("span", { className: "line-clamp-4 min-w-0 break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ jsx(SecretRefText, { text: field.preview, linkable: false }) }),
367
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
454
368
  ]
455
369
  }
456
- ) : /* @__PURE__ */ jsx2(SecretRefText, { text: field.preview }) })
370
+ ) : /* @__PURE__ */ jsx(SecretRefText, { text: field.preview }) })
457
371
  ]
458
372
  },
459
373
  field.path
@@ -472,7 +386,7 @@ function DeclineButton({
472
386
  onClick
473
387
  }) {
474
388
  const t = useOpenGeniText();
475
- return /* @__PURE__ */ jsx2(
389
+ return /* @__PURE__ */ jsx(
476
390
  "button",
477
391
  {
478
392
  type: "button",
@@ -502,7 +416,7 @@ function ToolActionReviewCard({
502
416
  const busy = Boolean(disabled || submitting);
503
417
  const tone = statusTone[review.status];
504
418
  const eyebrow = submitting ? submitting === "approve" ? t("toolActionReview.approving") : t("toolActionReview.declining") : review.status === "pending" ? pendingLabel ?? statusText(t).pending : statusText(t)[review.status];
505
- const detailsLink = review.detailsAvailable && onViewDetails ? /* @__PURE__ */ jsx2(
419
+ const detailsLink = review.detailsAvailable && onViewDetails ? /* @__PURE__ */ jsx(
506
420
  "button",
507
421
  {
508
422
  type: "button",
@@ -517,7 +431,7 @@ function ToolActionReviewCard({
517
431
  ToolReviewFrame,
518
432
  {
519
433
  tone,
520
- icon: /* @__PURE__ */ jsx2(StatusIcon, { status: review.status, busy: Boolean(submitting) }),
434
+ icon: /* @__PURE__ */ jsx(StatusIcon, { status: review.status, busy: Boolean(submitting) }),
521
435
  eyebrow,
522
436
  title: review.title,
523
437
  titleId,
@@ -529,10 +443,10 @@ function ToolActionReviewCard({
529
443
  footer: actionable ? /* @__PURE__ */ jsxs(Fragment, { children: [
530
444
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 basis-48 flex-wrap items-center gap-x-3 gap-y-1", children: [
531
445
  detailsLink,
532
- reason ? /* @__PURE__ */ jsx2("span", { className: "min-w-0 text-og-xs leading-relaxed text-og-fg-subtle", children: reason }) : null
446
+ reason ? /* @__PURE__ */ jsx("span", { className: "min-w-0 text-og-xs leading-relaxed text-og-fg-subtle", children: reason }) : null
533
447
  ] }),
534
448
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2", children: [
535
- canReject ? /* @__PURE__ */ jsx2(
449
+ canReject ? /* @__PURE__ */ jsx(
536
450
  DeclineButton,
537
451
  {
538
452
  busy,
@@ -549,7 +463,7 @@ function ToolActionReviewCard({
549
463
  onClick: onApprove,
550
464
  className: "inline-flex min-h-9 items-center justify-center gap-2 rounded-og-md border border-og-primary-border bg-og-primary px-3.5 py-1.5 text-og-sm font-medium text-og-primary-fg transition-colors hover:bg-og-primary-hover disabled:opacity-60 [@media(pointer:coarse)]:min-h-11 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
551
465
  children: [
552
- submitting === "approve" ? /* @__PURE__ */ jsx2(LoaderCircleIcon, { className: "size-3.5 animate-spin", "aria-hidden": "true" }) : null,
466
+ submitting === "approve" ? /* @__PURE__ */ jsx(LoaderCircleIcon, { className: "size-3.5 animate-spin", "aria-hidden": "true" }) : null,
553
467
  submitting === "approve" ? t("toolActionReview.approving") : review.approveLabel
554
468
  ]
555
469
  }
@@ -557,8 +471,8 @@ function ToolActionReviewCard({
557
471
  ] })
558
472
  ] }) : void 0,
559
473
  children: [
560
- actionable && !canApprove ? /* @__PURE__ */ jsx2("p", { className: "m-0 mb-3 text-og-sm leading-relaxed text-og-fg", children: UNRECOVERABLE_TEXT(t) }) : null,
561
- /* @__PURE__ */ jsx2(
474
+ actionable && !canApprove ? /* @__PURE__ */ jsx("p", { className: "m-0 mb-3 text-og-sm leading-relaxed text-og-fg", children: UNRECOVERABLE_TEXT(t) }) : null,
475
+ /* @__PURE__ */ jsx(
562
476
  ReviewFacts,
563
477
  {
564
478
  review,
@@ -566,7 +480,7 @@ function ToolActionReviewCard({
566
480
  showStatusDetail: review.status !== "pending"
567
481
  }
568
482
  ),
569
- !actionable && detailsLink ? /* @__PURE__ */ jsx2("div", { className: "mt-2", children: detailsLink }) : null
483
+ !actionable && detailsLink ? /* @__PURE__ */ jsx("div", { className: "mt-2", children: detailsLink }) : null
570
484
  ]
571
485
  }
572
486
  );
@@ -579,22 +493,22 @@ function ToolActionReviewDetails({
579
493
  manageFocus = true
580
494
  }) {
581
495
  const t = useOpenGeniText();
582
- const [path, setPath] = useState2(initialPath);
583
- const [trail, setTrail] = useState2([]);
584
- const [offset, setOffset] = useState2(0);
585
- const [page, setPage] = useState2(null);
586
- const [error, setError] = useState2(false);
587
- const [retry, setRetry] = useState2(0);
496
+ const [path, setPath] = useState(initialPath);
497
+ const [trail, setTrail] = useState([]);
498
+ const [offset, setOffset] = useState(0);
499
+ const [page, setPage] = useState(null);
500
+ const [error, setError] = useState(false);
501
+ const [retry, setRetry] = useState(0);
588
502
  const heading = useRef(null);
589
503
  const focusedOnce = useRef(false);
590
- useEffect2(() => {
504
+ useEffect(() => {
591
505
  if (page && manageFocus && !focusedOnce.current) {
592
506
  focusedOnce.current = true;
593
507
  heading.current?.focus({ preventScroll: true });
594
508
  heading.current?.scrollIntoView({ block: "start" });
595
509
  }
596
510
  }, [page, manageFocus]);
597
- useEffect2(() => {
511
+ useEffect(() => {
598
512
  let active = true;
599
513
  setPage(null);
600
514
  setError(false);
@@ -639,12 +553,12 @@ function ToolActionReviewDetails({
639
553
  onClick: onBack,
640
554
  className: "mb-4 inline-flex min-h-11 items-center gap-2 rounded-og-md pr-2 text-og-sm text-og-fg-muted hover:text-og-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
641
555
  children: [
642
- /* @__PURE__ */ jsx2(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" }),
556
+ /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" }),
643
557
  t("toolActionReview.backToReview")
644
558
  ]
645
559
  }
646
560
  ),
647
- /* @__PURE__ */ jsx2(
561
+ /* @__PURE__ */ jsx(
648
562
  "h2",
649
563
  {
650
564
  ref: heading,
@@ -653,8 +567,8 @@ function ToolActionReviewDetails({
653
567
  children: review.title
654
568
  }
655
569
  ),
656
- review.accountLabel ? /* @__PURE__ */ jsx2("p", { className: "m-0 mt-1 text-og-sm text-og-fg-muted", children: review.accountLabel }) : null,
657
- /* @__PURE__ */ jsx2("p", { className: "m-0 mt-2 text-og-xs text-og-fg-subtle", children: t("toolActionReview.theExactValuesSavedFor") }),
570
+ review.accountLabel ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-1 text-og-sm text-og-fg-muted", children: review.accountLabel }) : null,
571
+ /* @__PURE__ */ jsx("p", { className: "m-0 mt-2 text-og-xs text-og-fg-subtle", children: t("toolActionReview.theExactValuesSavedFor") }),
658
572
  trail.length > 0 ? /* @__PURE__ */ jsxs(
659
573
  "button",
660
574
  {
@@ -662,7 +576,7 @@ function ToolActionReviewDetails({
662
576
  className: "mt-3 inline-flex min-h-11 items-center gap-1.5 text-og-sm text-og-fg-muted underline underline-offset-4 hover:text-og-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
663
577
  onClick: up,
664
578
  children: [
665
- /* @__PURE__ */ jsx2(ArrowLeftIcon, { className: "size-3.5", "aria-hidden": "true" }),
579
+ /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-3.5", "aria-hidden": "true" }),
666
580
  t("toolActionReview.backTo"),
667
581
  " ",
668
582
  trail.at(-1)?.label ?? t("toolActionReview.allValues")
@@ -672,7 +586,7 @@ function ToolActionReviewDetails({
672
586
  error ? /* @__PURE__ */ jsxs("div", { role: "alert", className: "mt-4 py-4 text-og-sm", children: [
673
587
  t("toolActionReview.couldnTLoadTheseDetails"),
674
588
  " ",
675
- /* @__PURE__ */ jsx2(
589
+ /* @__PURE__ */ jsx(
676
590
  "button",
677
591
  {
678
592
  type: "button",
@@ -681,9 +595,9 @@ function ToolActionReviewDetails({
681
595
  children: t("toolActionReview.tryAgain")
682
596
  }
683
597
  )
684
- ] }) : !page ? /* @__PURE__ */ jsx2("p", { role: "status", className: "mt-4 py-4 text-og-sm text-og-fg-muted", children: t("toolActionReview.loadingDetails") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
685
- /* @__PURE__ */ jsx2("dl", { className: "m-0 mt-4 divide-y divide-og-border border-y border-og-border", children: page.items.map((item) => /* @__PURE__ */ jsxs("div", { className: "py-3", children: [
686
- /* @__PURE__ */ jsx2("dt", { className: "m-0 text-og-xs text-og-fg-muted", children: item.label }),
598
+ ] }) : !page ? /* @__PURE__ */ jsx("p", { role: "status", className: "mt-4 py-4 text-og-sm text-og-fg-muted", children: t("toolActionReview.loadingDetails") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
599
+ /* @__PURE__ */ jsx("dl", { className: "m-0 mt-4 divide-y divide-og-border border-y border-og-border", children: page.items.map((item) => /* @__PURE__ */ jsxs("div", { className: "py-3", children: [
600
+ /* @__PURE__ */ jsx("dt", { className: "m-0 text-og-xs text-og-fg-muted", children: item.label }),
687
601
  /* @__PURE__ */ jsxs("dd", { className: "m-0 mt-1 whitespace-pre-wrap break-words text-og-sm leading-relaxed [overflow-wrap:anywhere]", children: [
688
602
  item.truncated && item.path ? /* @__PURE__ */ jsxs(
689
603
  "button",
@@ -693,12 +607,12 @@ function ToolActionReviewDetails({
693
607
  className: cn(linkButton, "max-w-full"),
694
608
  onClick: () => open(item.path, item.label),
695
609
  children: [
696
- /* @__PURE__ */ jsx2("span", { className: "min-w-0 break-words focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40", children: /* @__PURE__ */ jsx2(SecretRefText, { text: item.value, linkable: false }) }),
697
- /* @__PURE__ */ jsx2(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
610
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40", children: /* @__PURE__ */ jsx(SecretRefText, { text: item.value, linkable: false }) }),
611
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
698
612
  ]
699
613
  }
700
- ) : /* @__PURE__ */ jsx2(SecretRefText, { text: item.value }),
701
- item.detail ? /* @__PURE__ */ jsx2("span", { className: "mt-0.5 block text-og-xs text-og-fg-muted", children: /* @__PURE__ */ jsx2(SecretRefText, { text: item.detail, linkable: false }) }) : null
614
+ ) : /* @__PURE__ */ jsx(SecretRefText, { text: item.value }),
615
+ item.detail ? /* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-og-xs text-og-fg-muted", children: /* @__PURE__ */ jsx(SecretRefText, { text: item.detail, linkable: false }) }) : null
702
616
  ] })
703
617
  ] }, `${page.path}:${item.label}`)) }),
704
618
  page.total > page.items.length || offset > 0 ? /* @__PURE__ */ jsxs(
@@ -707,7 +621,7 @@ function ToolActionReviewDetails({
707
621
  "aria-label": t("toolActionReview.detailPages"),
708
622
  className: "mt-4 flex flex-wrap items-center justify-between gap-3 text-og-sm",
709
623
  children: [
710
- /* @__PURE__ */ jsx2(
624
+ /* @__PURE__ */ jsx(
711
625
  "button",
712
626
  {
713
627
  type: "button",
@@ -717,8 +631,8 @@ function ToolActionReviewDetails({
717
631
  children: t("toolActionReview.previous")
718
632
  }
719
633
  ),
720
- /* @__PURE__ */ jsx2("span", { className: "text-og-fg-muted tabular-nums", children: page.total === 0 ? t("toolActionReview.noItems") : `${(offset + 1).toLocaleString(t.locale)}\u2013${(offset + page.items.length).toLocaleString(t.locale)} of ${page.total.toLocaleString(t.locale)}` }),
721
- /* @__PURE__ */ jsx2(
634
+ /* @__PURE__ */ jsx("span", { className: "text-og-fg-muted tabular-nums", children: page.total === 0 ? t("toolActionReview.noItems") : `${(offset + 1).toLocaleString(t.locale)}\u2013${(offset + page.items.length).toLocaleString(t.locale)} of ${page.total.toLocaleString(t.locale)}` }),
635
+ /* @__PURE__ */ jsx(
722
636
  "button",
723
637
  {
724
638
  type: "button",
@@ -738,36 +652,36 @@ function ToolActionReviewDetails({
738
652
  }
739
653
 
740
654
  // src/timeline/knowledge-receipt.tsx
741
- import { createContext as createContext2, useContext as useContext2, useState as useState3 } from "react";
655
+ import { createContext, useContext, useState as useState2 } from "react";
742
656
  import { BrainCircuitIcon } from "lucide-react";
743
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
744
- var KnowledgeActions = createContext2({});
657
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
658
+ var KnowledgeActions = createContext({});
745
659
  function KnowledgeActivityProvider({
746
660
  children,
747
661
  ...actions
748
662
  }) {
749
- return /* @__PURE__ */ jsx3(KnowledgeActions.Provider, { value: actions, children });
663
+ return /* @__PURE__ */ jsx2(KnowledgeActions.Provider, { value: actions, children });
750
664
  }
751
665
  function KnowledgeReceiptRow(props) {
752
666
  const t = useOpenGeniText();
753
- const actions = useContext2(KnowledgeActions);
754
- const [retrying, setRetrying] = useState3(false);
755
- const [retrySent, setRetrySent] = useState3(false);
756
- const [error, setError] = useState3(null);
667
+ const actions = useContext(KnowledgeActions);
668
+ const [retrying, setRetrying] = useState2(false);
669
+ const [retrySent, setRetrySent] = useState2(false);
670
+ const [error, setError] = useState2(null);
757
671
  const label = props.outcome === "pending" ? t("timeline.knowledgeReceipt.knowledgeSavedForReview") : props.outcome === "failed" ? t("timeline.knowledgeReceipt.sourcePreparationFailed") : props.outcome === "rejected" ? t("timeline.knowledgeReceipt.sourceRemainsRejected") : props.outcome === "archived" ? t("timeline.knowledgeReceipt.knowledgeArchived") : props.source ? t("timeline.knowledgeReceipt.sourceSavedToKnowledge") : t("timeline.knowledgeReceipt.savedToKnowledge");
758
672
  const actionClass = "rounded-og-sm px-1 py-0.5 text-og-sm text-og-fg-muted hover:text-og-fg focus-visible:outline-2 focus-visible:outline-og-accent disabled:opacity-50";
759
673
  return /* @__PURE__ */ jsxs2(
760
674
  ActivityDisclosure,
761
675
  {
762
- icon: /* @__PURE__ */ jsx3(BrainCircuitIcon, { className: "size-3.5" }),
676
+ icon: /* @__PURE__ */ jsx2(BrainCircuitIcon, { className: "size-3.5" }),
763
677
  iconTone: "muted",
764
678
  title: label,
765
679
  preview: props.title,
766
680
  children: [
767
- props.outcome === "pending" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.savedInNeedsReviewThis") }) : null,
768
- props.outcome === "failed" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.theOriginalFileRemainsAttached") }) : null,
769
- props.outcome === "rejected" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.processingTheFileAgainLeaves") }) : null,
770
- props.entryId && actions.onInspect ? /* @__PURE__ */ jsx3(
681
+ props.outcome === "pending" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.savedInNeedsReviewThis") }) : null,
682
+ props.outcome === "failed" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.theOriginalFileRemainsAttached") }) : null,
683
+ props.outcome === "rejected" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.processingTheFileAgainLeaves") }) : null,
684
+ props.entryId && actions.onInspect ? /* @__PURE__ */ jsx2(
771
685
  "button",
772
686
  {
773
687
  className: actionClass,
@@ -776,7 +690,7 @@ function KnowledgeReceiptRow(props) {
776
690
  children: props.outcome === "pending" ? t("timeline.knowledgeReceipt.reviewInKnowledge") : t("timeline.knowledgeReceipt.viewInKnowledge")
777
691
  }
778
692
  ) : null,
779
- props.outcome === "failed" && props.fileId && actions.onRetryFile ? /* @__PURE__ */ jsx3(
693
+ props.outcome === "failed" && props.fileId && actions.onRetryFile ? /* @__PURE__ */ jsx2(
780
694
  "button",
781
695
  {
782
696
  className: actionClass,
@@ -793,12 +707,100 @@ function KnowledgeReceiptRow(props) {
793
707
  children: retrying ? t("timeline.knowledgeReceipt.startingRetry") : retrySent ? t("timeline.knowledgeReceipt.retryRequested") : t("timeline.knowledgeReceipt.retryPreparation")
794
708
  }
795
709
  ) : null,
796
- error ? /* @__PURE__ */ jsx3("p", { role: "alert", className: "text-og-sm", children: error }) : null
710
+ error ? /* @__PURE__ */ jsx2("p", { role: "alert", className: "text-og-sm", children: error }) : null
797
711
  ]
798
712
  }
799
713
  );
800
714
  }
801
715
 
716
+ // src/timeline/startup-preference.ts
717
+ import { useSyncExternalStore } from "react";
718
+ var KEY = "opengeni:startup-details:v1";
719
+ var EVENT = "opengeni:startup-details-changed";
720
+ var fallback = false;
721
+ function snapshot() {
722
+ try {
723
+ return window.localStorage.getItem(KEY) === "true";
724
+ } catch {
725
+ return fallback;
726
+ }
727
+ }
728
+ function subscribe(listener) {
729
+ window.addEventListener(EVENT, listener);
730
+ window.addEventListener("storage", listener);
731
+ return () => {
732
+ window.removeEventListener(EVENT, listener);
733
+ window.removeEventListener("storage", listener);
734
+ };
735
+ }
736
+ function setStartupDetails(value) {
737
+ fallback = value;
738
+ try {
739
+ window.localStorage.setItem(KEY, String(value));
740
+ } catch {
741
+ }
742
+ window.dispatchEvent(new Event(EVENT));
743
+ }
744
+ function useStartupDetails() {
745
+ return useSyncExternalStore(subscribe, snapshot, () => false);
746
+ }
747
+
748
+ // src/components/tool-review-history.tsx
749
+ import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
750
+ import { jsx as jsx3 } from "react/jsx-runtime";
751
+ var History = createContext2(null);
752
+ function ToolReviewHistoryProvider({
753
+ events,
754
+ load,
755
+ onViewDetails,
756
+ children
757
+ }) {
758
+ const value = useMemo(
759
+ () => ({
760
+ approvalIds: new Set(
761
+ events.flatMap(
762
+ (event) => event.type === "session.requiresAction" ? approvalsFromRequiresAction(event.payload).map((approval) => approval.id) : []
763
+ )
764
+ ),
765
+ revision: [...events].reverse().find(
766
+ (event) => event.type === "session.requiresAction" || event.type === "agent.toolCall.output" || event.type.startsWith("turn.") || event.type === "user.approvalDecision" || event.type.startsWith("session.control.")
767
+ )?.sequence ?? 0,
768
+ load,
769
+ onViewDetails
770
+ }),
771
+ [events, load, onViewDetails]
772
+ );
773
+ return /* @__PURE__ */ jsx3(History.Provider, { value, children });
774
+ }
775
+ function useHasToolReview(approvalId) {
776
+ const history = useContext2(History);
777
+ return Boolean(approvalId && history?.approvalIds.has(approvalId));
778
+ }
779
+ function useRecordedToolReview(approvalId) {
780
+ const history = useContext2(History);
781
+ const [review, setReview] = useState3(null);
782
+ const load = history?.load;
783
+ const revision = history?.revision;
784
+ useEffect2(() => {
785
+ if (!load || !approvalId) return;
786
+ let active = true;
787
+ void load(approvalId).then(
788
+ (value) => {
789
+ if (active && value.id === approvalId) setReview(value);
790
+ },
791
+ () => void 0
792
+ );
793
+ return () => {
794
+ active = false;
795
+ };
796
+ }, [approvalId, load, revision]);
797
+ const onViewDetails = history?.onViewDetails;
798
+ return {
799
+ review: review && review.id === approvalId ? review : null,
800
+ onViewDetails: review && onViewDetails ? (path) => onViewDetails(review, path) : void 0
801
+ };
802
+ }
803
+
802
804
  // src/lib/git-patch.ts
803
805
  function gitFileDiffToPatch(file) {
804
806
  const oldPath = file.oldPath ?? file.path;
@@ -834,7 +836,7 @@ import {
834
836
  Suspense,
835
837
  useEffect as useEffect3,
836
838
  useState as useState4,
837
- useSyncExternalStore
839
+ useSyncExternalStore as useSyncExternalStore2
838
840
  } from "react";
839
841
  import { jsx as jsx4 } from "react/jsx-runtime";
840
842
  var LazyPatchDiff = lazy(async () => {
@@ -864,7 +866,7 @@ function PierreDiff({
864
866
  query.addEventListener?.("change", update);
865
867
  return () => query.removeEventListener?.("change", update);
866
868
  }, []);
867
- const loaderRevision = useSyncExternalStore(
869
+ const loaderRevision = useSyncExternalStore2(
868
870
  subscribePierreDiffs,
869
871
  pierreDiffsRevision,
870
872
  pierreDiffsRevision
@@ -973,35 +975,20 @@ function PlainPatch({ diff }) {
973
975
  import { defaultUrlTransform } from "react-markdown";
974
976
  import { parseSandboxFileArtifactReceipt } from "@opengeni/sdk";
975
977
  import {
976
- BoxIcon,
977
- BrainCircuitIcon as BrainCircuitIcon2,
978
- CalendarClockIcon,
978
+ BrainCircuitIcon as BrainCircuitIcon3,
979
979
  CameraIcon,
980
980
  CameraOffIcon,
981
- DownloadIcon,
982
- FileDiffIcon,
983
- FileSearchIcon,
984
- FolderGitIcon,
985
- GlobeIcon,
986
- ImageIcon,
987
- KeyboardIcon,
988
- KeyRoundIcon,
981
+ DownloadIcon as DownloadIcon2,
982
+ FileSearchIcon as FileSearchIcon2,
983
+ GlobeIcon as GlobeIcon2,
984
+ ImageIcon as ImageIcon2,
985
+ KeyRoundIcon as KeyRoundIcon2,
989
986
  LockIcon,
990
- MessageCircleQuestionIcon,
991
- MessagesSquareIcon,
992
- MessageSquareIcon,
987
+ MessagesSquareIcon as MessagesSquareIcon2,
993
988
  MousePointer2Icon,
994
- PackageSearchIcon,
995
- PanelsTopLeftIcon,
996
- PlugIcon,
997
- SearchIcon,
998
- ServerCogIcon,
999
- ServerIcon,
1000
- Share2Icon,
1001
- TargetIcon,
1002
- TerminalIcon,
1003
- VideoIcon,
1004
- WrenchIcon
989
+ PackageSearchIcon as PackageSearchIcon2,
990
+ PanelsTopLeftIcon as PanelsTopLeftIcon2,
991
+ VideoIcon as VideoIcon2
1005
992
  } from "lucide-react";
1006
993
  import { useContext as useContext5, useState as useState7 } from "react";
1007
994
 
@@ -1046,22 +1033,179 @@ function ConnectorLogoIcon({
1046
1033
  );
1047
1034
  }
1048
1035
 
1036
+ // src/timeline/tool-icon.tsx
1037
+ import {
1038
+ ActivityIcon,
1039
+ AppWindowIcon,
1040
+ ArchiveIcon,
1041
+ BellIcon,
1042
+ BookOpenIcon,
1043
+ BotIcon,
1044
+ BoxIcon,
1045
+ BrainCircuitIcon as BrainCircuitIcon2,
1046
+ CalendarClockIcon,
1047
+ CircleDotIcon,
1048
+ ClipboardIcon,
1049
+ CodeIcon,
1050
+ DownloadIcon,
1051
+ FileDiffIcon,
1052
+ FileIcon,
1053
+ FileSearchIcon,
1054
+ FileSpreadsheetIcon,
1055
+ FileTextIcon,
1056
+ FolderGitIcon,
1057
+ FolderIcon,
1058
+ GlobeIcon,
1059
+ HandIcon,
1060
+ HourglassIcon,
1061
+ ImageIcon,
1062
+ InboxIcon,
1063
+ KeyboardIcon,
1064
+ KeyRoundIcon,
1065
+ LogInIcon,
1066
+ MessageCircleQuestionIcon,
1067
+ MessagesSquareIcon,
1068
+ MessageSquareIcon,
1069
+ MonitorIcon,
1070
+ PackageSearchIcon,
1071
+ PanelsTopLeftIcon,
1072
+ PaperclipIcon,
1073
+ PencilIcon,
1074
+ PlugIcon,
1075
+ ReceiptIcon,
1076
+ SearchIcon,
1077
+ ServerCogIcon,
1078
+ ServerIcon,
1079
+ SettingsIcon,
1080
+ Share2Icon,
1081
+ SparklesIcon,
1082
+ TargetIcon,
1083
+ TerminalIcon,
1084
+ VideoIcon,
1085
+ WrenchIcon
1086
+ } from "lucide-react";
1087
+ import { jsx as jsx6 } from "react/jsx-runtime";
1088
+ function toolIcon(kind) {
1089
+ switch (kind) {
1090
+ case "terminal":
1091
+ return TerminalIcon;
1092
+ case "keyboard":
1093
+ return KeyboardIcon;
1094
+ case "file-diff":
1095
+ return FileDiffIcon;
1096
+ case "search":
1097
+ return SearchIcon;
1098
+ case "question":
1099
+ return MessageCircleQuestionIcon;
1100
+ case "target":
1101
+ return TargetIcon;
1102
+ case "brain":
1103
+ return BrainCircuitIcon2;
1104
+ case "sessions":
1105
+ return MessagesSquareIcon;
1106
+ case "server":
1107
+ return ServerIcon;
1108
+ case "server-cog":
1109
+ return ServerCogIcon;
1110
+ case "calendar":
1111
+ return CalendarClockIcon;
1112
+ case "panels":
1113
+ return PanelsTopLeftIcon;
1114
+ case "share":
1115
+ return Share2Icon;
1116
+ case "message":
1117
+ return MessageSquareIcon;
1118
+ case "git":
1119
+ return FolderGitIcon;
1120
+ case "box":
1121
+ return BoxIcon;
1122
+ case "key":
1123
+ return KeyRoundIcon;
1124
+ case "file-search":
1125
+ return FileSearchIcon;
1126
+ case "package-search":
1127
+ return PackageSearchIcon;
1128
+ case "plug":
1129
+ return PlugIcon;
1130
+ case "browser":
1131
+ return GlobeIcon;
1132
+ case "screen":
1133
+ return MonitorIcon;
1134
+ case "spreadsheet":
1135
+ return FileSpreadsheetIcon;
1136
+ case "wait":
1137
+ return HourglassIcon;
1138
+ case "download":
1139
+ return DownloadIcon;
1140
+ case "clipboard":
1141
+ return ClipboardIcon;
1142
+ case "image":
1143
+ return ImageIcon;
1144
+ case "video":
1145
+ return VideoIcon;
1146
+ case "record":
1147
+ return CircleDotIcon;
1148
+ case "document":
1149
+ return FileTextIcon;
1150
+ case "file":
1151
+ return FileIcon;
1152
+ case "attachment":
1153
+ return PaperclipIcon;
1154
+ case "archive":
1155
+ return ArchiveIcon;
1156
+ case "folder":
1157
+ return FolderIcon;
1158
+ case "site":
1159
+ return AppWindowIcon;
1160
+ case "guide":
1161
+ return BookOpenIcon;
1162
+ case "settings":
1163
+ return SettingsIcon;
1164
+ case "bell":
1165
+ return BellIcon;
1166
+ case "inbox":
1167
+ return InboxIcon;
1168
+ case "help":
1169
+ return HandIcon;
1170
+ case "model":
1171
+ return SparklesIcon;
1172
+ case "progress":
1173
+ return ActivityIcon;
1174
+ case "helper":
1175
+ return BotIcon;
1176
+ case "sign-in":
1177
+ return LogInIcon;
1178
+ case "code":
1179
+ return CodeIcon;
1180
+ case "accounting":
1181
+ return ReceiptIcon;
1182
+ case "rename":
1183
+ return PencilIcon;
1184
+ case "wrench":
1185
+ return WrenchIcon;
1186
+ }
1187
+ }
1188
+ function ToolKindIcon({ kind, className }) {
1189
+ const Icon = toolIcon(kind);
1190
+ return /* @__PURE__ */ jsx6(Icon, { className });
1191
+ }
1192
+
1049
1193
  // src/timeline/tool-diff.tsx
1050
1194
  import { useState as useState6 } from "react";
1051
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
1195
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
1052
1196
  function ToolDiff({ files }) {
1053
1197
  const [layout, setLayout] = useState6("unified");
1054
1198
  const themeType = useThemeType(void 0);
1055
1199
  return /* @__PURE__ */ jsxs3("div", { className: "min-w-0", children: [
1056
- /* @__PURE__ */ jsx6("div", { className: "mb-1.5 flex justify-end", children: /* @__PURE__ */ jsx6(LayoutToggle, { layout, onChange: setLayout }) }),
1057
- /* @__PURE__ */ jsx6(PierreDiff, { diff: files, layout, themeType })
1200
+ /* @__PURE__ */ jsx7("div", { className: "mb-1.5 flex justify-end", children: /* @__PURE__ */ jsx7(LayoutToggle, { layout, onChange: setLayout }) }),
1201
+ /* @__PURE__ */ jsx7(PierreDiff, { diff: files, layout, themeType })
1058
1202
  ] });
1059
1203
  }
1060
1204
  function LayoutToggle({
1061
1205
  layout,
1062
1206
  onChange
1063
1207
  }) {
1064
- return /* @__PURE__ */ jsx6("div", { className: "inline-flex items-center gap-px rounded-og-xs border border-og-border p-px", children: ["unified", "split"].map((value) => /* @__PURE__ */ jsx6(
1208
+ return /* @__PURE__ */ jsx7("div", { className: "inline-flex items-center gap-px rounded-og-xs border border-og-border p-px", children: ["unified", "split"].map((value) => /* @__PURE__ */ jsx7(
1065
1209
  "button",
1066
1210
  {
1067
1211
  type: "button",
@@ -1084,8 +1228,8 @@ function RawPatch({ diff }) {
1084
1228
  return { key: `${line}\0${occurrence}`, line };
1085
1229
  });
1086
1230
  return /* @__PURE__ */ jsxs3("div", { className: "min-w-0", children: [
1087
- /* @__PURE__ */ jsx6("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: t("timeline.toolDiff.rawPatchCouldNotParse") }),
1088
- /* @__PURE__ */ jsx6("pre", { className: "max-h-72 overflow-auto border-l-2 border-og-border pl-3 font-og-mono text-og-xs leading-5", children: lines.map(({ key, line }) => /* @__PURE__ */ jsx6(
1231
+ /* @__PURE__ */ jsx7("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: t("timeline.toolDiff.rawPatchCouldNotParse") }),
1232
+ /* @__PURE__ */ jsx7("pre", { className: "max-h-72 overflow-auto border-l-2 border-og-border pl-3 font-og-mono text-og-xs leading-5", children: lines.map(({ key, line }) => /* @__PURE__ */ jsx7(
1089
1233
  "span",
1090
1234
  {
1091
1235
  className: cn(
@@ -1100,13 +1244,13 @@ function RawPatch({ diff }) {
1100
1244
  }
1101
1245
 
1102
1246
  // src/timeline/tool-renderers.tsx
1103
- import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1247
+ import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
1104
1248
  var ICON_SIZE = "size-3.5";
1105
1249
  function RunningPreview({ children }) {
1106
1250
  const compact = useContext5(CompactActivityContext);
1107
1251
  return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-1.5", children: [
1108
- !compact && /* @__PURE__ */ jsx7("span", { className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-status-running" }),
1109
- /* @__PURE__ */ jsx7("span", { className: "min-w-0 truncate", children })
1252
+ !compact && /* @__PURE__ */ jsx8("span", { className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-status-running" }),
1253
+ /* @__PURE__ */ jsx8("span", { className: "min-w-0 truncate", children })
1110
1254
  ] });
1111
1255
  }
1112
1256
  function PathPreview({
@@ -1116,8 +1260,8 @@ function PathPreview({
1116
1260
  }) {
1117
1261
  return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 truncate font-og-mono", children: [
1118
1262
  /* @__PURE__ */ jsxs4("span", { className: "truncate", children: [
1119
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-subtle", children: pathDirname(path) }),
1120
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-muted", children: pathBasename(path) })
1263
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: pathDirname(path) }),
1264
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: pathBasename(path) })
1121
1265
  ] }),
1122
1266
  add != null || del != null ? /* @__PURE__ */ jsxs4("span", { className: "shrink-0 text-og-fg-subtle", children: [
1123
1267
  add != null ? `+${add}` : "",
@@ -1126,61 +1270,15 @@ function PathPreview({
1126
1270
  ] }) : null
1127
1271
  ] });
1128
1272
  }
1129
- function toolIcon(kind) {
1130
- switch (kind) {
1131
- case "terminal":
1132
- return TerminalIcon;
1133
- case "keyboard":
1134
- return KeyboardIcon;
1135
- case "file-diff":
1136
- return FileDiffIcon;
1137
- case "search":
1138
- return SearchIcon;
1139
- case "question":
1140
- return MessageCircleQuestionIcon;
1141
- case "target":
1142
- return TargetIcon;
1143
- case "brain":
1144
- return BrainCircuitIcon2;
1145
- case "sessions":
1146
- return MessagesSquareIcon;
1147
- case "server":
1148
- return ServerIcon;
1149
- case "server-cog":
1150
- return ServerCogIcon;
1151
- case "calendar":
1152
- return CalendarClockIcon;
1153
- case "panels":
1154
- return PanelsTopLeftIcon;
1155
- case "share":
1156
- return Share2Icon;
1157
- case "message":
1158
- return MessageSquareIcon;
1159
- case "git":
1160
- return FolderGitIcon;
1161
- case "box":
1162
- return BoxIcon;
1163
- case "key":
1164
- return KeyRoundIcon;
1165
- case "file-search":
1166
- return FileSearchIcon;
1167
- case "package-search":
1168
- return PackageSearchIcon;
1169
- case "plug":
1170
- return PlugIcon;
1171
- case "wrench":
1172
- return WrenchIcon;
1173
- }
1174
- }
1175
1273
  function presentedPreviewNode(msg, preview) {
1176
1274
  switch (preview.kind) {
1177
1275
  case "text":
1178
- return preview.running ? /* @__PURE__ */ jsx7(RunningPreview, { children: preview.text }) : preview.text;
1276
+ return preview.running ? /* @__PURE__ */ jsx8(RunningPreview, { children: preview.text }) : preview.text;
1179
1277
  case "path":
1180
- return /* @__PURE__ */ jsx7(PathPreview, { path: preview.path, add: preview.add, del: preview.del });
1278
+ return /* @__PURE__ */ jsx8(PathPreview, { path: preview.path, add: preview.add, del: preview.del });
1181
1279
  case "files":
1182
1280
  return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
1183
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-muted", children: msg("timeline.toolRenderers.filesCount", { count: preview.count }) }),
1281
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: msg("timeline.toolRenderers.filesCount", { count: preview.count }) }),
1184
1282
  /* @__PURE__ */ jsxs4("span", { className: "text-og-fg-subtle", children: [
1185
1283
  "+",
1186
1284
  preview.add,
@@ -1190,8 +1288,8 @@ function presentedPreviewNode(msg, preview) {
1190
1288
  ] });
1191
1289
  case "malformed":
1192
1290
  return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
1193
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-muted", children: preview.name }),
1194
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-subtle", children: msg("timeline.toolRenderers.malformedPatch") })
1291
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: preview.name }),
1292
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: msg("timeline.toolRenderers.malformedPatch") })
1195
1293
  ] });
1196
1294
  }
1197
1295
  }
@@ -1199,7 +1297,7 @@ function PresentedBody({ body }) {
1199
1297
  switch (body.kind) {
1200
1298
  case "term":
1201
1299
  return /* @__PURE__ */ jsxs4(Fragment3, { children: [
1202
- /* @__PURE__ */ jsx7(
1300
+ /* @__PURE__ */ jsx8(
1203
1301
  TermBlock,
1204
1302
  {
1205
1303
  command: body.command,
@@ -1209,29 +1307,29 @@ function PresentedBody({ body }) {
1209
1307
  ...body.failed !== void 0 ? { failed: body.failed } : {}
1210
1308
  }
1211
1309
  ),
1212
- body.note ? /* @__PURE__ */ jsx7(BodyNote, { children: body.note }) : null
1310
+ body.note ? /* @__PURE__ */ jsx8(BodyNote, { children: body.note }) : null
1213
1311
  ] });
1214
1312
  case "note":
1215
- return body.tone ? /* @__PURE__ */ jsx7(BodyNote, { tone: body.tone, children: body.text }) : /* @__PURE__ */ jsx7(BodyNote, { children: body.text });
1313
+ return body.tone ? /* @__PURE__ */ jsx8(BodyNote, { tone: body.tone, children: body.text }) : /* @__PURE__ */ jsx8(BodyNote, { children: body.text });
1216
1314
  case "payloads":
1217
1315
  return /* @__PURE__ */ jsxs4(Fragment3, { children: [
1218
- body.note ? /* @__PURE__ */ jsx7("p", { className: "m-0 py-1 text-og-sm text-og-fg-muted", children: body.note }) : null,
1316
+ body.note ? /* @__PURE__ */ jsx8("p", { className: "m-0 py-1 text-og-sm text-og-fg-muted", children: body.note }) : null,
1219
1317
  body.blocks.map(
1220
- (block) => block.failed ? /* @__PURE__ */ jsx7(PayloadBlock, { label: block.label, value: block.value, failed: true }, block.label) : /* @__PURE__ */ jsx7(PayloadBlock, { label: block.label, value: block.value }, block.label)
1318
+ (block) => block.failed ? /* @__PURE__ */ jsx8(PayloadBlock, { label: block.label, value: block.value, failed: true }, block.label) : /* @__PURE__ */ jsx8(PayloadBlock, { label: block.label, value: block.value }, block.label)
1221
1319
  )
1222
1320
  ] });
1223
1321
  case "patch":
1224
1322
  if (body.bare) {
1225
- return /* @__PURE__ */ jsx7(RawPatch, { diff: body.files[0]?.diff ?? "" });
1323
+ return /* @__PURE__ */ jsx8(RawPatch, { diff: body.files[0]?.diff ?? "" });
1226
1324
  }
1227
- return /* @__PURE__ */ jsx7(Fragment3, { children: body.files.map(
1228
- (entry) => entry.file ? /* @__PURE__ */ jsx7(ToolDiff, { files: [entry.file] }, entry.key) : /* @__PURE__ */ jsxs4("div", { children: [
1229
- /* @__PURE__ */ jsx7("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: entry.path }),
1230
- /* @__PURE__ */ jsx7(RawPatch, { diff: entry.diff })
1325
+ return /* @__PURE__ */ jsx8(Fragment3, { children: body.files.map(
1326
+ (entry) => entry.file ? /* @__PURE__ */ jsx8(ToolDiff, { files: [entry.file] }, entry.key) : /* @__PURE__ */ jsxs4("div", { children: [
1327
+ /* @__PURE__ */ jsx8("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: entry.path }),
1328
+ /* @__PURE__ */ jsx8(RawPatch, { diff: entry.diff })
1231
1329
  ] }, entry.key)
1232
1330
  ) });
1233
1331
  case "web-results":
1234
- return /* @__PURE__ */ jsx7(WebSearchResults, { results: body.results });
1332
+ return /* @__PURE__ */ jsx8(WebSearchResults, { results: body.results });
1235
1333
  case "none":
1236
1334
  return null;
1237
1335
  }
@@ -1246,17 +1344,17 @@ function WebSearchResults({ results }) {
1246
1344
  return { key: `${contentKey}\0${occurrence}`, result };
1247
1345
  });
1248
1346
  if (!keyedResults || !keyedResults.length) {
1249
- return /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.resultsFoldedIntoModelContext") });
1347
+ return /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.resultsFoldedIntoModelContext") });
1250
1348
  }
1251
- return /* @__PURE__ */ jsx7("ul", { className: "flex flex-col gap-2", children: keyedResults.map(({ key, result }) => /* @__PURE__ */ jsxs4("li", { className: "flex gap-2.5", children: [
1252
- /* @__PURE__ */ jsx7(GlobeIcon, { className: "mt-0.5 size-3.5 shrink-0 text-og-fg-subtle" }),
1349
+ return /* @__PURE__ */ jsx8("ul", { className: "flex flex-col gap-2", children: keyedResults.map(({ key, result }) => /* @__PURE__ */ jsxs4("li", { className: "flex gap-2.5", children: [
1350
+ /* @__PURE__ */ jsx8(GlobeIcon2, { className: "mt-0.5 size-3.5 shrink-0 text-og-fg-subtle" }),
1253
1351
  /* @__PURE__ */ jsxs4("div", { className: "min-w-0", children: [
1254
1352
  /* @__PURE__ */ jsxs4("p", { className: "truncate text-og-base text-og-fg", children: [
1255
1353
  result.title,
1256
1354
  " ",
1257
- /* @__PURE__ */ jsx7("span", { className: "text-og-fg-subtle", children: result.domain })
1355
+ /* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: result.domain })
1258
1356
  ] }),
1259
- /* @__PURE__ */ jsx7("p", { className: "text-og-sm leading-5 text-og-fg-muted", children: result.snippet })
1357
+ /* @__PURE__ */ jsx8("p", { className: "text-og-sm leading-5 text-og-fg-muted", children: result.snippet })
1260
1358
  ] })
1261
1359
  ] }, key)) });
1262
1360
  }
@@ -1269,12 +1367,12 @@ function PresentedToolRow({
1269
1367
  const computeLabel = useTimelineComputeLabel();
1270
1368
  const p = useToolDetails() === "plain" ? plainToolRow(msg, item, presentation, { computeLabel }) : presentation;
1271
1369
  const Icon = toolIcon(p.icon);
1272
- return /* @__PURE__ */ jsx7(
1370
+ return /* @__PURE__ */ jsx8(
1273
1371
  ActivityDisclosure,
1274
1372
  {
1275
- icon: /* @__PURE__ */ jsx7(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx7(Icon, { className: ICON_SIZE }) }),
1373
+ icon: /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(Icon, { className: ICON_SIZE }) }),
1276
1374
  iconTone: p.iconTone,
1277
- title: /* @__PURE__ */ jsx7(SecretRefText, { text: p.title, linkable: false }),
1375
+ title: /* @__PURE__ */ jsx8(SecretRefText, { text: p.title, linkable: false }),
1278
1376
  ...p.titleMono ? { titleMono: true } : {},
1279
1377
  ...p.running ? { running: true } : {},
1280
1378
  ...p.chip ? { chip: p.chip } : {},
@@ -1282,42 +1380,42 @@ function PresentedToolRow({
1282
1380
  ...p.cancelled !== void 0 ? { cancelled: p.cancelled } : {},
1283
1381
  preview: p.preview ? presentedPreviewNode(msg, p.preview) : void 0,
1284
1382
  expandable: p.body.kind !== "none",
1285
- children: /* @__PURE__ */ jsx7(PresentedBody, { body: p.body })
1383
+ children: /* @__PURE__ */ jsx8(PresentedBody, { body: p.body })
1286
1384
  }
1287
1385
  );
1288
1386
  }
1289
1387
  function ExecRenderer({ item }) {
1290
1388
  const msg = useOpenGeniText();
1291
1389
  const computeLabel = useTimelineComputeLabel();
1292
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: execPresentation(msg, item, { computeLabel }), item });
1390
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: execPresentation(msg, item, { computeLabel }), item });
1293
1391
  }
1294
1392
  function WriteStdinRenderer({ item }) {
1295
1393
  const msg = useOpenGeniText();
1296
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: writeStdinPresentation(msg, item), item });
1394
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: writeStdinPresentation(msg, item), item });
1297
1395
  }
1298
1396
  function ApplyPatchRenderer({ item }) {
1299
1397
  const msg = useOpenGeniText();
1300
1398
  const presentation = applyPatchPresentation(msg, item);
1301
- return presentation ? /* @__PURE__ */ jsx7(PresentedToolRow, { presentation, item }) : /* @__PURE__ */ jsx7(GenericRenderer, { item });
1399
+ return presentation ? /* @__PURE__ */ jsx8(PresentedToolRow, { presentation, item }) : /* @__PURE__ */ jsx8(GenericRenderer, { item });
1302
1400
  }
1303
1401
  function WebSearchRenderer({ item }) {
1304
1402
  const msg = useOpenGeniText();
1305
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: webSearchPresentation(msg, item), item });
1403
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: webSearchPresentation(msg, item), item });
1306
1404
  }
1307
1405
  function AskRenderer({ item }) {
1308
1406
  const msg = useOpenGeniText();
1309
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: askPresentation(msg, item), item });
1407
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: askPresentation(msg, item), item });
1310
1408
  }
1311
1409
  function RunOnRenderer({ item }) {
1312
1410
  const msg = useOpenGeniText();
1313
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: runOnPresentation(msg, item), item });
1411
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: runOnPresentation(msg, item), item });
1314
1412
  }
1315
1413
  function MachineRenderer({ item, loadRetainedScreenshot }) {
1316
1414
  const msg = useOpenGeniText();
1317
1415
  const presentation = machinePresentation(msg, item);
1318
1416
  const retained = mcpToolLeaf(item.name).startsWith("computer_") ? retainedScreenshotMetadata(item.output) : null;
1319
- if (!retained?.available) return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation, item });
1320
- return /* @__PURE__ */ jsx7(
1417
+ if (!retained?.available) return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation, item });
1418
+ return /* @__PURE__ */ jsx8(
1321
1419
  RetainedSessionImageDisclosure,
1322
1420
  {
1323
1421
  artifact: retained,
@@ -1325,7 +1423,7 @@ function MachineRenderer({ item, loadRetainedScreenshot }) {
1325
1423
  title: presentation.title,
1326
1424
  caption: presentation.title,
1327
1425
  noun: "screenshot",
1328
- icon: /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }),
1426
+ icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
1329
1427
  lightboxLabel: msg("timeline.toolRenderers.screenshot"),
1330
1428
  batched: null,
1331
1429
  failed: item.status === "failed",
@@ -1339,7 +1437,7 @@ function UnreviewedGenericRenderer({ item, loadRetainedScreenshot }) {
1339
1437
  const logo = useToolConnectorLogo(item.display);
1340
1438
  const { images, output } = retainedToolResultImages(item.output);
1341
1439
  if (images.length === 0 || item.status === "running") {
1342
- return /* @__PURE__ */ jsx7(PresentedToolRow, { presentation: toolRowPresentation(msg, item), item, logo });
1440
+ return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: toolRowPresentation(msg, item), item, logo });
1343
1441
  }
1344
1442
  const presentation = toolRowPresentation(msg, { ...item, output }, { details });
1345
1443
  const Icon = toolIcon(presentation.icon);
@@ -1352,14 +1450,14 @@ function UnreviewedGenericRenderer({ item, loadRetainedScreenshot }) {
1352
1450
  title: presentation.title,
1353
1451
  caption: presentation.title,
1354
1452
  noun: "image",
1355
- icon: /* @__PURE__ */ jsx7(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx7(Icon, { className: ICON_SIZE }) }),
1453
+ icon: /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(Icon, { className: ICON_SIZE }) }),
1356
1454
  lightboxLabel: presentation.title,
1357
1455
  batched: null,
1358
1456
  failed: presentation.failed ?? false,
1359
1457
  cancelled: presentation.cancelled ?? false,
1360
1458
  children: [
1361
- /* @__PURE__ */ jsx7(PresentedBody, { body: presentation.body }),
1362
- rest.map((image, index) => /* @__PURE__ */ jsx7(
1459
+ /* @__PURE__ */ jsx8(PresentedBody, { body: presentation.body }),
1460
+ rest.map((image, index) => /* @__PURE__ */ jsx8(
1363
1461
  RetainedSessionImageDisclosure,
1364
1462
  {
1365
1463
  artifact: image,
@@ -1367,7 +1465,7 @@ function UnreviewedGenericRenderer({ item, loadRetainedScreenshot }) {
1367
1465
  title: msg("timeline.toolRenderers.imageIndex", { index: index + 2 }),
1368
1466
  caption: `${presentation.title}, image ${index + 2}`,
1369
1467
  noun: "image",
1370
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
1468
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
1371
1469
  lightboxLabel: presentation.title,
1372
1470
  batched: null,
1373
1471
  failed: false,
@@ -1450,40 +1548,40 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
1450
1548
  const countSuffix = actions.length > 1 ? ` \xB7${actions.length}` : "";
1451
1549
  const isShot = action?.type === "screenshot";
1452
1550
  if (running) {
1453
- return /* @__PURE__ */ jsx7(
1551
+ return /* @__PURE__ */ jsx8(
1454
1552
  ActivityDisclosure,
1455
1553
  {
1456
- icon: isShot ? /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx7(MousePointer2Icon, { className: ICON_SIZE }),
1554
+ icon: isShot ? /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
1457
1555
  iconTone: "running",
1458
1556
  title: verb,
1459
1557
  running: true,
1460
- media: /* @__PURE__ */ jsx7(MediaSkeleton, {}),
1461
- children: /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
1558
+ media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
1559
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
1462
1560
  }
1463
1561
  );
1464
1562
  }
1465
1563
  if (readOnly) {
1466
- return /* @__PURE__ */ jsx7(
1564
+ return /* @__PURE__ */ jsx8(
1467
1565
  ActivityDisclosure,
1468
1566
  {
1469
- icon: /* @__PURE__ */ jsx7(MousePointer2Icon, { className: ICON_SIZE }),
1567
+ icon: /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
1470
1568
  iconTone: "failed",
1471
1569
  title: verb,
1472
1570
  chip: { tone: "bad", text: "read-only" },
1473
1571
  preview: "write actions disabled",
1474
- children: /* @__PURE__ */ jsx7(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.computerUseIsReadOnly") })
1572
+ children: /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.computerUseIsReadOnly") })
1475
1573
  }
1476
1574
  );
1477
1575
  }
1478
1576
  if (rejected) {
1479
- return /* @__PURE__ */ jsx7(
1577
+ return /* @__PURE__ */ jsx8(
1480
1578
  ActivityDisclosure,
1481
1579
  {
1482
- icon: /* @__PURE__ */ jsx7(LockIcon, { className: ICON_SIZE }),
1580
+ icon: /* @__PURE__ */ jsx8(LockIcon, { className: ICON_SIZE }),
1483
1581
  iconTone: "muted",
1484
1582
  title: verb,
1485
1583
  preview: msg("timeline.toolRenderers.approvalRejectedThisActionDid2"),
1486
- children: /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.approvalRejectedThisActionDid") })
1584
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.approvalRejectedThisActionDid") })
1487
1585
  }
1488
1586
  );
1489
1587
  }
@@ -1492,24 +1590,24 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
1492
1590
  if (retained) {
1493
1591
  if (!retained.available) {
1494
1592
  const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
1495
- return /* @__PURE__ */ jsx7(
1593
+ return /* @__PURE__ */ jsx8(
1496
1594
  ActivityDisclosure,
1497
1595
  {
1498
- icon: /* @__PURE__ */ jsx7(CameraOffIcon, { className: ICON_SIZE }),
1596
+ icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
1499
1597
  iconTone: isFailed ? "failed" : "muted",
1500
1598
  title: `${verb}${countSuffix} \xB7 ${state}`,
1501
1599
  failed: isFailed,
1502
1600
  cancelled: isCancelled,
1503
1601
  preview: `screenshot ${state}`,
1504
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
1505
- children: /* @__PURE__ */ jsx7(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
1602
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
1603
+ children: /* @__PURE__ */ jsx8(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
1506
1604
  state,
1507
1605
  replaceAll: retained.reason.replaceAll("_", " ")
1508
1606
  }) })
1509
1607
  }
1510
1608
  );
1511
1609
  }
1512
- return /* @__PURE__ */ jsx7(
1610
+ return /* @__PURE__ */ jsx8(
1513
1611
  RetainedSessionImageDisclosure,
1514
1612
  {
1515
1613
  artifact: retained,
@@ -1517,7 +1615,7 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
1517
1615
  title: `${verb}${countSuffix}`,
1518
1616
  caption: `${verb}${countSuffix}`,
1519
1617
  noun: "screenshot",
1520
- icon: /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }),
1618
+ icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
1521
1619
  lightboxLabel: msg("timeline.toolRenderers.screenshot"),
1522
1620
  batched,
1523
1621
  failed: isFailed,
@@ -1530,15 +1628,15 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
1530
1628
  return /* @__PURE__ */ jsxs4(
1531
1629
  ActivityDisclosure,
1532
1630
  {
1533
- icon: isShot ? /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx7(MousePointer2Icon, { className: ICON_SIZE }),
1631
+ icon: isShot ? /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
1534
1632
  iconTone: isFailed ? "failed" : "accent",
1535
1633
  title: `${verb}${countSuffix}`,
1536
1634
  failed: isFailed,
1537
1635
  cancelled: isCancelled,
1538
- media: /* @__PURE__ */ jsx7(Thumbnail, { src: shotUrl, caption }),
1636
+ media: /* @__PURE__ */ jsx8(Thumbnail, { src: shotUrl, caption }),
1539
1637
  children: [
1540
- /* @__PURE__ */ jsx7(ScreenshotFigure, { src: shotUrl, caption }),
1541
- batched ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
1638
+ /* @__PURE__ */ jsx8(ScreenshotFigure, { src: shotUrl, caption }),
1639
+ batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
1542
1640
  ]
1543
1641
  }
1544
1642
  );
@@ -1547,47 +1645,47 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
1547
1645
  return /* @__PURE__ */ jsxs4(
1548
1646
  ActivityDisclosure,
1549
1647
  {
1550
- icon: /* @__PURE__ */ jsx7(CameraOffIcon, { className: ICON_SIZE }),
1648
+ icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
1551
1649
  iconTone: isFailed ? "failed" : "muted",
1552
1650
  title: msg("timeline.toolRenderers.verbCountsuffixImageOmittedNot", { verb, countSuffix }),
1553
1651
  failed: isFailed,
1554
1652
  cancelled: isCancelled,
1555
1653
  preview: msg("timeline.toolRenderers.inlineImageOmittedNotRetained"),
1556
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
1654
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
1557
1655
  children: [
1558
- /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
1656
+ /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
1559
1657
  mediaType: omittedMedia.mediaType
1560
1658
  }) }),
1561
- batched ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
1659
+ batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
1562
1660
  ]
1563
1661
  }
1564
1662
  );
1565
1663
  }
1566
1664
  if (empty) {
1567
- return /* @__PURE__ */ jsx7(
1665
+ return /* @__PURE__ */ jsx8(
1568
1666
  ActivityDisclosure,
1569
1667
  {
1570
- icon: /* @__PURE__ */ jsx7(CameraOffIcon, { className: ICON_SIZE }),
1668
+ icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
1571
1669
  iconTone: isFailed ? "failed" : "muted",
1572
1670
  title: verb,
1573
1671
  failed: isFailed,
1574
1672
  cancelled: isCancelled,
1575
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
1576
- children: /* @__PURE__ */ jsx7(BodyNote, { children: isFailed ? msg("timeline.toolRenderers.computerCallFailedNoImage") : isCancelled ? msg("timeline.toolRenderers.computerCallInterruptedNoImage") : msg("timeline.toolRenderers.noImageTheSessionReturned") })
1673
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
1674
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: isFailed ? msg("timeline.toolRenderers.computerCallFailedNoImage") : isCancelled ? msg("timeline.toolRenderers.computerCallInterruptedNoImage") : msg("timeline.toolRenderers.noImageTheSessionReturned") })
1577
1675
  }
1578
1676
  );
1579
1677
  }
1580
- return /* @__PURE__ */ jsx7(
1678
+ return /* @__PURE__ */ jsx8(
1581
1679
  ActivityDisclosure,
1582
1680
  {
1583
- icon: /* @__PURE__ */ jsx7(MousePointer2Icon, { className: ICON_SIZE }),
1681
+ icon: /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
1584
1682
  iconTone: isFailed ? "failed" : "accent",
1585
1683
  title: verb,
1586
1684
  failed: isFailed,
1587
1685
  cancelled: isCancelled,
1588
1686
  preview: batched ?? void 0,
1589
1687
  expandable: batched != null,
1590
- children: batched ? /* @__PURE__ */ jsx7(BodyNote, { children: batched }) : null
1688
+ children: batched ? /* @__PURE__ */ jsx8(BodyNote, { children: batched }) : null
1591
1689
  }
1592
1690
  );
1593
1691
  }
@@ -1600,39 +1698,39 @@ function BrowserScreenshotRenderer(props) {
1600
1698
  const isFailed = item.status === "failed";
1601
1699
  const isCancelled = item.status === "cancelled";
1602
1700
  if (item.status === "running" && leaf === "browser_screenshot") {
1603
- return /* @__PURE__ */ jsx7(
1701
+ return /* @__PURE__ */ jsx8(
1604
1702
  ActivityDisclosure,
1605
1703
  {
1606
- icon: /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }),
1704
+ icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
1607
1705
  iconTone: "running",
1608
1706
  title,
1609
1707
  running: true,
1610
- media: /* @__PURE__ */ jsx7(MediaSkeleton, {}),
1611
- children: /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
1708
+ media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
1709
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
1612
1710
  }
1613
1711
  );
1614
1712
  }
1615
- if (!retained) return /* @__PURE__ */ jsx7(GenericRenderer, { ...props });
1713
+ if (!retained) return /* @__PURE__ */ jsx8(GenericRenderer, { ...props });
1616
1714
  if (!retained.available) {
1617
1715
  const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
1618
- return /* @__PURE__ */ jsx7(
1716
+ return /* @__PURE__ */ jsx8(
1619
1717
  ActivityDisclosure,
1620
1718
  {
1621
- icon: /* @__PURE__ */ jsx7(CameraOffIcon, { className: ICON_SIZE }),
1719
+ icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
1622
1720
  iconTone: isFailed ? "failed" : "muted",
1623
1721
  title: `${title} \xB7 ${state}`,
1624
1722
  failed: isFailed,
1625
1723
  cancelled: isCancelled,
1626
1724
  preview: `screenshot ${state}`,
1627
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
1628
- children: /* @__PURE__ */ jsx7(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
1725
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
1726
+ children: /* @__PURE__ */ jsx8(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
1629
1727
  state,
1630
1728
  replaceAll: retained.reason.replaceAll("_", " ")
1631
1729
  }) })
1632
1730
  }
1633
1731
  );
1634
1732
  }
1635
- return /* @__PURE__ */ jsx7(
1733
+ return /* @__PURE__ */ jsx8(
1636
1734
  RetainedSessionImageDisclosure,
1637
1735
  {
1638
1736
  artifact: retained,
@@ -1640,7 +1738,7 @@ function BrowserScreenshotRenderer(props) {
1640
1738
  title,
1641
1739
  caption: title,
1642
1740
  noun: "screenshot",
1643
- icon: /* @__PURE__ */ jsx7(CameraIcon, { className: ICON_SIZE }),
1741
+ icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
1644
1742
  lightboxLabel: msg("timeline.toolRenderers.browserScreenshot"),
1645
1743
  batched: null,
1646
1744
  failed: isFailed,
@@ -1651,7 +1749,7 @@ function BrowserScreenshotRenderer(props) {
1651
1749
  function RetainedSessionImageDisclosure(props) {
1652
1750
  const compact = useContext5(CompactActivityContext);
1653
1751
  if (compact) {
1654
- return /* @__PURE__ */ jsx7(
1752
+ return /* @__PURE__ */ jsx8(
1655
1753
  ActivityDisclosure,
1656
1754
  {
1657
1755
  icon: props.icon,
@@ -1662,7 +1760,7 @@ function RetainedSessionImageDisclosure(props) {
1662
1760
  }
1663
1761
  );
1664
1762
  }
1665
- return /* @__PURE__ */ jsx7(LoadedRetainedSessionImageDisclosure, { ...props });
1763
+ return /* @__PURE__ */ jsx8(LoadedRetainedSessionImageDisclosure, { ...props });
1666
1764
  }
1667
1765
  function LoadedRetainedSessionImageDisclosure({
1668
1766
  artifact,
@@ -1700,15 +1798,15 @@ function LoadedRetainedSessionImageDisclosure({
1700
1798
  failed,
1701
1799
  cancelled,
1702
1800
  preview: state.kind === "loading" ? msg("timeline.toolRenderers.loadingRetainedNoun", { noun }) : state.kind === "error" ? msg("timeline.toolRenderers.nounRetrievalFailed", { noun }) : state.kind === "unavailable" ? `${noun} ${state.label}` : void 0,
1703
- media: state.kind === "ready" ? /* @__PURE__ */ jsx7(Thumbnail, { ...figure }) : state.kind === "loading" ? /* @__PURE__ */ jsx7(MediaSkeleton, {}) : /* @__PURE__ */ jsx7(MediaEmpty, {}),
1801
+ media: state.kind === "ready" ? /* @__PURE__ */ jsx8(Thumbnail, { ...figure }) : state.kind === "loading" ? /* @__PURE__ */ jsx8(MediaSkeleton, {}) : /* @__PURE__ */ jsx8(MediaEmpty, {}),
1704
1802
  children: [
1705
- state.kind === "ready" ? /* @__PURE__ */ jsx7(ScreenshotFigure, { ...figure, showCaption: caption !== title }) : state.kind === "loading" ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.loadingTheRetainedNoun", { noun }) }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs4(BodyNote, { children: [
1803
+ state.kind === "ready" ? /* @__PURE__ */ jsx8(ScreenshotFigure, { ...figure, showCaption: caption !== title }) : state.kind === "loading" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.loadingTheRetainedNoun", { noun }) }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs4(BodyNote, { children: [
1706
1804
  noun === "screenshot" ? msg("timeline.toolRenderers.screenshot") : msg("timeline.toolRenderers.image"),
1707
1805
  " ",
1708
1806
  state.label,
1709
1807
  "."
1710
- ] }) : /* @__PURE__ */ jsx7(ImageRetrievalError, { noun, retry: state.retry }),
1711
- batched ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null,
1808
+ ] }) : /* @__PURE__ */ jsx8(ImageRetrievalError, { noun, retry: state.retry }),
1809
+ batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null,
1712
1810
  children
1713
1811
  ]
1714
1812
  }
@@ -1721,7 +1819,7 @@ function ImageRetrievalError({ noun = "image", retry }) {
1721
1819
  " ",
1722
1820
  msg("timeline.toolRenderers.retrievalFailed"),
1723
1821
  " ",
1724
- /* @__PURE__ */ jsx7(
1822
+ /* @__PURE__ */ jsx8(
1725
1823
  "button",
1726
1824
  {
1727
1825
  type: "button",
@@ -1740,21 +1838,21 @@ function GeneratedImageRenderer({ item, loadRetainedArtifact }) {
1740
1838
  const raw = item.raw && typeof item.raw === "object" && !Array.isArray(item.raw) ? item.raw : null;
1741
1839
  const receipt = generatedImageReceipt(item.output) ?? generatedImageReceipt(raw?.output);
1742
1840
  if (item.status === "running") {
1743
- return /* @__PURE__ */ jsx7(
1841
+ return /* @__PURE__ */ jsx8(
1744
1842
  ActivityDisclosure,
1745
1843
  {
1746
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
1844
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
1747
1845
  iconTone: "running",
1748
1846
  title: msg("timeline.toolRenderers.generatingImage"),
1749
1847
  running: true,
1750
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: truncatePreview(prompt, 72) || msg("timeline.toolRenderers.creating") }),
1751
- media: /* @__PURE__ */ jsx7(MediaSkeleton, {}),
1752
- children: prompt ? /* @__PURE__ */ jsx7(BodyNote, { children: prompt }) : null
1848
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: truncatePreview(prompt, 72) || msg("timeline.toolRenderers.creating") }),
1849
+ media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
1850
+ children: prompt ? /* @__PURE__ */ jsx8(BodyNote, { children: prompt }) : null
1753
1851
  }
1754
1852
  );
1755
1853
  }
1756
- if (!receipt) return /* @__PURE__ */ jsx7(GenericRenderer, { item });
1757
- return /* @__PURE__ */ jsx7(
1854
+ if (!receipt) return /* @__PURE__ */ jsx8(GenericRenderer, { item });
1855
+ return /* @__PURE__ */ jsx8(
1758
1856
  GeneratedImageDisclosure,
1759
1857
  {
1760
1858
  receipt,
@@ -1777,7 +1875,7 @@ function GeneratedVideoRenderer({ item }) {
1777
1875
  return /* @__PURE__ */ jsxs4(
1778
1876
  ActivityDisclosure,
1779
1877
  {
1780
- icon: /* @__PURE__ */ jsx7(VideoIcon, { className: ICON_SIZE }),
1878
+ icon: /* @__PURE__ */ jsx8(VideoIcon2, { className: ICON_SIZE }),
1781
1879
  iconTone: failed ? "failed" : running ? "running" : accepted ? "accent" : "muted",
1782
1880
  title: running ? msg("timeline.toolRenderers.startingVideoGeneration") : accepted ? msg("timeline.toolRenderers.generatingVideo") : msg("timeline.toolRenderers.generateVideo"),
1783
1881
  running,
@@ -1785,8 +1883,8 @@ function GeneratedVideoRenderer({ item }) {
1785
1883
  cancelled,
1786
1884
  preview: truncatePreview(prompt, 88) || (accepted ? msg("timeline.toolRenderers.requestAccepted") : void 0),
1787
1885
  children: [
1788
- prompt ? /* @__PURE__ */ jsx7(BodyNote, { children: prompt }) : null,
1789
- accepted ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.theVideoWillAppearHere") }) : item.output !== void 0 ? /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.output"), value: item.output }) : null
1886
+ prompt ? /* @__PURE__ */ jsx8(BodyNote, { children: prompt }) : null,
1887
+ accepted ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theVideoWillAppearHere") }) : item.output !== void 0 ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.output"), value: item.output }) : null
1790
1888
  ]
1791
1889
  }
1792
1890
  );
@@ -1798,24 +1896,24 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
1798
1896
  const receipt = parseSandboxFileArtifactReceipt(output);
1799
1897
  const [downloadState, setDownloadState] = useState7("idle");
1800
1898
  if (item.status === "running") {
1801
- return /* @__PURE__ */ jsx7(
1899
+ return /* @__PURE__ */ jsx8(
1802
1900
  ActivityDisclosure,
1803
1901
  {
1804
- icon: /* @__PURE__ */ jsx7(DownloadIcon, { className: ICON_SIZE }),
1902
+ icon: /* @__PURE__ */ jsx8(DownloadIcon2, { className: ICON_SIZE }),
1805
1903
  iconTone: "running",
1806
1904
  title: msg("timeline.toolRenderers.publishingFile"),
1807
1905
  running: true,
1808
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.retainingWorkspaceBytes") })
1906
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.retainingWorkspaceBytes") })
1809
1907
  }
1810
1908
  );
1811
1909
  }
1812
1910
  if (!receipt || isError || item.status === "failed") {
1813
- return /* @__PURE__ */ jsx7(GenericRenderer, { item });
1911
+ return /* @__PURE__ */ jsx8(GenericRenderer, { item });
1814
1912
  }
1815
1913
  const workspaceId = /^\/v1\/workspaces\/([0-9a-f-]+)\/artifacts\//.exec(
1816
1914
  receipt.artifact.retrieval.path
1817
1915
  )?.[1];
1818
- const openLink = workspaceId ? /* @__PURE__ */ jsx7(
1916
+ const openLink = workspaceId ? /* @__PURE__ */ jsx8(
1819
1917
  "a",
1820
1918
  {
1821
1919
  href: `/workspaces/${workspaceId}/artifacts/files/${receipt.artifact.artifactId}`,
@@ -1864,7 +1962,7 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
1864
1962
  disabled: downloadState === "loading",
1865
1963
  className: "inline-flex items-center gap-1.5 rounded-og-sm border border-og-border px-2.5 py-1.5 text-og-sm font-medium text-og-fg transition-colors hover:border-og-border-strong hover:bg-og-surface-2 disabled:cursor-wait disabled:opacity-60",
1866
1964
  children: [
1867
- /* @__PURE__ */ jsx7(DownloadIcon, { className: "size-3.5" }),
1965
+ /* @__PURE__ */ jsx8(DownloadIcon2, { className: "size-3.5" }),
1868
1966
  downloadState === "loading" ? msg("timeline.toolRenderers.preparing") : downloadState === "error" ? msg("timeline.toolRenderers.retryDownload") : msg("timeline.toolRenderers.download")
1869
1967
  ]
1870
1968
  }
@@ -1878,7 +1976,7 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
1878
1976
  title: msg("timeline.toolRenderers.publishedFilename", { filename: receipt.filename }),
1879
1977
  caption: receipt.filename,
1880
1978
  noun: "image",
1881
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
1979
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
1882
1980
  lightboxLabel: msg("timeline.toolRenderers.image"),
1883
1981
  batched: null,
1884
1982
  failed: false,
@@ -1895,7 +1993,7 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
1895
1993
  return /* @__PURE__ */ jsxs4(
1896
1994
  ActivityDisclosure,
1897
1995
  {
1898
- icon: /* @__PURE__ */ jsx7(DownloadIcon, { className: ICON_SIZE }),
1996
+ icon: /* @__PURE__ */ jsx8(DownloadIcon2, { className: ICON_SIZE }),
1899
1997
  iconTone: "accent",
1900
1998
  title: msg("timeline.toolRenderers.publishedFilename", { filename: receipt.filename }),
1901
1999
  defaultOpen: true,
@@ -1903,7 +2001,7 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
1903
2001
  children: [
1904
2002
  downloadButton,
1905
2003
  openLink,
1906
- plain ? null : isPatchFilename(receipt.filename) ? /* @__PURE__ */ jsx7(
2004
+ plain ? null : isPatchFilename(receipt.filename) ? /* @__PURE__ */ jsx8(
1907
2005
  PatchApplyCommand,
1908
2006
  {
1909
2007
  artifact: receipt.artifact,
@@ -1950,7 +2048,7 @@ function SiteOpenLink({ receipt }) {
1950
2048
  });
1951
2049
  const destination = resolution?.href ? defaultUrlTransform(resolution.href) : "";
1952
2050
  if (destination) {
1953
- return /* @__PURE__ */ jsx7(
2051
+ return /* @__PURE__ */ jsx8(
1954
2052
  "a",
1955
2053
  {
1956
2054
  href: destination,
@@ -1964,7 +2062,7 @@ function SiteOpenLink({ receipt }) {
1964
2062
  }
1965
2063
  if (resolution?.open) {
1966
2064
  const open = resolution.open;
1967
- return /* @__PURE__ */ jsx7(
2065
+ return /* @__PURE__ */ jsx8(
1968
2066
  "button",
1969
2067
  {
1970
2068
  type: "button",
@@ -1991,26 +2089,26 @@ function SiteArtifactRenderer({ item }) {
1991
2089
  const leaf = mcpToolLeaf(item.name);
1992
2090
  const publishingExisting = leaf === "artifacts_publish";
1993
2091
  if (item.status === "running") {
1994
- return /* @__PURE__ */ jsx7(
2092
+ return /* @__PURE__ */ jsx8(
1995
2093
  ActivityDisclosure,
1996
2094
  {
1997
- icon: /* @__PURE__ */ jsx7(PanelsTopLeftIcon, { className: ICON_SIZE }),
2095
+ icon: /* @__PURE__ */ jsx8(PanelsTopLeftIcon2, { className: ICON_SIZE }),
1998
2096
  iconTone: "running",
1999
2097
  title: publishingExisting ? msg("timeline.toolRenderers.publishingSiteUpdate") : msg("timeline.toolRenderers.publishingSite"),
2000
2098
  running: true,
2001
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.retainingSourceAndCompiledHtml") })
2099
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.retainingSourceAndCompiledHtml") })
2002
2100
  }
2003
2101
  );
2004
2102
  }
2005
2103
  const receipt = publishedSiteReceipt(item.output);
2006
- if (!receipt || item.status === "failed") return /* @__PURE__ */ jsx7(GenericRenderer, { item });
2007
- return /* @__PURE__ */ jsx7(
2104
+ if (!receipt || item.status === "failed") return /* @__PURE__ */ jsx8(GenericRenderer, { item });
2105
+ return /* @__PURE__ */ jsx8(
2008
2106
  ActivityDisclosure,
2009
2107
  {
2010
- icon: /* @__PURE__ */ jsx7(PanelsTopLeftIcon, { className: ICON_SIZE }),
2108
+ icon: /* @__PURE__ */ jsx8(PanelsTopLeftIcon2, { className: ICON_SIZE }),
2011
2109
  iconTone: "accent",
2012
2110
  title: publishingExisting ? msg("timeline.toolRenderers.updatedTitle", { title: receipt.title }) : msg("timeline.toolRenderers.publishedTitle", { title: receipt.title }),
2013
- media: /* @__PURE__ */ jsx7(SiteOpenLink, { receipt }),
2111
+ media: /* @__PURE__ */ jsx8(SiteOpenLink, { receipt }),
2014
2112
  children: /* @__PURE__ */ jsxs4(BodyNote, { children: [
2015
2113
  msg("timeline.toolRenderers.versionRevisionIsLive", { revision: receipt.revision }),
2016
2114
  receipt.replayed ? ` ${msg("timeline.toolRenderers.replayedFromTheOriginalPublication")}` : "."
@@ -2036,14 +2134,14 @@ function GeneratedImageDisclosure({
2036
2134
  return /* @__PURE__ */ jsxs4(
2037
2135
  ActivityDisclosure,
2038
2136
  {
2039
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2137
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2040
2138
  iconTone: failed ? "failed" : state.kind === "ready" ? "accent" : "muted",
2041
2139
  title,
2042
2140
  defaultOpen: !failed && !cancelled,
2043
2141
  failed,
2044
2142
  cancelled,
2045
2143
  preview: state.kind === "loading" ? msg("timeline.toolRenderers.loadingImage") : state.kind === "error" ? msg("timeline.toolRenderers.imageRetrievalFailed") : state.kind === "unavailable" ? `image ${state.label}` : truncatePreview(prompt, 88) || `${dimensions.width}\xD7${dimensions.height}`,
2046
- media: state.kind === "ready" ? /* @__PURE__ */ jsx7(
2144
+ media: state.kind === "ready" ? /* @__PURE__ */ jsx8(
2047
2145
  Thumbnail,
2048
2146
  {
2049
2147
  src: state.url,
@@ -2052,9 +2150,9 @@ function GeneratedImageDisclosure({
2052
2150
  expandLabel: msg("timeline.toolRenderers.expandGeneratedImage"),
2053
2151
  lightboxLabel: msg("timeline.toolRenderers.generatedImage")
2054
2152
  }
2055
- ) : state.kind === "loading" ? /* @__PURE__ */ jsx7(MediaSkeleton, {}) : /* @__PURE__ */ jsx7(MediaEmpty, {}),
2153
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsx8(MediaSkeleton, {}) : /* @__PURE__ */ jsx8(MediaEmpty, {}),
2056
2154
  children: [
2057
- state.kind === "ready" ? /* @__PURE__ */ jsx7(
2155
+ state.kind === "ready" ? /* @__PURE__ */ jsx8(
2058
2156
  ScreenshotFigure,
2059
2157
  {
2060
2158
  src: state.url,
@@ -2063,7 +2161,7 @@ function GeneratedImageDisclosure({
2063
2161
  expandLabel: msg("timeline.toolRenderers.expandGeneratedImage"),
2064
2162
  lightboxLabel: msg("timeline.toolRenderers.generatedImage")
2065
2163
  }
2066
- ) : state.kind === "loading" ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.loadingTheGeneratedImage") }) : state.kind === "unavailable" ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.imageLabel", { label: state.label }) }) : /* @__PURE__ */ jsx7(ImageRetrievalError, { retry: state.retry }),
2164
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.loadingTheGeneratedImage") }) : state.kind === "unavailable" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.imageLabel", { label: state.label }) }) : /* @__PURE__ */ jsx8(ImageRetrievalError, { retry: state.retry }),
2067
2165
  /* @__PURE__ */ jsxs4(BodyNote, { children: [
2068
2166
  dimensions.width,
2069
2167
  "\xD7",
@@ -2095,16 +2193,16 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2095
2193
  const retained = retainedScreenshotMetadata(out);
2096
2194
  const omittedMedia = mediaPreviewFact(out);
2097
2195
  if (item.status === "running") {
2098
- return /* @__PURE__ */ jsx7(
2196
+ return /* @__PURE__ */ jsx8(
2099
2197
  ActivityDisclosure,
2100
2198
  {
2101
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2199
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2102
2200
  iconTone: "running",
2103
2201
  title: msg("timeline.toolRenderers.viewPathbasename", { pathBasename: pathBasename(path) }),
2104
2202
  running: true,
2105
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.reading") }),
2106
- media: /* @__PURE__ */ jsx7(MediaSkeleton, {}),
2107
- children: /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.readingImage") })
2203
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.reading") }),
2204
+ media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
2205
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.readingImage") })
2108
2206
  }
2109
2207
  );
2110
2208
  }
@@ -2116,24 +2214,24 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2116
2214
  });
2117
2215
  if (!retained.available) {
2118
2216
  const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
2119
- return /* @__PURE__ */ jsx7(
2217
+ return /* @__PURE__ */ jsx8(
2120
2218
  ActivityDisclosure,
2121
2219
  {
2122
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2220
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2123
2221
  iconTone: viewFailed ? "failed" : "muted",
2124
2222
  title: `${title} \xB7 ${state}`,
2125
2223
  failed: viewFailed,
2126
2224
  cancelled: viewCancelled,
2127
2225
  preview: `image ${state}`,
2128
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
2129
- children: /* @__PURE__ */ jsx7(BodyNote, { tone: viewFailed ? "error" : void 0, children: msg("timeline.toolRenderers.imageStateReplaceall", {
2226
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
2227
+ children: /* @__PURE__ */ jsx8(BodyNote, { tone: viewFailed ? "error" : void 0, children: msg("timeline.toolRenderers.imageStateReplaceall", {
2130
2228
  state,
2131
2229
  replaceAll: retained.reason.replaceAll("_", " ")
2132
2230
  }) })
2133
2231
  }
2134
2232
  );
2135
2233
  }
2136
- return /* @__PURE__ */ jsx7(
2234
+ return /* @__PURE__ */ jsx8(
2137
2235
  RetainedSessionImageDisclosure,
2138
2236
  {
2139
2237
  artifact: retained,
@@ -2141,7 +2239,7 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2141
2239
  title,
2142
2240
  caption: path || title,
2143
2241
  noun: "image",
2144
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2242
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2145
2243
  lightboxLabel: msg("timeline.toolRenderers.image"),
2146
2244
  batched: null,
2147
2245
  failed: viewFailed,
@@ -2152,10 +2250,10 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2152
2250
  const errMatch = VIEW_IMAGE_ERRORS(msg).find((p) => text.includes(p));
2153
2251
  if (errMatch) {
2154
2252
  const tooBig = text.includes("exceeded the allowed size");
2155
- return /* @__PURE__ */ jsx7(
2253
+ return /* @__PURE__ */ jsx8(
2156
2254
  ActivityDisclosure,
2157
2255
  {
2158
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2256
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2159
2257
  iconTone: "failed",
2160
2258
  title: msg("timeline.toolRenderers.viewPathbasename", { pathBasename: pathBasename(path) }),
2161
2259
  chip: {
@@ -2163,15 +2261,15 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2163
2261
  text: tooBig ? msg("timeline.toolRenderers.tooLarge") : msg("timeline.chip.error")
2164
2262
  },
2165
2263
  preview: text,
2166
- children: /* @__PURE__ */ jsx7(BodyNote, { tone: "error", children: text })
2264
+ children: /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: text })
2167
2265
  }
2168
2266
  );
2169
2267
  }
2170
2268
  if (text.startsWith("OpenAI file reference:")) {
2171
- return /* @__PURE__ */ jsx7(
2269
+ return /* @__PURE__ */ jsx8(
2172
2270
  ActivityDisclosure,
2173
2271
  {
2174
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2272
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2175
2273
  iconTone: viewFailed ? "failed" : "muted",
2176
2274
  title: msg("timeline.toolRenderers.viewedPathbasename", {
2177
2275
  pathBasename: pathBasename(path)
@@ -2179,15 +2277,15 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2179
2277
  failed: viewFailed,
2180
2278
  cancelled: viewCancelled,
2181
2279
  preview: path,
2182
- children: /* @__PURE__ */ jsx7(BodyNote, { children: text })
2280
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: text })
2183
2281
  }
2184
2282
  );
2185
2283
  }
2186
2284
  if (omittedMedia) {
2187
- return /* @__PURE__ */ jsx7(
2285
+ return /* @__PURE__ */ jsx8(
2188
2286
  ActivityDisclosure,
2189
2287
  {
2190
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2288
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2191
2289
  iconTone: viewFailed ? "failed" : "muted",
2192
2290
  title: msg("timeline.toolRenderers.viewedPathbasenameImageOmittedNot", {
2193
2291
  pathBasename: pathBasename(path)
@@ -2195,18 +2293,18 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2195
2293
  failed: viewFailed,
2196
2294
  cancelled: viewCancelled,
2197
2295
  preview: msg("timeline.toolRenderers.inlineImageOmittedNotRetained"),
2198
- media: /* @__PURE__ */ jsx7(MediaEmpty, {}),
2199
- children: /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
2296
+ media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
2297
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
2200
2298
  mediaType: omittedMedia.mediaType
2201
2299
  }) })
2202
2300
  }
2203
2301
  );
2204
2302
  }
2205
2303
  if (text.includes("No image data")) {
2206
- return /* @__PURE__ */ jsx7(
2304
+ return /* @__PURE__ */ jsx8(
2207
2305
  ActivityDisclosure,
2208
2306
  {
2209
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2307
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2210
2308
  iconTone: viewFailed ? "failed" : "muted",
2211
2309
  title: msg("timeline.toolRenderers.viewedPathbasename", {
2212
2310
  pathBasename: pathBasename(path)
@@ -2214,45 +2312,45 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
2214
2312
  failed: viewFailed,
2215
2313
  cancelled: viewCancelled,
2216
2314
  preview: msg("timeline.toolRenderers.noImage"),
2217
- children: /* @__PURE__ */ jsx7(BodyNote, { children: viewFailed ? msg("timeline.toolRenderers.viewImageFailedNoImage") : viewCancelled ? msg("timeline.toolRenderers.viewImageInterrupted") : msg("timeline.toolRenderers.noImageTheSandboxSession") })
2315
+ children: /* @__PURE__ */ jsx8(BodyNote, { children: viewFailed ? msg("timeline.toolRenderers.viewImageFailedNoImage") : viewCancelled ? msg("timeline.toolRenderers.viewImageInterrupted") : msg("timeline.toolRenderers.noImageTheSandboxSession") })
2218
2316
  }
2219
2317
  );
2220
2318
  }
2221
2319
  if (text.startsWith("data:")) {
2222
- return /* @__PURE__ */ jsx7(
2320
+ return /* @__PURE__ */ jsx8(
2223
2321
  ActivityDisclosure,
2224
2322
  {
2225
- icon: /* @__PURE__ */ jsx7(ImageIcon, { className: ICON_SIZE }),
2323
+ icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
2226
2324
  iconTone: viewFailed ? "failed" : "accent",
2227
2325
  title: msg("timeline.toolRenderers.viewedPathbasename", {
2228
2326
  pathBasename: pathBasename(path)
2229
2327
  }),
2230
2328
  failed: viewFailed,
2231
2329
  cancelled: viewCancelled,
2232
- media: /* @__PURE__ */ jsx7(Thumbnail, { src: text, caption: path, alt: path }),
2233
- children: /* @__PURE__ */ jsx7(ScreenshotFigure, { src: text, caption: path, alt: path })
2330
+ media: /* @__PURE__ */ jsx8(Thumbnail, { src: text, caption: path, alt: path }),
2331
+ children: /* @__PURE__ */ jsx8(ScreenshotFigure, { src: text, caption: path, alt: path })
2234
2332
  }
2235
2333
  );
2236
2334
  }
2237
- return /* @__PURE__ */ jsx7(GenericRenderer, { item });
2335
+ return /* @__PURE__ */ jsx8(GenericRenderer, { item });
2238
2336
  }
2239
2337
  function SecretSetRenderer(props) {
2240
- return useToolDetails() === "plain" ? /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx7(FullSecretSetRenderer, { ...props });
2338
+ return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullSecretSetRenderer, { ...props });
2241
2339
  }
2242
2340
  function FullSecretSetRenderer({ item }) {
2243
2341
  const msg = useOpenGeniText();
2244
2342
  const args = parseToolArgs(item.arguments);
2245
2343
  const name = typeof args.name === "string" ? args.name : "variable";
2246
2344
  if (item.status === "running") {
2247
- return /* @__PURE__ */ jsx7(
2345
+ return /* @__PURE__ */ jsx8(
2248
2346
  ActivityDisclosure,
2249
2347
  {
2250
- icon: /* @__PURE__ */ jsx7(KeyRoundIcon, { className: ICON_SIZE }),
2348
+ icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
2251
2349
  iconTone: "running",
2252
2350
  title: msg("timeline.toolRenderers.setName", { name }),
2253
2351
  running: true,
2254
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.setting") }),
2255
- children: /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2352
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.setting") }),
2353
+ children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2256
2354
  }
2257
2355
  );
2258
2356
  }
@@ -2261,14 +2359,14 @@ function FullSecretSetRenderer({ item }) {
2261
2359
  return /* @__PURE__ */ jsxs4(
2262
2360
  ActivityDisclosure,
2263
2361
  {
2264
- icon: /* @__PURE__ */ jsx7(KeyRoundIcon, { className: ICON_SIZE }),
2362
+ icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
2265
2363
  iconTone: "failed",
2266
2364
  title: msg("timeline.toolRenderers.setName", { name }),
2267
2365
  failed: true,
2268
2366
  preview: errorText ?? msg("timeline.toolRenderers.variableWriteFailed"),
2269
2367
  children: [
2270
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2271
- errorText ? /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: errorText, failed: true }) : /* @__PURE__ */ jsx7(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.theToolCallFailedWith") })
2368
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2369
+ errorText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: errorText, failed: true }) : /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.theToolCallFailedWith") })
2272
2370
  ]
2273
2371
  }
2274
2372
  );
@@ -2276,25 +2374,25 @@ function FullSecretSetRenderer({ item }) {
2276
2374
  return /* @__PURE__ */ jsxs4(
2277
2375
  ActivityDisclosure,
2278
2376
  {
2279
- icon: /* @__PURE__ */ jsx7(KeyRoundIcon, { className: ICON_SIZE }),
2377
+ icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
2280
2378
  iconTone: "muted",
2281
2379
  title: msg("timeline.toolRenderers.setName", { name }),
2282
2380
  cancelled: item.status === "cancelled",
2283
2381
  preview: "exact value preserved",
2284
2382
  children: [
2285
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2286
- /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.theConfiguredValueIsPreserved") })
2383
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2384
+ /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theConfiguredValueIsPreserved") })
2287
2385
  ]
2288
2386
  }
2289
2387
  );
2290
2388
  }
2291
2389
  function ToolSearchRenderer(props) {
2292
- return useToolDetails() === "plain" ? /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx7(FullToolSearchRenderer, { ...props });
2390
+ return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullToolSearchRenderer, { ...props });
2293
2391
  }
2294
2392
  function FullToolSearchRenderer({ item }) {
2295
2393
  const msg = useOpenGeniText();
2296
2394
  const query = toolSearchQuery(item);
2297
- const icon = /* @__PURE__ */ jsx7(PackageSearchIcon, { className: ICON_SIZE });
2395
+ const icon = /* @__PURE__ */ jsx8(PackageSearchIcon2, { className: ICON_SIZE });
2298
2396
  const running = item.status === "running";
2299
2397
  const queryPreview = query ? truncatePreview(query, 64) : "";
2300
2398
  if (running) {
@@ -2305,10 +2403,10 @@ function FullToolSearchRenderer({ item }) {
2305
2403
  iconTone: "running",
2306
2404
  title: msg("timeline.toolRenderers.lookingUpTools"),
2307
2405
  running: true,
2308
- preview: queryPreview ? /* @__PURE__ */ jsx7(RunningPreview, { children: queryPreview }) : /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.matchingCapabilities") }),
2406
+ preview: queryPreview ? /* @__PURE__ */ jsx8(RunningPreview, { children: queryPreview }) : /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.matchingCapabilities") }),
2309
2407
  children: [
2310
- query ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2311
- /* @__PURE__ */ jsx7(
2408
+ query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2409
+ /* @__PURE__ */ jsx8(
2312
2410
  PayloadBlock,
2313
2411
  {
2314
2412
  label: msg("timeline.toolRenderers.arguments"),
@@ -2330,15 +2428,15 @@ function FullToolSearchRenderer({ item }) {
2330
2428
  failed: true,
2331
2429
  preview: truncatePreview(outText, 80) || queryPreview || msg("timeline.toolRenderers.lookupFailed"),
2332
2430
  children: [
2333
- query ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2334
- /* @__PURE__ */ jsx7(
2431
+ query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2432
+ /* @__PURE__ */ jsx8(
2335
2433
  PayloadBlock,
2336
2434
  {
2337
2435
  label: msg("timeline.toolRenderers.arguments"),
2338
2436
  value: parseToolArgs(item.arguments)
2339
2437
  }
2340
2438
  ),
2341
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2439
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2342
2440
  ]
2343
2441
  }
2344
2442
  );
@@ -2354,11 +2452,11 @@ function FullToolSearchRenderer({ item }) {
2354
2452
  cancelled: item.status === "cancelled",
2355
2453
  preview,
2356
2454
  children: [
2357
- query ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2455
+ query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
2358
2456
  tools && tools.length > 0 ? /* @__PURE__ */ jsxs4("ul", { className: "grid gap-1.5", children: [
2359
2457
  tools.slice(0, 12).map((tool) => /* @__PURE__ */ jsxs4("li", { className: "flex min-w-0 items-baseline gap-2", children: [
2360
- tool.source ? /* @__PURE__ */ jsx7("span", { className: "shrink-0 text-og-xs text-og-fg-subtle", children: tool.source }) : null,
2361
- /* @__PURE__ */ jsx7("span", { className: "truncate font-mono text-og-sm text-og-fg", children: tool.leaf })
2458
+ tool.source ? /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-og-xs text-og-fg-subtle", children: tool.source }) : null,
2459
+ /* @__PURE__ */ jsx8("span", { className: "truncate font-mono text-og-sm text-og-fg", children: tool.leaf })
2362
2460
  ] }, tool.name)),
2363
2461
  tools.length > 12 ? /* @__PURE__ */ jsxs4("li", { className: "text-og-xs text-og-fg-muted", children: [
2364
2462
  "+",
@@ -2366,21 +2464,21 @@ function FullToolSearchRenderer({ item }) {
2366
2464
  " ",
2367
2465
  msg("timeline.toolRenderers.more")
2368
2466
  ] }) : null
2369
- ] }) : tools && tools.length === 0 ? /* @__PURE__ */ jsx7(BodyNote, { children: msg("timeline.toolRenderers.noDeferredToolsMatchedThis") }) : null,
2370
- /* @__PURE__ */ jsx7(
2467
+ ] }) : tools && tools.length === 0 ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.noDeferredToolsMatchedThis") }) : null,
2468
+ /* @__PURE__ */ jsx8(
2371
2469
  PayloadBlock,
2372
2470
  {
2373
2471
  label: msg("timeline.toolRenderers.arguments"),
2374
2472
  value: parseToolArgs(item.arguments)
2375
2473
  }
2376
2474
  ),
2377
- tools == null && outText ? /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
2475
+ tools == null && outText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
2378
2476
  ]
2379
2477
  }
2380
2478
  );
2381
2479
  }
2382
2480
  function DocsSearchRenderer(props) {
2383
- return useToolDetails() === "plain" ? /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx7(FullDocsSearchRenderer, { ...props });
2481
+ return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullDocsSearchRenderer, { ...props });
2384
2482
  }
2385
2483
  function FullDocsSearchRenderer({ item }) {
2386
2484
  const msg = useOpenGeniText();
@@ -2391,15 +2489,15 @@ function FullDocsSearchRenderer({ item }) {
2391
2489
  }) : toolDisplayName(msg, item.name, item.display);
2392
2490
  const running = item.status === "running";
2393
2491
  if (running) {
2394
- return /* @__PURE__ */ jsx7(
2492
+ return /* @__PURE__ */ jsx8(
2395
2493
  ActivityDisclosure,
2396
2494
  {
2397
- icon: /* @__PURE__ */ jsx7(FileSearchIcon, { className: ICON_SIZE }),
2495
+ icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
2398
2496
  iconTone: "running",
2399
2497
  title,
2400
2498
  running: true,
2401
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.searching") }),
2402
- children: /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2499
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.searching") }),
2500
+ children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2403
2501
  }
2404
2502
  );
2405
2503
  }
@@ -2408,14 +2506,14 @@ function FullDocsSearchRenderer({ item }) {
2408
2506
  return /* @__PURE__ */ jsxs4(
2409
2507
  ActivityDisclosure,
2410
2508
  {
2411
- icon: /* @__PURE__ */ jsx7(FileSearchIcon, { className: ICON_SIZE }),
2509
+ icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
2412
2510
  iconTone: "failed",
2413
2511
  title,
2414
2512
  failed: true,
2415
2513
  preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.searchFailed"),
2416
2514
  children: [
2417
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2418
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2515
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2516
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2419
2517
  ]
2420
2518
  }
2421
2519
  );
@@ -2425,24 +2523,24 @@ function FullDocsSearchRenderer({ item }) {
2425
2523
  return /* @__PURE__ */ jsxs4(
2426
2524
  ActivityDisclosure,
2427
2525
  {
2428
- icon: /* @__PURE__ */ jsx7(FileSearchIcon, { className: ICON_SIZE }),
2526
+ icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
2429
2527
  iconTone: "muted",
2430
2528
  title,
2431
2529
  cancelled: item.status === "cancelled",
2432
2530
  preview,
2433
2531
  children: [
2434
- hits && hits.length > 0 ? /* @__PURE__ */ jsx7("ul", { className: "grid gap-2", children: hits.slice(0, 8).map((hit) => /* @__PURE__ */ jsxs4("li", { className: "min-w-0", children: [
2435
- /* @__PURE__ */ jsx7("div", { className: "truncate text-og-sm font-medium text-og-fg", children: hit.title }),
2436
- hit.snippet ? /* @__PURE__ */ jsx7("div", { className: "mt-0.5 line-clamp-2 text-og-xs text-og-fg-muted", children: hit.snippet }) : null
2532
+ hits && hits.length > 0 ? /* @__PURE__ */ jsx8("ul", { className: "grid gap-2", children: hits.slice(0, 8).map((hit) => /* @__PURE__ */ jsxs4("li", { className: "min-w-0", children: [
2533
+ /* @__PURE__ */ jsx8("div", { className: "truncate text-og-sm font-medium text-og-fg", children: hit.title }),
2534
+ hit.snippet ? /* @__PURE__ */ jsx8("div", { className: "mt-0.5 line-clamp-2 text-og-xs text-og-fg-muted", children: hit.snippet }) : null
2437
2535
  ] }, `${hit.title}\0${hit.snippet}`)) }) : null,
2438
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2439
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
2536
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2537
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
2440
2538
  ]
2441
2539
  }
2442
2540
  );
2443
2541
  }
2444
2542
  function SetSessionTitleRenderer(props) {
2445
- return useToolDetails() === "plain" ? /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx7(FullSetSessionTitleRenderer, { ...props });
2543
+ return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullSetSessionTitleRenderer, { ...props });
2446
2544
  }
2447
2545
  function FullSetSessionTitleRenderer({ item }) {
2448
2546
  const msg = useOpenGeniText();
@@ -2450,17 +2548,17 @@ function FullSetSessionTitleRenderer({ item }) {
2450
2548
  const titleArg = typeof args.title === "string" ? args.title.trim() : "";
2451
2549
  const display = toolDisplayName(msg, item.name, item.display);
2452
2550
  const previewTitle = titleArg ? truncatePreview(titleArg, 72) : "";
2453
- const icon = /* @__PURE__ */ jsx7(MessagesSquareIcon, { className: ICON_SIZE });
2551
+ const icon = /* @__PURE__ */ jsx8(MessagesSquareIcon2, { className: ICON_SIZE });
2454
2552
  if (item.status === "running") {
2455
- return /* @__PURE__ */ jsx7(
2553
+ return /* @__PURE__ */ jsx8(
2456
2554
  ActivityDisclosure,
2457
2555
  {
2458
2556
  icon,
2459
2557
  iconTone: "running",
2460
2558
  title: display,
2461
2559
  running: true,
2462
- preview: previewTitle ? /* @__PURE__ */ jsx7(RunningPreview, { children: previewTitle }) : /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.settingTitle") }),
2463
- children: /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2560
+ preview: previewTitle ? /* @__PURE__ */ jsx8(RunningPreview, { children: previewTitle }) : /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.settingTitle") }),
2561
+ children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2464
2562
  }
2465
2563
  );
2466
2564
  }
@@ -2475,8 +2573,8 @@ function FullSetSessionTitleRenderer({ item }) {
2475
2573
  failed: true,
2476
2574
  preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.renameFailed"),
2477
2575
  children: [
2478
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2479
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2576
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2577
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2480
2578
  ]
2481
2579
  }
2482
2580
  );
@@ -2500,14 +2598,14 @@ function FullSetSessionTitleRenderer({ item }) {
2500
2598
  cancelled: item.status === "cancelled",
2501
2599
  preview: item.status === "cancelled" ? void 0 : settledTitle || void 0,
2502
2600
  children: [
2503
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2504
- outText ? /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
2601
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
2602
+ outText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
2505
2603
  ]
2506
2604
  }
2507
2605
  );
2508
2606
  }
2509
2607
  function MemoryProposeRenderer(props) {
2510
- return useToolDetails() === "plain" ? /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx7(FullMemoryProposeRenderer, { ...props });
2608
+ return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullMemoryProposeRenderer, { ...props });
2511
2609
  }
2512
2610
  function FullMemoryProposeRenderer({ item }) {
2513
2611
  const msg = useOpenGeniText();
@@ -2516,15 +2614,15 @@ function FullMemoryProposeRenderer({ item }) {
2516
2614
  const title = msg("timeline.toolRenderers.proposeMemory");
2517
2615
  const running = item.status === "running";
2518
2616
  if (running) {
2519
- return /* @__PURE__ */ jsx7(
2617
+ return /* @__PURE__ */ jsx8(
2520
2618
  ActivityDisclosure,
2521
2619
  {
2522
- icon: /* @__PURE__ */ jsx7(BrainCircuitIcon2, { className: ICON_SIZE }),
2620
+ icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
2523
2621
  iconTone: "running",
2524
2622
  title,
2525
2623
  running: true,
2526
- preview: /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.proposing") }),
2527
- children: /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2624
+ preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.proposing") }),
2625
+ children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
2528
2626
  }
2529
2627
  );
2530
2628
  }
@@ -2533,14 +2631,14 @@ function FullMemoryProposeRenderer({ item }) {
2533
2631
  return /* @__PURE__ */ jsxs4(
2534
2632
  ActivityDisclosure,
2535
2633
  {
2536
- icon: /* @__PURE__ */ jsx7(BrainCircuitIcon2, { className: ICON_SIZE }),
2634
+ icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
2537
2635
  iconTone: "failed",
2538
2636
  title,
2539
2637
  failed: true,
2540
2638
  preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.proposeFailed"),
2541
2639
  children: [
2542
- text ? /* @__PURE__ */ jsx7(BodyNote, { children: text }) : null,
2543
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2640
+ text ? /* @__PURE__ */ jsx8(BodyNote, { children: text }) : null,
2641
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
2544
2642
  ]
2545
2643
  }
2546
2644
  );
@@ -2548,22 +2646,22 @@ function FullMemoryProposeRenderer({ item }) {
2548
2646
  return /* @__PURE__ */ jsxs4(
2549
2647
  ActivityDisclosure,
2550
2648
  {
2551
- icon: /* @__PURE__ */ jsx7(BrainCircuitIcon2, { className: ICON_SIZE }),
2649
+ icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
2552
2650
  iconTone: "muted",
2553
2651
  title,
2554
2652
  cancelled: item.status === "cancelled",
2555
2653
  preview: text ? truncatePreview(text, 90) : msg("timeline.toolRenderers.done"),
2556
2654
  children: [
2557
- text ? /* @__PURE__ */ jsx7(BodyNote, { children: text }) : null,
2558
- /* @__PURE__ */ jsx7(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
2655
+ text ? /* @__PURE__ */ jsx8(BodyNote, { children: text }) : null,
2656
+ /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
2559
2657
  ]
2560
2658
  }
2561
2659
  );
2562
2660
  }
2563
2661
  function GenericRenderer(props) {
2564
2662
  const reviewed = useHasToolReview(props.item.callId);
2565
- if (reviewed && props.item.callId) return /* @__PURE__ */ jsx7(ReviewedGenericRenderer, { ...props });
2566
- return /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props });
2663
+ if (reviewed && props.item.callId) return /* @__PURE__ */ jsx8(ReviewedGenericRenderer, { ...props });
2664
+ return /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props });
2567
2665
  }
2568
2666
  var REVIEW_CHIP = (msg) => ({
2569
2667
  rejected: { tone: "interrupted", text: msg("timeline.chip.declined") },
@@ -2581,9 +2679,9 @@ function ReviewedGenericRenderer(props) {
2581
2679
  const { item } = props;
2582
2680
  const { review, onViewDetails } = useRecordedToolReview(item.callId);
2583
2681
  const logo = useToolConnectorLogo(item.display);
2584
- if (!review) return /* @__PURE__ */ jsx7(UnreviewedGenericRenderer, { ...props });
2682
+ if (!review) return /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props });
2585
2683
  const ReviewIcon = toolIcon(genericToolIconKind(item.name));
2586
- const icon = /* @__PURE__ */ jsx7(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx7(ReviewIcon, { className: ICON_SIZE }) });
2684
+ const icon = /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(ReviewIcon, { className: ICON_SIZE }) });
2587
2685
  const waiting = review.status === "pending";
2588
2686
  const running = !waiting && (review.status === "executing" || review.status === "approved") && item.status === "running";
2589
2687
  const { text: outText, isError } = unwrapMcpOutput(retainedToolResultImages(item.output).output);
@@ -2596,12 +2694,12 @@ function ReviewedGenericRenderer(props) {
2596
2694
  title: review.title,
2597
2695
  running,
2598
2696
  chip,
2599
- preview: waiting ? msg("timeline.toolRenderers.waitingForYourApproval") : running ? /* @__PURE__ */ jsx7(RunningPreview, { children: msg("timeline.toolRenderers.running") }) : item.display?.connector ? (
2697
+ preview: waiting ? msg("timeline.toolRenderers.waitingForYourApproval") : running ? /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.running") }) : item.display?.connector ? (
2600
2698
  // The logo names the connector; only a second account needs words.
2601
2699
  item.display.accountLabel ?? void 0
2602
2700
  ) : review.accountLabel ?? void 0,
2603
2701
  children: [
2604
- /* @__PURE__ */ jsx7("div", { className: "py-1", "data-approval-id": item.callId, "data-review-origin": "history", children: /* @__PURE__ */ jsx7(
2702
+ /* @__PURE__ */ jsx8("div", { className: "py-1", "data-approval-id": item.callId, "data-review-origin": "history", children: /* @__PURE__ */ jsx8(
2605
2703
  ToolActionReviewCard,
2606
2704
  {
2607
2705
  bare: true,
@@ -2609,7 +2707,7 @@ function ReviewedGenericRenderer(props) {
2609
2707
  onViewDetails
2610
2708
  }
2611
2709
  ) }),
2612
- outText ? /* @__PURE__ */ jsx7(
2710
+ outText ? /* @__PURE__ */ jsx8(
2613
2711
  PayloadBlock,
2614
2712
  {
2615
2713
  label: msg("timeline.toolRenderers.result"),
@@ -2625,14 +2723,14 @@ function KnowledgeSaveRenderer({ item }) {
2625
2723
  const output = unwrapMcpOutput(item.output);
2626
2724
  const parsed = tryParseJson(output.text);
2627
2725
  if (item.status === "running" || output.isError || !parsed || typeof parsed !== "object")
2628
- return /* @__PURE__ */ jsx7(GenericRenderer, { item });
2726
+ return /* @__PURE__ */ jsx8(GenericRenderer, { item });
2629
2727
  const value = parsed;
2630
2728
  const receipt = value.status === "retained" ? value.receipt : value;
2631
2729
  if (!receipt || typeof receipt.entryId !== "string" || !["published", "pending", "rejected", "archived"].includes(String(receipt.outcome)))
2632
- return /* @__PURE__ */ jsx7(GenericRenderer, { item });
2730
+ return /* @__PURE__ */ jsx8(GenericRenderer, { item });
2633
2731
  const args = parseToolArgs(item.arguments);
2634
2732
  const entry = args.entry;
2635
- return /* @__PURE__ */ jsx7(
2733
+ return /* @__PURE__ */ jsx8(
2636
2734
  KnowledgeReceiptRow,
2637
2735
  {
2638
2736
  outcome: receipt.outcome,
@@ -2769,42 +2867,10 @@ function createDefaultToolRegistry(options = {}) {
2769
2867
  return createToolRegistry(BASE_ENTRIES, GenericRenderer, options);
2770
2868
  }
2771
2869
 
2772
- // src/timeline/startup-preference.ts
2773
- import { useSyncExternalStore as useSyncExternalStore2 } from "react";
2774
- var KEY = "opengeni:startup-details:v1";
2775
- var EVENT = "opengeni:startup-details-changed";
2776
- var fallback = false;
2777
- function snapshot() {
2778
- try {
2779
- return window.localStorage.getItem(KEY) === "true";
2780
- } catch {
2781
- return fallback;
2782
- }
2783
- }
2784
- function subscribe(listener) {
2785
- window.addEventListener(EVENT, listener);
2786
- window.addEventListener("storage", listener);
2787
- return () => {
2788
- window.removeEventListener(EVENT, listener);
2789
- window.removeEventListener("storage", listener);
2790
- };
2791
- }
2792
- function setStartupDetails(value) {
2793
- fallback = value;
2794
- try {
2795
- window.localStorage.setItem(KEY, String(value));
2796
- } catch {
2797
- }
2798
- window.dispatchEvent(new Event(EVENT));
2799
- }
2800
- function useStartupDetails() {
2801
- return useSyncExternalStore2(subscribe, snapshot, () => false);
2802
- }
2803
-
2804
2870
  // src/timeline/agent-row.tsx
2805
2871
  import { ArrowUpRightIcon, ChevronRightIcon as ChevronRightIcon2 } from "lucide-react";
2806
2872
  import { useContext as useContext6, useState as useState8 } from "react";
2807
- import { Fragment as Fragment4, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
2873
+ import { Fragment as Fragment4, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
2808
2874
  function AgentRow({
2809
2875
  icon,
2810
2876
  title,
@@ -2823,7 +2889,7 @@ function AgentRow({
2823
2889
  const forcedDefaultOpen = useForcedDefaultOpen();
2824
2890
  const [open, setOpen] = useState8(forcedDefaultOpen ?? false);
2825
2891
  if (compact) {
2826
- return /* @__PURE__ */ jsx8(
2892
+ return /* @__PURE__ */ jsx9(
2827
2893
  ActivityDisclosure,
2828
2894
  {
2829
2895
  icon,
@@ -2840,14 +2906,14 @@ function AgentRow({
2840
2906
  const openLabel = title.name ? t("timeline.agentRow.openName", { name: title.name }) : t("timeline.agentRow.openAgentSession");
2841
2907
  const status = failed ? "failed" : cancelled ? "cancelled" : running ? "running" : void 0;
2842
2908
  const inner = /* @__PURE__ */ jsxs5(Fragment4, { children: [
2843
- hasBody ? /* @__PURE__ */ jsx8(
2909
+ hasBody ? /* @__PURE__ */ jsx9(
2844
2910
  ChevronRightIcon2,
2845
2911
  {
2846
2912
  "aria-hidden": true,
2847
2913
  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"
2848
2914
  }
2849
- ) : /* @__PURE__ */ jsx8("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
2850
- /* @__PURE__ */ jsx8(
2915
+ ) : /* @__PURE__ */ jsx9("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
2916
+ /* @__PURE__ */ jsx9(
2851
2917
  "span",
2852
2918
  {
2853
2919
  "aria-hidden": true,
@@ -2860,7 +2926,7 @@ function AgentRow({
2860
2926
  ),
2861
2927
  /* @__PURE__ */ jsxs5("span", { className: "min-w-0 flex-1", children: [
2862
2928
  /* @__PURE__ */ jsxs5("span", { className: "flex min-w-0 items-baseline gap-2", children: [
2863
- /* @__PURE__ */ jsx8(
2929
+ /* @__PURE__ */ jsx9(
2864
2930
  ShimmerText,
2865
2931
  {
2866
2932
  active: Boolean(running),
@@ -2869,15 +2935,15 @@ function AgentRow({
2869
2935
  failed && "text-og-status-failed"
2870
2936
  ),
2871
2937
  children: title.name ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
2872
- title.before ? /* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: title.before }) : null,
2873
- /* @__PURE__ */ jsx8("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.name }),
2874
- title.after ? /* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: title.after }) : null
2875
- ] }) : /* @__PURE__ */ jsx8("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.text })
2938
+ title.before ? /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: title.before }) : null,
2939
+ /* @__PURE__ */ jsx9("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.name }),
2940
+ title.after ? /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: title.after }) : null
2941
+ ] }) : /* @__PURE__ */ jsx9("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.text })
2876
2942
  }
2877
2943
  ),
2878
- meta ? /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-og-xs text-og-fg-subtle tabular-nums", children: meta }) : null
2944
+ meta ? /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-og-xs text-og-fg-subtle tabular-nums", children: meta }) : null
2879
2945
  ] }),
2880
- preview && !open ? /* @__PURE__ */ jsx8(
2946
+ preview && !open ? /* @__PURE__ */ jsx9(
2881
2947
  "span",
2882
2948
  {
2883
2949
  "data-og-agent-preview": "",
@@ -2890,10 +2956,10 @@ function AgentRow({
2890
2956
  ) : null
2891
2957
  ] }),
2892
2958
  failed ? /* @__PURE__ */ jsxs5("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", children: [
2893
- /* @__PURE__ */ jsx8("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
2959
+ /* @__PURE__ */ jsx9("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
2894
2960
  t("timeline.agentRow.failed")
2895
- ] }) : cancelled ? /* @__PURE__ */ jsx8("span", { className: "og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle", children: t("timeline.agentRow.interrupted") }) : null,
2896
- canOpen && sessionId && onOpenSession ? /* @__PURE__ */ jsx8(
2961
+ ] }) : cancelled ? /* @__PURE__ */ jsx9("span", { className: "og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle", children: t("timeline.agentRow.interrupted") }) : null,
2962
+ canOpen && sessionId && onOpenSession ? /* @__PURE__ */ jsx9(
2897
2963
  "button",
2898
2964
  {
2899
2965
  type: "button",
@@ -2909,7 +2975,7 @@ function AgentRow({
2909
2975
  "outline-hidden transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent",
2910
2976
  "pointer-coarse:size-10"
2911
2977
  ),
2912
- children: /* @__PURE__ */ jsx8(ArrowUpRightIcon, { "aria-hidden": true, className: "size-3.5" })
2978
+ children: /* @__PURE__ */ jsx9(ArrowUpRightIcon, { "aria-hidden": true, className: "size-3.5" })
2913
2979
  }
2914
2980
  ) : null
2915
2981
  ] });
@@ -2918,10 +2984,10 @@ function AgentRow({
2918
2984
  "pointer-coarse:min-h-11 pointer-coarse:py-2.5"
2919
2985
  );
2920
2986
  if (!hasBody) {
2921
- return /* @__PURE__ */ jsx8("div", { "data-og-agent-row": "", "data-status": status, className: rowClass, children: inner });
2987
+ return /* @__PURE__ */ jsx9("div", { "data-og-agent-row": "", "data-status": status, className: rowClass, children: inner });
2922
2988
  }
2923
2989
  return /* @__PURE__ */ jsxs5("div", { "data-og-agent-row": "", "data-status": status, children: [
2924
- /* @__PURE__ */ jsx8(
2990
+ /* @__PURE__ */ jsx9(
2925
2991
  "div",
2926
2992
  {
2927
2993
  role: "button",
@@ -2943,11 +3009,11 @@ function AgentRow({
2943
3009
  children: inner
2944
3010
  }
2945
3011
  ),
2946
- open ? /* @__PURE__ */ jsx8("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", children }) : null
3012
+ open ? /* @__PURE__ */ jsx9("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", children }) : null
2947
3013
  ] });
2948
3014
  }
2949
3015
  function AgentRowText({ children }) {
2950
- return /* @__PURE__ */ jsx8("p", { className: "whitespace-pre-wrap break-words", children });
3016
+ return /* @__PURE__ */ jsx9("p", { className: "whitespace-pre-wrap break-words", children });
2951
3017
  }
2952
3018
  function AgentRowSection({
2953
3019
  label,
@@ -2955,8 +3021,8 @@ function AgentRowSection({
2955
3021
  muted
2956
3022
  }) {
2957
3023
  return /* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
2958
- /* @__PURE__ */ jsx8("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: label }),
2959
- /* @__PURE__ */ jsx8(
3024
+ /* @__PURE__ */ jsx9("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: label }),
3025
+ /* @__PURE__ */ jsx9(
2960
3026
  "p",
2961
3027
  {
2962
3028
  className: cn("whitespace-pre-wrap break-words", muted ? "text-og-fg-muted" : "text-og-fg"),
@@ -2968,7 +3034,7 @@ function AgentRowSection({
2968
3034
 
2969
3035
  // src/timeline/agent-identity.tsx
2970
3036
  import { createContext as createContext5, useContext as useContext7, useMemo as useMemo2 } from "react";
2971
- import { jsx as jsx9 } from "react/jsx-runtime";
3037
+ import { jsx as jsx10 } from "react/jsx-runtime";
2972
3038
  var SESSION_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
2973
3039
  var AGENT_TITLE_MAX_LENGTH = 80;
2974
3040
  function isSessionId(value) {
@@ -3005,7 +3071,7 @@ function AgentIdentityProvider({
3005
3071
  onOpenSession
3006
3072
  };
3007
3073
  }, [spawnTitleKey, resolveSessionTitle, onOpenSession]);
3008
- return /* @__PURE__ */ jsx9(AgentIdentityContext.Provider, { value, children });
3074
+ return /* @__PURE__ */ jsx10(AgentIdentityContext.Provider, { value, children });
3009
3075
  }
3010
3076
 
3011
3077
  // src/timeline/activity-rail.tsx
@@ -3014,7 +3080,7 @@ import { AnimatePresence, motion, useReducedMotion } from "motion/react";
3014
3080
  // src/timeline/genie-loading.tsx
3015
3081
  import { ThinkingOrb } from "thinking-orbs";
3016
3082
  import { createContext as createContext6, useContext as useContext8, useEffect as useEffect5, useState as useState9 } from "react";
3017
- import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
3083
+ import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
3018
3084
  var GenieLoadingOptionsContext = createContext6(void 0);
3019
3085
  var EMBEDDED_GENIE_LOADING = (t) => ({
3020
3086
  phrases: [t("timeline.genieLoading.thinking")],
@@ -3049,7 +3115,7 @@ function GenieLoading({
3049
3115
  if (options?.render && !notice)
3050
3116
  return options.render({ startedAt, phase, detailsOpen, onShowDetails });
3051
3117
  return /* @__PURE__ */ jsxs6("div", { className: "og-genie-loading", children: [
3052
- /* @__PURE__ */ jsx10(
3118
+ /* @__PURE__ */ jsx11(
3053
3119
  "div",
3054
3120
  {
3055
3121
  className: "og-genie-orb",
@@ -3059,12 +3125,12 @@ function GenieLoading({
3059
3125
  height: options?.orb?.size ?? 64,
3060
3126
  flexBasis: options?.orb?.size ?? 64
3061
3127
  },
3062
- children: /* @__PURE__ */ jsx10(ThinkingOrb, { state: "searching", size: 64, theme, speed: 0.8, ...options?.orb })
3128
+ children: /* @__PURE__ */ jsx11(ThinkingOrb, { state: "searching", size: 64, theme, speed: 0.8, ...options?.orb })
3063
3129
  }
3064
3130
  ),
3065
3131
  /* @__PURE__ */ jsxs6("div", { className: "og-genie-copy", children: [
3066
- /* @__PURE__ */ jsx10("span", { className: "sr-only", role: "status", children: notice ?? (slow ? options?.messages?.slowStatus ?? (waiting ? t("timeline.genieLoading.waitingForAResponseTaking") : t("timeline.genieLoading.preparingYourTaskTakingLonger")) : options?.messages?.status ?? (waiting ? t("timeline.genieLoading.waitingForAResponse") : t("timeline.genieLoading.preparingYourTask"))) }),
3067
- /* @__PURE__ */ jsx10(
3132
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", role: "status", children: notice ?? (slow ? options?.messages?.slowStatus ?? (waiting ? t("timeline.genieLoading.waitingForAResponseTaking") : t("timeline.genieLoading.preparingYourTaskTakingLonger")) : options?.messages?.status ?? (waiting ? t("timeline.genieLoading.waitingForAResponse") : t("timeline.genieLoading.preparingYourTask"))) }),
3133
+ /* @__PURE__ */ jsx11(
3068
3134
  "span",
3069
3135
  {
3070
3136
  className: "og-genie-phrase",
@@ -3083,7 +3149,7 @@ function GenieLoading({
3083
3149
  onClick: onShowDetails,
3084
3150
  children: [
3085
3151
  detailsOpen ? options?.messages?.hideDetails ?? t("timeline.genieLoading.hideDetails") : options?.messages?.showDetails ?? (waiting ? t("timeline.genieLoading.showDetails") : t("timeline.genieLoading.behindTheMagic")),
3086
- /* @__PURE__ */ jsx10("span", { "aria-hidden": "true", children: " \u2197" })
3152
+ /* @__PURE__ */ jsx11("span", { "aria-hidden": "true", children: " \u2197" })
3087
3153
  ]
3088
3154
  }
3089
3155
  ) : null
@@ -3093,7 +3159,7 @@ function GenieLoading({
3093
3159
 
3094
3160
  // src/timeline/startup-dispatch-details.tsx
3095
3161
  import { useEffect as useEffect6, useState as useState10 } from "react";
3096
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
3162
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
3097
3163
  function StartupDispatchDetails({ wait }) {
3098
3164
  const t = useOpenGeniText();
3099
3165
  const [now, setNow] = useState10(Date.now);
@@ -3103,15 +3169,15 @@ function StartupDispatchDetails({ wait }) {
3103
3169
  }, []);
3104
3170
  const next = wait?.nextAttemptAt ? new Date(wait.nextAttemptAt) : null;
3105
3171
  return /* @__PURE__ */ jsxs7("div", { className: "text-og-xs text-og-fg-muted", "data-og-startup-dispatch-details": "", children: [
3106
- /* @__PURE__ */ jsx11("p", { children: t("timeline.startupDispatchDetails.yourMessagesAreSavedNo") }),
3107
- /* @__PURE__ */ jsx11("p", { children: wait?.state === "pending" && next ? next.getTime() <= now ? t("timeline.startupDispatchDetails.automaticStartRetryIsDue") : t("timeline.startupDispatchDetails.automaticStartRetryAtLocaletimestring", {
3172
+ /* @__PURE__ */ jsx12("p", { children: t("timeline.startupDispatchDetails.yourMessagesAreSavedNo") }),
3173
+ /* @__PURE__ */ jsx12("p", { children: wait?.state === "pending" && next ? next.getTime() <= now ? t("timeline.startupDispatchDetails.automaticStartRetryIsDue") : t("timeline.startupDispatchDetails.automaticStartRetryAtLocaletimestring", {
3108
3174
  localeTimeString: next.toLocaleTimeString(t.locale, {
3109
3175
  hour: "2-digit",
3110
3176
  minute: "2-digit"
3111
3177
  })
3112
3178
  }) : wait?.state === "acknowledged" ? t("timeline.startupDispatchDetails.theStartRequestWasAccepted") : t("timeline.startupDispatchDetails.startConfirmationIsUnavailable") }),
3113
- wait && wait.attempts > 0 ? /* @__PURE__ */ jsx11("p", { children: t("timeline.startupDispatchDetails.dispatchAttempts", { count: wait.attempts }) }) : null,
3114
- wait?.lastError ? /* @__PURE__ */ jsx11("p", { className: "max-h-32 overflow-y-auto whitespace-pre-wrap break-words", children: t("timeline.startupDispatchDetails.lastRecordedDispatchErrorLasterror", {
3179
+ wait && wait.attempts > 0 ? /* @__PURE__ */ jsx12("p", { children: t("timeline.startupDispatchDetails.dispatchAttempts", { count: wait.attempts }) }) : null,
3180
+ wait?.lastError ? /* @__PURE__ */ jsx12("p", { className: "max-h-32 overflow-y-auto whitespace-pre-wrap break-words", children: t("timeline.startupDispatchDetails.lastRecordedDispatchErrorLasterror", {
3115
3181
  lastError: wait.lastError
3116
3182
  }) }) : null
3117
3183
  ] });
@@ -3120,11 +3186,10 @@ function StartupDispatchDetails({ wait }) {
3120
3186
  // src/timeline/activity-rail.tsx
3121
3187
  import {
3122
3188
  ArrowRightIcon,
3123
- BotIcon,
3124
- BrainCircuitIcon as BrainCircuitIcon3,
3189
+ BotIcon as BotIcon2,
3190
+ BrainCircuitIcon as BrainCircuitIcon4,
3125
3191
  MessageSquareTextIcon,
3126
- SendIcon,
3127
- WrenchIcon as WrenchIcon2
3192
+ SendIcon
3128
3193
  } from "lucide-react";
3129
3194
  import {
3130
3195
  Component,
@@ -3141,7 +3206,7 @@ import { jsx as rowJsx, jsxs as rowJsxs } from "react/jsx-runtime";
3141
3206
 
3142
3207
  // src/timeline/entrance.tsx
3143
3208
  import { createContext as createContext7, useContext as useContext9, useRef as useRef2 } from "react";
3144
- import { jsx as jsx12 } from "react/jsx-runtime";
3209
+ import { jsx as jsx13 } from "react/jsx-runtime";
3145
3210
  var EntranceAnimationContext = createContext7(true);
3146
3211
  var EntranceAnimationLiveContext = createContext7(true);
3147
3212
  function EntranceAnimationProvider({
@@ -3150,7 +3215,7 @@ function EntranceAnimationProvider({
3150
3215
  children
3151
3216
  }) {
3152
3217
  const mountedValue = useRef2(value).current;
3153
- return /* @__PURE__ */ jsx12(EntranceAnimationContext.Provider, { value: mountedValue, children: /* @__PURE__ */ jsx12(EntranceAnimationLiveContext.Provider, { value: liveValue, children }) });
3218
+ return /* @__PURE__ */ jsx13(EntranceAnimationContext.Provider, { value: mountedValue, children: /* @__PURE__ */ jsx13(EntranceAnimationLiveContext.Provider, { value: liveValue, children }) });
3154
3219
  }
3155
3220
  function useEntranceAnimationLive() {
3156
3221
  return useContext9(EntranceAnimationLiveContext);
@@ -3170,9 +3235,9 @@ function useSeenActivityIds() {
3170
3235
  }
3171
3236
 
3172
3237
  // src/timeline/activity-rail.tsx
3173
- import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
3174
- var LazyFleetDecisionRow = lazy2(() => import("./fleet-decision-row-QNSTP3VX.js"));
3175
- var LazyPlatformActivityRow = lazy2(() => import("./platform-activity-row-BMXXNZKX.js"));
3238
+ import { Fragment as Fragment5, jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
3239
+ var LazyFleetDecisionRow = lazy2(() => import("./fleet-decision-row-NN2HXDX3.js"));
3240
+ var LazyPlatformActivityRow = lazy2(() => import("./platform-activity-row-ENQVIFTL.js"));
3176
3241
  function familyOf(item) {
3177
3242
  if (item.kind === "tool-call") {
3178
3243
  return item.name === "exec_command" || item.name === "write_stdin" ? "terminal" : item.name;
@@ -3254,7 +3319,7 @@ function ActivityRail({
3254
3319
  className
3255
3320
  ),
3256
3321
  children: [
3257
- /* @__PURE__ */ jsx13(AnimatePresence, { initial: false, children: loading && !debug ? /* @__PURE__ */ jsx13(
3322
+ /* @__PURE__ */ jsx14(AnimatePresence, { initial: false, children: loading && !debug ? /* @__PURE__ */ jsx14(
3258
3323
  motion.div,
3259
3324
  {
3260
3325
  initial: { opacity: 0 },
@@ -3269,7 +3334,7 @@ function ActivityRail({
3269
3334
  opacity: { duration: reducedMotion ? 0 : 0.16 }
3270
3335
  },
3271
3336
  style: { overflow: "hidden" },
3272
- children: /* @__PURE__ */ jsx13(
3337
+ children: /* @__PURE__ */ jsx14(
3273
3338
  GenieLoading,
3274
3339
  {
3275
3340
  startedAt,
@@ -3282,7 +3347,7 @@ function ActivityRail({
3282
3347
  },
3283
3348
  "startup"
3284
3349
  ) : null }),
3285
- detailsOpen && !debug && !loading ? /* @__PURE__ */ jsx13(
3350
+ detailsOpen && !debug && !loading ? /* @__PURE__ */ jsx14(
3286
3351
  "button",
3287
3352
  {
3288
3353
  type: "button",
@@ -3291,7 +3356,7 @@ function ActivityRail({
3291
3356
  children: msg("timeline.activityRail.hideStartupDetails")
3292
3357
  }
3293
3358
  ) : null,
3294
- dispatch && (detailsOpen || debug) ? /* @__PURE__ */ jsx13(StartupDispatchDetails, { wait: dispatch.dispatchWait ?? null }) : null,
3359
+ dispatch && (detailsOpen || debug) ? /* @__PURE__ */ jsx14(StartupDispatchDetails, { wait: dispatch.dispatchWait ?? null }) : null,
3295
3360
  visibleItems.map((item, index) => {
3296
3361
  const newFamily = index > 0 && familyOf(item) !== familyOf(visibleItems[index - 1]);
3297
3362
  const row = renderActivity(
@@ -3303,7 +3368,7 @@ function ActivityRail({
3303
3368
  loadRetainedScreenshot,
3304
3369
  loadRetainedArtifact
3305
3370
  );
3306
- return /* @__PURE__ */ jsx13(
3371
+ return /* @__PURE__ */ jsx14(
3307
3372
  "div",
3308
3373
  {
3309
3374
  "data-og-timeline-row-anchor": "",
@@ -3324,15 +3389,15 @@ function ActivityNoteRow({ item }) {
3324
3389
  const renderText = useContext11(ActivityNoteTextContext);
3325
3390
  if (!item.text.trim()) return null;
3326
3391
  return /* @__PURE__ */ jsxs8("div", { className: "flex items-start gap-2 px-1.5 py-1.5", "data-og-activity-note": "", children: [
3327
- /* @__PURE__ */ jsx13("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
3328
- /* @__PURE__ */ jsx13(MessageSquareTextIcon, { "aria-hidden": true, className: "mt-1 size-3.5 shrink-0 text-og-fg-subtle" }),
3329
- /* @__PURE__ */ jsx13(
3392
+ /* @__PURE__ */ jsx14("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
3393
+ /* @__PURE__ */ jsx14(MessageSquareTextIcon, { "aria-hidden": true, className: "mt-1 size-3.5 shrink-0 text-og-fg-subtle" }),
3394
+ /* @__PURE__ */ jsx14(
3330
3395
  "div",
3331
3396
  {
3332
3397
  className: "min-w-0 flex-1 text-og-sm text-og-fg-muted",
3333
3398
  "data-og-search-item": item.id,
3334
3399
  "data-og-annotation-source-key": item.annotationSource?.eventId,
3335
- children: renderText ? renderText(item.text, item) : /* @__PURE__ */ jsx13(Markdown, { softLineBreaks: true, streaming: item.streaming, children: item.text })
3400
+ children: renderText ? renderText(item.text, item) : /* @__PURE__ */ jsx14(Markdown, { softLineBreaks: true, streaming: item.streaming, children: item.text })
3336
3401
  }
3337
3402
  )
3338
3403
  ] });
@@ -3345,14 +3410,14 @@ function renderActivity(msg, item, toolRegistry, onOpenSession, onMemoryClick, l
3345
3410
  case "reasoning":
3346
3411
  case "sandbox":
3347
3412
  case "startup-phase":
3348
- return /* @__PURE__ */ jsx13(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx13(
3413
+ return /* @__PURE__ */ jsx14(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx14(
3349
3414
  LazyPlatformActivityRow,
3350
3415
  {
3351
3416
  item,
3352
3417
  d: ActivityDisclosure,
3353
3418
  p: PayloadBlock,
3354
3419
  t: (name) => toolDisplayName(msg, name),
3355
- b: BotIcon,
3420
+ b: BotIcon2,
3356
3421
  m: Markdown,
3357
3422
  j: rowJsx,
3358
3423
  s: rowJsxs
@@ -3364,7 +3429,7 @@ function renderActivity(msg, item, toolRegistry, onOpenSession, onMemoryClick, l
3364
3429
  const outputPreview = item.outputPreview ?? null;
3365
3430
  const exactFirst = outputPreview !== null && !rendersToolOutputPreview(Renderer, shown);
3366
3431
  const Shown = exactFirst && (outputPreview.state === "error" || !outputPreview.load) ? toolRegistry.fallback : Renderer;
3367
- return /* @__PURE__ */ jsx13(ToolRowBoundary, { name: toolDisplayName(msg, shown.name), resetKeys: [item.status, Shown], children: /* @__PURE__ */ jsx13(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx13(ToolOutputPreviewProvider, { value: outputPreview, children: exactFirst && outputPreview.load && outputPreview.state !== "error" ? /* @__PURE__ */ jsx13(ToolOutputExactRow, { item: shown, preview: outputPreview }) : /* @__PURE__ */ jsx13(
3432
+ return /* @__PURE__ */ jsx14(ToolRowBoundary, { name: toolDisplayName(msg, shown.name), resetKeys: [item.status, Shown], children: /* @__PURE__ */ jsx14(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx14(ToolOutputPreviewProvider, { value: outputPreview, children: exactFirst && outputPreview.load && outputPreview.state !== "error" ? /* @__PURE__ */ jsx14(ToolOutputExactRow, { item: shown, preview: outputPreview }) : /* @__PURE__ */ jsx14(
3368
3433
  Shown,
3369
3434
  {
3370
3435
  item: shown,
@@ -3374,9 +3439,9 @@ function renderActivity(msg, item, toolRegistry, onOpenSession, onMemoryClick, l
3374
3439
  ) }) }) });
3375
3440
  }
3376
3441
  case "worker":
3377
- return /* @__PURE__ */ jsx13(WorkerRow, { item, onOpenSession });
3442
+ return /* @__PURE__ */ jsx14(WorkerRow, { item, onOpenSession });
3378
3443
  case "knowledge":
3379
- return /* @__PURE__ */ jsx13(
3444
+ return /* @__PURE__ */ jsx14(
3380
3445
  KnowledgeReceiptRow,
3381
3446
  {
3382
3447
  outcome: item.outcome,
@@ -3387,11 +3452,11 @@ function renderActivity(msg, item, toolRegistry, onOpenSession, onMemoryClick, l
3387
3452
  }
3388
3453
  );
3389
3454
  case "memory":
3390
- return /* @__PURE__ */ jsx13(MemoryRow, { item, onMemoryClick });
3455
+ return /* @__PURE__ */ jsx14(MemoryRow, { item, onMemoryClick });
3391
3456
  case "agent-message":
3392
- return /* @__PURE__ */ jsx13(ActivityNoteRow, { item });
3457
+ return /* @__PURE__ */ jsx14(ActivityNoteRow, { item });
3393
3458
  case "fleet-decision":
3394
- return /* @__PURE__ */ jsx13(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx13(
3459
+ return /* @__PURE__ */ jsx14(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx14(
3395
3460
  LazyFleetDecisionRow,
3396
3461
  {
3397
3462
  item,
@@ -3415,10 +3480,10 @@ function ToolOutputExactRow({
3415
3480
  useEffect7(() => {
3416
3481
  if (pending) load?.();
3417
3482
  }, [pending, load]);
3418
- return /* @__PURE__ */ jsx13("div", { "data-og-tool-output-loading": "", "aria-busy": "true", children: /* @__PURE__ */ jsx13(
3483
+ return /* @__PURE__ */ jsx14("div", { "data-og-tool-output-loading": "", "aria-busy": "true", children: /* @__PURE__ */ jsx14(
3419
3484
  ActivityDisclosure,
3420
3485
  {
3421
- icon: /* @__PURE__ */ jsx13(WrenchIcon2, { className: "size-3.5" }),
3486
+ icon: /* @__PURE__ */ jsx14(ToolKindIcon, { kind: genericToolIconKind(item.name), className: "size-3.5" }),
3422
3487
  title: toolDisplayName(msg, item.name, item.display),
3423
3488
  preview: msg("timeline.toolRenderers.loadingOutput"),
3424
3489
  expandable: false
@@ -3445,11 +3510,11 @@ function MemoryRow({
3445
3510
  return /* @__PURE__ */ jsxs8(
3446
3511
  ActivityDisclosure,
3447
3512
  {
3448
- icon: /* @__PURE__ */ jsx13(BrainCircuitIcon3, { className: "size-3.5" }),
3513
+ icon: /* @__PURE__ */ jsx14(BrainCircuitIcon4, { className: "size-3.5" }),
3449
3514
  iconTone: "muted",
3450
3515
  title: /* @__PURE__ */ jsxs8("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
3451
- /* @__PURE__ */ jsx13("span", { className: "shrink-0", children: corrected ? msg("timeline.activityRail.updatedMemory") : msg("timeline.activityRail.savedToMemory") }),
3452
- kindLabel ? /* @__PURE__ */ jsx13("span", { className: "shrink-0 rounded-og-xs bg-og-surface-2 px-1.5 py-px text-og-xs font-normal leading-tight text-og-fg-subtle", children: kindLabel }) : null
3516
+ /* @__PURE__ */ jsx14("span", { className: "shrink-0", children: corrected ? msg("timeline.activityRail.updatedMemory") : msg("timeline.activityRail.savedToMemory") }),
3517
+ kindLabel ? /* @__PURE__ */ jsx14("span", { className: "shrink-0 rounded-og-xs bg-og-surface-2 px-1.5 py-px text-og-xs font-normal leading-tight text-og-fg-subtle", children: kindLabel }) : null
3453
3518
  ] }),
3454
3519
  preview: superseded ? item.replacementPreview : item.preview,
3455
3520
  children: [
@@ -3457,21 +3522,21 @@ function MemoryRow({
3457
3522
  // The correction as a before → after: the old memory struck through and
3458
3523
  // dimmed, the new text in the ordinary body weight below it.
3459
3524
  /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1.5", children: [
3460
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
3461
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
3525
+ /* @__PURE__ */ jsx14("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
3526
+ /* @__PURE__ */ jsx14("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
3462
3527
  ] })
3463
3528
  ) : corrected && item.action === "updated" ? (
3464
3529
  // Edited in place, no replacement record: the memory is still live, so
3465
3530
  // show its current text — NOT the archived treatment.
3466
3531
  /* @__PURE__ */ jsxs8(Fragment5, { children: [
3467
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
3468
- /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.updatedInPlace") })
3532
+ /* @__PURE__ */ jsx14("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
3533
+ /* @__PURE__ */ jsx14(BodyNote, { tone: "muted", children: msg("timeline.activityRail.updatedInPlace") })
3469
3534
  ] })
3470
3535
  ) : corrected ? (
3471
3536
  // A correction with no replacement (and not an in-place update) archived the record.
3472
- /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.archived") })
3473
- ) : /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
3474
- item.deduped ? /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.mergedIntoAnExistingMemory") }) : null,
3537
+ /* @__PURE__ */ jsx14(BodyNote, { tone: "muted", children: msg("timeline.activityRail.archived") })
3538
+ ) : /* @__PURE__ */ jsx14("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
3539
+ item.deduped ? /* @__PURE__ */ jsx14(BodyNote, { tone: "muted", children: msg("timeline.activityRail.mergedIntoAnExistingMemory") }) : null,
3475
3540
  deepLink ? /* @__PURE__ */ jsxs8(
3476
3541
  "button",
3477
3542
  {
@@ -3483,7 +3548,7 @@ function MemoryRow({
3483
3548
  ),
3484
3549
  children: [
3485
3550
  msg("timeline.activityRail.viewInMemory"),
3486
- /* @__PURE__ */ jsx13(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
3551
+ /* @__PURE__ */ jsx14(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
3487
3552
  ]
3488
3553
  }
3489
3554
  ) : null
@@ -3506,10 +3571,10 @@ function WorkerRow({
3506
3571
  const prompt = item.prompt?.trim() ? item.prompt.trim() : null;
3507
3572
  const failure = failed ? item.failure : null;
3508
3573
  const hasBody = Boolean(prompt) || Boolean(failure);
3509
- return /* @__PURE__ */ jsx13(
3574
+ return /* @__PURE__ */ jsx14(
3510
3575
  AgentRow,
3511
3576
  {
3512
- icon: item.action === "spawn" ? /* @__PURE__ */ jsx13(BotIcon, {}) : /* @__PURE__ */ jsx13(SendIcon, {}),
3577
+ icon: item.action === "spawn" ? /* @__PURE__ */ jsx14(BotIcon2, {}) : /* @__PURE__ */ jsx14(SendIcon, {}),
3513
3578
  title,
3514
3579
  preview: failure ? failure.message : prompt ? truncate(prompt.replace(/\s+/g, " "), 240) : null,
3515
3580
  sessionId: cancelled ? null : sessionId,
@@ -3518,21 +3583,21 @@ function WorkerRow({
3518
3583
  failed,
3519
3584
  cancelled,
3520
3585
  children: hasBody ? /* @__PURE__ */ jsxs8(Fragment5, { children: [
3521
- prompt ? /* @__PURE__ */ jsx13(
3586
+ prompt ? /* @__PURE__ */ jsx14(
3522
3587
  AgentRowSection,
3523
3588
  {
3524
3589
  label: item.action === "spawn" ? msg("timeline.activityRail.brief") : msg("timeline.activityRail.message"),
3525
3590
  children: prompt
3526
3591
  }
3527
3592
  ) : null,
3528
- failure ? /* @__PURE__ */ jsx13(AgentRowSection, { label: failure.code, muted: true, children: failure.message }) : null
3593
+ failure ? /* @__PURE__ */ jsx14(AgentRowSection, { label: failure.code, muted: true, children: failure.message }) : null
3529
3594
  ] }) : void 0
3530
3595
  }
3531
3596
  );
3532
3597
  }
3533
3598
  function ToolRowRenderError({ name }) {
3534
3599
  const t = useOpenGeniText();
3535
- return /* @__PURE__ */ jsx13(
3600
+ return /* @__PURE__ */ jsx14(
3536
3601
  "div",
3537
3602
  {
3538
3603
  "data-testid": "tool-row-render-error",
@@ -3554,7 +3619,7 @@ var ToolRowBoundary = class extends Component {
3554
3619
  }
3555
3620
  render() {
3556
3621
  if (!this.state.failed) return this.props.children;
3557
- return /* @__PURE__ */ jsx13(ToolRowRenderError, { name: this.props.name });
3622
+ return /* @__PURE__ */ jsx14(ToolRowRenderError, { name: this.props.name });
3558
3623
  }
3559
3624
  };
3560
3625
 
@@ -3590,7 +3655,7 @@ function inheritFoldRestingState(memory, targetKey, sourceKeys) {
3590
3655
  }
3591
3656
 
3592
3657
  // src/timeline/turn-summary.tsx
3593
- import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
3658
+ import { Fragment as Fragment6, jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
3594
3659
  var TurnSettleChromeContext = createContext11(false);
3595
3660
  function useTurnSettleOpen() {
3596
3661
  return useContext13(TurnSettleChromeContext);
@@ -3804,7 +3869,7 @@ function TurnSummary({
3804
3869
  status && copyable && "max-sm:pr-10"
3805
3870
  );
3806
3871
  const headerContent = /* @__PURE__ */ jsxs9(Fragment6, { children: [
3807
- expandable ? /* @__PURE__ */ jsx14(
3872
+ expandable ? /* @__PURE__ */ jsx15(
3808
3873
  ChevronRightIcon3,
3809
3874
  {
3810
3875
  className: cn(
@@ -3812,8 +3877,8 @@ function TurnSummary({
3812
3877
  settlePhase ? "duration-[var(--_og-duration-disclose-settle)]" : "duration-[var(--_og-duration-disclose)]"
3813
3878
  )
3814
3879
  }
3815
- ) : /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "size-3.5 shrink-0" }),
3816
- status || outcome === "complete" || !outcome && (liveHeader || context.settled) ? null : /* @__PURE__ */ jsx14(
3880
+ ) : /* @__PURE__ */ jsx15("span", { "aria-hidden": true, className: "size-3.5 shrink-0" }),
3881
+ status || outcome === "complete" || !outcome && (liveHeader || context.settled) ? null : /* @__PURE__ */ jsx15(
3817
3882
  "span",
3818
3883
  {
3819
3884
  className: cn(
@@ -3821,7 +3886,7 @@ function TurnSummary({
3821
3886
  bare ? "size-3.5" : "size-5",
3822
3887
  outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle"
3823
3888
  ),
3824
- children: outcome === "failed" ? /* @__PURE__ */ jsx14(TriangleAlertIcon, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx14(CircleSlashIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx14("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
3889
+ children: outcome === "failed" ? /* @__PURE__ */ jsx15(TriangleAlertIcon, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx15(CircleSlashIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx15("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
3825
3890
  }
3826
3891
  ),
3827
3892
  /* @__PURE__ */ jsxs9(
@@ -3834,10 +3899,10 @@ function TurnSummary({
3834
3899
  ),
3835
3900
  children: [
3836
3901
  statusLine,
3837
- liveHeader && !open && !status ? liveHeader : !statusLine && facets.length === 0 && !failure && outcome !== "cancelled" ? turnSummaryFallbackLabel(t, context.items, unloadedSteps) : facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx14(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs9(Fragment6, { children: [
3902
+ liveHeader && !open && !status ? liveHeader : !statusLine && facets.length === 0 && !failure && outcome !== "cancelled" ? turnSummaryFallbackLabel(t, context.items, unloadedSteps) : facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx15(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs9(Fragment6, { children: [
3838
3903
  index > 0 || statusLine ? " \xB7 " : null,
3839
3904
  /* @__PURE__ */ jsxs9("span", { "aria-label": result.ariaLabel, title: result.title, children: [
3840
- result.icon ? /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
3905
+ result.icon ? /* @__PURE__ */ jsx15("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
3841
3906
  result.content
3842
3907
  ] })
3843
3908
  ] }) }, facet.id)),
@@ -3853,8 +3918,8 @@ function TurnSummary({
3853
3918
  ]
3854
3919
  }
3855
3920
  ),
3856
- status?.kind === "worked" ? /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "ml-1 h-px min-w-0 flex-1 bg-og-border" }) : null,
3857
- status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? /* @__PURE__ */ jsx14(
3921
+ status?.kind === "worked" ? /* @__PURE__ */ jsx15("span", { "aria-hidden": true, className: "ml-1 h-px min-w-0 flex-1 bg-og-border" }) : null,
3922
+ status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? /* @__PURE__ */ jsx15(
3858
3923
  ShrinkIcon,
3859
3924
  {
3860
3925
  className: "size-3.5 shrink-0",
@@ -3862,7 +3927,7 @@ function TurnSummary({
3862
3927
  }
3863
3928
  ) : null
3864
3929
  ] });
3865
- return /* @__PURE__ */ jsx14(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs9("div", { className: cn(copyable && "group/copy relative"), children: [
3930
+ return /* @__PURE__ */ jsx15(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs9("div", { className: cn(copyable && "group/copy relative"), children: [
3866
3931
  /* @__PURE__ */ jsxs9(
3867
3932
  Collapsible.Root,
3868
3933
  {
@@ -3871,7 +3936,7 @@ function TurnSummary({
3871
3936
  onOpenChange,
3872
3937
  className: allowEnterAnimation && !liveShell ? "animate-og-enter" : void 0,
3873
3938
  children: [
3874
- expandable ? /* @__PURE__ */ jsx14(
3939
+ expandable ? /* @__PURE__ */ jsx15(
3875
3940
  Collapsible.Trigger,
3876
3941
  {
3877
3942
  "data-og-work-header": bare ? "nested" : "outer",
@@ -3880,16 +3945,16 @@ function TurnSummary({
3880
3945
  }
3881
3946
  ) : (
3882
3947
  // Nothing to reveal: a plain status row, not a disclosure control.
3883
- /* @__PURE__ */ jsx14("div", { "data-og-work-header": bare ? "nested" : "outer", className: headerClassName, children: headerContent })
3948
+ /* @__PURE__ */ jsx15("div", { "data-og-work-header": bare ? "nested" : "outer", className: headerClassName, children: headerContent })
3884
3949
  ),
3885
3950
  status?.guidance ? (
3886
3951
  // Guidance the reader needs stays visible in both fold states.
3887
- /* @__PURE__ */ jsx14("div", { "data-og-exchange-guidance": "", className: "min-w-0 pb-1 pl-6", children: status.guidance })
3952
+ /* @__PURE__ */ jsx15("div", { "data-og-exchange-guidance": "", className: "min-w-0 pb-1 pl-6", children: status.guidance })
3888
3953
  ) : null,
3889
3954
  status && !open && status.preview ? (
3890
3955
  // Readable progress under the status line; the line above stays
3891
3956
  // the one disclosure control, so a click here is a mouse shortcut.
3892
- /* @__PURE__ */ jsx14(
3957
+ /* @__PURE__ */ jsx15(
3893
3958
  "div",
3894
3959
  {
3895
3960
  "data-og-exchange-preview": "",
@@ -3898,11 +3963,11 @@ function TurnSummary({
3898
3963
  expandable && "cursor-pointer"
3899
3964
  ),
3900
3965
  onClick: expandable ? () => onOpenChange(true) : void 0,
3901
- children: status.preview ? /* @__PURE__ */ jsx14("div", { className: "min-w-0", children: status.preview }) : null
3966
+ children: status.preview ? /* @__PURE__ */ jsx15("div", { className: "min-w-0", children: status.preview }) : null
3902
3967
  }
3903
3968
  )
3904
3969
  ) : null,
3905
- expandable ? /* @__PURE__ */ jsx14(
3970
+ expandable ? /* @__PURE__ */ jsx15(
3906
3971
  Collapsible.Content,
3907
3972
  {
3908
3973
  ...nestSuppressLatch ? { forceMount: true } : {},
@@ -3913,13 +3978,13 @@ function TurnSummary({
3913
3978
  // Auto-close: slow settle. Manual close (settlePhase cleared): fast.
3914
3979
  settlePhase ? "data-[state=closed]:animate-og-settle-collapse" : "data-[state=closed]:animate-og-collapse"
3915
3980
  ),
3916
- children: /* @__PURE__ */ jsx14("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
3981
+ children: /* @__PURE__ */ jsx15("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
3917
3982
  }
3918
3983
  ) : null
3919
3984
  ]
3920
3985
  }
3921
3986
  ),
3922
- copyable ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx14("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx14(
3987
+ copyable ? /* @__PURE__ */ jsx15("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx15("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx15(
3923
3988
  CopyButton,
3924
3989
  {
3925
3990
  text: copyText,
@@ -3939,8 +4004,8 @@ function turnSummaryStatusLine(t, status) {
3939
4004
  }
3940
4005
  const label = status.label ?? (status.kind === "working" ? t("timeline.turnSummary.working") : t("timeline.turnSummary.waiting"));
3941
4006
  return /* @__PURE__ */ jsxs9("span", { "data-og-exchange-status": status.kind, children: [
3942
- status.kind === "working" ? /* @__PURE__ */ jsx14(ShimmerText, { children: label }) : /* @__PURE__ */ jsx14("span", { children: label }),
3943
- status.since ? /* @__PURE__ */ jsx14(LiveElapsed, { since: status.since }) : null
4007
+ status.kind === "working" ? /* @__PURE__ */ jsx15(ShimmerText, { children: label }) : /* @__PURE__ */ jsx15("span", { children: label }),
4008
+ status.since ? /* @__PURE__ */ jsx15(LiveElapsed, { since: status.since }) : null
3944
4009
  ] });
3945
4010
  }
3946
4011
  function LiveElapsed({ since }) {
@@ -3952,7 +4017,7 @@ function LiveElapsed({ since }) {
3952
4017
  return () => clearInterval(timer);
3953
4018
  }, []);
3954
4019
  if (!Number.isFinite(startedAt)) return null;
3955
- return /* @__PURE__ */ jsx14("span", { className: "tabular-nums", children: ` \xB7 ${formatElapsed(t, Math.max(0, now - startedAt))}` });
4020
+ return /* @__PURE__ */ jsx15("span", { className: "tabular-nums", children: ` \xB7 ${formatElapsed(t, Math.max(0, now - startedAt))}` });
3956
4021
  }
3957
4022
  var FacetRenderBoundary = class extends Component2 {
3958
4023
  state = { failed: false };
@@ -3964,16 +4029,48 @@ var FacetRenderBoundary = class extends Component2 {
3964
4029
  }
3965
4030
  };
3966
4031
 
4032
+ // src/timeline/retained-loaders.ts
4033
+ function createWorkspaceRetainedArtifactLoader(client, workspaceId) {
4034
+ return async (artifact, signal, options) => {
4035
+ if (artifact.kind === "file" && options?.prefer !== "url") {
4036
+ const download2 = await client.downloadRetainedArtifact(workspaceId, artifact, { signal });
4037
+ return download2.bytes;
4038
+ }
4039
+ const download = await client.createRetainedArtifactDownloadUrl(workspaceId, artifact, {
4040
+ signal
4041
+ });
4042
+ return { url: download.url, expiresAt: download.expiresAt };
4043
+ };
4044
+ }
4045
+ function createSessionRetainedScreenshotLoader(client, workspaceId, sessionId) {
4046
+ return async (artifact, signal) => {
4047
+ const download = await client.downloadRetainedScreenshot(
4048
+ workspaceId,
4049
+ sessionId,
4050
+ artifact.artifactId,
4051
+ { signal }
4052
+ );
4053
+ if (!download.metadata.available || !download.bytes) return null;
4054
+ if (download.metadata.artifactId !== artifact.artifactId || download.metadata.kind !== artifact.kind || download.metadata.contentType !== artifact.contentType || download.metadata.originalBytes !== artifact.originalBytes || download.metadata.sha256 !== artifact.sha256 || download.metadata.dimensions?.width !== artifact.dimensions?.width || download.metadata.dimensions?.height !== artifact.dimensions?.height) {
4055
+ throw new Error("Retained screenshot receipt verification failed");
4056
+ }
4057
+ return download.bytes;
4058
+ };
4059
+ }
4060
+ function createWorkspaceRetainedVideoLoader(client, workspaceId) {
4061
+ return async (artifactId, signal) => await client.createVideoArtifactPlaybackSource(workspaceId, artifactId, { signal });
4062
+ }
4063
+
3967
4064
  // src/timeline/learning-refusal-row.tsx
3968
- import { BrainCircuitIcon as BrainCircuitIcon4 } from "lucide-react";
4065
+ import { BrainCircuitIcon as BrainCircuitIcon5 } from "lucide-react";
3969
4066
  import { createContext as createContext12, useContext as useContext14 } from "react";
3970
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
4067
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
3971
4068
  var LearningRefusalActionsContext = createContext12({});
3972
4069
  function LearningRefusalActionsProvider({
3973
4070
  children,
3974
4071
  ...actions
3975
4072
  }) {
3976
- return /* @__PURE__ */ jsx15(LearningRefusalActionsContext.Provider, { value: actions, children });
4073
+ return /* @__PURE__ */ jsx16(LearningRefusalActionsContext.Provider, { value: actions, children });
3977
4074
  }
3978
4075
  function LearningRefusalRow({ refusal }) {
3979
4076
  const t = useOpenGeniText();
@@ -3990,11 +4087,11 @@ function LearningRefusalRow({ refusal }) {
3990
4087
  role: "status",
3991
4088
  "data-og-learning-refusal": refusal.reason,
3992
4089
  children: [
3993
- /* @__PURE__ */ jsx15(BrainCircuitIcon4, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-og-status-waiting" }),
4090
+ /* @__PURE__ */ jsx16(BrainCircuitIcon5, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-og-status-waiting" }),
3994
4091
  /* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
3995
- /* @__PURE__ */ jsx15("p", { className: "font-medium", children: learningRefusalTitle(t, refusal) }),
3996
- /* @__PURE__ */ jsx15("p", { className: "mt-0.5 text-og-fg-muted", children: learningRefusalBody(t, refusal) }),
3997
- place && onOpen ? /* @__PURE__ */ jsx15(
4092
+ /* @__PURE__ */ jsx16("p", { className: "font-medium", children: learningRefusalTitle(t, refusal) }),
4093
+ /* @__PURE__ */ jsx16("p", { className: "mt-0.5 text-og-fg-muted", children: learningRefusalBody(t, refusal) }),
4094
+ place && onOpen ? /* @__PURE__ */ jsx16(
3998
4095
  "button",
3999
4096
  {
4000
4097
  type: "button",
@@ -4010,22 +4107,12 @@ function LearningRefusalRow({ refusal }) {
4010
4107
  }
4011
4108
 
4012
4109
  export {
4013
- createWorkspaceRetainedArtifactLoader,
4014
- createSessionRetainedScreenshotLoader,
4015
- createWorkspaceRetainedVideoLoader,
4016
- ToolReviewHistoryProvider,
4017
4110
  UNRECOVERABLE_TEXT,
4018
4111
  ToolReviewFrame,
4019
4112
  DeclineButton,
4020
4113
  ToolActionReviewCard,
4021
4114
  ToolActionReviewDetails,
4022
4115
  KnowledgeActivityProvider,
4023
- TimelineComputeLabelProvider,
4024
- ProviderLogoProvider,
4025
- gitFileDiffToPatch,
4026
- PierreDiff,
4027
- defaultToolRegistry,
4028
- createDefaultToolRegistry,
4029
4116
  AgentRow,
4030
4117
  AgentRowText,
4031
4118
  AgentRowSection,
@@ -4036,6 +4123,14 @@ export {
4036
4123
  EMBEDDED_GENIE_LOADING,
4037
4124
  setStartupDetails,
4038
4125
  useStartupDetails,
4126
+ ToolReviewHistoryProvider,
4127
+ TimelineComputeLabelProvider,
4128
+ ProviderLogoProvider,
4129
+ ToolKindIcon,
4130
+ gitFileDiffToPatch,
4131
+ PierreDiff,
4132
+ defaultToolRegistry,
4133
+ createDefaultToolRegistry,
4039
4134
  EntranceAnimationProvider,
4040
4135
  useEntranceAnimation,
4041
4136
  SeenActivityIdsProvider,
@@ -4047,7 +4142,10 @@ export {
4047
4142
  inheritFoldRestingState,
4048
4143
  useTurnSettleOpen,
4049
4144
  TurnSummary,
4145
+ createWorkspaceRetainedArtifactLoader,
4146
+ createSessionRetainedScreenshotLoader,
4147
+ createWorkspaceRetainedVideoLoader,
4050
4148
  LearningRefusalActionsProvider,
4051
4149
  LearningRefusalRow
4052
4150
  };
4053
- //# sourceMappingURL=chunk-CKZW7A5S.js.map
4151
+ //# sourceMappingURL=chunk-7TCT7KPQ.js.map