@opengeni/react 1.3.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 (240) hide show
  1. package/README.md +29 -1
  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-TMYGL6X5.js → chunk-55DXD22O.js} +73 -7
  22. package/dist/chunk-55DXD22O.js.map +1 -0
  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-PGSX7UCP.js → chunk-CREMJMVN.js} +1502 -833
  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-WWEUO2PL.js → chunk-G6YRCIYJ.js} +202 -14
  42. package/dist/chunk-G6YRCIYJ.js.map +1 -0
  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-FZCP527Y.js → chunk-HXYOSSQO.js} +3 -2
  46. package/dist/{chunk-FZCP527Y.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-CY7WK5FD.js → chunk-IUHHPMAX.js} +203 -46
  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-RC6BZ44Q.js → chunk-QMMCJGFI.js} +4 -3
  89. package/dist/{chunk-RC6BZ44Q.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-ERGYJIBB.js → chunk-T46QZH3E.js} +4 -2
  97. package/dist/{chunk-ERGYJIBB.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-742CZ3L3.js → chunk-UDPH5SLV.js} +19 -202
  103. package/dist/chunk-UDPH5SLV.js.map +1 -0
  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 +7 -0
  122. package/dist/components/open-geni-chat.d.ts +6 -2
  123. package/dist/components/session-conversation.d.ts +31 -19
  124. package/dist/components/session-list.d.ts +4 -1
  125. package/dist/components/tool-action-review.d.ts +29 -2
  126. package/dist/components/tool-review-history.d.ts +8 -4
  127. package/dist/composer-voice-events.d.ts +8 -0
  128. package/dist/composer.js +15 -13
  129. package/dist/computer-viewer-46UIN7F3.js +20 -0
  130. package/dist/connect.js +15 -12
  131. package/dist/connect.js.map +1 -1
  132. package/dist/desktop.js +6 -5
  133. package/dist/desktop.js.map +1 -1
  134. package/dist/diffs.js +2 -1
  135. package/dist/diffs.js.map +1 -1
  136. package/dist/editor.js +4 -3
  137. package/dist/editor.js.map +1 -1
  138. package/dist/embedded-voice-NIL4RDX3.js +69 -0
  139. package/dist/embedded-voice-NIL4RDX3.js.map +1 -0
  140. package/dist/{fleet-decision-row-YZ3ZKWMM.js → fleet-decision-row-SI63O5V4.js} +3 -1
  141. package/dist/{fleet-decision-row-YZ3ZKWMM.js.map → fleet-decision-row-SI63O5V4.js.map} +1 -1
  142. package/dist/hooks/use-client-config-flags.d.ts +43 -0
  143. package/dist/hooks/use-realtime-voice-models.d.ts +9 -0
  144. package/dist/hooks/use-voice-input.d.ts +8 -1
  145. package/dist/index.d.ts +3 -3
  146. package/dist/index.js +60 -48
  147. package/dist/index.js.map +1 -1
  148. package/dist/interaction.js +14 -13
  149. package/dist/interaction.js.map +1 -1
  150. package/dist/{latest-question-YTOBHCWR.js → latest-question-2POFPYNB.js} +5 -4
  151. package/dist/{latest-question-YTOBHCWR.js.map → latest-question-2POFPYNB.js.map} +1 -1
  152. package/dist/machines.js +8 -7
  153. package/dist/{markdown-table-layout-QXSLK4BY.js → markdown-table-layout-DQ4DRNVT.js} +3 -1
  154. package/dist/{markdown-table-layout-QXSLK4BY.js.map → markdown-table-layout-DQ4DRNVT.js.map} +1 -1
  155. package/dist/model-policy-picker-menu-WRNSRFQC.js +15 -0
  156. package/dist/model-policy.js +2 -1
  157. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
  158. package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
  159. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
  160. package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
  161. package/dist/{platform-activity-row-627BFZ46.js → platform-activity-row-PJJVATTZ.js} +3 -1
  162. package/dist/{platform-activity-row-627BFZ46.js.map → platform-activity-row-PJJVATTZ.js.map} +1 -1
  163. package/dist/{queue-surface-implementation-ZHFI5JBP.js → queue-surface-implementation-67FS7FUI.js} +10 -9
  164. package/dist/{queue-surface-implementation-ZHFI5JBP.js.map → queue-surface-implementation-67FS7FUI.js.map} +1 -1
  165. package/dist/realtime/embedded-voice.d.ts +20 -0
  166. package/dist/realtime/realtime-control.d.ts +2 -0
  167. package/dist/realtime.js +22 -1332
  168. package/dist/realtime.js.map +1 -1
  169. package/dist/sandbox-files-34CJJNOY.js +21 -0
  170. package/dist/session-capability-policy.d.ts +20 -1
  171. package/dist/session-ui.js +32 -30
  172. package/dist/session-ui.js.map +1 -1
  173. package/dist/session.js +12 -11
  174. package/dist/sites.js +2 -1
  175. package/dist/terminal.js +6 -5
  176. package/dist/terminal.js.map +1 -1
  177. package/dist/timeline/index.d.ts +2 -0
  178. package/dist/timeline/retained-loaders.d.ts +27 -0
  179. package/dist/{timeline-annotation-markers-GNDHTGBD.js → timeline-annotation-markers-U3G66KUD.js} +5 -4
  180. package/dist/{timeline-annotation-markers-GNDHTGBD.js.map → timeline-annotation-markers-U3G66KUD.js.map} +1 -1
  181. package/dist/{timeline-annotation-selection-DMLMM2TX.js → timeline-annotation-selection-BI7QTPTZ.js} +4 -3
  182. package/dist/{timeline-annotation-selection-DMLMM2TX.js.map → timeline-annotation-selection-BI7QTPTZ.js.map} +1 -1
  183. package/dist/{timeline-annotations-dialog-ELRDBHTS.js → timeline-annotations-dialog-FOMHSDTE.js} +7 -6
  184. package/dist/{timeline-annotations-dialog-ELRDBHTS.js.map → timeline-annotations-dialog-FOMHSDTE.js.map} +1 -1
  185. package/dist/usage.js +6 -5
  186. package/dist/usage.js.map +1 -1
  187. package/dist/voice-recording-owner.d.ts +7 -0
  188. package/package.json +3 -3
  189. package/src/components/approval-surface.tsx +190 -79
  190. package/src/components/artifacts/session-artifact-viewer.tsx +4 -2
  191. package/src/components/composer-transcription-control.tsx +121 -25
  192. package/src/components/composer.tsx +1 -0
  193. package/src/components/markdown.tsx +7 -2
  194. package/src/components/message-timeline.tsx +10 -1
  195. package/src/components/open-geni-chat.tsx +53 -13
  196. package/src/components/session-conversation.tsx +273 -63
  197. package/src/components/session-list.tsx +9 -2
  198. package/src/components/session-proxy-scope.tsx +26 -5
  199. package/src/components/tool-action-review.tsx +502 -239
  200. package/src/components/tool-review-history.tsx +18 -43
  201. package/src/composer-voice-events.ts +12 -0
  202. package/src/connection-discovery.tsx +4 -1
  203. package/src/hooks/use-client-config-flags.ts +110 -0
  204. package/src/hooks/use-goal.ts +12 -1
  205. package/src/hooks/use-realtime-voice-models.ts +67 -0
  206. package/src/hooks/use-session-events.ts +19 -16
  207. package/src/hooks/use-transcription.ts +6 -0
  208. package/src/hooks/use-voice-input.ts +115 -18
  209. package/src/index.ts +9 -0
  210. package/src/realtime/embedded-voice.tsx +81 -0
  211. package/src/realtime/realtime-control.tsx +109 -17
  212. package/src/session-capability-policy.ts +119 -6
  213. package/src/timeline/index.ts +10 -0
  214. package/src/timeline/retained-loaders.ts +86 -0
  215. package/src/timeline/tool-display-name.ts +5 -1
  216. package/src/timeline/tool-renderers.tsx +143 -10
  217. package/src/voice-recording-owner.ts +22 -0
  218. package/styles/compiled.css +135 -37
  219. package/styles/index.css +49 -0
  220. package/styles/responsive.css +61 -4
  221. package/styles/session-capability.css +1 -1
  222. package/styles/tokens.css +1 -1
  223. package/dist/browser-viewer-SHYKQRNX.js +0 -16
  224. package/dist/chat-interactive-block-UGBTNB3L.js +0 -11
  225. package/dist/chunk-742CZ3L3.js.map +0 -1
  226. package/dist/chunk-CY7WK5FD.js.map +0 -1
  227. package/dist/chunk-I7IWRQLN.js.map +0 -1
  228. package/dist/chunk-IWIDV7SB.js +0 -1
  229. package/dist/chunk-PGSX7UCP.js.map +0 -1
  230. package/dist/chunk-TMYGL6X5.js.map +0 -1
  231. package/dist/chunk-WWEUO2PL.js.map +0 -1
  232. package/dist/computer-viewer-6SRGWRUX.js +0 -19
  233. package/dist/model-policy-picker-menu-DXHUL73H.js +0 -14
  234. package/dist/sandbox-files-GORZOUUJ.js +0 -20
  235. /package/dist/{browser-viewer-SHYKQRNX.js.map → browser-viewer-WGJ43YGI.js.map} +0 -0
  236. /package/dist/{chat-interactive-block-UGBTNB3L.js.map → chat-interactive-block-ZFHOKTMS.js.map} +0 -0
  237. /package/dist/{chunk-IWIDV7SB.js.map → chunk-M357MHH3.js.map} +0 -0
  238. /package/dist/{computer-viewer-6SRGWRUX.js.map → computer-viewer-46UIN7F3.js.map} +0 -0
  239. /package/dist/{model-policy-picker-menu-DXHUL73H.js.map → model-policy-picker-menu-WRNSRFQC.js.map} +0 -0
  240. /package/dist/{sandbox-files-GORZOUUJ.js.map → sandbox-files-34CJJNOY.js.map} +0 -0
