@opengeni/react 1.4.0 → 1.4.2

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 (212) hide show
  1. package/README.md +8 -0
  2. package/dist/accounts.js +2 -0
  3. package/dist/accounts.js.map +1 -1
  4. package/dist/artifacts-document.js +5 -4
  5. package/dist/artifacts-presentation.js +5 -4
  6. package/dist/artifacts-spreadsheet.js +4 -3
  7. package/dist/artifacts.js +14 -13
  8. package/dist/artifacts.js.map +1 -1
  9. package/dist/browser-viewer-WGJ43YGI.js +17 -0
  10. package/dist/chat-interactive-block-ZFHOKTMS.js +12 -0
  11. package/dist/{chunk-WEHMPOXK.js → chunk-2DDJ6YH6.js} +3 -1
  12. package/dist/{chunk-WEHMPOXK.js.map → chunk-2DDJ6YH6.js.map} +1 -1
  13. package/dist/{chunk-C5X5AJXK.js → chunk-2HVLQ26H.js} +5 -4
  14. package/dist/{chunk-C5X5AJXK.js.map → chunk-2HVLQ26H.js.map} +1 -1
  15. package/dist/{chunk-A4UJB2MM.js → chunk-32CGLXW2.js} +4 -3
  16. package/dist/{chunk-A4UJB2MM.js.map → chunk-32CGLXW2.js.map} +1 -1
  17. package/dist/{chunk-5CVXZA3Y.js → chunk-45NUOSXQ.js} +3 -2
  18. package/dist/{chunk-5CVXZA3Y.js.map → chunk-45NUOSXQ.js.map} +1 -1
  19. package/dist/{chunk-WUISZ3WU.js → chunk-53KJBGPZ.js} +5 -4
  20. package/dist/{chunk-WUISZ3WU.js.map → chunk-53KJBGPZ.js.map} +1 -1
  21. package/dist/{chunk-MBMPHOMA.js → chunk-55DXD22O.js} +3 -2
  22. package/dist/{chunk-MBMPHOMA.js.map → chunk-55DXD22O.js.map} +1 -1
  23. package/dist/{chunk-JT4JW7BC.js → chunk-5I4VRWBB.js} +3 -1
  24. package/dist/{chunk-JT4JW7BC.js.map → chunk-5I4VRWBB.js.map} +1 -1
  25. package/dist/{chunk-UK4TINKT.js → chunk-B27E3V37.js} +3 -1
  26. package/dist/{chunk-UK4TINKT.js.map → chunk-B27E3V37.js.map} +1 -1
  27. package/dist/{chunk-J6DBS4T3.js → chunk-BNKV5ZLF.js} +5 -4
  28. package/dist/{chunk-J6DBS4T3.js.map → chunk-BNKV5ZLF.js.map} +1 -1
  29. package/dist/{chunk-YM2DE7BQ.js → chunk-C5BF4L26.js} +13 -12
  30. package/dist/{chunk-YM2DE7BQ.js.map → chunk-C5BF4L26.js.map} +1 -1
  31. package/dist/{chunk-YBXQDQFX.js → chunk-C7CMD56T.js} +6 -5
  32. package/dist/{chunk-YBXQDQFX.js.map → chunk-C7CMD56T.js.map} +1 -1
  33. package/dist/{chunk-UGLEYEMP.js → chunk-CM7LVUKC.js} +3 -1
  34. package/dist/{chunk-UGLEYEMP.js.map → chunk-CM7LVUKC.js.map} +1 -1
  35. package/dist/{chunk-LJ2UTJJE.js → chunk-CREMJMVN.js} +181 -96
  36. package/dist/chunk-CREMJMVN.js.map +1 -0
  37. package/dist/{chunk-JVYQRRC4.js → chunk-CVYCLFMH.js} +3 -1
  38. package/dist/{chunk-JVYQRRC4.js.map → chunk-CVYCLFMH.js.map} +1 -1
  39. package/dist/{chunk-Y2PRMYLC.js → chunk-G3U2A6GS.js} +3 -2
  40. package/dist/{chunk-Y2PRMYLC.js.map → chunk-G3U2A6GS.js.map} +1 -1
  41. package/dist/{chunk-WZMYFJD3.js → chunk-G6YRCIYJ.js} +16 -7
  42. package/dist/{chunk-WZMYFJD3.js.map → chunk-G6YRCIYJ.js.map} +1 -1
  43. package/dist/{chunk-B3V6TG77.js → chunk-GC3PH6N7.js} +3 -1
  44. package/dist/{chunk-B3V6TG77.js.map → chunk-GC3PH6N7.js.map} +1 -1
  45. package/dist/{chunk-CJUO7J5Z.js → chunk-HXYOSSQO.js} +3 -2
  46. package/dist/{chunk-CJUO7J5Z.js.map → chunk-HXYOSSQO.js.map} +1 -1
  47. package/dist/{chunk-BRM6FVZA.js → chunk-IEE7WCLN.js} +4 -3
  48. package/dist/{chunk-BRM6FVZA.js.map → chunk-IEE7WCLN.js.map} +1 -1
  49. package/dist/{chunk-DYWBUX5Q.js → chunk-IMSUVYQB.js} +6 -5
  50. package/dist/{chunk-DYWBUX5Q.js.map → chunk-IMSUVYQB.js.map} +1 -1
  51. package/dist/{chunk-LN6TCXD3.js → chunk-IUHHPMAX.js} +184 -48
  52. package/dist/chunk-IUHHPMAX.js.map +1 -0
  53. package/dist/{chunk-SGKD2OCN.js → chunk-IYQCWGU5.js} +6 -5
  54. package/dist/{chunk-SGKD2OCN.js.map → chunk-IYQCWGU5.js.map} +1 -1
  55. package/dist/{chunk-J2QWVSQY.js → chunk-JH7V627O.js} +8 -7
  56. package/dist/{chunk-J2QWVSQY.js.map → chunk-JH7V627O.js.map} +1 -1
  57. package/dist/{chunk-EESD3PY3.js → chunk-JHTIMBOL.js} +6 -5
  58. package/dist/{chunk-EESD3PY3.js.map → chunk-JHTIMBOL.js.map} +1 -1
  59. package/dist/{chunk-LNIRAOA3.js → chunk-L2J3PU7A.js} +7 -6
  60. package/dist/{chunk-LNIRAOA3.js.map → chunk-L2J3PU7A.js.map} +1 -1
  61. package/dist/{chunk-ZYRGEKWS.js → chunk-LJUMYUBO.js} +3 -1
  62. package/dist/{chunk-ZYRGEKWS.js.map → chunk-LJUMYUBO.js.map} +1 -1
  63. package/dist/{chunk-4RVYOY4O.js → chunk-LSW2OJVV.js} +4 -3
  64. package/dist/{chunk-4RVYOY4O.js.map → chunk-LSW2OJVV.js.map} +1 -1
  65. package/dist/{chunk-UTRTG6LH.js → chunk-LVS3MH5T.js} +3 -1
  66. package/dist/{chunk-UTRTG6LH.js.map → chunk-LVS3MH5T.js.map} +1 -1
  67. package/dist/chunk-M357MHH3.js +2 -0
  68. package/dist/{chunk-GYVRFZDY.js → chunk-MDIXFKA3.js} +9 -8
  69. package/dist/{chunk-GYVRFZDY.js.map → chunk-MDIXFKA3.js.map} +1 -1
  70. package/dist/{chunk-WRHIZYZF.js → chunk-MEQM4LI3.js} +6 -5
  71. package/dist/{chunk-WRHIZYZF.js.map → chunk-MEQM4LI3.js.map} +1 -1
  72. package/dist/chunk-NX4ADH73.js +14 -0
  73. package/dist/chunk-NX4ADH73.js.map +1 -0
  74. package/dist/{chunk-XCHWDJ22.js → chunk-OGTTUYNT.js} +3 -1
  75. package/dist/{chunk-XCHWDJ22.js.map → chunk-OGTTUYNT.js.map} +1 -1
  76. package/dist/{chunk-GIMRELBW.js → chunk-OYQQJL3J.js} +3 -1
  77. package/dist/{chunk-GIMRELBW.js.map → chunk-OYQQJL3J.js.map} +1 -1
  78. package/dist/{chunk-RSI7XYXL.js → chunk-PBCZL4JP.js} +6 -5
  79. package/dist/{chunk-RSI7XYXL.js.map → chunk-PBCZL4JP.js.map} +1 -1
  80. package/dist/{chunk-I7IWRQLN.js → chunk-PHBFJCEU.js} +17 -11
  81. package/dist/chunk-PHBFJCEU.js.map +1 -0
  82. package/dist/{chunk-3CTRFMAK.js → chunk-PKCAYHDC.js} +5 -4
  83. package/dist/{chunk-3CTRFMAK.js.map → chunk-PKCAYHDC.js.map} +1 -1
  84. package/dist/{chunk-K3HQAKQX.js → chunk-PMV53IMM.js} +3 -1
  85. package/dist/{chunk-K3HQAKQX.js.map → chunk-PMV53IMM.js.map} +1 -1
  86. package/dist/{chunk-YQEAA6LT.js → chunk-QHUE7E4N.js} +3 -2
  87. package/dist/{chunk-YQEAA6LT.js.map → chunk-QHUE7E4N.js.map} +1 -1
  88. package/dist/{chunk-OA6HFRQP.js → chunk-QMMCJGFI.js} +4 -3
  89. package/dist/{chunk-OA6HFRQP.js.map → chunk-QMMCJGFI.js.map} +1 -1
  90. package/dist/{chunk-YV4L3ILF.js → chunk-QV3DJVRZ.js} +3 -1
  91. package/dist/{chunk-YV4L3ILF.js.map → chunk-QV3DJVRZ.js.map} +1 -1
  92. package/dist/{chunk-447JLCBU.js → chunk-S2QH6EZ5.js} +3 -1
  93. package/dist/{chunk-447JLCBU.js.map → chunk-S2QH6EZ5.js.map} +1 -1
  94. package/dist/{chunk-PNY3JKBJ.js → chunk-SFH43JT2.js} +5 -4
  95. package/dist/{chunk-PNY3JKBJ.js.map → chunk-SFH43JT2.js.map} +1 -1
  96. package/dist/{chunk-AWZLIMKX.js → chunk-T46QZH3E.js} +3 -1
  97. package/dist/{chunk-AWZLIMKX.js.map → chunk-T46QZH3E.js.map} +1 -1
  98. package/dist/{chunk-5J4FOW6Q.js → chunk-TNEZNMSN.js} +3 -1
  99. package/dist/{chunk-5J4FOW6Q.js.map → chunk-TNEZNMSN.js.map} +1 -1
  100. package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
  101. package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
  102. package/dist/{chunk-H5X55XH7.js → chunk-UDPH5SLV.js} +4 -3
  103. package/dist/{chunk-H5X55XH7.js.map → chunk-UDPH5SLV.js.map} +1 -1
  104. package/dist/{chunk-HDJWDK7W.js → chunk-VCSERYXH.js} +10 -9
  105. package/dist/{chunk-HDJWDK7W.js.map → chunk-VCSERYXH.js.map} +1 -1
  106. package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
  107. package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
  108. package/dist/{chunk-5F4WR7X7.js → chunk-XS67YG5R.js} +3 -1
  109. package/dist/{chunk-5F4WR7X7.js.map → chunk-XS67YG5R.js.map} +1 -1
  110. package/dist/{chunk-TKOTKRWY.js → chunk-XTD7TZHW.js} +3 -1
  111. package/dist/{chunk-TKOTKRWY.js.map → chunk-XTD7TZHW.js.map} +1 -1
  112. package/dist/{chunk-A2PI6UMY.js → chunk-YSRBFJMQ.js} +3 -1
  113. package/dist/{chunk-A2PI6UMY.js.map → chunk-YSRBFJMQ.js.map} +1 -1
  114. package/dist/chunk-YVFRBXST.js +1420 -0
  115. package/dist/chunk-YVFRBXST.js.map +1 -0
  116. package/dist/{chunk-SCOTPE2I.js → chunk-YYLBXXTE.js} +3 -1
  117. package/dist/{chunk-SCOTPE2I.js.map → chunk-YYLBXXTE.js.map} +1 -1
  118. package/dist/{chunk-RHREZ7BO.js → chunk-ZUWF4NF7.js} +3 -1
  119. package/dist/{chunk-RHREZ7BO.js.map → chunk-ZUWF4NF7.js.map} +1 -1
  120. package/dist/clipboard.js +3 -2
  121. package/dist/components/composer-transcription-control.d.ts +4 -0
  122. package/dist/components/session-conversation.d.ts +6 -0
  123. package/dist/composer-voice-events.d.ts +8 -0
  124. package/dist/composer.js +15 -13
  125. package/dist/computer-viewer-46UIN7F3.js +20 -0
  126. package/dist/connect.js +15 -12
  127. package/dist/connect.js.map +1 -1
  128. package/dist/desktop.js +6 -5
  129. package/dist/desktop.js.map +1 -1
  130. package/dist/diffs.js +2 -1
  131. package/dist/diffs.js.map +1 -1
  132. package/dist/editor.js +4 -3
  133. package/dist/editor.js.map +1 -1
  134. package/dist/embedded-voice-NIL4RDX3.js +69 -0
  135. package/dist/embedded-voice-NIL4RDX3.js.map +1 -0
  136. package/dist/{fleet-decision-row-YZ3ZKWMM.js → fleet-decision-row-SI63O5V4.js} +3 -1
  137. package/dist/{fleet-decision-row-YZ3ZKWMM.js.map → fleet-decision-row-SI63O5V4.js.map} +1 -1
  138. package/dist/hooks/use-client-config-flags.d.ts +6 -0
  139. package/dist/hooks/use-realtime-voice-models.d.ts +9 -0
  140. package/dist/hooks/use-voice-input.d.ts +8 -1
  141. package/dist/index.js +47 -45
  142. package/dist/index.js.map +1 -1
  143. package/dist/interaction.js +14 -13
  144. package/dist/interaction.js.map +1 -1
  145. package/dist/{latest-question-GPYM2JNU.js → latest-question-2POFPYNB.js} +5 -4
  146. package/dist/{latest-question-GPYM2JNU.js.map → latest-question-2POFPYNB.js.map} +1 -1
  147. package/dist/machines.js +8 -7
  148. package/dist/{markdown-table-layout-QXSLK4BY.js → markdown-table-layout-DQ4DRNVT.js} +3 -1
  149. package/dist/{markdown-table-layout-QXSLK4BY.js.map → markdown-table-layout-DQ4DRNVT.js.map} +1 -1
  150. package/dist/model-policy-picker-menu-WRNSRFQC.js +15 -0
  151. package/dist/model-policy.js +2 -1
  152. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
  153. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
  154. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
  155. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
  156. package/dist/{platform-activity-row-627BFZ46.js → platform-activity-row-PJJVATTZ.js} +3 -1
  157. package/dist/{platform-activity-row-627BFZ46.js.map → platform-activity-row-PJJVATTZ.js.map} +1 -1
  158. package/dist/{queue-surface-implementation-ZHFI5JBP.js → queue-surface-implementation-67FS7FUI.js} +10 -9
  159. package/dist/{queue-surface-implementation-ZHFI5JBP.js.map → queue-surface-implementation-67FS7FUI.js.map} +1 -1
  160. package/dist/realtime/embedded-voice.d.ts +20 -0
  161. package/dist/realtime.js +22 -1353
  162. package/dist/realtime.js.map +1 -1
  163. package/dist/sandbox-files-34CJJNOY.js +21 -0
  164. package/dist/session-ui.js +32 -30
  165. package/dist/session-ui.js.map +1 -1
  166. package/dist/session.js +10 -9
  167. package/dist/sites.js +2 -1
  168. package/dist/terminal.js +6 -5
  169. package/dist/terminal.js.map +1 -1
  170. package/dist/{timeline-annotation-markers-GNDHTGBD.js → timeline-annotation-markers-U3G66KUD.js} +5 -4
  171. package/dist/{timeline-annotation-markers-GNDHTGBD.js.map → timeline-annotation-markers-U3G66KUD.js.map} +1 -1
  172. package/dist/{timeline-annotation-selection-DMLMM2TX.js → timeline-annotation-selection-BI7QTPTZ.js} +4 -3
  173. package/dist/{timeline-annotation-selection-DMLMM2TX.js.map → timeline-annotation-selection-BI7QTPTZ.js.map} +1 -1
  174. package/dist/{timeline-annotations-dialog-ELRDBHTS.js → timeline-annotations-dialog-FOMHSDTE.js} +7 -6
  175. package/dist/{timeline-annotations-dialog-ELRDBHTS.js.map → timeline-annotations-dialog-FOMHSDTE.js.map} +1 -1
  176. package/dist/usage.js +6 -5
  177. package/dist/usage.js.map +1 -1
  178. package/dist/voice-recording-owner.d.ts +7 -0
  179. package/package.json +3 -3
  180. package/src/components/composer-transcription-control.tsx +109 -27
  181. package/src/components/markdown.tsx +7 -2
  182. package/src/components/message-timeline.tsx +10 -1
  183. package/src/components/session-conversation.tsx +44 -0
  184. package/src/components/session-proxy-scope.tsx +26 -5
  185. package/src/composer-voice-events.ts +12 -0
  186. package/src/connection-discovery.tsx +4 -1
  187. package/src/hooks/use-client-config-flags.ts +8 -0
  188. package/src/hooks/use-goal.ts +12 -1
  189. package/src/hooks/use-realtime-voice-models.ts +67 -0
  190. package/src/hooks/use-voice-input.ts +109 -18
  191. package/src/realtime/embedded-voice.tsx +81 -0
  192. package/src/realtime/realtime-control.tsx +82 -17
  193. package/src/voice-recording-owner.ts +22 -0
  194. package/styles/compiled.css +72 -18
  195. package/styles/index.css +49 -0
  196. package/styles/responsive.css +61 -4
  197. package/styles/session-capability.css +1 -1
  198. package/dist/browser-viewer-SHYKQRNX.js +0 -16
  199. package/dist/chat-interactive-block-UGBTNB3L.js +0 -11
  200. package/dist/chunk-I7IWRQLN.js.map +0 -1
  201. package/dist/chunk-IWIDV7SB.js +0 -1
  202. package/dist/chunk-LJ2UTJJE.js.map +0 -1
  203. package/dist/chunk-LN6TCXD3.js.map +0 -1
  204. package/dist/computer-viewer-6SRGWRUX.js +0 -19
  205. package/dist/model-policy-picker-menu-DXHUL73H.js +0 -14
  206. package/dist/sandbox-files-GORZOUUJ.js +0 -20
  207. /package/dist/{browser-viewer-SHYKQRNX.js.map → browser-viewer-WGJ43YGI.js.map} +0 -0
  208. /package/dist/{chat-interactive-block-UGBTNB3L.js.map → chat-interactive-block-ZFHOKTMS.js.map} +0 -0
  209. /package/dist/{chunk-IWIDV7SB.js.map → chunk-M357MHH3.js.map} +0 -0
  210. /package/dist/{computer-viewer-6SRGWRUX.js.map → computer-viewer-46UIN7F3.js.map} +0 -0
  211. /package/dist/{model-policy-picker-menu-DXHUL73H.js.map → model-policy-picker-menu-WRNSRFQC.js.map} +0 -0
  212. /package/dist/{sandbox-files-GORZOUUJ.js.map → sandbox-files-34CJJNOY.js.map} +0 -0
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import {
2
3
  useThemeType
3
- } from "./chunk-UK4TINKT.js";
4
+ } from "./chunk-B27E3V37.js";
4
5
  import {
5
6
  EmptyQueueStateSurface,
6
7
  QUEUE_ITEM_CONTENT_UNAVAILABLE,
@@ -8,15 +9,15 @@ import {
8
9
  TimelineAnnotationsChip,
9
10
  queueItemContent,
10
11
  requestQueueDraftEdit
11
- } from "./chunk-J2QWVSQY.js";
12
+ } from "./chunk-JH7V627O.js";
12
13
  import {
13
14
  TimelineAnnotationSourceRootContext
14
- } from "./chunk-C5X5AJXK.js";
15
+ } from "./chunk-2HVLQ26H.js";
15
16
  import {
16
17
  isRetainedImageContentType,
17
18
  timelineGroupContainsPresentedImage,
18
19
  useRetainedImageObjectUrl
19
- } from "./chunk-CJUO7J5Z.js";
20
+ } from "./chunk-HXYOSSQO.js";
20
21
  import {
21
22
  approvalsFromRequiresAction,
22
23
  conversationTimeline,
@@ -30,18 +31,18 @@ import {
30
31
  useSessionControl,
31
32
  useSessionEvents,
32
33
  useTurnQueue
33
- } from "./chunk-WZMYFJD3.js";
34
+ } from "./chunk-G6YRCIYJ.js";
34
35
  import {
35
36
  buildTimeline,
36
37
  groupTimeline
37
- } from "./chunk-OA6HFRQP.js";
38
+ } from "./chunk-QMMCJGFI.js";
38
39
  import {
39
40
  mcpToolLeaf,
40
41
  toolDisplayName
41
- } from "./chunk-AWZLIMKX.js";
42
+ } from "./chunk-T46QZH3E.js";
42
43
  import {
43
44
  OpenGeniProvider
44
- } from "./chunk-3CTRFMAK.js";
45
+ } from "./chunk-PKCAYHDC.js";
45
46
  import {
46
47
  ActivityDisclosure,
47
48
  BodyNote,
@@ -62,22 +63,22 @@ import {
62
63
  useForcedDefaultOpen,
63
64
  useTimelineSearchNavigation,
64
65
  useTimelineSearchReveal
65
- } from "./chunk-I7IWRQLN.js";
66
+ } from "./chunk-PHBFJCEU.js";
66
67
  import {
67
68
  prefersReducedMotion
68
- } from "./chunk-GIMRELBW.js";
69
+ } from "./chunk-OYQQJL3J.js";
69
70
  import {
70
71
  OpenGeniLinkProvider,
71
72
  chainLinkResolvers,
72
73
  sessionLinkResolver,
73
74
  useOpenGeniLinkResolver,
74
75
  viewerLinkResolver
75
- } from "./chunk-XCHWDJ22.js";
76
+ } from "./chunk-OGTTUYNT.js";
76
77
  import {
77
78
  loadPierreDiffs,
78
79
  pierreDiffsRevision,
79
80
  subscribePierreDiffs
80
- } from "./chunk-A2PI6UMY.js";
81
+ } from "./chunk-YSRBFJMQ.js";
81
82
  import {
82
83
  Actions,
83
84
  AttachButton,
@@ -101,25 +102,25 @@ import {
101
102
  StopButton,
102
103
  Surface,
103
104
  useChatComposerController
104
- } from "./chunk-LN6TCXD3.js";
105
+ } from "./chunk-IUHHPMAX.js";
105
106
  import {
106
107
  FILE_ONLY_MESSAGE_TEXT,
107
108
  useComposer
108
- } from "./chunk-RSI7XYXL.js";
109
+ } from "./chunk-PBCZL4JP.js";
109
110
  import {
110
111
  LightboxProvider,
111
112
  Tooltip,
112
113
  TooltipContent,
113
114
  TooltipProvider,
114
115
  TooltipTrigger
115
- } from "./chunk-BRM6FVZA.js";
116
+ } from "./chunk-IEE7WCLN.js";
116
117
  import {
117
118
  ModelPolicyPicker
118
- } from "./chunk-LNIRAOA3.js";
119
+ } from "./chunk-L2J3PU7A.js";
119
120
  import {
120
121
  projectPickerRows,
121
122
  sortPickerRows
122
- } from "./chunk-5F4WR7X7.js";
123
+ } from "./chunk-XS67YG5R.js";
123
124
  import {
124
125
  formatBytes,
125
126
  formatClockTime,
@@ -127,25 +128,25 @@ import {
127
128
  stringifyPayload,
128
129
  truncate,
129
130
  tryParseJson
130
- } from "./chunk-UTRTG6LH.js";
131
+ } from "./chunk-LVS3MH5T.js";
131
132
  import {
132
133
  allowanceLabels,
133
134
  allowanceResetSentence,
134
135
  formatAllowanceInstant
135
- } from "./chunk-B3V6TG77.js";
136
+ } from "./chunk-GC3PH6N7.js";
136
137
  import {
137
138
  usePolledValue
138
- } from "./chunk-YQEAA6LT.js";
139
+ } from "./chunk-QHUE7E4N.js";
139
140
  import {
140
141
  useErrorMessage
141
- } from "./chunk-UGLEYEMP.js";
142
+ } from "./chunk-CM7LVUKC.js";
142
143
  import {
143
144
  useOpenGeni,
144
145
  useOpenGeniClient
145
- } from "./chunk-TKOTKRWY.js";
146
+ } from "./chunk-XTD7TZHW.js";
146
147
  import {
147
148
  cn
148
- } from "./chunk-22KP6LR5.js";
149
+ } from "./chunk-TXS65BB2.js";
149
150
 
