@opengeni/react 4.3.3-canary.39780140124001 → 4.4.1

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 (442) hide show
  1. package/dist/app/app-state.js +29 -29
  2. package/dist/app/components/Composer.js +22 -22
  3. package/dist/app/components/agent/agent-capability-picker.js +4 -4
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +1 -1
  5. package/dist/app/components/artifacts/artifact-library.js +19 -19
  6. package/dist/app/components/artifacts/chat-interactive-block.js +14 -14
  7. package/dist/app/components/artifacts/inline-chat-image.js +25 -25
  8. package/dist/app/components/artifacts/retained-file-preview.js +28 -28
  9. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  10. package/dist/app/components/artifacts/site-audience.js +4 -4
  11. package/dist/app/components/artifacts/site-conversations.js +18 -18
  12. package/dist/app/components/artifacts/site-data.js +19 -19
  13. package/dist/app/components/artifacts/site-publishing.js +38 -38
  14. package/dist/app/components/artifacts/site-settings.js +47 -47
  15. package/dist/app/components/billing-class-mark.js +4 -4
  16. package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
  17. package/dist/app/components/capabilities/capability-logo-source.js +8 -8
  18. package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
  19. package/dist/app/components/capabilities/native-connect-setup.js +12 -12
  20. package/dist/app/components/capabilities/perform-capability-action.js +1 -1
  21. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +11 -11
  22. package/dist/app/components/capabilities/session-capability-card.js +90 -74
  23. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  24. package/dist/app/components/capabilities/session-chrome-card.css +1023 -0
  25. package/dist/app/components/capabilities/session-chrome-card.css.map +1 -0
  26. package/dist/app/components/capabilities/session-chrome-card.d.ts +18 -0
  27. package/dist/app/components/capabilities/session-chrome-card.js +70 -0
  28. package/dist/app/components/capabilities/session-custom-mcp-card.js +16 -16
  29. package/dist/app/components/capabilities/session-github-card.js +20 -20
  30. package/dist/app/components/capabilities/session-machine-card.d.ts +27 -1
  31. package/dist/app/components/capabilities/session-machine-card.js +31 -29
  32. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  33. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  34. package/dist/app/components/command-menu/chat-status.js +12 -12
  35. package/dist/app/components/command-menu/chat-switcher.js +17 -17
  36. package/dist/app/components/command-menu/command-menu.js +35 -35
  37. package/dist/app/components/command-menu/shortcut-sheet.js +16 -16
  38. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  39. package/dist/app/components/composer-mobile-plus-panel.js +16 -16
  40. package/dist/app/components/composer-mobile-plus.js +1 -1
  41. package/dist/app/components/credit-required-gate.js +1 -1
  42. package/dist/app/components/credit-required-prompt.js +10 -10
  43. package/dist/app/components/desktop/app-shots.js +2 -2
  44. package/dist/app/components/feedback.js +2 -2
  45. package/dist/app/components/follow-up-repository-menu-body.js +7 -7
  46. package/dist/app/components/follow-up-repository-picker.js +2 -2
  47. package/dist/app/components/github-app-connect-launcher.js +2 -2
  48. package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
  49. package/dist/app/components/machines/connect-machine-dialog.js +16 -16
  50. package/dist/app/components/markdown.js +7 -7
  51. package/dist/app/components/message-context-pills.js +2 -2
  52. package/dist/app/components/models/models-ui.js +8 -8
  53. package/dist/app/components/pickers.js +7 -7
  54. package/dist/app/components/rail/rail-context.js +2 -2
  55. package/dist/app/components/rail/rail-sections.js +63 -63
  56. package/dist/app/components/rail/session-header.js +48 -48
  57. package/dist/app/components/rail/session-list.js +62 -62
  58. package/dist/app/components/rail/session-row-content.js +2 -2
  59. package/dist/app/components/rail/session-row-hover-details.js +17 -17
  60. package/dist/app/components/rail/session-shell.js +102 -102
  61. package/dist/app/components/rail/site-session-group-heading.js +3 -3
  62. package/dist/app/components/repository-picker.js +7 -7
  63. package/dist/app/components/secrets/session-secrets-panel.js +3 -3
  64. package/dist/app/components/session/agent-configuration-panel.js +33 -33
  65. package/dist/app/components/session/artifact-session-page.js +1 -1
  66. package/dist/app/components/session/banners.js +10 -10
  67. package/dist/app/components/session/codex-account-indicator.js +8 -8
  68. package/dist/app/components/session/editable-artifacts-workspace.js +38 -38
  69. package/dist/app/components/session/failed-session-banner.js +7 -7
  70. package/dist/app/components/session/human-input.js +44 -44
  71. package/dist/app/components/session/inspector.js +87 -87
  72. package/dist/app/components/session/message-actions.js +2 -2
  73. package/dist/app/components/session/message-resource-attachments.js +20 -20
  74. package/dist/app/components/session/model-account-indicator.js +8 -8
  75. package/dist/app/components/session/model-context-inspector.js +2 -2
  76. package/dist/app/components/session/new-session-settings-menu.js +10 -10
  77. package/dist/app/components/session/sandbox-switcher.js +12 -12
  78. package/dist/app/components/session/sandbox-workspace.js +62 -62
  79. package/dist/app/components/session/search-markdown-highlight.js +8 -8
  80. package/dist/app/components/session/search-results-view.js +9 -9
  81. package/dist/app/components/session/session-admin-access.js +8 -8
  82. package/dist/app/components/session/session-admission-notice.js +2 -2
  83. package/dist/app/components/session/session-machine-access-notice.js +2 -2
  84. package/dist/app/components/session/session-retention.js +4 -4
  85. package/dist/app/components/session/session-search-dialog.js +9 -9
  86. package/dist/app/components/session/session-skill-reviews.js +1 -1
  87. package/dist/app/components/session/session-tenancy-control.js +24 -24
  88. package/dist/app/components/session/session-usage-limit-section.js +10 -10
  89. package/dist/app/components/session/session-wait-status.js +7 -7
  90. package/dist/app/components/session/subagents.js +13 -13
  91. package/dist/app/components/session-connectors-menu-body.js +5 -5
  92. package/dist/app/components/settings/row-select.js +3 -3
  93. package/dist/app/components/transcription-settings.js +4 -4
  94. package/dist/app/components/ui/destructive-confirm.js +6 -6
  95. package/dist/app/components/usage/usage-entry.js +4 -4
  96. package/dist/app/components/workspace-composer-plus.js +18 -18
  97. package/dist/app/embed/session-app.js +268 -268
  98. package/dist/app/lib/actions/actions-provider.js +16 -16
  99. package/dist/app/lib/app-surfaces.js +1 -1
  100. package/dist/app/lib/codex-usage-query.js +2 -2
  101. package/dist/app/lib/composer-connectors.js +9 -9
  102. package/dist/app/lib/events.js +12 -12
  103. package/dist/app/lib/session-branch-cache.js +9 -9
  104. package/dist/app/lib/session-create.js +2 -2
  105. package/dist/app/lib/session-group-pagination.js +9 -9
  106. package/dist/app/lib/session-hover-facts.js +10 -10
  107. package/dist/app/lib/session-model.js +3 -3
  108. package/dist/app/lib/session-rail.js +7 -7
  109. package/dist/app/lib/session-rename.js +3 -3
  110. package/dist/app/lib/sessions-group.js +9 -9
  111. package/dist/app/lib/turn-failure-analytics.js +1 -1
  112. package/dist/app/lib/use-duplicate-site.js +3 -3
  113. package/dist/app/lib/use-follow-up-repositories.js +5 -5
  114. package/dist/app/lib/use-workspace-integrations.js +2 -2
  115. package/dist/app/lib/use-workspace-machines.js +2 -2
  116. package/dist/app/lib/use-workspace-model-catalog.js +2 -2
  117. package/dist/app/lib/use-workspace-rigs.js +3 -3
  118. package/dist/app/lib/workspace-navigation-preference.js +1 -1
  119. package/dist/app/lib/workspace-scope-context.js +1 -1
  120. package/dist/app/routes/artifacts.js +132 -132
  121. package/dist/app/routes/retained-artifact.js +62 -62
  122. package/dist/app/routes/session-unavailable.js +2 -2
  123. package/dist/app/routes/session.js +163 -163
  124. package/dist/app/routes/sessions-index-hydration.js +3 -3
  125. package/dist/app/routes/sessions-index.js +109 -109
  126. package/dist/artifacts-document.js +2 -2
  127. package/dist/artifacts-presentation.js +2 -2
  128. package/dist/artifacts-spreadsheet.js +2 -2
  129. package/dist/artifacts.js +36 -36
  130. package/dist/{browser-viewer-VYZLJH3P.js → browser-viewer-RYYQSRTC.js} +5 -5
  131. package/dist/{chat-interactive-block-MECBXZ7V.js → chat-interactive-block-ABCRKXJ4.js} +5 -5
  132. package/dist/{chunk-Y4D4N2EF.js → chunk-22ZBT6CN.js} +2 -2
  133. package/dist/{chunk-TFK4KFKA.js → chunk-33TPANCR.js} +4 -4
  134. package/dist/{chunk-CFFNT2OY.js → chunk-3GLAPCVI.js} +8 -8
  135. package/dist/{chunk-BXQYAAVE.js → chunk-3XOISKZC.js} +4 -4
  136. package/dist/{chunk-FYGMIMEG.js → chunk-4432A3HQ.js} +2 -2
  137. package/dist/{chunk-3MOD23RS.js → chunk-46VBQG2D.js} +13 -13
  138. package/dist/{chunk-Q2PVSCJV.js → chunk-4EAF3HSD.js} +2 -2
  139. package/dist/{chunk-YTK6MYZH.js → chunk-4EONHNJU.js} +2 -2
  140. package/dist/{chunk-7YLXFFF5.js → chunk-4R3JCVID.js} +141 -141
  141. package/dist/{chunk-73DMIW44.js → chunk-4VKA5O7T.js} +2 -2
  142. package/dist/{chunk-SLTOYHG6.js → chunk-4W7VISE7.js} +108 -108
  143. package/dist/{chunk-SLTOYHG6.js.map → chunk-4W7VISE7.js.map} +1 -1
  144. package/dist/{chunk-TIBPTOLQ.js → chunk-5JEIDFPD.js} +1 -1
  145. package/dist/{chunk-L7UDYTU3.js → chunk-5MZTJMZ3.js} +7 -6
  146. package/dist/chunk-5MZTJMZ3.js.map +1 -0
  147. package/dist/{chunk-3E4SJHVW.js → chunk-5POTDNQT.js} +5 -5
  148. package/dist/{chunk-JW6CYU5F.js → chunk-63VGE4OH.js} +2 -2
  149. package/dist/{chunk-2VDCH2DF.js → chunk-6JKZILLF.js} +65 -65
  150. package/dist/{chunk-2VDCH2DF.js.map → chunk-6JKZILLF.js.map} +1 -1
  151. package/dist/{chunk-7HVOIRGN.js → chunk-6NIB2KGJ.js} +41 -41
  152. package/dist/{chunk-KLVK7BN5.js → chunk-6PQNLL4E.js} +35 -35
  153. package/dist/{chunk-FGPSTD37.js → chunk-72J6C2AJ.js} +4 -4
  154. package/dist/{chunk-N34NUHUO.js → chunk-73SOCVLS.js} +4 -4
  155. package/dist/{chunk-43OV5QK7.js → chunk-7BST7BA6.js} +4 -4
  156. package/dist/{chunk-FDAV72IX.js → chunk-7CZTKBTI.js} +5 -5
  157. package/dist/{chunk-G4ONAC4P.js → chunk-7DU35P5J.js} +6 -6
  158. package/dist/{chunk-SM5QX6UK.js → chunk-A2EWJQXX.js} +4 -4
  159. package/dist/{chunk-3WDWLSYX.js → chunk-AD22P5X3.js} +3 -3
  160. package/dist/{chunk-ZQSRAMSH.js → chunk-ADJJQSYC.js} +42 -42
  161. package/dist/{chunk-5C6KUGFG.js → chunk-AG7VGUIW.js} +6 -6
  162. package/dist/{chunk-LF5CBAOS.js → chunk-AOLE4IRZ.js} +5 -5
  163. package/dist/{chunk-CF7ZCKZC.js → chunk-APU42QDI.js} +133 -133
  164. package/dist/{chunk-P56F4SFD.js → chunk-BJIZ7PL7.js} +2 -2
  165. package/dist/{chunk-XEL2ZJ3Z.js → chunk-BJW7G6EF.js} +2 -2
  166. package/dist/{chunk-NNNXKGJH.js → chunk-BNUPYHHZ.js} +2 -2
  167. package/dist/{chunk-FYSOHZSM.js → chunk-BXRIQZAH.js} +8 -8
  168. package/dist/{chunk-N4ZDRONX.js → chunk-CBY5CXBD.js} +4 -4
  169. package/dist/{chunk-7PTHBHEW.js → chunk-CVG4FILQ.js} +69 -69
  170. package/dist/{chunk-LMN7SO4T.js → chunk-DDK4WFJ3.js} +12 -12
  171. package/dist/{chunk-G4HQUBO4.js → chunk-DLOYMWUQ.js} +7 -7
  172. package/dist/{chunk-OTMWHZBY.js → chunk-DWPOQ3S5.js} +2 -2
  173. package/dist/{chunk-C32ZOZTE.js → chunk-EF5SYXAY.js} +59 -34
  174. package/dist/chunk-EF5SYXAY.js.map +1 -0
  175. package/dist/{chunk-JIJGQPW2.js → chunk-EHCUFCXM.js} +18 -18
  176. package/dist/{chunk-SFTKDFOQ.js → chunk-EU6XSQFM.js} +2 -2
  177. package/dist/{chunk-62VER7O4.js → chunk-F3NERYBQ.js} +6 -6
  178. package/dist/{chunk-XZTOGYSM.js → chunk-F6LBGYS6.js} +39 -39
  179. package/dist/{chunk-EX5YO2KX.js → chunk-FDNJVZRE.js} +16 -16
  180. package/dist/{chunk-E5GLL7GL.js → chunk-FLGUVRR7.js} +5 -5
  181. package/dist/{chunk-YGD4MVPD.js → chunk-FSN6APRD.js} +4 -4
  182. package/dist/{chunk-J2YMBA2R.js → chunk-GAIM5RNE.js} +2 -2
  183. package/dist/{chunk-X2AH4DRF.js → chunk-GALB2G3W.js} +2 -2
  184. package/dist/{chunk-E2NTKB4G.js → chunk-GFUUFM2O.js} +4 -4
  185. package/dist/{chunk-7FTEIGVP.js → chunk-GTQ3SNEI.js} +2 -2
  186. package/dist/{chunk-SPH2HDSW.js → chunk-HDHK3SXK.js} +6 -6
  187. package/dist/{chunk-IJ6WELGP.js → chunk-HGMWMK5K.js} +2 -2
  188. package/dist/{chunk-HRMDE6MI.js → chunk-HNYJEAES.js} +7 -7
  189. package/dist/{chunk-BYASTRHQ.js → chunk-HO5Y2OOX.js} +11 -11
  190. package/dist/{chunk-WW7VY5LC.js → chunk-HOJGAJAB.js} +9 -9
  191. package/dist/{chunk-DYGAOHXK.js → chunk-HTT3FB7T.js} +2 -2
  192. package/dist/{chunk-O2WCMUQG.js → chunk-HWDGJFM4.js} +13 -13
  193. package/dist/{chunk-2JASYO6P.js → chunk-I6VUUEXH.js} +149 -149
  194. package/dist/chunk-I6VUUEXH.js.map +1 -0
  195. package/dist/{chunk-3AOXZHF6.js → chunk-IVOA3DXA.js} +10 -10
  196. package/dist/{chunk-5O5NCXJP.js → chunk-JK7C5A4I.js} +27 -27
  197. package/dist/{chunk-R7S6NSUB.js → chunk-JTN3T4QN.js} +20 -20
  198. package/dist/{chunk-7DUTMHRQ.js → chunk-JXT5QDJC.js} +4 -4
  199. package/dist/{chunk-BWTNB77U.js → chunk-KTRKZRID.js} +13 -13
  200. package/dist/{chunk-MWAFZVC4.js → chunk-KWKGBGAF.js} +10 -10
  201. package/dist/{chunk-5HXZC3OM.js → chunk-KZHW27BV.js} +2 -2
  202. package/dist/{chunk-RWUIKGLS.js → chunk-L7YURQI2.js} +2 -2
  203. package/dist/{chunk-73WI7FL2.js → chunk-LE2EDBXU.js} +18 -18
  204. package/dist/{chunk-5DSKMG2I.js → chunk-LEXPBQ56.js} +4 -4
  205. package/dist/{chunk-DWOP7YQX.js → chunk-N3ZP4IDU.js} +2 -2
  206. package/dist/{chunk-2KKFUNVW.js → chunk-NCX5SAQY.js} +7 -7
  207. package/dist/{chunk-ITGR4HN7.js → chunk-NDF3SH3X.js} +13 -13
  208. package/dist/{chunk-JQCGPTZ6.js → chunk-NWZW2WHN.js} +9 -9
  209. package/dist/{chunk-NQA5WCKG.js → chunk-NYZQ7LO7.js} +19 -19
  210. package/dist/{chunk-ZDL4ZALP.js → chunk-O756O2I7.js} +1 -1
  211. package/dist/{chunk-GRSODLVO.js → chunk-OANSIX34.js} +4 -4
  212. package/dist/{chunk-JLMDWUME.js → chunk-OBQVTCTW.js} +3 -3
  213. package/dist/{chunk-TUERKBGA.js → chunk-OO2T63BY.js} +2 -2
  214. package/dist/{chunk-EPWD4KRA.js → chunk-OOEO4MKY.js} +2 -2
  215. package/dist/{chunk-IKN3XCJU.js → chunk-OR37STQZ.js} +2 -2
  216. package/dist/{chunk-62LZQOAH.js → chunk-OSVHU2WU.js} +14 -14
  217. package/dist/{chunk-73YPB5IB.js → chunk-P5WABK2H.js} +8 -8
  218. package/dist/{chunk-JNFRC3AW.js → chunk-PM3OSANE.js} +4 -4
  219. package/dist/{chunk-W57X2TSV.js → chunk-PN66T6JA.js} +5 -5
  220. package/dist/{chunk-4NDE4JTJ.js → chunk-Q35DT6I6.js} +200 -200
  221. package/dist/{chunk-WFS5EUCL.js → chunk-Q35YZVDZ.js} +7 -7
  222. package/dist/{chunk-P5GMHOZB.js → chunk-QCD5Y7K5.js} +17 -17
  223. package/dist/{chunk-YTX274IC.js → chunk-QM5H4FPT.js} +2 -2
  224. package/dist/{chunk-VCUGPND2.js → chunk-QRVNI5V6.js} +3 -3
  225. package/dist/{chunk-JM4HQPAI.js → chunk-QZRDCFHI.js} +5 -5
  226. package/dist/{chunk-ELABMEDP.js → chunk-R63QEVPK.js} +15 -15
  227. package/dist/{chunk-CP7ZQHBW.js → chunk-RA3FNMWF.js} +10 -10
  228. package/dist/{chunk-D6II4KOG.js → chunk-RGW24ZZM.js} +74 -74
  229. package/dist/{chunk-2FUVCKGA.js → chunk-ROQOVH4N.js} +18 -18
  230. package/dist/chunk-ROQOVH4N.js.map +1 -0
  231. package/dist/{chunk-WSYR6CUF.js → chunk-RQDFYQHA.js} +7 -7
  232. package/dist/{chunk-CSLCTVND.js → chunk-RSNYGEVZ.js} +7 -7
  233. package/dist/{chunk-B2ES3U36.js → chunk-S4EZ3JUB.js} +39 -39
  234. package/dist/{chunk-OOUEPFGL.js → chunk-S4SC5SSV.js} +16 -16
  235. package/dist/{chunk-A4BD4ZVB.js → chunk-S7PVL7XH.js} +4 -4
  236. package/dist/{chunk-4LPA25NQ.js → chunk-SD2K5ZN5.js} +4 -4
  237. package/dist/chunk-ST22GONV.js +204 -0
  238. package/dist/chunk-ST22GONV.js.map +1 -0
  239. package/dist/{chunk-XAXTE2NA.js → chunk-SUVEDKE2.js} +3 -3
  240. package/dist/{chunk-LCFU5YUA.js → chunk-TGVVEGZG.js} +9 -9
  241. package/dist/{chunk-E74ISUXA.js → chunk-TQGJN5UZ.js} +233 -233
  242. package/dist/chunk-TQGJN5UZ.js.map +1 -0
  243. package/dist/{chunk-OEL73V62.js → chunk-U36PO27Q.js} +3 -3
  244. package/dist/{chunk-HZT5H5ZP.js → chunk-U3HSFCON.js} +22 -22
  245. package/dist/{chunk-J5MEDX7C.js → chunk-U47YDYLQ.js} +8 -8
  246. package/dist/{chunk-BLT4KQTS.js → chunk-UP4BE32Y.js} +4 -4
  247. package/dist/{chunk-ZSKUBXA6.js → chunk-UWJ5P5CU.js} +2 -2
  248. package/dist/{chunk-YVBHGMKC.js → chunk-VAIESMPY.js} +4 -4
  249. package/dist/{chunk-5P6EKYTC.js → chunk-VP62LPLW.js} +14 -14
  250. package/dist/{chunk-GOEN2FSD.js → chunk-VUHPA3XQ.js} +4 -4
  251. package/dist/{chunk-5FA455GR.js → chunk-WNG757ID.js} +4 -4
  252. package/dist/{chunk-4LMNYFES.js → chunk-WSMYOLHG.js} +9 -9
  253. package/dist/{chunk-JXEMUZTV.js → chunk-X7ASQHR6.js} +2 -2
  254. package/dist/{chunk-YSSTNTJD.js → chunk-X7L4H4VG.js} +223 -223
  255. package/dist/chunk-X7L4H4VG.js.map +1 -0
  256. package/dist/{chunk-CZSYF7UF.js → chunk-XOFUXMPP.js} +2 -2
  257. package/dist/{chunk-VNMM6DQP.js → chunk-XWWXIZFP.js} +4 -4
  258. package/dist/{chunk-XC4DZXZZ.js → chunk-YXOKAG66.js} +2 -2
  259. package/dist/{chunk-XMNUZUUA.js → chunk-Z2DAWUO3.js} +6 -6
  260. package/dist/{chunk-TJ2MBYK4.js → chunk-Z5WMLJKI.js} +4 -4
  261. package/dist/{chunk-WCK2NF54.js → chunk-ZKYYZH6L.js} +7 -7
  262. package/dist/{chunk-AS6ZXN5K.js → chunk-ZRJCGBVV.js} +2 -2
  263. package/dist/composer.js +11 -11
  264. package/dist/{computer-viewer-MUOPCKPS.js → computer-viewer-KEDVLD42.js} +6 -6
  265. package/dist/connect.js +7 -7
  266. package/dist/{embedded-new-voice-IIZPNXHC.js → embedded-new-voice-LFHWWYD2.js} +5 -5
  267. package/dist/{embedded-voice-5PXDBGOI.js → embedded-voice-6QS4ANNX.js} +5 -5
  268. package/dist/index.js +206 -206
  269. package/dist/interaction.js +6 -6
  270. package/dist/{latest-question-ZCZYQZMD.js → latest-question-AW3PPDUM.js} +2 -2
  271. package/dist/machines.js +1 -1
  272. package/dist/{model-policy-picker-menu-4GWYXUP3.js → model-policy-picker-menu-CURJ247L.js} +5 -5
  273. package/dist/native-previews.js +3 -3
  274. package/dist/{queue-surface-implementation-VPPIEPJL.js → queue-surface-implementation-2X5AXB6I.js} +4 -4
  275. package/dist/realtime.js +4 -4
  276. package/dist/{sandbox-files-QXIZJJMW.js → sandbox-files-4FBG3GS2.js} +8 -8
  277. package/dist/sandbox-files-4FBG3GS2.js.map +1 -0
  278. package/dist/session-app.js +268 -268
  279. package/dist/session-list-model.js +2 -2
  280. package/dist/session-ui.js +57 -57
  281. package/dist/session.js +11 -11
  282. package/dist/terminal.js +1 -1
  283. package/dist/timeline/types.d.ts +2 -0
  284. package/dist/{timeline-annotation-markers-BSTWUL4V.js → timeline-annotation-markers-X4K2IEOO.js} +4 -4
  285. package/dist/{timeline-annotation-selection-3SMCLIJE.js → timeline-annotation-selection-MEHBW676.js} +6 -6
  286. package/dist/{timeline-annotations-dialog-GFF3RFYZ.js → timeline-annotations-dialog-U2FPQ3UY.js} +7 -7
  287. package/dist/timeline-model.js +15 -15
  288. package/dist/ui/access-list.js +18 -18
  289. package/dist/ui/cadence-picker.js +2 -2
  290. package/dist/ui/choice-cards.js +2 -2
  291. package/dist/ui/detail-page.js +2 -2
  292. package/dist/ui/detail-sheet.js +2 -2
  293. package/dist/ui/diff-view.js +2 -2
  294. package/dist/ui/disclosure.js +4 -4
  295. package/dist/ui/flush-form-page.js +3 -3
  296. package/dist/ui/form-dialog.js +2 -2
  297. package/dist/ui/list-row.js +4 -4
  298. package/dist/ui/revision-history.js +11 -11
  299. package/dist/ui/role-select.js +7 -7
  300. package/dist/ui/select-menu.js +2 -2
  301. package/dist/ui/settings-nav.js +3 -3
  302. package/dist/workbench.js +9 -9
  303. package/package.json +4 -4
  304. package/src/app/components/capabilities/session-capability-card.tsx +14 -1
  305. package/src/app/components/capabilities/session-chrome-card.dom-fixture.tsx +377 -0
  306. package/src/app/components/capabilities/session-chrome-card.test.tsx +18 -0
  307. package/src/app/components/capabilities/session-chrome-card.tsx +243 -0
  308. package/src/app/components/capabilities/session-machine-card.dom-fixture.tsx +2 -0
  309. package/src/app/components/capabilities/session-machine-card.tsx +65 -14
  310. package/src/timeline/projection.ts +4 -2
  311. package/src/timeline/types.ts +2 -0
  312. package/dist/chunk-2FUVCKGA.js.map +0 -1
  313. package/dist/chunk-2JASYO6P.js.map +0 -1
  314. package/dist/chunk-C32ZOZTE.js.map +0 -1
  315. package/dist/chunk-E74ISUXA.js.map +0 -1
  316. package/dist/chunk-L7UDYTU3.js.map +0 -1
  317. package/dist/chunk-YSSTNTJD.js.map +0 -1
  318. /package/dist/{browser-viewer-VYZLJH3P.js.map → app/components/capabilities/session-chrome-card.js.map} +0 -0
  319. /package/dist/{chat-interactive-block-MECBXZ7V.js.map → browser-viewer-RYYQSRTC.js.map} +0 -0
  320. /package/dist/{computer-viewer-MUOPCKPS.js.map → chat-interactive-block-ABCRKXJ4.js.map} +0 -0
  321. /package/dist/{chunk-Y4D4N2EF.js.map → chunk-22ZBT6CN.js.map} +0 -0
  322. /package/dist/{chunk-TFK4KFKA.js.map → chunk-33TPANCR.js.map} +0 -0
  323. /package/dist/{chunk-CFFNT2OY.js.map → chunk-3GLAPCVI.js.map} +0 -0
  324. /package/dist/{chunk-BXQYAAVE.js.map → chunk-3XOISKZC.js.map} +0 -0
  325. /package/dist/{chunk-FYGMIMEG.js.map → chunk-4432A3HQ.js.map} +0 -0
  326. /package/dist/{chunk-3MOD23RS.js.map → chunk-46VBQG2D.js.map} +0 -0
  327. /package/dist/{chunk-Q2PVSCJV.js.map → chunk-4EAF3HSD.js.map} +0 -0
  328. /package/dist/{chunk-YTK6MYZH.js.map → chunk-4EONHNJU.js.map} +0 -0
  329. /package/dist/{chunk-7YLXFFF5.js.map → chunk-4R3JCVID.js.map} +0 -0
  330. /package/dist/{chunk-73DMIW44.js.map → chunk-4VKA5O7T.js.map} +0 -0
  331. /package/dist/{chunk-TIBPTOLQ.js.map → chunk-5JEIDFPD.js.map} +0 -0
  332. /package/dist/{chunk-3E4SJHVW.js.map → chunk-5POTDNQT.js.map} +0 -0
  333. /package/dist/{chunk-JW6CYU5F.js.map → chunk-63VGE4OH.js.map} +0 -0
  334. /package/dist/{chunk-7HVOIRGN.js.map → chunk-6NIB2KGJ.js.map} +0 -0
  335. /package/dist/{chunk-KLVK7BN5.js.map → chunk-6PQNLL4E.js.map} +0 -0
  336. /package/dist/{chunk-FGPSTD37.js.map → chunk-72J6C2AJ.js.map} +0 -0
  337. /package/dist/{chunk-N34NUHUO.js.map → chunk-73SOCVLS.js.map} +0 -0
  338. /package/dist/{chunk-43OV5QK7.js.map → chunk-7BST7BA6.js.map} +0 -0
  339. /package/dist/{chunk-FDAV72IX.js.map → chunk-7CZTKBTI.js.map} +0 -0
  340. /package/dist/{chunk-G4ONAC4P.js.map → chunk-7DU35P5J.js.map} +0 -0
  341. /package/dist/{chunk-SM5QX6UK.js.map → chunk-A2EWJQXX.js.map} +0 -0
  342. /package/dist/{chunk-3WDWLSYX.js.map → chunk-AD22P5X3.js.map} +0 -0
  343. /package/dist/{chunk-ZQSRAMSH.js.map → chunk-ADJJQSYC.js.map} +0 -0
  344. /package/dist/{chunk-5C6KUGFG.js.map → chunk-AG7VGUIW.js.map} +0 -0
  345. /package/dist/{chunk-LF5CBAOS.js.map → chunk-AOLE4IRZ.js.map} +0 -0
  346. /package/dist/{chunk-CF7ZCKZC.js.map → chunk-APU42QDI.js.map} +0 -0
  347. /package/dist/{chunk-P56F4SFD.js.map → chunk-BJIZ7PL7.js.map} +0 -0
  348. /package/dist/{chunk-XEL2ZJ3Z.js.map → chunk-BJW7G6EF.js.map} +0 -0
  349. /package/dist/{chunk-NNNXKGJH.js.map → chunk-BNUPYHHZ.js.map} +0 -0
  350. /package/dist/{chunk-FYSOHZSM.js.map → chunk-BXRIQZAH.js.map} +0 -0
  351. /package/dist/{chunk-N4ZDRONX.js.map → chunk-CBY5CXBD.js.map} +0 -0
  352. /package/dist/{chunk-7PTHBHEW.js.map → chunk-CVG4FILQ.js.map} +0 -0
  353. /package/dist/{chunk-LMN7SO4T.js.map → chunk-DDK4WFJ3.js.map} +0 -0
  354. /package/dist/{chunk-G4HQUBO4.js.map → chunk-DLOYMWUQ.js.map} +0 -0
  355. /package/dist/{chunk-OTMWHZBY.js.map → chunk-DWPOQ3S5.js.map} +0 -0
  356. /package/dist/{chunk-JIJGQPW2.js.map → chunk-EHCUFCXM.js.map} +0 -0
  357. /package/dist/{chunk-SFTKDFOQ.js.map → chunk-EU6XSQFM.js.map} +0 -0
  358. /package/dist/{chunk-62VER7O4.js.map → chunk-F3NERYBQ.js.map} +0 -0
  359. /package/dist/{chunk-XZTOGYSM.js.map → chunk-F6LBGYS6.js.map} +0 -0
  360. /package/dist/{chunk-EX5YO2KX.js.map → chunk-FDNJVZRE.js.map} +0 -0
  361. /package/dist/{chunk-E5GLL7GL.js.map → chunk-FLGUVRR7.js.map} +0 -0
  362. /package/dist/{chunk-YGD4MVPD.js.map → chunk-FSN6APRD.js.map} +0 -0
  363. /package/dist/{chunk-J2YMBA2R.js.map → chunk-GAIM5RNE.js.map} +0 -0
  364. /package/dist/{chunk-X2AH4DRF.js.map → chunk-GALB2G3W.js.map} +0 -0
  365. /package/dist/{chunk-E2NTKB4G.js.map → chunk-GFUUFM2O.js.map} +0 -0
  366. /package/dist/{chunk-7FTEIGVP.js.map → chunk-GTQ3SNEI.js.map} +0 -0
  367. /package/dist/{chunk-SPH2HDSW.js.map → chunk-HDHK3SXK.js.map} +0 -0
  368. /package/dist/{chunk-IJ6WELGP.js.map → chunk-HGMWMK5K.js.map} +0 -0
  369. /package/dist/{chunk-HRMDE6MI.js.map → chunk-HNYJEAES.js.map} +0 -0
  370. /package/dist/{chunk-BYASTRHQ.js.map → chunk-HO5Y2OOX.js.map} +0 -0
  371. /package/dist/{chunk-WW7VY5LC.js.map → chunk-HOJGAJAB.js.map} +0 -0
  372. /package/dist/{chunk-DYGAOHXK.js.map → chunk-HTT3FB7T.js.map} +0 -0
  373. /package/dist/{chunk-O2WCMUQG.js.map → chunk-HWDGJFM4.js.map} +0 -0
  374. /package/dist/{chunk-3AOXZHF6.js.map → chunk-IVOA3DXA.js.map} +0 -0
  375. /package/dist/{chunk-5O5NCXJP.js.map → chunk-JK7C5A4I.js.map} +0 -0
  376. /package/dist/{chunk-R7S6NSUB.js.map → chunk-JTN3T4QN.js.map} +0 -0
  377. /package/dist/{chunk-7DUTMHRQ.js.map → chunk-JXT5QDJC.js.map} +0 -0
  378. /package/dist/{chunk-BWTNB77U.js.map → chunk-KTRKZRID.js.map} +0 -0
  379. /package/dist/{chunk-MWAFZVC4.js.map → chunk-KWKGBGAF.js.map} +0 -0
  380. /package/dist/{chunk-5HXZC3OM.js.map → chunk-KZHW27BV.js.map} +0 -0
  381. /package/dist/{chunk-RWUIKGLS.js.map → chunk-L7YURQI2.js.map} +0 -0
  382. /package/dist/{chunk-73WI7FL2.js.map → chunk-LE2EDBXU.js.map} +0 -0
  383. /package/dist/{chunk-5DSKMG2I.js.map → chunk-LEXPBQ56.js.map} +0 -0
  384. /package/dist/{chunk-DWOP7YQX.js.map → chunk-N3ZP4IDU.js.map} +0 -0
  385. /package/dist/{chunk-2KKFUNVW.js.map → chunk-NCX5SAQY.js.map} +0 -0
  386. /package/dist/{chunk-ITGR4HN7.js.map → chunk-NDF3SH3X.js.map} +0 -0
  387. /package/dist/{chunk-JQCGPTZ6.js.map → chunk-NWZW2WHN.js.map} +0 -0
  388. /package/dist/{chunk-NQA5WCKG.js.map → chunk-NYZQ7LO7.js.map} +0 -0
  389. /package/dist/{chunk-ZDL4ZALP.js.map → chunk-O756O2I7.js.map} +0 -0
  390. /package/dist/{chunk-GRSODLVO.js.map → chunk-OANSIX34.js.map} +0 -0
  391. /package/dist/{chunk-JLMDWUME.js.map → chunk-OBQVTCTW.js.map} +0 -0
  392. /package/dist/{chunk-TUERKBGA.js.map → chunk-OO2T63BY.js.map} +0 -0
  393. /package/dist/{chunk-EPWD4KRA.js.map → chunk-OOEO4MKY.js.map} +0 -0
  394. /package/dist/{chunk-IKN3XCJU.js.map → chunk-OR37STQZ.js.map} +0 -0
  395. /package/dist/{chunk-62LZQOAH.js.map → chunk-OSVHU2WU.js.map} +0 -0
  396. /package/dist/{chunk-73YPB5IB.js.map → chunk-P5WABK2H.js.map} +0 -0
  397. /package/dist/{chunk-JNFRC3AW.js.map → chunk-PM3OSANE.js.map} +0 -0
  398. /package/dist/{chunk-W57X2TSV.js.map → chunk-PN66T6JA.js.map} +0 -0
  399. /package/dist/{chunk-4NDE4JTJ.js.map → chunk-Q35DT6I6.js.map} +0 -0
  400. /package/dist/{chunk-WFS5EUCL.js.map → chunk-Q35YZVDZ.js.map} +0 -0
  401. /package/dist/{chunk-P5GMHOZB.js.map → chunk-QCD5Y7K5.js.map} +0 -0
  402. /package/dist/{chunk-YTX274IC.js.map → chunk-QM5H4FPT.js.map} +0 -0
  403. /package/dist/{chunk-VCUGPND2.js.map → chunk-QRVNI5V6.js.map} +0 -0
  404. /package/dist/{chunk-JM4HQPAI.js.map → chunk-QZRDCFHI.js.map} +0 -0
  405. /package/dist/{chunk-ELABMEDP.js.map → chunk-R63QEVPK.js.map} +0 -0
  406. /package/dist/{chunk-CP7ZQHBW.js.map → chunk-RA3FNMWF.js.map} +0 -0
  407. /package/dist/{chunk-D6II4KOG.js.map → chunk-RGW24ZZM.js.map} +0 -0
  408. /package/dist/{chunk-WSYR6CUF.js.map → chunk-RQDFYQHA.js.map} +0 -0
  409. /package/dist/{chunk-CSLCTVND.js.map → chunk-RSNYGEVZ.js.map} +0 -0
  410. /package/dist/{chunk-B2ES3U36.js.map → chunk-S4EZ3JUB.js.map} +0 -0
  411. /package/dist/{chunk-OOUEPFGL.js.map → chunk-S4SC5SSV.js.map} +0 -0
  412. /package/dist/{chunk-A4BD4ZVB.js.map → chunk-S7PVL7XH.js.map} +0 -0
  413. /package/dist/{chunk-4LPA25NQ.js.map → chunk-SD2K5ZN5.js.map} +0 -0
  414. /package/dist/{chunk-XAXTE2NA.js.map → chunk-SUVEDKE2.js.map} +0 -0
  415. /package/dist/{chunk-LCFU5YUA.js.map → chunk-TGVVEGZG.js.map} +0 -0
  416. /package/dist/{chunk-OEL73V62.js.map → chunk-U36PO27Q.js.map} +0 -0
  417. /package/dist/{chunk-HZT5H5ZP.js.map → chunk-U3HSFCON.js.map} +0 -0
  418. /package/dist/{chunk-J5MEDX7C.js.map → chunk-U47YDYLQ.js.map} +0 -0
  419. /package/dist/{chunk-BLT4KQTS.js.map → chunk-UP4BE32Y.js.map} +0 -0
  420. /package/dist/{chunk-ZSKUBXA6.js.map → chunk-UWJ5P5CU.js.map} +0 -0
  421. /package/dist/{chunk-YVBHGMKC.js.map → chunk-VAIESMPY.js.map} +0 -0
  422. /package/dist/{chunk-5P6EKYTC.js.map → chunk-VP62LPLW.js.map} +0 -0
  423. /package/dist/{chunk-GOEN2FSD.js.map → chunk-VUHPA3XQ.js.map} +0 -0
  424. /package/dist/{chunk-5FA455GR.js.map → chunk-WNG757ID.js.map} +0 -0
  425. /package/dist/{chunk-4LMNYFES.js.map → chunk-WSMYOLHG.js.map} +0 -0
  426. /package/dist/{chunk-JXEMUZTV.js.map → chunk-X7ASQHR6.js.map} +0 -0
  427. /package/dist/{chunk-CZSYF7UF.js.map → chunk-XOFUXMPP.js.map} +0 -0
  428. /package/dist/{chunk-VNMM6DQP.js.map → chunk-XWWXIZFP.js.map} +0 -0
  429. /package/dist/{chunk-XC4DZXZZ.js.map → chunk-YXOKAG66.js.map} +0 -0
  430. /package/dist/{chunk-XMNUZUUA.js.map → chunk-Z2DAWUO3.js.map} +0 -0
  431. /package/dist/{chunk-TJ2MBYK4.js.map → chunk-Z5WMLJKI.js.map} +0 -0
  432. /package/dist/{chunk-WCK2NF54.js.map → chunk-ZKYYZH6L.js.map} +0 -0
  433. /package/dist/{chunk-AS6ZXN5K.js.map → chunk-ZRJCGBVV.js.map} +0 -0
  434. /package/dist/{embedded-new-voice-IIZPNXHC.js.map → computer-viewer-KEDVLD42.js.map} +0 -0
  435. /package/dist/{embedded-voice-5PXDBGOI.js.map → embedded-new-voice-LFHWWYD2.js.map} +0 -0
  436. /package/dist/{model-policy-picker-menu-4GWYXUP3.js.map → embedded-voice-6QS4ANNX.js.map} +0 -0
  437. /package/dist/{latest-question-ZCZYQZMD.js.map → latest-question-AW3PPDUM.js.map} +0 -0
  438. /package/dist/{sandbox-files-QXIZJJMW.js.map → model-policy-picker-menu-CURJ247L.js.map} +0 -0
  439. /package/dist/{queue-surface-implementation-VPPIEPJL.js.map → queue-surface-implementation-2X5AXB6I.js.map} +0 -0
  440. /package/dist/{timeline-annotation-markers-BSTWUL4V.js.map → timeline-annotation-markers-X4K2IEOO.js.map} +0 -0
  441. /package/dist/{timeline-annotation-selection-3SMCLIJE.js.map → timeline-annotation-selection-MEHBW676.js.map} +0 -0
  442. /package/dist/{timeline-annotations-dialog-GFF3RFYZ.js.map → timeline-annotations-dialog-U2FPQ3UY.js.map} +0 -0