@@ -1,8 +1,9 @@
1
- import { type ReasoningEffort } from "@opengeni/sdk";
1
+ import { type ClientVoiceInputConfig } from "@opengeni/sdk";
2
2
  import { type CSSProperties } from "react";
3
3
  import { type ClientOverride } from "../session-context.js";
4
4
  import { type ModelPolicyPickerProps } from "./model-policy-picker.js";
5
5
  import { type ChatComposerProps } from "./chat-composer.js";
6
+ import type { ComposerTranscriptionControlProps } from "./composer-transcription-control.js";
6
7
  import { type HumanInputSurfaceProps } from "./human-input-surface.js";
7
8
  import { type MessageTimelineProps } from "./message-timeline.js";
8
9
  import { type OpenGeniLinkResolver, type OpenGeniViewerTarget } from "./open-geni-links.js";
@@ -14,6 +15,8 @@ export type SessionConversationLabels = {
14
15
  retry: string;
15
16
  /** Action when the conversation could not load at all. */
16
17
  tryAgain: string;
18
+ /** Shown in place of a Site preview when the session proxy does not serve Sites. */
19
+ sitePreviewUnavailable: string;
17
20
  };
18
21
  export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
19
22
  sessionId: string;
@@ -32,10 +35,17 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
32
35
  * after `resolveLink`.