150
151
  // src/components/human-input-form.tsx
151
152
  import { ChevronDownIcon, ChevronUpIcon, MessageCircleQuestionIcon } from "lucide-react";
@@ -1350,7 +1351,7 @@ function ToolActionReviewCard({
1350
1351
  function ToolActionReviewDetails({
1351
1352
  review,
1352
1353
  path: initialPath = "",
1353
- load,
1354
+ load: load2,
1354
1355
  onBack,
1355
1356
  manageFocus = true
1356
1357
  }) {
@@ -1373,7 +1374,7 @@ function ToolActionReviewDetails({
1373
1374
  let active = true;
1374
1375
  setPage(null);
1375
1376
  setError(false);
1376
- void load(review, path, offset).then(
1377
+ void load2(review, path, offset).then(
1377
1378
  (value) => {
1378
1379
  if (!active) return;
1379
1380
  if (value.actionDigest !== review.actionDigest || value.id !== review.id || value.path !== path) {
@@ -1389,7 +1390,7 @@ function ToolActionReviewDetails({
1389
1390
  return () => {
1390
1391
  active = false;
1391
1392
  };
1392
- }, [review, path, offset, load, retry]);
1393
+ }, [review, path, offset, load2, retry]);
1393
1394
  const open = (next, label) => {
1394
1395
  setTrail((value) => [...value, { path, label }]);
1395
1396
  setPath(next);
@@ -1966,7 +1967,7 @@ import { jsx as jsx6 } from "react/jsx-runtime";
1966
1967
  var History = createContext2(null);
1967
1968
  function ToolReviewHistoryProvider({
1968
1969
  events,
1969
- load,
1970
+ load: load2,
1970
1971
  onViewDetails,
1971
1972
  children
1972
1973
  }) {
@@ -1980,10 +1981,10 @@ function ToolReviewHistoryProvider({
1980
1981
  revision: [...events].reverse().find(
1981
1982
  (event) => event.type === "session.requiresAction" || event.type === "agent.toolCall.output" || event.type.startsWith("turn.") || event.type === "user.approvalDecision" || event.type.startsWith("session.control.")
1982
1983
  )?.sequence ?? 0,
1983
- load,
1984
+ load: load2,
1984
1985
  onViewDetails
1985
1986
  }),
1986
- [events, load, onViewDetails]
1987
+ [events, load2, onViewDetails]
1987
1988
  );
1988
1989
  return /* @__PURE__ */ jsx6(History.Provider, { value, children });
1989
1990
  }
@@ -1994,12 +1995,12 @@ function useHasToolReview(approvalId) {
1994
1995
  function useRecordedToolReview(approvalId) {
1995
1996
  const history = useContext2(History);
1996
1997
  const [review, setReview] = useState5(null);
1997
- const load = history?.load;
1998
+ const load2 = history?.load;
1998
1999
  const revision = history?.revision;
1999
2000
  useEffect5(() => {
2000
- if (!load || !approvalId) return;
2001
+ if (!load2 || !approvalId) return;
2001
2002
  let active = true;
2002
- void load(approvalId).then(
2003
+ void load2(approvalId).then(
2003
2004
  (value) => {
2004
2005
  if (active && value.id === approvalId) setReview(value);
2005
2006
  },
@@ -2008,7 +2009,7 @@ function useRecordedToolReview(approvalId) {
2008
2009
  return () => {
2009
2010
  active = false;
2010
2011
  };
2011
- }, [approvalId, load, revision]);
2012
+ }, [approvalId, load2, revision]);
2012
2013
  const onViewDetails = history?.onViewDetails;
2013
2014
  return {
2014
2015
  review: review && review.id === approvalId ? review : null,
@@ -3408,7 +3409,7 @@ function RetainedSessionImageDisclosure(props) {
3408
3409
  }
3409
3410
  function LoadedRetainedSessionImageDisclosure({
3410
3411
  artifact,
3411
- load,
3412
+ load: load2,
3412
3413
  title,
3413
3414
  caption,
3414
3415
  noun,
@@ -3421,7 +3422,7 @@ function LoadedRetainedSessionImageDisclosure({
3421
3422
  defaultOpen,
3422
3423
  children
3423
3424
  }) {
3424
- const state = useRetainedImageObjectUrl(artifact, load);
3425
+ const state = useRetainedImageObjectUrl(artifact, load2);
3425
3426
  const downloadFilename = filename ?? retainedImageFilename(artifact);
3426
3427
  const figure = {
3427
3428
  src: state.kind === "ready" ? state.url : "",
@@ -3752,12 +3753,12 @@ function SiteArtifactRenderer({ item }) {
3752
3753
  }
3753
3754
  function GeneratedImageDisclosure({
3754
3755
  receipt,
3755
- load,
3756
+ load: load2,
3756
3757
  prompt,
3757
3758
  failed,
3758
3759
  cancelled
3759
3760
  }) {
3760
- const state = useRetainedImageObjectUrl(receipt.artifact, load);
3761
+ const state = useRetainedImageObjectUrl(receipt.artifact, load2);
3761
3762
  const dimensions = receipt.artifact.dimensions;
3762
3763
  const title = failed ? "Image generation failed" : "Generated image";
3763
3764
  const caption = prompt || `Generated image \xB7 ${dimensions.width}\xD7${dimensions.height}`;
@@ -5044,8 +5045,8 @@ function useSeenActivityIds() {
5044
5045
 
5045
5046
  // src/timeline/activity-rail.tsx
5046
5047
  import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
5047
- var LazyFleetDecisionRow = lazy2(() => import("./fleet-decision-row-YZ3ZKWMM.js"));
5048
- var LazyPlatformActivityRow = lazy2(() => import("./platform-activity-row-627BFZ46.js"));
5048
+ var LazyFleetDecisionRow = lazy2(() => import("./fleet-decision-row-SI63O5V4.js"));
5049
+ var LazyPlatformActivityRow = lazy2(() => import("./platform-activity-row-PJJVATTZ.js"));
5049
5050
  function familyOf(item) {
5050
5051
  if (item.kind === "tool-call") {
5051
5052
  return item.name === "exec_command" || item.name === "write_stdin" ? "terminal" : item.name;
@@ -7288,8 +7289,8 @@ function AllowanceExhaustedRow({ refusal }) {
7288
7289
 
7289
7290
  // src/components/message-timeline.tsx
7290
7291
  import { Fragment as Fragment6, jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
7291
- var TimelineAnnotationSelection = lazy3(() => import("./timeline-annotation-selection-DMLMM2TX.js"));
7292
- var TimelineAnnotationMarkers = lazy3(() => import("./timeline-annotation-markers-GNDHTGBD.js"));
7292
+ var TimelineAnnotationSelection = lazy3(() => import("./timeline-annotation-selection-BI7QTPTZ.js"));
7293
+ var TimelineAnnotationMarkers = lazy3(() => import("./timeline-annotation-markers-U3G66KUD.js"));
7293
7294
  var PIN_THRESHOLD_PX = 48;
7294
7295
  var JUMP_TO_LATEST_CATCHUP_DEBT_PX = 240;
7295
7296
  var QUESTION_NAV_MARGIN_PX = 12;
@@ -7310,10 +7311,10 @@ var LIVE_NOTE_FOLD_MS = 220;
7310
7311
  var LIVE_NOTE_GAP_PX = 20;
7311
7312
  var LIVE_NOTE_RESERVE_MS = 700;
7312
7313
  var LiveNoteFoldContext = createContext12(null);
7313
- function invokeOlderLoad(load, noProgress, attempt, preserveTail = false) {
7314
+ function invokeOlderLoad(load2, noProgress, attempt, preserveTail = false) {
7314
7315
  try {
7315
7316
  const result = invokeOlderHistoryLoaderWithReceiptCapture(
7316
- load,
7317
+ load2,
7317
7318
  (receipt2) => {
7318
7319
  attempt[2] = receipt2;
7319
7320
  },
@@ -8770,6 +8771,12 @@ function MessageTimeline({
8770
8771
  }
8771
8772
  releasePinAfterScrollSettled(node);
8772
8773
  };
8774
+ useEffect12(() => {
8775
+ const node = scrollRef.current;
8776
+ if (!node) return;
8777
+ node.addEventListener("scrollend", onScrollEnd);
8778
+ return () => node.removeEventListener("scrollend", onScrollEnd);
8779
+ });
8773
8780
  const timeline = /* @__PURE__ */ jsx21(
8774
8781
  AllowancePresentationProvider,
8775
8782
  {
@@ -8797,7 +8804,6 @@ function MessageTimeline({
8797
8804
  "data-og-bottom-follow": autoFollow && pinned && !hasNewer ? "true" : "false",
8798
8805
  tabIndex: -1,
8799
8806
  onScroll,
8800
- onScrollEnd,
8801
8807
  onWheel,
8802
8808
  onTouchStart: (event) => {
8803
8809
  stopSettlement();
@@ -10715,7 +10721,7 @@ function authReasonLine(reason) {
10715
10721
  import { Loader2Icon } from "lucide-react";
10716
10722
  import { lazy as lazy4, Suspense as Suspense5 } from "react";
10717
10723
  import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
10718
- var loadQueueSurface = () => import("./queue-surface-implementation-ZHFI5JBP.js");
10724
+ var loadQueueSurface = () => import("./queue-surface-implementation-67FS7FUI.js");
10719
10725
  var QueueSurface = createQueueSurface(loadQueueSurface);
10720
10726
  function createQueueSurface(loadImplementation) {
10721
10727
  const LazyQueueSurface = lazy4(async () => ({
@@ -10756,11 +10762,11 @@ function QueueSurfaceFallback() {
10756
10762
  import { useCallback as useCallback5 } from "react";
10757
10763
  function useAvailableModels(options = {}) {
10758
10764
  const client = useOpenGeniClient(options);
10759
- const load = useCallback5(
10765
+ const load2 = useCallback5(
10760
10766
  async (signal) => await client.getClientConfig({ signal }),
10761
10767
  [client]
10762
10768
  );
10763
- const state = usePolledValue(load, {
10769
+ const state = usePolledValue(load2, {
10764
10770
  pollIntervalMs: options.pollIntervalMs,
10765
10771
  enabled: options.enabled
10766
10772
  });
@@ -10774,7 +10780,7 @@ function useAvailableModels(options = {}) {
10774
10780
  }
10775
10781
  function useWorkspaceModelCatalog(options) {
10776
10782
  const client = useOpenGeniClient(options);
10777
- const load = useCallback5(
10783
+ const load2 = useCallback5(
10778
10784
  async (signal) => {
10779
10785
  if (!options.workspaceId) {
10780
10786
  return { models: [], defaultModel: null };
@@ -10790,7 +10796,7 @@ function useWorkspaceModelCatalog(options) {
10790
10796
  },
10791
10797
  [client, options.workspaceId]
10792
10798
  );
10793
- const state = usePolledValue(load, {
10799
+ const state = usePolledValue(load2, {
10794
10800
  pollIntervalMs: options.pollIntervalMs,
10795
10801
  enabled: options.enabled !== false && Boolean(options.workspaceId)
10796
10802
  });
@@ -12328,10 +12334,10 @@ import {
12328
12334
  lazy as lazy5,
12329
12335
  Suspense as Suspense6,
12330
12336
  useCallback as useCallback6,
12331
- useEffect as useEffect17,
12337
+ useEffect as useEffect18,
12332
12338
  useMemo as useMemo10,
12333
12339
  useRef as useRef13,
12334
- useState as useState22
12340
+ useState as useState23
12335
12341
  } from "react";
12336
12342
 
12337
12343
  // src/hooks/use-client-config-flags.ts
@@ -12345,7 +12351,8 @@ var INITIAL_FLAGS = {
12345
12351
  artifacts: true,
12346
12352
  sessionCreation: true,
12347
12353
  archive: true,
12348
- voiceInput: null
12354
+ voiceInput: null,
12355
+ realtimeVoice: false
12349
12356
  };
12350
12357
  var configReads = /* @__PURE__ */ new WeakMap();
12351
12358
  function readClientConfig(client) {
@@ -12377,7 +12384,8 @@ function useClientConfigFlags(client) {
12377
12384
  artifacts: config.artifacts !== false,
12378
12385
  sessionCreation: config.sessionCreation !== false,
12379
12386
  archive: config.archive !== false,
12380
- voiceInput: config.voiceInput?.available === true ? config.voiceInput : null
12387
+ voiceInput: config.voiceInput?.available === true ? config.voiceInput : null,
12388
+ realtimeVoice: config.realtimeVoice !== false
12381
12389
  });
12382
12390
  }
12383
12391
  },
@@ -12390,10 +12398,62 @@ function useClientConfigFlags(client) {
12390
12398
  return flags;
12391
12399
  }
12392
12400
 
12401
+ // src/hooks/use-realtime-voice-models.ts
12402
+ import { useEffect as useEffect15, useState as useState20 } from "react";
12403
+ var CACHE_TTL_MS = 6e4;
12404
+ var cache = /* @__PURE__ */ new WeakMap();
12405
+ function load(client, workspaceId) {
12406
+ let byWorkspace = cache.get(client);
12407
+ if (!byWorkspace) {
12408
+ byWorkspace = /* @__PURE__ */ new Map();
12409
+ cache.set(client, byWorkspace);
12410
+ }
12411
+ const hit = byWorkspace.get(workspaceId);
12412
+ if (hit && hit.expiresAt > Date.now()) return hit.models;
12413
+ const models = Promise.resolve().then(() => client.getWorkspaceRealtimeModelCatalog(workspaceId)).then((catalog) => catalog.models.filter((model) => model.available));
12414
+ const entry = { models, expiresAt: Date.now() + CACHE_TTL_MS };
12415
+ byWorkspace.set(workspaceId, entry);
12416
+ models.catch(() => {
12417
+ if (byWorkspace.get(workspaceId) === entry) byWorkspace.delete(workspaceId);
12418
+ });
12419
+ return models;
12420
+ }
12421
+ function useRealtimeVoiceModels(client, workspaceId, enabled) {
12422
+ const [models, setModels] = useState20([]);
12423
+ useEffect15(() => {
12424
+ setModels([]);
12425
+ const catalogClient = client;
12426
+ if (!enabled || !workspaceId) return;
12427
+ if (typeof catalogClient.getWorkspaceRealtimeModelCatalog !== "function") return;
12428
+ let live = true;
12429
+ load(catalogClient, workspaceId).then(
12430
+ (available) => {
12431
+ if (live) setModels(available);
12432
+ },
12433
+ () => void 0
12434
+ );
12435
+ return () => {
12436
+ live = false;
12437
+ };
12438
+ }, [client, workspaceId, enabled]);
12439
+ return models;
12440
+ }
12441
+
12393
12442
  // src/components/session-proxy-scope.tsx
12394
- import { OpenGeniBrowserClient } from "@opengeni/sdk/browser";
12395
- import { useEffect as useEffect15, useMemo as useMemo9, useRef as useRef12, useState as useState20 } from "react";
12443
+ import {
12444
+ formatErrorMessage,
12445
+ OpenGeniApiError as OpenGeniApiError2,
12446
+ OpenGeniBrowserClient
12447
+ } from "@opengeni/sdk/browser";
12448
+ import { useEffect as useEffect16, useMemo as useMemo9, useRef as useRef12, useState as useState21 } from "react";
12396
12449
  import { jsx as jsx25 } from "react/jsx-runtime";
12450
+ function proxyLoadErrorMessage(error) {
12451
+ if (error instanceof OpenGeniApiError2 && error.status === 401 && error.code === "unauthenticated") {
12452
+ const message = "Chat is unavailable right now. Ask an administrator for help.";
12453
+ return error.correlationId ? `${message} Reference: ${error.correlationId}.` : message;
12454
+ }
12455
+ return formatErrorMessage(error, "Could not load the conversation.");
12456
+ }
12397
12457
  function SessionProxyScope({
12398
12458
  baseUrl,
12399
12459
  workspaceId,
@@ -12425,10 +12485,10 @@ function SessionProxyScope({
12425
12485
  [baseUrl, hasFetch]
12426
12486
  );
12427
12487
  const client = suppliedClient ?? ownClient;
12428
- const [state, setState] = useState20(
12488
+ const [state, setState] = useState21(
12429
12489
  workspaceId ? { status: "ready", workspaceId } : { status: "loading" }
12430
12490
  );
12431
- useEffect15(() => {
12491
+ useEffect16(() => {
12432
12492
  if (workspaceId) {
12433
12493
  setState({ status: "ready", workspaceId });
12434
12494
  return;
@@ -12447,10 +12507,7 @@ function SessionProxyScope({
12447
12507
  },
12448
12508
  (error) => {
12449
12509
  if (!active) return;
12450
- setState({
12451
- status: "error",
12452
- message: error instanceof Error ? error.message : "Could not load the conversation."
12453
- });
12510
+ setState({ status: "error", message: proxyLoadErrorMessage(error) });
12454
12511
  }
12455
12512
  );
12456
12513
  return () => {
@@ -12467,7 +12524,7 @@ function SessionProxyScope({
12467
12524
  }
12468
12525
 
12469
12526
  // src/lib/host-theme.ts
12470
- import { useLayoutEffect as useLayoutEffect6, useEffect as useEffect16, useState as useState21 } from "react";
12527
+ import { useLayoutEffect as useLayoutEffect6, useEffect as useEffect17, useState as useState22 } from "react";
12471
12528
  var HOST_THEME_ROOT_ATTRIBUTE = "data-og-host-theme";
12472
12529
  var HOST_THEME_ATTRIBUTES = [
12473
12530
  "data-theme",
@@ -12695,7 +12752,7 @@ function hostSurfaceStyle(theme, background) {
12695
12752
  }
12696
12753
  return style;
12697
12754
  }
12698
- var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect16 : useLayoutEffect6;
12755
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect17 : useLayoutEffect6;
12699
12756
  function designedTheme(overrides) {
12700
12757
  for (const token of ["--og-color-fg", "--og-color-bg", "--og-color-canvas"]) {
12701
12758
  const value = overrides[token];
@@ -12745,7 +12802,7 @@ function resolveHostThemeState(element, preference, surface) {
12745
12802
  function useHostTheme(ref, options) {
12746
12803
  const preference = options.theme ?? "auto";
12747
12804
  const surface = options.surface ?? "host";
12748
- const [state, setState] = useState21({ theme: preference === "auto" ? void 0 : preference, inherited: false, style: null });
12805
+ const [state, setState] = useState22({ theme: preference === "auto" ? void 0 : preference, inherited: false, style: null });
12749
12806
  useIsomorphicLayoutEffect(() => {
12750
12807
  const element = ref.current;
12751
12808
  if (!element || typeof window === "undefined") return;
@@ -12834,7 +12891,7 @@ function SessionConversation({
12834
12891
  );
12835
12892
  }
12836
12893
  function RetryingConversation(props) {
12837
- const [attempt, setAttempt] = useState22(0);
12894
+ const [attempt, setAttempt] = useState23(0);
12838
12895
  return /* @__PURE__ */ jsx26(
12839
12896
  Conversation,
12840
12897
  {
@@ -12856,6 +12913,7 @@ function Conversation({
12856
12913
  allowanceExhaustedLabels,
12857
12914
  attachments: attachmentsRequested = true,
12858
12915
  voiceInput: voiceInputRequested = true,
12916
+ realtimeVoice: realtimeVoiceRequested = true,
12859
12917
  modelPicker,
12860
12918
  modelPickerProps,
12861
12919
  userMessageDisclosureLabels,
@@ -12956,6 +13014,27 @@ function Conversation({
12956
13014
  if (feed.error) void feed.jumpToLatest();
12957
13015
  };
12958
13016
  const running = status === "running" || status === "recovering" || status === "waiting_capacity";
13017
+ const voiceModels = useRealtimeVoiceModels(
13018
+ context.client,
13019
+ context.workspaceId,
13020
+ realtimeVoiceRequested && config.realtimeVoice && !importedArchive
13021
+ );
13022
+ const [voiceActive, setVoiceActive] = useState23(false);
13023
+ const voiceControl = composer.effectiveControl ?? queue.effectiveControl ?? detail.session?.effectiveControl;
13024
+ const voice = voiceModels.length > 0 && status && !terminal && voiceControl ? /* @__PURE__ */ jsx26(Suspense6, { fallback: null, children: /* @__PURE__ */ jsx26(
13025
+ LazyEmbeddedRealtimeVoice,
13026
+ {
13027
+ client: context.client,
13028
+ workspaceId: context.workspaceId,
13029
+ models: voiceModels,
13030
+ sessionId,
13031
+ sessionStatus: status,
13032
+ effectiveControl: voiceControl,
13033
+ events: feed.events,
13034
+ eventsReady: !feed.initialLoading,
13035
+ onVoiceActiveChange: setVoiceActive
13036
+ }
13037
+ ) }) : null;
12959
13038
  return /* @__PURE__ */ jsxs19(
12960
13039
  "div",
12961
13040
  {
@@ -13108,6 +13187,11 @@ function Conversation({
13108
13187
  running,
13109
13188
  ...composerProps,
13110
13189
  ...transcription && composerProps?.transcription === void 0 ? { transcription } : {},
13190
+ actionsStart: voice ? /* @__PURE__ */ jsxs19(Fragment9, { children: [
13191
+ composerProps?.actionsStart,
13192
+ voice
13193
+ ] }) : composerProps?.actionsStart,
13194
+ transcriptionSuppressed: composerProps?.transcriptionSuppressed ?? voiceActive,
13111
13195
  composer,
13112
13196
  attachments: uploadsEnabled ? files : void 0,
13113
13197
  disabled: terminal || composerProps?.disabled,
@@ -13157,8 +13241,9 @@ function GoalChrome({ sessionId, client, workspaceId, events, chrome }) {
13157
13241
  });
13158
13242
  return /* @__PURE__ */ jsx26(SessionChrome, { ...chrome, goal });
13159
13243
  }
13244
+ var LazyEmbeddedRealtimeVoice = lazy5(() => import("./embedded-voice-NIL4RDX3.js"));
13160
13245
  var LazyChatInteractiveBlock = lazy5(
13161
- () => import("./chat-interactive-block-UGBTNB3L.js").then((module) => ({
13246
+ () => import("./chat-interactive-block-ZFHOKTMS.js").then((module) => ({
13162
13247
  default: module.ChatInteractiveBlock
13163
13248
  }))
13164
13249
  );
@@ -13225,10 +13310,10 @@ function useRetainedLoaders(client, workspaceId, sessionId) {
13225
13310
  }, [client, workspaceId, sessionId]);
13226
13311
  }
13227
13312
  function useComposerTranscription(client, workspaceId, capability) {
13228
- const [workspaceEnabled, setWorkspaceEnabled] = useState22(null);
13313
+ const [workspaceEnabled, setWorkspaceEnabled] = useState23(null);
13229
13314
  const reader = client;
13230
13315
  const supported = capability !== null && typeof reader.transcribeAudio === "function";
13231
- useEffect17(() => {
13316
+ useEffect18(() => {
13232
13317
  if (!supported) return;
13233
13318
  let live = true;
13234
13319
  const key = workspaceId;
@@ -13264,7 +13349,7 @@ function useComposerTranscription(client, workspaceId, capability) {
13264
13349
  }
13265
13350
 
13266
13351
  // src/hooks/use-workspace-sessions.ts
13267
- import { useCallback as useCallback7, useEffect as useEffect18, useRef as useRef14 } from "react";
13352
+ import { useCallback as useCallback7, useEffect as useEffect19, useRef as useRef14 } from "react";
13268
13353
  function useWorkspaceSessions(options = {}) {
13269
13354
  const { client, workspaceId } = useOpenGeni(options);
13270
13355
  const projection = options.projection;
@@ -13300,10 +13385,10 @@ function useWorkspaceSessions(options = {}) {
13300
13385
  ].join("\0");
13301
13386
  const previousQueryKey = useRef14(queryKey);
13302
13387
  const queryKeyTransition = previousQueryKey.current !== queryKey;
13303
- useEffect18(() => {
13388
+ useEffect19(() => {
13304
13389
  previousQueryKey.current = queryKey;
13305
13390
  }, [queryKey]);
13306
- const load = useCallback7(
13391
+ const load2 = useCallback7(
13307
13392
  async (signal) => {
13308
13393
  const readGeneration = beginRead?.() ?? ++nextReadGeneration.current;
13309
13394
  const query = {
@@ -13354,7 +13439,7 @@ function useWorkspaceSessions(options = {}) {
13354
13439
  queryKey
13355
13440
  ]
13356
13441
  );
13357
- const state = usePolledValue(load, {
13442
+ const state = usePolledValue(load2, {
13358
13443
  pollIntervalMs: options.pollIntervalMs,
13359
13444
  enabled
13360
13445
  });
@@ -13385,7 +13470,7 @@ function useWorkspaceSessions(options = {}) {
13385
13470
  // src/components/session-list.tsx
13386
13471
  import { deriveSessionDisplayTitle } from "@opengeni/sdk";
13387
13472
  import { ArchiveIcon, PencilIcon as PencilIcon2, PlusIcon } from "lucide-react";
13388
- import { useEffect as useEffect19, useRef as useRef15, useState as useState23 } from "react";
13473
+ import { useEffect as useEffect20, useRef as useRef15, useState as useState24 } from "react";
13389
13474
  import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
13390
13475
  var DEFAULT_LABELS = {
13391
13476
  heading: "Chats",
@@ -13415,7 +13500,7 @@ function SessionList({
13415
13500
  const labels = { ...DEFAULT_LABELS, ...labelOverrides };
13416
13501
  const scope = { client, workspaceId };
13417
13502
  const context = useOpenGeni(scope);
13418
- const [limit, setLimit] = useState23(pageSize);
13503
+ const [limit, setLimit] = useState24(pageSize);
13419
13504
  const list = useWorkspaceSessions({
13420
13505
  ...scope,
13421
13506
  parentSessionId: null,
@@ -13425,14 +13510,14 @@ function SessionList({
13425
13510
  });
13426
13511
  const refresh = list.refresh;
13427
13512
  const firstRefreshKey = useRef15(refreshKey);
13428
- useEffect19(() => {
13513
+ useEffect20(() => {
13429
13514
  if (Object.is(refreshKey, firstRefreshKey.current)) return;
13430
13515
  firstRefreshKey.current = refreshKey;
13431
13516
  void refresh();
13432
13517
  }, [refresh, refreshKey]);
13433
- const [editing, setEditing] = useState23(null);
13434
- const [busy, setBusy] = useState23(null);
13435
- const [error, setError] = useState23(null);
13518
+ const [editing, setEditing] = useState24(null);
13519
+ const [busy, setBusy] = useState24(null);
13520
+ const [error, setError] = useState24(null);
13436
13521
  const formatError = useErrorMessage();
13437
13522
  const archiveClient = context.client;
13438
13523
  const config = useClientConfigFlags(context.client);
@@ -13584,10 +13669,10 @@ function SessionList({
13584
13669
 
13585
13670
  // src/components/open-geni-chat.tsx
13586
13671
  import {
13587
- OpenGeniApiError as OpenGeniApiError2
13672
+ OpenGeniApiError as OpenGeniApiError3
13588
13673
  } from "@opengeni/sdk";
13589
13674
  import { MenuIcon, XIcon as XIcon2 } from "lucide-react";
13590
- import { useCallback as useCallback8, useRef as useRef16, useState as useState24 } from "react";
13675
+ import { useCallback as useCallback8, useRef as useRef16, useState as useState25 } from "react";
13591
13676
  import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
13592
13677
  var DEFAULT_LABELS2 = {
13593
13678
  openChats: "Open chats",
@@ -13631,10 +13716,10 @@ function Chat({
13631
13716
  const labels = { ...DEFAULT_LABELS2, ...labelOverrides };
13632
13717
  const scope = { client, workspaceId };
13633
13718
  const context = useOpenGeni(scope);
13634
- const [uncontrolled, setUncontrolled] = useState24(defaultSessionId);
13719
+ const [uncontrolled, setUncontrolled] = useState25(defaultSessionId);
13635
13720
  const selected = controlledSessionId !== void 0 ? controlledSessionId : uncontrolled;
13636
- const [drawerOpen, setDrawerOpen] = useState24(false);
13637
- const [listRevision, setListRevision] = useState24(0);
13721
+ const [drawerOpen, setDrawerOpen] = useState25(false);
13722
+ const [listRevision, setListRevision] = useState25(0);
13638
13723
  const root = useRef16(null);
13639
13724
  const hostTheme = useHostTheme(root, { theme, surface });
13640
13725
  const config = useClientConfigFlags(context.client);
@@ -13660,7 +13745,7 @@ function Chat({
13660
13745
  });
13661
13746
  return created.id;
13662
13747
  } catch (error) {
13663
- if (error instanceof OpenGeniApiError2 && error.code === "route_not_allowed") {
13748
+ if (error instanceof OpenGeniApiError3 && error.code === "route_not_allowed") {
13664
13749
  throw new Error(labels.newChatUnavailable, { cause: error });
13665
13750
  }
13666
13751
  throw error;
@@ -13802,10 +13887,10 @@ function NewChat({
13802
13887
  context.workspaceId,
13803
13888
  (conversationProps?.voiceInput ?? true) && available ? config.voiceInput : null
13804
13889
  );
13805
- const [text, setText] = useState24("");
13806
- const [sending, setSending] = useState24(false);
13807
- const [error, setError] = useState24(null);
13808
- const [choice, setChoice] = useState24({});
13890
+ const [text, setText] = useState25("");
13891
+ const [sending, setSending] = useState25(false);
13892
+ const [error, setError] = useState25(null);
13893
+ const [choice, setChoice] = useState25({});
13809
13894
  const formatError = useErrorMessage();
13810
13895
  const attempt = useRef16(null);
13811
13896
  const resources = uploadsEnabled ? files.readyResources : [];
@@ -13941,15 +14026,15 @@ function NewChat({
13941
14026
 
13942
14027
  // src/components/session-commands-panel.tsx
13943
14028
  import { ChevronRightIcon as ChevronRightIcon5, Loader2Icon as Loader2Icon3, SquareIcon } from "lucide-react";
13944
- import { useState as useState25 } from "react";
14029
+ import { useState as useState26 } from "react";
13945
14030
  import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
13946
14031
  function SessionCommandsPanel({
13947
14032
  commands: state,
13948
14033
  readOnly = false
13949
14034
  }) {
13950
14035
  const formatError = useErrorMessage();
13951
- const [pending, setPending] = useState25(null);
13952
- const [error, setError] = useState25(null);
14036
+ const [pending, setPending] = useState26(null);
14037
+ const [error, setError] = useState26(null);
13953
14038
  const active = state.commands.filter(
13954
14039
  (command) => command.state === "running" || command.state === "stopping"
13955
14040
  );
@@ -14038,11 +14123,11 @@ function SessionCommandsPanel({
14038
14123
  }
14039
14124
 
14040
14125
  // src/hooks/use-session-background-commands.ts
14041
- import { useCallback as useCallback9, useEffect as useEffect20, useRef as useRef17 } from "react";
14126
+ import { useCallback as useCallback9, useEffect as useEffect21, useRef as useRef17 } from "react";
14042
14127
  function useSessionBackgroundCommands(sessionId, options = {}) {
14043
14128
  const { client, workspaceId } = useOpenGeni(options);
14044
14129
  const enabled = (options.enabled ?? true) && Boolean(sessionId);
14045
- const load = useCallback9(
14130
+ const load2 = useCallback9(
14046
14131
  async (signal) => {
14047
14132
  if (!sessionId) return { commands: [] };
14048
14133
  if (!client.listSessionBackgroundCommands) {
@@ -14052,13 +14137,13 @@ function useSessionBackgroundCommands(sessionId, options = {}) {
14052
14137
  },
14053
14138
  [client, workspaceId, sessionId]
14054
14139
  );
14055
- const state = usePolledValue(load, {
14140
+ const state = usePolledValue(load2, {
14056
14141
  enabled,
14057
14142
  pollIntervalMs: options.pollIntervalMs
14058
14143
  });
14059
14144
  const refresh = state.refresh;
14060
14145
  const generation = useRef17(0);
14061
- useEffect20(() => {
14146
+ useEffect21(() => {
14062
14147
  generation.current += 1;
14063
14148
  return () => {
14064
14149
  generation.current += 1;
@@ -14268,4 +14353,4 @@ export {
14268
14353
  SessionCommands,
14269
14354
  StartupTimings
14270
14355
  };
14271
- //# sourceMappingURL=chunk-LJ2UTJJE.js.map
14356
+ //# sourceMappingURL=chunk-CREMJMVN.js.map