@@ -6,6 +6,16 @@ import {
6
6
  PatchApplyCommand,
7
7
  useRetainedImageObjectUrl
8
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-5MZTJMZ3.js";
9
19
  import {
10
20
  ActivityDisclosure,
11
21
  BodyNote,
@@ -24,7 +34,7 @@ import {
24
34
  ToolOutputPreviewProvider,
25
35
  useForcedDefaultOpen,
26
36
  useTimelineSearchReveal
27
- } from "./chunk-ELABMEDP.js";
37
+ } from "./chunk-R63QEVPK.js";
28
38
  import {
29
39
  useToolDetails
30
40
  } from "./chunk-RZLBICR5.js";
@@ -36,19 +46,6 @@ import {
36
46
  pierreDiffsRevision,
37
47
  subscribePierreDiffs
38
48
  } from "./chunk-YSRBFJMQ.js";
39
- import {
40
- ShimmerText
41
- } from "./chunk-JLMDWUME.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-L7UDYTU3.js";
52
49
  import {
53
50
  GENIE_PREPARING_PHRASES,
54
51
  GENIE_WAITING_PHRASES,
@@ -85,7 +82,7 @@ import {
85
82
  unwrapMcpOutput,
86
83
  webSearchPresentation,
87
84
  writeStdinPresentation
88
- } from "./chunk-E74ISUXA.js";
85
+ } from "./chunk-TQGJN5UZ.js";
89
86
  import {
90
87
  workerRowTitleParts
91
88
  } from "./chunk-HEVQKE27.js";
@@ -97,6 +94,9 @@ import {
97
94
  mcpToolLeaf,
98
95
  toolDisplayName
99
96
  } from "./chunk-STUCI6QA.js";
97
+ import {
98
+ ShimmerText
99
+ } from "./chunk-OBQVTCTW.js";
100
100
  import {
101
101
  formatBytes,
102
102
  truncate,
@@ -109,6 +109,94 @@ import {
109
109
  useOpenGeniText
110
110
  } from "./chunk-5JZYPZ72.js";
111
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
+ }
199
+
112
200
  // src/components/tool-action-review.tsx
113
201
  import {
114
202
  ArrowLeftIcon,
@@ -119,8 +207,8 @@ import {
119
207
  LoaderCircleIcon,
120
208
  ShieldCheckIcon
121
209
  } from "lucide-react";
122
- import { useEffect, useId, useRef, useState } from "react";
123
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
210
+ import { useEffect as useEffect2, useId, useRef, useState as useState2 } from "react";
211
+ import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
124
212
  var statusText = (t) => ({
125
213
  pending: t("toolActionReview.approvalNeeded"),
126
214
  approved: t("toolActionReview.approved"),
@@ -182,12 +270,12 @@ var VISIBLE_FIELDS = 6;
182
270
  function StatusIcon({ status, busy }) {
183
271
  const className = "size-4";
184
272
  if (busy || status === "executing" || status === "approved")
185
- return /* @__PURE__ */ jsx(LoaderCircleIcon, { "aria-hidden": "true", className: cn(className, "animate-spin") });
186
- if (status === "pending") return /* @__PURE__ */ jsx(ShieldCheckIcon, { "aria-hidden": "true", className });
187
- if (status === "completed") return /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true", className });
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 });
188
276
  if (statusTone[status] === "failed")
189
- return /* @__PURE__ */ jsx(CircleAlertIcon, { "aria-hidden": "true", className });
190
- return /* @__PURE__ */ jsx(CircleSlashIcon, { "aria-hidden": "true", className });
277
+ return /* @__PURE__ */ jsx2(CircleAlertIcon, { "aria-hidden": "true", className });
278
+ return /* @__PURE__ */ jsx2(CircleSlashIcon, { "aria-hidden": "true", className });
191
279
  }
192
280
  function ToolReviewFrame({
193
281
  tone,
@@ -214,7 +302,7 @@ function ToolReviewFrame({
214
302
  ),
215
303
  children: [
216
304
  /* @__PURE__ */ jsxs("header", { className: cn("flex min-w-0 items-start gap-3", bare ? "pb-1" : "px-4 py-3"), children: [
217
- /* @__PURE__ */ jsx(
305
+ /* @__PURE__ */ jsx2(
218
306
  "span",
219
307
  {
220
308
  className: cn(
@@ -225,7 +313,7 @@ function ToolReviewFrame({
225
313
  }
226
314
  ),
227
315
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
228
- /* @__PURE__ */ jsx(
316
+ /* @__PURE__ */ jsx2(
229
317
  "p",
230
318
  {
231
319
  className: cn("m-0 text-og-xs font-medium", toneText[tone]),
@@ -234,7 +322,7 @@ function ToolReviewFrame({
234
322
  children: eyebrow
235
323
  }
236
324
  ),
237
- /* @__PURE__ */ jsx(
325
+ /* @__PURE__ */ jsx2(
238
326
  "h3",
239
327
  {
240
328
  tabIndex: -1,
@@ -243,10 +331,10 @@ function ToolReviewFrame({
243
331
  children: title
244
332
  }
245
333
  ),
246
- 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
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
247
335
  ] })
248
336
  ] }),
249
- children ? /* @__PURE__ */ jsx(
337
+ children ? /* @__PURE__ */ jsx2(
250
338
  "div",
251
339
  {
252
340
  className: cn(
@@ -258,7 +346,7 @@ function ToolReviewFrame({
258
346
  children
259
347
  }
260
348
  ) : null,
261
- footer ? /* @__PURE__ */ jsx(
349
+ footer ? /* @__PURE__ */ jsx2(
262
350
  "footer",
263
351
  {
264
352
  className: cn(
@@ -298,24 +386,24 @@ function ReviewFacts({
298
386
  const hasContent = note || effects.length || selection || shown.length || hiddenFields > 0 || samples.length;
299
387
  if (!hasContent) return null;
300
388
  return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-3 text-og-sm", children: [
301
- note ? /* @__PURE__ */ jsx("p", { className: "m-0 leading-relaxed text-og-fg-muted", children: note }) : null,
302
- 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: [
303
- /* @__PURE__ */ jsx(
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(
304
392
  "span",
305
393
  {
306
394
  "aria-hidden": "true",
307
395
  className: "mt-[0.55em] size-1 shrink-0 rounded-full bg-og-fg-muted"
308
396
  }
309
397
  ),
310
- /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words", children: effect })
398
+ /* @__PURE__ */ jsx2("span", { className: "min-w-0 break-words", children: effect })
311
399
  ] }, effect)) }) : null,
312
400
  selection ? /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
313
401
  samples.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
314
- /* @__PURE__ */ jsx("p", { className: "m-0 mb-1 text-og-xs text-og-fg-muted", children: t("toolActionReview.includes") }),
402
+ /* @__PURE__ */ jsx2("p", { className: "m-0 mb-1 text-og-xs text-og-fg-muted", children: t("toolActionReview.includes") }),
315
403
  /* @__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: [
316
404
  samples.map((sample) => /* @__PURE__ */ jsxs("li", { className: "min-w-0 px-3 py-2", children: [
317
- /* @__PURE__ */ jsx("p", { className: "m-0 truncate text-og-sm text-og-fg", children: sample.title }),
318
- sample.subtitle ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-0.5 truncate text-og-xs text-og-fg-muted", children: sample.subtitle }) : null
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
407
  ] }, sample.id)),
320
408
  count > samples.length ? /* @__PURE__ */ jsxs("li", { className: "px-3 py-2 text-og-xs text-og-fg-muted", children: [
321
409
  t("toolActionReview.and"),
@@ -338,18 +426,18 @@ function ReviewFacts({
338
426
  localeString: count.toLocaleString(t.locale),
339
427
  noun
340
428
  }),
341
- /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
429
+ /* @__PURE__ */ jsx2(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
342
430
  ]
343
431
  }
344
432
  ) : null
345
433
  ] }) : null,
346
- shown.length > 0 ? /* @__PURE__ */ jsx("dl", { className: "m-0 min-w-0 space-y-2", children: shown.map((field) => /* @__PURE__ */ jsxs(
434
+ shown.length > 0 ? /* @__PURE__ */ jsx2("dl", { className: "m-0 min-w-0 space-y-2", children: shown.map((field) => /* @__PURE__ */ jsxs(
347
435
  "div",
348
436
  {
349
437
  className: "grid min-w-0 gap-x-4 gap-y-0.5 sm:grid-cols-[minmax(0,9rem)_minmax(0,1fr)]",
350
438
  children: [
351
- /* @__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 }),
352
- /* @__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(
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
441
  "button",
354
442
  {
355
443
  type: "button",
@@ -361,11 +449,11 @@ function ReviewFacts({
361
449
  onClick: () => onViewDetails(field.path),
362
450
  className: cn(linkButton, "max-w-full"),
363
451
  children: [
364
- /* @__PURE__ */ jsx("span", { className: "line-clamp-4 min-w-0 break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ jsx(SecretRefText, { text: field.preview, linkable: false }) }),
365
- /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
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
454
  ]
367
455
  }
368
- ) : /* @__PURE__ */ jsx(SecretRefText, { text: field.preview }) })
456
+ ) : /* @__PURE__ */ jsx2(SecretRefText, { text: field.preview }) })
369
457
  ]
370
458
  },
371
459
  field.path
@@ -384,7 +472,7 @@ function DeclineButton({
384
472
  onClick
385
473
  }) {
386
474
  const t = useOpenGeniText();
387
- return /* @__PURE__ */ jsx(
475
+ return /* @__PURE__ */ jsx2(
388
476
  "button",
389
477
  {
390
478
  type: "button",
@@ -414,7 +502,7 @@ function ToolActionReviewCard({
414
502
  const busy = Boolean(disabled || submitting);
415
503
  const tone = statusTone[review.status];
416
504
  const eyebrow = submitting ? submitting === "approve" ? t("toolActionReview.approving") : t("toolActionReview.declining") : review.status === "pending" ? pendingLabel ?? statusText(t).pending : statusText(t)[review.status];
417
- const detailsLink = review.detailsAvailable && onViewDetails ? /* @__PURE__ */ jsx(
505
+ const detailsLink = review.detailsAvailable && onViewDetails ? /* @__PURE__ */ jsx2(
418
506
  "button",
419
507
  {
420
508
  type: "button",
@@ -429,7 +517,7 @@ function ToolActionReviewCard({
429
517
  ToolReviewFrame,
430
518
  {
431
519
  tone,
432
- icon: /* @__PURE__ */ jsx(StatusIcon, { status: review.status, busy: Boolean(submitting) }),
520
+ icon: /* @__PURE__ */ jsx2(StatusIcon, { status: review.status, busy: Boolean(submitting) }),
433
521
  eyebrow,
434
522
  title: review.title,
435
523
  titleId,
@@ -441,10 +529,10 @@ function ToolActionReviewCard({
441
529
  footer: actionable ? /* @__PURE__ */ jsxs(Fragment, { children: [
442
530
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 basis-48 flex-wrap items-center gap-x-3 gap-y-1", children: [
443
531
  detailsLink,
444
- reason ? /* @__PURE__ */ jsx("span", { className: "min-w-0 text-og-xs leading-relaxed text-og-fg-subtle", children: reason }) : null
532
+ reason ? /* @__PURE__ */ jsx2("span", { className: "min-w-0 text-og-xs leading-relaxed text-og-fg-subtle", children: reason }) : null
445
533
  ] }),
446
534
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2", children: [
447
- canReject ? /* @__PURE__ */ jsx(
535
+ canReject ? /* @__PURE__ */ jsx2(
448
536
  DeclineButton,
449
537
  {
450
538
  busy,
@@ -461,7 +549,7 @@ function ToolActionReviewCard({
461
549
  onClick: onApprove,
462
550
  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",
463
551
  children: [
464
- submitting === "approve" ? /* @__PURE__ */ jsx(LoaderCircleIcon, { className: "size-3.5 animate-spin", "aria-hidden": "true" }) : null,
552
+ submitting === "approve" ? /* @__PURE__ */ jsx2(LoaderCircleIcon, { className: "size-3.5 animate-spin", "aria-hidden": "true" }) : null,
465
553
  submitting === "approve" ? t("toolActionReview.approving") : review.approveLabel
466
554
  ]
467
555
  }
@@ -469,8 +557,8 @@ function ToolActionReviewCard({
469
557
  ] })
470
558
  ] }) : void 0,
471
559
  children: [
472
- actionable && !canApprove ? /* @__PURE__ */ jsx("p", { className: "m-0 mb-3 text-og-sm leading-relaxed text-og-fg", children: UNRECOVERABLE_TEXT(t) }) : null,
473
- /* @__PURE__ */ jsx(
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
562
  ReviewFacts,
475
563
  {
476
564
  review,
@@ -478,7 +566,7 @@ function ToolActionReviewCard({
478
566
  showStatusDetail: review.status !== "pending"
479
567
  }
480
568
  ),
481
- !actionable && detailsLink ? /* @__PURE__ */ jsx("div", { className: "mt-2", children: detailsLink }) : null
569
+ !actionable && detailsLink ? /* @__PURE__ */ jsx2("div", { className: "mt-2", children: detailsLink }) : null
482
570
  ]
483
571
  }
484
572
  );
@@ -491,22 +579,22 @@ function ToolActionReviewDetails({
491
579
  manageFocus = true
492
580
  }) {
493
581
  const t = useOpenGeniText();
494
- const [path, setPath] = useState(initialPath);
495
- const [trail, setTrail] = useState([]);
496
- const [offset, setOffset] = useState(0);
497
- const [page, setPage] = useState(null);
498
- const [error, setError] = useState(false);
499
- const [retry, setRetry] = useState(0);
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);
500
588
  const heading = useRef(null);
501
589
  const focusedOnce = useRef(false);
502
- useEffect(() => {
590
+ useEffect2(() => {
503
591
  if (page && manageFocus && !focusedOnce.current) {
504
592
  focusedOnce.current = true;
505
593
  heading.current?.focus({ preventScroll: true });
506
594
  heading.current?.scrollIntoView({ block: "start" });
507
595
  }
508
596
  }, [page, manageFocus]);
509
- useEffect(() => {
597
+ useEffect2(() => {
510
598
  let active = true;
511
599
  setPage(null);
512
600
  setError(false);
@@ -551,12 +639,12 @@ function ToolActionReviewDetails({
551
639
  onClick: onBack,
552
640
  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",
553
641
  children: [
554
- /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" }),
642
+ /* @__PURE__ */ jsx2(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" }),
555
643
  t("toolActionReview.backToReview")
556
644
  ]
557
645
  }
558
646
  ),
559
- /* @__PURE__ */ jsx(
647
+ /* @__PURE__ */ jsx2(
560
648
  "h2",
561
649
  {
562
650
  ref: heading,
@@ -565,8 +653,8 @@ function ToolActionReviewDetails({
565
653
  children: review.title
566
654
  }
567
655
  ),
568
- review.accountLabel ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-1 text-og-sm text-og-fg-muted", children: review.accountLabel }) : null,
569
- /* @__PURE__ */ jsx("p", { className: "m-0 mt-2 text-og-xs text-og-fg-subtle", children: t("toolActionReview.theExactValuesSavedFor") }),
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
658
  trail.length > 0 ? /* @__PURE__ */ jsxs(
571
659
  "button",
572
660
  {
@@ -574,7 +662,7 @@ function ToolActionReviewDetails({
574
662
  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",
575
663
  onClick: up,
576
664
  children: [
577
- /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-3.5", "aria-hidden": "true" }),
665
+ /* @__PURE__ */ jsx2(ArrowLeftIcon, { className: "size-3.5", "aria-hidden": "true" }),
578
666
  t("toolActionReview.backTo"),
579
667
  " ",
580
668
  trail.at(-1)?.label ?? t("toolActionReview.allValues")
@@ -584,7 +672,7 @@ function ToolActionReviewDetails({
584
672
  error ? /* @__PURE__ */ jsxs("div", { role: "alert", className: "mt-4 py-4 text-og-sm", children: [
585
673
  t("toolActionReview.couldnTLoadTheseDetails"),
586
674
  " ",
587
- /* @__PURE__ */ jsx(
675
+ /* @__PURE__ */ jsx2(
588
676
  "button",
589
677
  {
590
678
  type: "button",
@@ -593,9 +681,9 @@ function ToolActionReviewDetails({
593
681
  children: t("toolActionReview.tryAgain")
594
682
  }
595
683
  )
596
- ] }) : !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: [
597
- /* @__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: [
598
- /* @__PURE__ */ jsx("dt", { className: "m-0 text-og-xs text-og-fg-muted", children: item.label }),
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 }),
599
687
  /* @__PURE__ */ jsxs("dd", { className: "m-0 mt-1 whitespace-pre-wrap break-words text-og-sm leading-relaxed [overflow-wrap:anywhere]", children: [
600
688
  item.truncated && item.path ? /* @__PURE__ */ jsxs(
601
689
  "button",
@@ -605,12 +693,12 @@ function ToolActionReviewDetails({
605
693
  className: cn(linkButton, "max-w-full"),
606
694
  onClick: () => open(item.path, item.label),
607
695
  children: [
608
- /* @__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 }) }),
609
- /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
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
698
  ]
611
699
  }
612
- ) : /* @__PURE__ */ jsx(SecretRefText, { text: item.value }),
613
- 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
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
702
  ] })
615
703
  ] }, `${page.path}:${item.label}`)) }),
616
704
  page.total > page.items.length || offset > 0 ? /* @__PURE__ */ jsxs(
@@ -619,7 +707,7 @@ function ToolActionReviewDetails({
619
707
  "aria-label": t("toolActionReview.detailPages"),
620
708
  className: "mt-4 flex flex-wrap items-center justify-between gap-3 text-og-sm",
621
709
  children: [
622
- /* @__PURE__ */ jsx(
710
+ /* @__PURE__ */ jsx2(
623
711
  "button",
624
712
  {
625
713
  type: "button",
@@ -629,8 +717,8 @@ function ToolActionReviewDetails({
629
717
  children: t("toolActionReview.previous")
630
718
  }
631
719
  ),
632
- /* @__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)}` }),
633
- /* @__PURE__ */ jsx(
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
722
  "button",
635
723
  {
636
724
  type: "button",
@@ -650,36 +738,36 @@ function ToolActionReviewDetails({
650
738
  }
651
739
 
652
740
  // src/timeline/knowledge-receipt.tsx
653
- import { createContext, useContext, useState as useState2 } from "react";
741
+ import { createContext as createContext2, useContext as useContext2, useState as useState3 } from "react";
654
742
  import { BrainCircuitIcon } from "lucide-react";
655
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
656
- var KnowledgeActions = createContext({});
743
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
744
+ var KnowledgeActions = createContext2({});
657
745
  function KnowledgeActivityProvider({
658
746
  children,
659
747
  ...actions
660
748
  }) {
661
- return /* @__PURE__ */ jsx2(KnowledgeActions.Provider, { value: actions, children });
749
+ return /* @__PURE__ */ jsx3(KnowledgeActions.Provider, { value: actions, children });
662
750
  }
663
751
  function KnowledgeReceiptRow(props) {
664
752
  const t = useOpenGeniText();
665
- const actions = useContext(KnowledgeActions);
666
- const [retrying, setRetrying] = useState2(false);
667
- const [retrySent, setRetrySent] = useState2(false);
668
- const [error, setError] = useState2(null);
753
+ const actions = useContext2(KnowledgeActions);
754
+ const [retrying, setRetrying] = useState3(false);
755
+ const [retrySent, setRetrySent] = useState3(false);
756
+ const [error, setError] = useState3(null);
669
757
  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");
670
758
  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";
671
759
  return /* @__PURE__ */ jsxs2(
672
760
  ActivityDisclosure,
673
761
  {
674
- icon: /* @__PURE__ */ jsx2(BrainCircuitIcon, { className: "size-3.5" }),
762
+ icon: /* @__PURE__ */ jsx3(BrainCircuitIcon, { className: "size-3.5" }),
675
763
  iconTone: "muted",
676
764
  title: label,
677
765
  preview: props.title,
678
766
  children: [
679
- props.outcome === "pending" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.savedInNeedsReviewThis") }) : null,
680
- props.outcome === "failed" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.theOriginalFileRemainsAttached") }) : null,
681
- props.outcome === "rejected" ? /* @__PURE__ */ jsx2(BodyNote, { children: t("timeline.knowledgeReceipt.processingTheFileAgainLeaves") }) : null,
682
- props.entryId && actions.onInspect ? /* @__PURE__ */ jsx2(
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(
683
771
  "button",
684
772
  {
685
773
  className: actionClass,
@@ -688,7 +776,7 @@ function KnowledgeReceiptRow(props) {
688
776
  children: props.outcome === "pending" ? t("timeline.knowledgeReceipt.reviewInKnowledge") : t("timeline.knowledgeReceipt.viewInKnowledge")
689
777
  }
690
778
  ) : null,
691
- props.outcome === "failed" && props.fileId && actions.onRetryFile ? /* @__PURE__ */ jsx2(
779
+ props.outcome === "failed" && props.fileId && actions.onRetryFile ? /* @__PURE__ */ jsx3(
692
780
  "button",
693
781
  {
694
782
  className: actionClass,
@@ -705,100 +793,12 @@ function KnowledgeReceiptRow(props) {
705
793
  children: retrying ? t("timeline.knowledgeReceipt.startingRetry") : retrySent ? t("timeline.knowledgeReceipt.retryRequested") : t("timeline.knowledgeReceipt.retryPreparation")
706
794
  }
707
795
  ) : null,
708
- error ? /* @__PURE__ */ jsx2("p", { role: "alert", className: "text-og-sm", children: error }) : null
796
+ error ? /* @__PURE__ */ jsx3("p", { role: "alert", className: "text-og-sm", children: error }) : null
709
797
  ]
710
798
  }
711
799
  );
712
800
  }
713
801
 
714
- // src/timeline/startup-preference.ts
715
- import { useSyncExternalStore } from "react";
716
- var KEY = "opengeni:startup-details:v1";
717
- var EVENT = "opengeni:startup-details-changed";
718
- var fallback = false;
719
- function snapshot() {
720
- try {
721
- return window.localStorage.getItem(KEY) === "true";
722
- } catch {
723
- return fallback;
724
- }
725
- }
726
- function subscribe(listener) {
727
- window.addEventListener(EVENT, listener);
728
- window.addEventListener("storage", listener);
729
- return () => {
730
- window.removeEventListener(EVENT, listener);
731
- window.removeEventListener("storage", listener);
732
- };
733
- }
734
- function setStartupDetails(value) {
735
- fallback = value;
736
- try {
737
- window.localStorage.setItem(KEY, String(value));
738
- } catch {
739
- }
740
- window.dispatchEvent(new Event(EVENT));
741
- }
742
- function useStartupDetails() {
743
- return useSyncExternalStore(subscribe, snapshot, () => false);
744
- }
745
-
746
- // src/components/tool-review-history.tsx
747
- import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
748
- import { jsx as jsx3 } from "react/jsx-runtime";
749
- var History = createContext2(null);
750
- function ToolReviewHistoryProvider({
751
- events,
752
- load,
753
- onViewDetails,
754
- children
755
- }) {
756
- const value = useMemo(
757
- () => ({
758
- approvalIds: new Set(
759
- events.flatMap(
760
- (event) => event.type === "session.requiresAction" ? approvalsFromRequiresAction(event.payload).map((approval) => approval.id) : []
761
- )
762
- ),
763
- revision: [...events].reverse().find(
764
- (event) => event.type === "session.requiresAction" || event.type === "agent.toolCall.output" || event.type.startsWith("turn.") || event.type === "user.approvalDecision" || event.type.startsWith("session.control.")
765
- )?.sequence ?? 0,
766
- load,
767
- onViewDetails
768
- }),
769
- [events, load, onViewDetails]
770
- );
771
- return /* @__PURE__ */ jsx3(History.Provider, { value, children });
772
- }
773
- function useHasToolReview(approvalId) {
774
- const history = useContext2(History);
775
- return Boolean(approvalId && history?.approvalIds.has(approvalId));
776
- }
777
- function useRecordedToolReview(approvalId) {
778
- const history = useContext2(History);
779
- const [review, setReview] = useState3(null);
780
- const load = history?.load;
781
- const revision = history?.revision;
782
- useEffect2(() => {
783
- if (!load || !approvalId) return;
784
- let active = true;
785
- void load(approvalId).then(
786
- (value) => {
787
- if (active && value.id === approvalId) setReview(value);
788
- },
789
- () => void 0
790
- );
791
- return () => {
792
- active = false;
793
- };
794
- }, [approvalId, load, revision]);
795
- const onViewDetails = history?.onViewDetails;
796
- return {
797
- review: review && review.id === approvalId ? review : null,
798
- onViewDetails: review && onViewDetails ? (path) => onViewDetails(review, path) : void 0
799
- };
800
- }
801
-
802
802
  // src/lib/git-patch.ts
803
803
  function gitFileDiffToPatch(file) {
804
804
  const oldPath = file.oldPath ?? file.path;
@@ -834,7 +834,7 @@ import {
834
834
  Suspense,
835
835
  useEffect as useEffect3,
836
836
  useState as useState4,
837
- useSyncExternalStore as useSyncExternalStore2
837
+ useSyncExternalStore
838
838
  } from "react";
839
839
  import { jsx as jsx4 } from "react/jsx-runtime";
840
840
  var LazyPatchDiff = lazy(async () => {
@@ -864,7 +864,7 @@ function PierreDiff({
864
864
  query.addEventListener?.("change", update);
865
865
  return () => query.removeEventListener?.("change", update);
866
866
  }, []);
867
- const loaderRevision = useSyncExternalStore2(
867
+ const loaderRevision = useSyncExternalStore(
868
868
  subscribePierreDiffs,
869
869
  pierreDiffsRevision,
870
870
  pierreDiffsRevision
@@ -2769,6 +2769,38 @@ function createDefaultToolRegistry(options = {}) {
2769
2769
  return createToolRegistry(BASE_ENTRIES, GenericRenderer, options);
2770
2770
  }
2771
2771
 
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
+
2772
2804
  // src/timeline/agent-row.tsx
2773
2805
  import { ArrowUpRightIcon, ChevronRightIcon as ChevronRightIcon2 } from "lucide-react";
2774
2806
  import { useContext as useContext6, useState as useState8 } from "react";
@@ -3932,38 +3964,6 @@ var FacetRenderBoundary = class extends Component2 {
3932
3964
  }
3933
3965
  };
3934
3966
 
3935
- // src/timeline/retained-loaders.ts
3936
- function createWorkspaceRetainedArtifactLoader(client, workspaceId) {
3937
- return async (artifact, signal, options) => {
3938
- if (artifact.kind === "file" && options?.prefer !== "url") {
3939
- const download2 = await client.downloadRetainedArtifact(workspaceId, artifact, { signal });
3940
- return download2.bytes;
3941
- }
3942
- const download = await client.createRetainedArtifactDownloadUrl(workspaceId, artifact, {
3943
- signal
3944
- });
3945
- return { url: download.url, expiresAt: download.expiresAt };
3946
- };
3947
- }
3948
- function createSessionRetainedScreenshotLoader(client, workspaceId, sessionId) {
3949
- return async (artifact, signal) => {
3950
- const download = await client.downloadRetainedScreenshot(
3951
- workspaceId,
3952
- sessionId,
3953
- artifact.artifactId,
3954
- { signal }
3955
- );
3956
- if (!download.metadata.available || !download.bytes) return null;
3957
- 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) {
3958
- throw new Error("Retained screenshot receipt verification failed");
3959
- }
3960
- return download.bytes;
3961
- };
3962
- }
3963
- function createWorkspaceRetainedVideoLoader(client, workspaceId) {
3964
- return async (artifactId, signal) => await client.createVideoArtifactPlaybackSource(workspaceId, artifactId, { signal });
3965
- }
3966
-
3967
3967
  // src/timeline/learning-refusal-row.tsx
3968
3968
  import { BrainCircuitIcon as BrainCircuitIcon4 } from "lucide-react";
3969
3969
  import { createContext as createContext12, useContext as useContext14 } from "react";
@@ -4010,12 +4010,22 @@ function LearningRefusalRow({ refusal }) {
4010
4010
  }
4011
4011
 
4012
4012
  export {
4013
+ createWorkspaceRetainedArtifactLoader,
4014
+ createSessionRetainedScreenshotLoader,
4015
+ createWorkspaceRetainedVideoLoader,
4016
+ ToolReviewHistoryProvider,
4013
4017
  UNRECOVERABLE_TEXT,
4014
4018
  ToolReviewFrame,
4015
4019
  DeclineButton,
4016
4020
  ToolActionReviewCard,
4017
4021
  ToolActionReviewDetails,
4018
4022
  KnowledgeActivityProvider,
4023
+ TimelineComputeLabelProvider,
4024
+ ProviderLogoProvider,
4025
+ gitFileDiffToPatch,
4026
+ PierreDiff,
4027
+ defaultToolRegistry,
4028
+ createDefaultToolRegistry,
4019
4029
  AgentRow,
4020
4030
  AgentRowText,
4021
4031
  AgentRowSection,
@@ -4026,13 +4036,6 @@ export {
4026
4036
  EMBEDDED_GENIE_LOADING,
4027
4037
  setStartupDetails,
4028
4038
  useStartupDetails,
4029
- ToolReviewHistoryProvider,
4030
- TimelineComputeLabelProvider,
4031
- ProviderLogoProvider,
4032
- gitFileDiffToPatch,
4033
- PierreDiff,
4034
- defaultToolRegistry,
4035
- createDefaultToolRegistry,
4036
4039
  EntranceAnimationProvider,
4037
4040
  useEntranceAnimation,
4038
4041
  SeenActivityIdsProvider,
@@ -4044,10 +4047,7 @@ export {
4044
4047
  inheritFoldRestingState,
4045
4048
  useTurnSettleOpen,
4046
4049
  TurnSummary,
4047
- createWorkspaceRetainedArtifactLoader,
4048
- createSessionRetainedScreenshotLoader,
4049
- createWorkspaceRetainedVideoLoader,
4050
4050
  LearningRefusalActionsProvider,
4051
4051
  LearningRefusalRow
4052
4052
  };
4053
- //# sourceMappingURL=chunk-YSSTNTJD.js.map
4053
+ //# sourceMappingURL=chunk-X7L4H4VG.js.map