33
36
  */
34
37
  onOpenArtifact?: ((target: OpenGeniViewerTarget) => void) | undefined;
38
+ /**
39
+ * Open another session the conversation points at: a sub-agent's chat from
40
+ * its worker card or a child update. `OpenGeniChat` opens it in place;
41
+ * without it those entries are not links.
42
+ */
43
+ onOpenSession?: ((sessionId: string) => void) | undefined;
35
44
  /**
36
45
  * Inline previews for assistant `opengeni-site` / `opengeni-html` fences.
37
- * Defaults to the OpenGeni preview (Site reads need the proxy's
38
- * `artifacts` option); `false` shows the fence as code.
46
+ * Defaults to the OpenGeni preview. Behind a session proxy without its
47
+ * `artifacts` option, Sites show as unavailable without a request; `false`
48
+ * shows the fence as code.
39
49
  */
40
50
  renderInteractiveBlock?: MessageTimelineProps["renderInteractiveBlock"] | false;
41
51
  /** Product-specific tool-call renderers; defaults to the built-in registry. */
@@ -52,6 +62,18 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
52
62
  * appears only when the deployment's client config enables file uploads.
53
63
  */
54
64
  attachments?: boolean | undefined;
65
+ /**
66
+ * Composer microphone (dictation into the draft). Defaults to true; it
67
+ * appears only when the client config reports voice input available
68
+ * (`createSessionProxyHandler({ voiceInput: false })` turns it off).
69
+ */
70
+ voiceInput?: boolean | undefined;
71
+ /**
72
+ * Live speech-to-speech voice in the composer. Defaults to true; the voice
73
+ * button appears only when the workspace offers an available voice model
74
+ * and the proxy has not turned it off (`realtimeVoice: false`).
75
+ */
76
+ realtimeVoice?: boolean | undefined;
55
77
  /**
56
78
  * Show the model/reasoning picker. End users of an embedded product rarely
57
79
  * choose models, so it is hidden unless this is `true` or the client config
@@ -88,19 +110,9 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
88
110
  * `<SessionConversation baseUrl="/api/opengeni" sessionId={id} />` needs no
89
111
  * provider: it talks to your session proxy and its resolved workspace. */
90
112
  export declare function SessionConversation({ baseUrl, headers, fetch, ...props }: SessionConversationProps): import("react").JSX.Element;
91
- /** Deployment/proxy flags from the client config: uploads, and whether model choice is open. */
92
- export declare function useClientConfigFlags(client: {
93
- getClientConfig: () => Promise<{
94
- fileUploads?: {
95
- enabled?: boolean;
96
- };
97
- modelSelection?: boolean | undefined;
98
- sandboxFiles?: boolean | undefined;
99
- defaultReasoningEffort?: ReasoningEffort | undefined;
100
- }>;
101
- }): {
102
- uploads: boolean;
103
- modelSelection: boolean;
104
- sandboxFiles: boolean;
105
- defaultReasoningEffort: ReasoningEffort | null;
106
- };
113
+ /**
114
+ * The composer microphone: shown when the deployment can transcribe, enabled
115
+ * once the workspace's voice-input setting allows it.
116
+ */
117
+ export declare function useComposerTranscription(client: unknown, workspaceId: string, capability: ClientVoiceInputConfig | null): ComposerTranscriptionControlProps | null;
118
+ export { useClientConfigFlags } from "../hooks/use-client-config-flags.js";
@@ -17,7 +17,10 @@ export type SessionListProps = ClientOverride & {
17
17
  onNewChat?: (() => void) | undefined;
18
18
  /** Allow inline rename (`updateSession`). Defaults to true. */
19
19
  rename?: boolean | undefined;
20
- /** Allow archiving (`updateSessionArchive`). Defaults to true. */
20
+ /**
21
+ * Allow archiving (`updateSessionArchive`). Defaults to true; hidden when the
22
+ * session proxy reports archive disabled (`archive: false`).
23
+ */
21
24
  archive?: boolean | undefined;
22
25
  /** Called after the selected chat was archived, so the host can move on. */
23
26
  onArchived?: ((sessionId: string) => void) | undefined;
@@ -1,7 +1,29 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
1
2
  import type { ToolActionReview, ToolReviewDetailsPage } from "@opengeni/sdk";
2
3
  export type ToolReviewDetailsLoader = (review: ToolActionReview, path: string, offset: number) => Promise<ToolReviewDetailsPage>;
4
+ type Tone = "waiting" | "ok" | "failed" | "muted";
5
+ /** Shown when an older request's saved values are gone: approval is impossible, decline is not. */
6
+ export declare const UNRECOVERABLE_TEXT = "The details of this older request couldn't be recovered, so it can't be approved. Decline it to let the agent continue.";
7
+ /** Card chrome shared by the review, its loading state and its load failure. */
8
+ export declare function ToolReviewFrame({ tone, icon, eyebrow, title, titleId, subtitle, children, footer, bare, ...rest }: {
9
+ tone: Tone;
10
+ icon: ReactNode;
11
+ eyebrow: ReactNode;
12
+ title: ReactNode;
13
+ titleId?: string | undefined;
14
+ subtitle?: ReactNode;
15
+ children?: ReactNode;
16
+ footer?: ReactNode;
17
+ bare?: boolean | undefined;
18
+ } & Omit<HTMLAttributes<HTMLElement>, "title">): import("react").JSX.Element;
19
+ export declare function DeclineButton({ busy, submitting, label, onClick, }: {
20
+ busy: boolean;
21
+ submitting: boolean;
22
+ label?: string | undefined;
23
+ onClick: () => void;
24
+ }): import("react").JSX.Element;
3
25
  /** One host-neutral review. All callbacks refer to the immutable action; none can edit it. */
4
- export declare function ToolActionReviewCard({ review, onApprove, onReject, submitting, disabled, onViewDetails, pendingLabel, rejectLabel, }: {
26
+ export declare function ToolActionReviewCard({ review, onApprove, onReject, submitting, disabled, onViewDetails, pendingLabel, rejectLabel, bare, }: {
5
27
  review: ToolActionReview;
6
28
  onApprove?: (() => void) | undefined;
7
29
  onReject?: (() => void) | undefined;
@@ -10,11 +32,16 @@ export declare function ToolActionReviewCard({ review, onApprove, onReject, subm
10
32
  onViewDetails?: ((path: string) => void) | undefined;
11
33
  pendingLabel?: string | undefined;
12
34
  rejectLabel?: string | undefined;
35
+ /** Render without card chrome, e.g. inside an expanded timeline row. */
36
+ bare?: boolean | undefined;
13
37
  }): import("react").JSX.Element;
14
38
  /** Full-page detail content: hosts choose navigation, never a nested scrolling panel. */
15
- export declare function ToolActionReviewDetails({ review, path: initialPath, load, onBack, }: {
39
+ export declare function ToolActionReviewDetails({ review, path: initialPath, load, onBack, manageFocus, }: {
16
40
  review: ToolActionReview;
17
41
  path?: string;
18
42
  load: ToolReviewDetailsLoader;
19
43
  onBack: () => void;
44
+ /** Hosts rendering simultaneous previews can retain their own focus. */
45
+ manageFocus?: boolean;
20
46
  }): import("react").JSX.Element;
47
+ export {};
@@ -14,8 +14,12 @@ export declare function ToolReviewHistoryProvider({ events, load, onViewDetails,
14
14
  children: ReactNode;
15
15
  }): import("react").JSX.Element;
16
16
  export declare function useHasToolReview(approvalId: string | null): boolean;
17
- /** Recorded calls have details, never another decision button. */
18
- export declare function ToolReviewHistoryReceipt({ approvalId }: {
19
- approvalId: string;
20
- }): import("react").JSX.Element | null;
17
+ /**
18
+ * The saved review for one recorded call, or null while it loads or when it is
19
+ * unavailable (callers then keep their ordinary tool row).
20
+ */
21
+ export declare function useRecordedToolReview(approvalId: string | null): {
22
+ review: ToolActionReview | null;
23
+ onViewDetails: ((path: string) => void) | undefined;
24
+ };
21
25
  export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Internal DOM signal between the composer's two voice controls: dictation
3
+ * starting supersedes a stale live-voice start failure in the same composer.
4
+ * Not part of the public package surface.
5
+ */
6
+ export declare const COMPOSER_VOICE_INPUT_START_EVENT = "opengeni:composer-voice-input-start";
7
+ /** Closest composer root shared by both voice controls (falls back to the document). */
8
+ export declare function composerVoiceEventScope(element: Element | null): EventTarget | null;
package/dist/composer.js CHANGED
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import {
2
3
  ModelPolicyPickerMenu
3
- } from "./chunk-SGKD2OCN.js";
4
+ } from "./chunk-IYQCWGU5.js";
4
5
  import {
5
6
  Actions,
6
7
  AttachButton,
@@ -41,9 +42,10 @@ import {
41
42
  useChatComposer,
42
43
  useChatComposerController,
43
44
  useVoiceInput
44
- } from "./chunk-CY7WK5FD.js";
45
- import "./chunk-RSI7XYXL.js";
46
- import "./chunk-BRM6FVZA.js";
45
+ } from "./chunk-IUHHPMAX.js";
46
+ import "./chunk-PBCZL4JP.js";
47
+ import "./chunk-IEE7WCLN.js";
48
+ import "./chunk-NX4ADH73.js";
47
49
  import {
48
50
  BillingClassMark,
49
51
  ModelPolicyPicker,
@@ -51,15 +53,15 @@ import {
51
53
  PickerBackHeader,
52
54
  PickerNavRow,
53
55
  defaultModelPolicyPickerMessages
54
- } from "./chunk-LNIRAOA3.js";
55
- import "./chunk-K3HQAKQX.js";
56
- import "./chunk-5F4WR7X7.js";
57
- import "./chunk-VZTQ73XT.js";
58
- import "./chunk-UTRTG6LH.js";
59
- import "./chunk-YQEAA6LT.js";
60
- import "./chunk-UGLEYEMP.js";
61
- import "./chunk-TKOTKRWY.js";
62
- import "./chunk-22KP6LR5.js";
56
+ } from "./chunk-L2J3PU7A.js";
57
+ import "./chunk-PMV53IMM.js";
58
+ import "./chunk-XS67YG5R.js";
59
+ import "./chunk-XEA5BCMA.js";
60
+ import "./chunk-LVS3MH5T.js";
61
+ import "./chunk-QHUE7E4N.js";
62
+ import "./chunk-CM7LVUKC.js";
63
+ import "./chunk-XTD7TZHW.js";
64
+ import "./chunk-TXS65BB2.js";
63
65
  export {
64
66
  Actions,
65
67
  AttachButton,
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import {
3
+ ComputerViewer,
4
+ computerKey
5
+ } from "./chunk-MDIXFKA3.js";
6
+ import "./chunk-BNKV5ZLF.js";
7
+ import "./chunk-CVYCLFMH.js";
8
+ import "./chunk-IMSUVYQB.js";
9
+ import "./chunk-ZUWF4NF7.js";
10
+ import "./chunk-TNEZNMSN.js";
11
+ import "./chunk-QHUE7E4N.js";
12
+ import "./chunk-CM7LVUKC.js";
13
+ import "./chunk-XTD7TZHW.js";
14
+ import "./chunk-5I4VRWBB.js";
15
+ import "./chunk-TXS65BB2.js";
16
+ export {
17
+ ComputerViewer,
18
+ computerKey
19
+ };
20
+ //# sourceMappingURL=computer-viewer-46UIN7F3.js.map
package/dist/connect.js CHANGED
@@ -1,22 +1,23 @@
1
- import "./chunk-IWIDV7SB.js";
1
+ "use client";
2
+ import "./chunk-M357MHH3.js";
2
3
  import {
3
4
  McpConnectionCard,
4
5
  mcpConnectionDiscoveryState,
5
6
  useConnect
6
- } from "./chunk-TMYGL6X5.js";
7
+ } from "./chunk-55DXD22O.js";
7
8
  import {
8
9
  Markdown
9
- } from "./chunk-I7IWRQLN.js";
10
- import "./chunk-GIMRELBW.js";
11
- import "./chunk-447JLCBU.js";
12
- import "./chunk-XCHWDJ22.js";
10
+ } from "./chunk-PHBFJCEU.js";
11
+ import "./chunk-OYQQJL3J.js";
12
+ import "./chunk-S2QH6EZ5.js";
13
+ import "./chunk-OGTTUYNT.js";
13
14
  import {
14
15
  copyTextToClipboard
15
- } from "./chunk-JVYQRRC4.js";
16
- import "./chunk-BRM6FVZA.js";
17
- import "./chunk-VZTQ73XT.js";
18
- import "./chunk-UTRTG6LH.js";
19
- import "./chunk-22KP6LR5.js";
16
+ } from "./chunk-CVYCLFMH.js";
17
+ import "./chunk-IEE7WCLN.js";
18
+ import "./chunk-XEA5BCMA.js";
19
+ import "./chunk-LVS3MH5T.js";
20
+ import "./chunk-TXS65BB2.js";
20
21
 
21
22
  // src/capability-catalog-row.tsx
22
23
  import { AlertTriangleIcon, CheckIcon, Loader2Icon, PlusIcon } from "lucide-react";
@@ -1244,7 +1245,9 @@ function ScopedDiscovery({
1244
1245
  setConnections(inventory);
1245
1246
  setItems(
1246
1247
  catalog.items.filter(
1247
- (item) => item.kind === "mcp" && item.authKind === "oauth2" && Boolean(item.mcpUrl ?? item.endpointUrl)
1248
+ (item) => item.kind === "mcp" && item.authKind === "oauth2" && Boolean(item.mcpUrl ?? item.endpointUrl) && // The provider refuses self-registration and this deployment
1249
+ // has no operator client for it: Connect cannot succeed.
1250
+ (item.enabled || item.runtime?.operatorOAuthClient?.configured !== false)
1248
1251
  )
1249
1252
  );
1250
1253
  }