@opengeni/react 1.4.2 → 1.4.5-canary.37458084490001

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 +17 -6
  2. package/dist/artifacts.d.ts +1 -0
  3. package/dist/artifacts.js +22 -15
  4. package/dist/artifacts.js.map +1 -1
  5. package/dist/{browser-viewer-WGJ43YGI.js → browser-viewer-CV23VIHB.js} +8 -6
  6. package/dist/chunk-3ZC6QPOM.js +174 -0
  7. package/dist/chunk-3ZC6QPOM.js.map +1 -0
  8. package/dist/{chunk-YVFRBXST.js → chunk-4BCVCJSU.js} +2 -2
  9. package/dist/{chunk-JHTIMBOL.js → chunk-5JSUNNQN.js} +26 -4
  10. package/dist/{chunk-JHTIMBOL.js.map → chunk-5JSUNNQN.js.map} +1 -1
  11. package/dist/{chunk-MDIXFKA3.js → chunk-6FOTSVWU.js} +303 -109
  12. package/dist/chunk-6FOTSVWU.js.map +1 -0
  13. package/dist/{chunk-IUHHPMAX.js → chunk-7RRBX5EM.js} +14 -85
  14. package/dist/chunk-7RRBX5EM.js.map +1 -0
  15. package/dist/{chunk-L2J3PU7A.js → chunk-7ZB7I3KP.js} +24 -98
  16. package/dist/chunk-7ZB7I3KP.js.map +1 -0
  17. package/dist/{chunk-LVS3MH5T.js → chunk-ATIRUHBZ.js} +128 -10
  18. package/dist/chunk-ATIRUHBZ.js.map +1 -0
  19. package/dist/chunk-BOFEQC6K.js +162 -0
  20. package/dist/chunk-BOFEQC6K.js.map +1 -0
  21. package/dist/{chunk-VCSERYXH.js → chunk-CESBPQP5.js} +309 -162
  22. package/dist/chunk-CESBPQP5.js.map +1 -0
  23. package/dist/{chunk-IYQCWGU5.js → chunk-GHJU7XG7.js} +35 -62
  24. package/dist/chunk-GHJU7XG7.js.map +1 -0
  25. package/dist/{chunk-G6YRCIYJ.js → chunk-HNVWMDNN.js} +55 -60
  26. package/dist/chunk-HNVWMDNN.js.map +1 -0
  27. package/dist/{chunk-PHBFJCEU.js → chunk-I5EGRXXG.js} +110 -7
  28. package/dist/chunk-I5EGRXXG.js.map +1 -0
  29. package/dist/{chunk-PBCZL4JP.js → chunk-INIZSNXT.js} +2 -2
  30. package/dist/{chunk-XS67YG5R.js → chunk-IX3K4THH.js} +24 -3
  31. package/dist/chunk-IX3K4THH.js.map +1 -0
  32. package/dist/chunk-IZV5FTJC.js +55 -0
  33. package/dist/chunk-IZV5FTJC.js.map +1 -0
  34. package/dist/chunk-JDJJMBB3.js +1883 -0
  35. package/dist/chunk-JDJJMBB3.js.map +1 -0
  36. package/dist/{chunk-C5BF4L26.js → chunk-KHF2VRXF.js} +7 -7
  37. package/dist/{chunk-QMMCJGFI.js → chunk-L5OKM2VX.js} +2 -2
  38. package/dist/chunk-LHF6BVM4.js +83 -0
  39. package/dist/chunk-LHF6BVM4.js.map +1 -0
  40. package/dist/chunk-N7S72EXK.js +25 -0
  41. package/dist/chunk-N7S72EXK.js.map +1 -0
  42. package/dist/{chunk-CVYCLFMH.js → chunk-PEHTX3V7.js} +19 -1
  43. package/dist/chunk-PEHTX3V7.js.map +1 -0
  44. package/dist/chunk-R5R5RQQD.js +51 -0
  45. package/dist/chunk-R5R5RQQD.js.map +1 -0
  46. package/dist/chunk-RI42H5IU.js +326 -0
  47. package/dist/chunk-RI42H5IU.js.map +1 -0
  48. package/dist/{chunk-JH7V627O.js → chunk-SHLZMAJN.js} +2 -11
  49. package/dist/chunk-SHLZMAJN.js.map +1 -0
  50. package/dist/{chunk-CREMJMVN.js → chunk-TZQSHCZN.js} +692 -1996
  51. package/dist/chunk-TZQSHCZN.js.map +1 -0
  52. package/dist/chunk-ZIB4H5LN.js +101 -0
  53. package/dist/chunk-ZIB4H5LN.js.map +1 -0
  54. package/dist/client.d.ts +9 -3
  55. package/dist/clipboard.js +1 -1
  56. package/dist/components/browser-viewer.d.ts +6 -0
  57. package/dist/components/composer.d.ts +3 -69
  58. package/dist/components/human-input-form.d.ts +3 -32
  59. package/dist/components/markdown.d.ts +8 -0
  60. package/dist/components/model-policy-picker.d.ts +4 -37
  61. package/dist/components/opper-mark.d.ts +7 -0
  62. package/dist/components/provider-recovery-notice.d.ts +15 -0
  63. package/dist/components/remark-soft-line-breaks.d.ts +38 -0
  64. package/dist/components/sandbox-workspace.d.ts +13 -0
  65. package/dist/components/session-chrome.d.ts +5 -3
  66. package/dist/components/session-conversation.d.ts +15 -3
  67. package/dist/composer-messages.d.ts +74 -0
  68. package/dist/composer-messages.js +9 -0
  69. package/dist/composer.js +15 -10
  70. package/dist/{computer-viewer-46UIN7F3.js → computer-viewer-K4CKYRX6.js} +4 -4
  71. package/dist/connect-setup.d.ts +2 -0
  72. package/dist/connect.d.ts +1 -1
  73. package/dist/connect.js +21 -6
  74. package/dist/connect.js.map +1 -1
  75. package/dist/{embedded-voice-NIL4RDX3.js → embedded-voice-3ZFWWJ6O.js} +6 -4
  76. package/dist/{embedded-voice-NIL4RDX3.js.map → embedded-voice-3ZFWWJ6O.js.map} +1 -1
  77. package/dist/hooks/shared-machines-list.d.ts +4 -0
  78. package/dist/hooks/use-client-config-flags.d.ts +6 -0
  79. package/dist/hooks/use-computer-session.d.ts +2 -0
  80. package/dist/hooks/use-goal.d.ts +2 -1
  81. package/dist/human-input-model.d.ts +40 -0
  82. package/dist/index.d.ts +4 -1
  83. package/dist/index.js +116 -73
  84. package/dist/index.js.map +1 -1
  85. package/dist/interaction.js +5 -5
  86. package/dist/{latest-question-2POFPYNB.js → latest-question-SWC6QEVN.js} +3 -3
  87. package/dist/lib/clipboard.d.ts +7 -0
  88. package/dist/lib/provider-recovery.d.ts +49 -0
  89. package/dist/machines.js +2 -2
  90. package/dist/model-mark-paths.d.ts +34 -0
  91. package/dist/model-mark-paths.js +16 -0
  92. package/dist/model-picker-model.d.ts +111 -0
  93. package/dist/model-picker-model.js +25 -0
  94. package/dist/model-picker-model.js.map +1 -0
  95. package/dist/{model-policy-picker-menu-WRNSRFQC.js → model-policy-picker-menu-NM4RPTY6.js} +6 -4
  96. package/dist/model-policy-picker-menu-NM4RPTY6.js.map +1 -0
  97. package/dist/model-policy.d.ts +10 -0
  98. package/dist/model-policy.js +5 -1
  99. package/dist/organization-model.d.ts +32 -0
  100. package/dist/organization-model.js +65 -0
  101. package/dist/organization-model.js.map +1 -0
  102. package/dist/{platform-activity-row-PJJVATTZ.js → platform-activity-row-NJ47YBXW.js} +7 -84
  103. package/dist/platform-activity-row-NJ47YBXW.js.map +1 -0
  104. package/dist/queue-presentation-model.d.ts +72 -0
  105. package/dist/queue-presentation-model.js +38 -0
  106. package/dist/queue-presentation-model.js.map +1 -0
  107. package/dist/{queue-surface-implementation-67FS7FUI.js → queue-surface-implementation-YPJFQ3O6.js} +24 -252
  108. package/dist/queue-surface-implementation-YPJFQ3O6.js.map +1 -0
  109. package/dist/realtime.js +5 -3
  110. package/dist/{sandbox-files-34CJJNOY.js → sandbox-files-RCVCMXG7.js} +5 -5
  111. package/dist/sandbox-files-RCVCMXG7.js.map +1 -0
  112. package/dist/sandbox-label-model.d.ts +23 -0
  113. package/dist/sandbox-label-model.js +28 -0
  114. package/dist/sandbox-label-model.js.map +1 -0
  115. package/dist/session-attention-model.d.ts +8 -0
  116. package/dist/session-attention-model.js +46 -0
  117. package/dist/session-attention-model.js.map +1 -0
  118. package/dist/session-feedback-model.d.ts +20 -0
  119. package/dist/session-feedback-model.js +56 -0
  120. package/dist/session-feedback-model.js.map +1 -0
  121. package/dist/session-list-model.d.ts +96 -0
  122. package/dist/session-list-model.js +219 -0
  123. package/dist/session-list-model.js.map +1 -0
  124. package/dist/session-status-model.d.ts +19 -0
  125. package/dist/session-ui.js +26 -17
  126. package/dist/session-ui.js.map +1 -1
  127. package/dist/session.js +8 -6
  128. package/dist/testing/session-scenarios.d.ts +10 -0
  129. package/dist/testing/session-scenarios.js +303 -0
  130. package/dist/testing/session-scenarios.js.map +1 -0
  131. package/dist/timeline/genie-copy.d.ts +3 -0
  132. package/dist/timeline/genie-loading.d.ts +11 -0
  133. package/dist/timeline/index.d.ts +1 -1
  134. package/dist/timeline/notice-presentation.d.ts +7 -0
  135. package/dist/timeline/patch-apply-command.d.ts +18 -0
  136. package/dist/timeline/platform-activity-presentation.d.ts +7 -0
  137. package/dist/timeline/presented-image.d.ts +6 -1
  138. package/dist/timeline/question-nav-model.d.ts +23 -0
  139. package/dist/timeline/registry.d.ts +10 -1
  140. package/dist/timeline/retained-loaders.d.ts +1 -1
  141. package/dist/timeline/tool-presentation.d.ts +172 -0
  142. package/dist/timeline/turn-summary-model.d.ts +90 -0
  143. package/dist/timeline/turn-summary.d.ts +4 -74
  144. package/dist/timeline/work-presentation.d.ts +42 -0
  145. package/dist/timeline-model.d.ts +24 -0
  146. package/dist/timeline-model.js +152 -0
  147. package/dist/timeline-model.js.map +1 -0
  148. package/package.json +47 -3
  149. package/src/artifacts.ts +1 -0
  150. package/src/client.ts +9 -3
  151. package/src/components/browser-viewer.tsx +23 -2
  152. package/src/components/claude-mark.tsx +2 -1
  153. package/src/components/composer.tsx +4 -144
  154. package/src/components/computer-viewer.tsx +139 -30
  155. package/src/components/grok-mark.tsx +2 -1
  156. package/src/components/human-input-form.tsx +13 -124
  157. package/src/components/markdown.tsx +19 -1
  158. package/src/components/message-timeline.tsx +45 -99
  159. package/src/components/model-mark.tsx +2 -1
  160. package/src/components/model-policy-picker-menu.tsx +30 -85
  161. package/src/components/model-policy-picker.tsx +15 -148
  162. package/src/components/opper-mark.tsx +18 -0
  163. package/src/components/provider-recovery-notice.tsx +41 -0
  164. package/src/components/queue-surface-implementation.tsx +20 -349
  165. package/src/components/remark-soft-line-breaks.ts +166 -0
  166. package/src/components/sandbox-workspace.tsx +17 -1
  167. package/src/components/session-chrome.tsx +114 -99
  168. package/src/components/session-conversation.tsx +55 -6
  169. package/src/components/session-list.tsx +1 -1
  170. package/src/components/session-status.tsx +17 -16
  171. package/src/composer-messages.ts +150 -0
  172. package/src/connect-setup.tsx +45 -11
  173. package/src/connect.ts +1 -1
  174. package/src/hooks/shared-machines-list.ts +34 -1
  175. package/src/hooks/use-browser-session.ts +445 -168
  176. package/src/hooks/use-client-config-flags.ts +8 -0
  177. package/src/hooks/use-computer-session.ts +334 -98
  178. package/src/hooks/use-goal.ts +66 -10
  179. package/src/human-input-model.ts +147 -0
  180. package/src/index.ts +16 -0
  181. package/src/lib/clipboard.ts +29 -0
  182. package/src/lib/format.ts +7 -0
  183. package/src/lib/provider-recovery.ts +202 -0
  184. package/src/model-mark-paths.ts +53 -0
  185. package/src/model-picker-model.ts +330 -0
  186. package/src/model-policy.ts +43 -2
  187. package/src/organization-model.ts +118 -0
  188. package/src/queue-presentation-model.ts +464 -0
  189. package/src/sandbox-label-model.ts +41 -0
  190. package/src/session-attention-model.ts +59 -0
  191. package/src/session-feedback-model.ts +95 -0
  192. package/src/session-list-model.ts +327 -0
  193. package/src/session-status-model.ts +62 -0
  194. package/src/testing/session-scenarios.ts +326 -0
  195. package/src/timeline/activity-rail.tsx +5 -17
  196. package/src/timeline/genie-copy.ts +19 -0
  197. package/src/timeline/genie-loading.tsx +13 -18
  198. package/src/timeline/index.ts +1 -0
  199. package/src/timeline/notice-presentation.ts +22 -0
  200. package/src/timeline/patch-apply-command.tsx +135 -0
  201. package/src/timeline/platform-activity-presentation.ts +122 -0
  202. package/src/timeline/platform-activity-row.tsx +6 -96
  203. package/src/timeline/presented-image.ts +16 -2
  204. package/src/timeline/question-nav-model.ts +28 -0
  205. package/src/timeline/registry.ts +11 -1
  206. package/src/timeline/retained-loaders.ts +9 -4
  207. package/src/timeline/rolling-activity.tsx +7 -19
  208. package/src/timeline/tool-presentation.ts +1316 -0
  209. package/src/timeline/tool-renderers.tsx +226 -1025
  210. package/src/timeline/turn-summary-model.ts +338 -0
  211. package/src/timeline/turn-summary.tsx +21 -326
  212. package/src/timeline/work-presentation.ts +139 -0
  213. package/src/timeline-model.ts +108 -0
  214. package/styles/compiled.css +8 -0
  215. package/styles/connect.css +4 -0
  216. package/dist/chunk-CREMJMVN.js.map +0 -1
  217. package/dist/chunk-CVYCLFMH.js.map +0 -1
  218. package/dist/chunk-G6YRCIYJ.js.map +0 -1
  219. package/dist/chunk-HXYOSSQO.js +0 -117
  220. package/dist/chunk-HXYOSSQO.js.map +0 -1
  221. package/dist/chunk-IUHHPMAX.js.map +0 -1
  222. package/dist/chunk-IYQCWGU5.js.map +0 -1
  223. package/dist/chunk-JH7V627O.js.map +0 -1
  224. package/dist/chunk-L2J3PU7A.js.map +0 -1
  225. package/dist/chunk-LVS3MH5T.js.map +0 -1
  226. package/dist/chunk-MDIXFKA3.js.map +0 -1
  227. package/dist/chunk-PHBFJCEU.js.map +0 -1
  228. package/dist/chunk-VCSERYXH.js.map +0 -1
  229. package/dist/chunk-XS67YG5R.js.map +0 -1
  230. package/dist/platform-activity-row-PJJVATTZ.js.map +0 -1
  231. package/dist/queue-surface-implementation-67FS7FUI.js.map +0 -1
  232. /package/dist/{browser-viewer-WGJ43YGI.js.map → browser-viewer-CV23VIHB.js.map} +0 -0
  233. /package/dist/{chunk-YVFRBXST.js.map → chunk-4BCVCJSU.js.map} +0 -0
  234. /package/dist/{chunk-PBCZL4JP.js.map → chunk-INIZSNXT.js.map} +0 -0
  235. /package/dist/{chunk-C5BF4L26.js.map → chunk-KHF2VRXF.js.map} +0 -0
  236. /package/dist/{chunk-QMMCJGFI.js.map → chunk-L5OKM2VX.js.map} +0 -0
  237. /package/dist/{computer-viewer-46UIN7F3.js.map → composer-messages.js.map} +0 -0
  238. /package/dist/{model-policy-picker-menu-WRNSRFQC.js.map → computer-viewer-K4CKYRX6.js.map} +0 -0
  239. /package/dist/{latest-question-2POFPYNB.js.map → latest-question-SWC6QEVN.js.map} +0 -0
  240. /package/dist/{sandbox-files-34CJJNOY.js.map → model-mark-paths.js.map} +0 -0
@@ -2,12 +2,14 @@
2
2
  import {
3
3
  RealtimeVoiceControl,
4
4
  useSessionRealtime
5
- } from "./chunk-YVFRBXST.js";
5
+ } from "./chunk-4BCVCJSU.js";
6
6
  import "./chunk-NX4ADH73.js";
7
- import "./chunk-L2J3PU7A.js";
7
+ import "./chunk-7ZB7I3KP.js";
8
8
  import "./chunk-PMV53IMM.js";
9
- import "./chunk-XS67YG5R.js";
9
+ import "./chunk-N7S72EXK.js";
10
+ import "./chunk-3ZC6QPOM.js";
10
11
  import "./chunk-XEA5BCMA.js";
12
+ import "./chunk-IX3K4THH.js";
11
13
  import "./chunk-XTD7TZHW.js";
12
14
  import "./chunk-TXS65BB2.js";
13
15
 
@@ -66,4 +68,4 @@ function EmbeddedRealtimeVoice(props) {
66
68
  export {
67
69
  EmbeddedRealtimeVoice as default
68
70
  };
69
- //# sourceMappingURL=embedded-voice-NIL4RDX3.js.map
71
+ //# sourceMappingURL=embedded-voice-3ZFWWJ6O.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/realtime/embedded-voice.tsx"],"sourcesContent":["import type { EffectiveSessionControl, SessionEvent, SessionStatus } from \"@opengeni/sdk\";\nimport { projectSessionRealtimeLifecycle } from \"@opengeni/sdk/realtime\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport {\n RealtimeVoiceControl,\n useSessionRealtime,\n type RealtimeModelOption,\n} from \"./realtime-control\";\n\n/**\n * The stock conversation's live voice button (lazy chunk). The conversation\n * mounts it only when the workspace catalog offers an available voice model;\n * this owns choosing among those models and the call itself.\n */\nexport default function EmbeddedRealtimeVoice(props: {\n /** The conversation's client, which serves the realtime routes (or a proxy of them). */\n client: unknown;\n workspaceId: string;\n /** Available voice models, already filtered by the conversation. */\n models: readonly RealtimeModelOption[];\n sessionId: string;\n sessionStatus: SessionStatus;\n effectiveControl: EffectiveSessionControl;\n events: SessionEvent[];\n eventsReady: boolean;\n onVoiceActiveChange?: ((active: boolean) => void) | undefined;\n}) {\n const lifecycle = useMemo(() => projectSessionRealtimeLifecycle(props.events), [props.events]);\n // A call already running (this browser after reload, or another one) fixes the model.\n const activeModel =\n lifecycle?.state === \"active\" && !(Date.parse(lifecycle.leaseExpiresAt) <= Date.now())\n ? lifecycle.model\n : null;\n const [chosen, setChosen] = useState<string | null>(null);\n const fallback = props.models.find((model) => model.recommended) ?? props.models[0]!;\n const selected =\n props.models.find((model) => model.id === (activeModel ?? chosen)) ??\n (activeModel ? { ...fallback, id: activeModel } : fallback);\n const realtime = useSessionRealtime({\n client: props.client as Parameters<typeof useSessionRealtime>[0][\"client\"],\n workspaceId: props.workspaceId,\n sessionId: props.sessionId,\n sessionStatus: props.sessionStatus,\n effectiveControl: props.effectiveControl,\n events: props.events,\n eventsReady: props.eventsReady,\n codexConnected: false,\n model: selected.id,\n modelAvailable: selected.available,\n modelUnavailableReason: selected.unavailableReason,\n });\n const voiceActive = realtime.snapshot.mode?.state === \"active\";\n const onVoiceActiveChange = props.onVoiceActiveChange;\n useEffect(() => {\n onVoiceActiveChange?.(voiceActive);\n }, [onVoiceActiveChange, voiceActive]);\n useEffect(() => () => onVoiceActiveChange?.(false), [onVoiceActiveChange]);\n\n return (\n <RealtimeVoiceControl\n snapshot={realtime.snapshot}\n canStart={realtime.canStart}\n admissionBlocker={realtime.admissionBlocker}\n modelAvailable={selected.available}\n menuSide=\"top\"\n modelMenu=\"split\"\n showDiagnostics={false}\n audioRef={realtime.audioRef}\n selectedModel={selected}\n models={props.models}\n onSelectModel={realtime.lifecycleActive ? undefined : setChosen}\n onStart={realtime.start}\n onStop={realtime.stop}\n onRetry={realtime.retry}\n onRetryAudibleOutput={realtime.retryAudibleOutput}\n onSetInputMuted={realtime.setInputMuted}\n onSetOutputMuted={realtime.setOutputMuted}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AACA,SAAS,uCAAuC;AAChD,SAAS,WAAW,SAAS,gBAAgB;AA0DzC;AA7CW,SAAR,sBAAuC,OAY3C;AACD,QAAM,YAAY,QAAQ,MAAM,gCAAgC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC;AAE7F,QAAM,cACJ,WAAW,UAAU,YAAY,EAAE,KAAK,MAAM,UAAU,cAAc,KAAK,KAAK,IAAI,KAChF,UAAU,QACV;AACN,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAwB,IAAI;AACxD,QAAM,WAAW,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,WAAW,KAAK,MAAM,OAAO,CAAC;AAClF,QAAM,WACJ,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,QAAQ,eAAe,OAAO,MAChE,cAAc,EAAE,GAAG,UAAU,IAAI,YAAY,IAAI;AACpD,QAAM,WAAW,mBAAmB;AAAA,IAClC,QAAQ,MAAM;AAAA,IACd,aAAa,MAAM;AAAA,IACnB,WAAW,MAAM;AAAA,IACjB,eAAe,MAAM;AAAA,IACrB,kBAAkB,MAAM;AAAA,IACxB,QAAQ,MAAM;AAAA,IACd,aAAa,MAAM;AAAA,IACnB,gBAAgB;AAAA,IAChB,OAAO,SAAS;AAAA,IAChB,gBAAgB,SAAS;AAAA,IACzB,wBAAwB,SAAS;AAAA,EACnC,CAAC;AACD,QAAM,cAAc,SAAS,SAAS,MAAM,UAAU;AACtD,QAAM,sBAAsB,MAAM;AAClC,YAAU,MAAM;AACd,0BAAsB,WAAW;AAAA,EACnC,GAAG,CAAC,qBAAqB,WAAW,CAAC;AACrC,YAAU,MAAM,MAAM,sBAAsB,KAAK,GAAG,CAAC,mBAAmB,CAAC;AAEzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,MACnB,kBAAkB,SAAS;AAAA,MAC3B,gBAAgB,SAAS;AAAA,MACzB,UAAS;AAAA,MACT,WAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU,SAAS;AAAA,MACnB,eAAe;AAAA,MACf,QAAQ,MAAM;AAAA,MACd,eAAe,SAAS,kBAAkB,SAAY;AAAA,MACtD,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,MAClB,sBAAsB,SAAS;AAAA,MAC/B,iBAAiB,SAAS;AAAA,MAC1B,kBAAkB,SAAS;AAAA;AAAA,EAC7B;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../src/realtime/embedded-voice.tsx"],"sourcesContent":["import type { EffectiveSessionControl, SessionEvent, SessionStatus } from \"@opengeni/sdk\";\nimport { projectSessionRealtimeLifecycle } from \"@opengeni/sdk/realtime\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport {\n RealtimeVoiceControl,\n useSessionRealtime,\n type RealtimeModelOption,\n} from \"./realtime-control\";\n\n/**\n * The stock conversation's live voice button (lazy chunk). The conversation\n * mounts it only when the workspace catalog offers an available voice model;\n * this owns choosing among those models and the call itself.\n */\nexport default function EmbeddedRealtimeVoice(props: {\n /** The conversation's client, which serves the realtime routes (or a proxy of them). */\n client: unknown;\n workspaceId: string;\n /** Available voice models, already filtered by the conversation. */\n models: readonly RealtimeModelOption[];\n sessionId: string;\n sessionStatus: SessionStatus;\n effectiveControl: EffectiveSessionControl;\n events: SessionEvent[];\n eventsReady: boolean;\n onVoiceActiveChange?: ((active: boolean) => void) | undefined;\n}) {\n const lifecycle = useMemo(() => projectSessionRealtimeLifecycle(props.events), [props.events]);\n // A call already running (this browser after reload, or another one) fixes the model.\n const activeModel =\n lifecycle?.state === \"active\" && !(Date.parse(lifecycle.leaseExpiresAt) <= Date.now())\n ? lifecycle.model\n : null;\n const [chosen, setChosen] = useState<string | null>(null);\n const fallback = props.models.find((model) => model.recommended) ?? props.models[0]!;\n const selected =\n props.models.find((model) => model.id === (activeModel ?? chosen)) ??\n (activeModel ? { ...fallback, id: activeModel } : fallback);\n const realtime = useSessionRealtime({\n client: props.client as Parameters<typeof useSessionRealtime>[0][\"client\"],\n workspaceId: props.workspaceId,\n sessionId: props.sessionId,\n sessionStatus: props.sessionStatus,\n effectiveControl: props.effectiveControl,\n events: props.events,\n eventsReady: props.eventsReady,\n codexConnected: false,\n model: selected.id,\n modelAvailable: selected.available,\n modelUnavailableReason: selected.unavailableReason,\n });\n const voiceActive = realtime.snapshot.mode?.state === \"active\";\n const onVoiceActiveChange = props.onVoiceActiveChange;\n useEffect(() => {\n onVoiceActiveChange?.(voiceActive);\n }, [onVoiceActiveChange, voiceActive]);\n useEffect(() => () => onVoiceActiveChange?.(false), [onVoiceActiveChange]);\n\n return (\n <RealtimeVoiceControl\n snapshot={realtime.snapshot}\n canStart={realtime.canStart}\n admissionBlocker={realtime.admissionBlocker}\n modelAvailable={selected.available}\n menuSide=\"top\"\n modelMenu=\"split\"\n showDiagnostics={false}\n audioRef={realtime.audioRef}\n selectedModel={selected}\n models={props.models}\n onSelectModel={realtime.lifecycleActive ? undefined : setChosen}\n onStart={realtime.start}\n onStop={realtime.stop}\n onRetry={realtime.retry}\n onRetryAudibleOutput={realtime.retryAudibleOutput}\n onSetInputMuted={realtime.setInputMuted}\n onSetOutputMuted={realtime.setOutputMuted}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA,SAAS,uCAAuC;AAChD,SAAS,WAAW,SAAS,gBAAgB;AA0DzC;AA7CW,SAAR,sBAAuC,OAY3C;AACD,QAAM,YAAY,QAAQ,MAAM,gCAAgC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC;AAE7F,QAAM,cACJ,WAAW,UAAU,YAAY,EAAE,KAAK,MAAM,UAAU,cAAc,KAAK,KAAK,IAAI,KAChF,UAAU,QACV;AACN,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAwB,IAAI;AACxD,QAAM,WAAW,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,WAAW,KAAK,MAAM,OAAO,CAAC;AAClF,QAAM,WACJ,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,QAAQ,eAAe,OAAO,MAChE,cAAc,EAAE,GAAG,UAAU,IAAI,YAAY,IAAI;AACpD,QAAM,WAAW,mBAAmB;AAAA,IAClC,QAAQ,MAAM;AAAA,IACd,aAAa,MAAM;AAAA,IACnB,WAAW,MAAM;AAAA,IACjB,eAAe,MAAM;AAAA,IACrB,kBAAkB,MAAM;AAAA,IACxB,QAAQ,MAAM;AAAA,IACd,aAAa,MAAM;AAAA,IACnB,gBAAgB;AAAA,IAChB,OAAO,SAAS;AAAA,IAChB,gBAAgB,SAAS;AAAA,IACzB,wBAAwB,SAAS;AAAA,EACnC,CAAC;AACD,QAAM,cAAc,SAAS,SAAS,MAAM,UAAU;AACtD,QAAM,sBAAsB,MAAM;AAClC,YAAU,MAAM;AACd,0BAAsB,WAAW;AAAA,EACnC,GAAG,CAAC,qBAAqB,WAAW,CAAC;AACrC,YAAU,MAAM,MAAM,sBAAsB,KAAK,GAAG,CAAC,mBAAmB,CAAC;AAEzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,MACnB,kBAAkB,SAAS;AAAA,MAC3B,gBAAgB,SAAS;AAAA,MACzB,UAAS;AAAA,MACT,WAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU,SAAS;AAAA,MACnB,eAAe;AAAA,MACf,QAAQ,MAAM;AAAA,MACd,eAAe,SAAS,kBAAkB,SAAY;AAAA,MACtD,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,MAClB,sBAAsB,SAAS;AAAA,MAC/B,iBAAiB,SAAS;AAAA,MAC1B,kBAAkB,SAAS;AAAA;AAAA,EAC7B;AAEJ;","names":[]}
@@ -5,6 +5,10 @@ export type SharedMachinesSnapshot = {
5
5
  loading: boolean;
6
6
  error: Error | null;
7
7
  };
8
+ /** A refusal that repeating the identical read cannot fix: the caller lacks
9
+ * `enrollments:read` (403), is signed out (401), or the workspace/feature is
10
+ * gone (404). Structural so host adapters with their own error types work. */
11
+ export declare function isMachinesAccessRefusal(cause: unknown): boolean;
8
12
  export declare function refreshSharedMachinesList(shareKey: string): Promise<void>;
9
13
  export declare function useSharedMachinesList(shareKey: string, load: (signal?: AbortSignal) => Promise<MachinesResponse>, options?: {
10
14
  pollIntervalMs?: number | undefined;
@@ -38,6 +38,12 @@ export type ClientConfigFlags = {
38
38
  * it off; availability otherwise comes from the realtime model catalog.
39
39
  */
40
40
  realtimeVoice: boolean;
41
+ /**
42
+ * The host explicitly offers live voice to end users (a session proxy with
43
+ * `realtimeVoice: true`). Embedded conversations show the voice button only
44
+ * then or when their `realtimeVoice` prop is `true`.
45
+ */
46
+ realtimeVoiceOffered: boolean;
41
47
  };
42
48
  /** Deployment and session-proxy capabilities from the client config. */
43
49
  export declare function useClientConfigFlags(client: Partial<ClientConfigFlagsSource> | ClientConfigFlagsSource): ClientConfigFlags;
@@ -1,5 +1,7 @@
1
1
  import type { ComputerAction, ComputerActionReceipt, ComputerClipboard, ComputerFrame, ComputerObservation, ComputerSession, ComputerTarget } from "@opengeni/sdk/interaction";
2
2
  import { type EmbeddedComputerInteractionClientOverride } from "../session-context.js";
3
+ export declare function isStaleComputerActionResult(value: unknown): boolean;
4
+ export declare function computerActionReceiptError(receipt: ComputerActionReceipt): Error;
3
5
  export type UseComputerSessionOptions = EmbeddedComputerInteractionClientOverride & {
4
6
  computerSessionId: string | null;
5
7
  enabled?: boolean | undefined;
@@ -39,7 +39,8 @@ export type UseGoalResult = {
39
39
  /**
40
40
  * The session's goal: state, the autonomy counters (`autoContinuations`,
41
41
  * `noProgressStreak`), and pause/resume control. A goal-less session yields
42
- * `goal: null` (the 404 is absorbed). Live-updates on goal, turn, session,
42
+ * `goal: null`: read through `findGoal` as a successful null when the client
43
+ * has it, otherwise from an absorbed 404. Live-updates on goal, turn, session,
43
44
  * control, and system-update events — pass `options.events` from
44
45
  * `useSessionEvents` to reuse its stream.
45
46
  */
@@ -0,0 +1,40 @@
1
+ import type { HumanInputAnswer, HumanInputQuestion } from "@opengeni/sdk";
2
+ export type HumanInputAnswerDraft = {
3
+ values: string[];
4
+ other: string;
5
+ otherSelected: boolean;
6
+ };
7
+ export type HumanInputFormMessages = {
8
+ title: string;
9
+ description: string;
10
+ submit: string;
11
+ skip: string;
12
+ submitting: string;
13
+ other: string;
14
+ deadlineLabel: string;
15
+ formatDeadline: (value: string) => string;
16
+ required: string;
17
+ otherRequired: string;
18
+ minSelections: (count: number) => string;
19
+ maxSelections: (count: number) => string;
20
+ optional: string;
21
+ /** Shown when the question list overflows the card and more content is below. */
22
+ moreBelow: string;
23
+ questionCount: (count: number) => string;
24
+ collapse: string;
25
+ expand: string;
26
+ selectionHint: (min: number | null | undefined, max: number | null | undefined) => string | null;
27
+ };
28
+ export declare const defaultHumanInputFormMessages: HumanInputFormMessages;
29
+ export declare function answersFromDrafts(questions: HumanInputQuestion[], drafts: Record<string, HumanInputAnswerDraft>, messageOverrides?: Partial<HumanInputFormMessages>): {
30
+ answers: HumanInputAnswer[];
31
+ errors: Record<string, string>;
32
+ };
33
+ export declare function initialDrafts(questions: HumanInputQuestion[]): Record<string, HumanInputAnswerDraft>;
34
+ export declare function emptyDraft(): HumanInputAnswerDraft;
35
+ export declare function formatDeadline(value: string): string;
36
+ /** The form heading: a single question leads with its own label/prompt. */
37
+ export declare function humanInputHeading(questions: readonly HumanInputQuestion[], messages: Pick<HumanInputFormMessages, "title" | "description">): {
38
+ title: string;
39
+ description: string | null;
40
+ };
package/dist/index.d.ts CHANGED
@@ -105,7 +105,7 @@ export type { HumanInputSurfaceProps } from "./components/human-input-surface.js
105
105
  export { buildTimeline, creditExhaustedFromEvents, extractSessionRef, groupTimeline, sessionStatusFromEvents, toolDisplayName, } from "./timeline/index.js";
106
106
  export type { GroupTimelineOptions, ActivityItem, AgentMessageItem, AuthNeededItem, ContextCompactionItem, GoalItem, HumanInputAnswerSummary, HumanInputItem, MachineInputBatchItem, MachineInputMember, NoticeItem, ReasoningItem, SandboxItem, SessionStatusItem, TimelineGroup, TimelineItem, TurnEndItem, ToolCallItem, UserMessageItem, WorkerItem, } from "./timeline/index.js";
107
107
  export { createDefaultToolRegistry, createSessionRetainedScreenshotLoader, createToolRegistry, createWorkspaceRetainedArtifactLoader, createWorkspaceRetainedVideoLoader, defaultToolRegistry, rawTypeOf, } from "./timeline/index.js";
108
- export type { CreateToolRegistryOptions, RetainedArtifactLoader, RetainedArtifactLoaderClient, RetainedScreenshotLoader, RetainedScreenshotLoaderClient, RetainedVideoLoaderClient, VideoArtifactPlaybackLoader, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./timeline/index.js";
108
+ export type { CreateToolRegistryOptions, RetainedArtifactLoader, RetainedArtifactLoadOptions, RetainedArtifactLoaderClient, RetainedScreenshotLoader, RetainedScreenshotLoaderClient, RetainedVideoLoaderClient, VideoArtifactPlaybackLoader, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./timeline/index.js";
109
109
  export { ActivityDisclosure, ActivityRail, BodyNote, DisclosureDefaultsProvider, LightboxProvider, MediaEmpty, MediaSkeleton, PayloadBlock, ScreenshotFigure, TermBlock, Thumbnail, TurnSummary, BUILT_IN_TURN_SUMMARY_FACET_IDS, useLightbox, useLightboxOptional, } from "./timeline/index.js";
110
110
  export type { ActivityDisclosureProps, ActivityRailProps, DisclosureChip, BuiltInTurnSummaryFacetId, TurnOutcome, TurnSummaryContext, TurnSummaryFacet, TurnSummaryFacetConfiguration, TurnSummaryFacetResult, TurnSummaryOptions, TurnSummaryProps, TurnSummaryStatus, LightboxControlLabels, } from "./timeline/index.js";
111
111
  export { applyPatchOps, applyPatchOpsFromToolItem, controlCaret, execTruncated, isApplyPatch, isExecSessionLostBanner, looksBinary, parseExecBannerSessionId, parseFreeformApplyPatch, parseToolArgs, sandboxCommandExitCode, stripExecBanner, tailPeek, unwrapMcpOutput, v4aToGitFileDiff, } from "./timeline/index.js";
@@ -195,6 +195,8 @@ export { gitFileDiffToPatch } from "./lib/git-patch.js";
195
195
  export { xtermThemeFromTokens } from "./lib/xterm-theme.js";
196
196
  export { cn } from "./lib/cn.js";
197
197
  export { CREDIT_EXHAUSTION_MESSAGE, formatBytes, formatClockTime, formatRelativeTime, humanizeFailureReason, presentFailure, isCreditExhaustion, stringifyPayload, truncate, tryParseJson, } from "./lib/format.js";
198
+ export { currentProviderRecovery, parseProviderRecovery, providerRecoveryExhaustedText, providerRecoveryRetryingText, providerRecoverySubject, type ProviderRecoveryCondition, type ProviderRecoveryFacts, } from "./lib/provider-recovery.js";
199
+ export { ProviderRecoveryNotice, PROVIDER_RECOVERY_NOTICE_DETAIL, type ProviderRecoveryNoticeProps, } from "./components/provider-recovery-notice.js";
198
200
  export { SessionCommandsPanel } from "./components/session-commands-panel.js";
199
201
  export { SessionCommands } from "./components/session-commands.js";
200
202
  export { KnowledgeActivityProvider } from "./timeline/knowledge-receipt.js";
@@ -204,5 +206,6 @@ export { setStartupDetails, useStartupDetails } from "./timeline/startup-prefere
204
206
  export { ClaudeMark } from "./components/claude-mark.js";
205
207
  export { AnthropicMark } from "./components/anthropic-mark.js";
206
208
  export { OpenRouterMark } from "./components/openrouter-mark.js";
209
+ export { OpperMark } from "./components/opper-mark.js";
207
210
  export { GrokMark } from "./components/grok-mark.js";
208
211
  export { ToolReviewHistoryProvider } from "./components/tool-review-history.js";
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  useSandboxFiles,
10
10
  useUnicodeFallbackFonts,
11
11
  visibleFileTree
12
- } from "./chunk-C5BF4L26.js";
12
+ } from "./chunk-KHF2VRXF.js";
13
13
  import {
14
14
  createEmbeddedSessionClient,
15
15
  isLineageRefreshEvent,
@@ -47,11 +47,14 @@ import {
47
47
  healthPulses,
48
48
  pointsFor,
49
49
  useMachines
50
- } from "./chunk-JHTIMBOL.js";
50
+ } from "./chunk-5JSUNNQN.js";
51
+ import {
52
+ CodeEditor,
53
+ languageForPath
54
+ } from "./chunk-LSW2OJVV.js";
51
55
  import {
52
56
  ActivityRail,
53
57
  ApprovalSurface,
54
- BUILT_IN_TURN_SUMMARY_FACET_IDS,
55
58
  ChatComposer,
56
59
  GeneratedVideoPlayer,
57
60
  HumanInputForm,
@@ -59,7 +62,9 @@ import {
59
62
  KnowledgeActivityProvider,
60
63
  MessageTimeline,
61
64
  OpenGeniChat,
65
+ PROVIDER_RECOVERY_NOTICE_DETAIL,
62
66
  PierreDiff,
67
+ ProviderRecoveryNotice,
63
68
  QueueSurface,
64
69
  SESSION_STATUS_META,
65
70
  SessionChrome,
@@ -76,50 +81,34 @@ import {
76
81
  ToolReviewHistoryProvider,
77
82
  TurnSummary,
78
83
  UserMessageBody,
79
- answersFromDrafts,
80
- applyPatchOps,
81
- applyPatchOpsFromToolItem,
82
- controlCaret,
83
84
  createDefaultToolRegistry,
84
85
  createSessionRetainedScreenshotLoader,
85
- createToolRegistry,
86
86
  createWorkspaceRetainedArtifactLoader,
87
87
  createWorkspaceRetainedVideoLoader,
88
88
  defaultApprovalSurfaceMessages,
89
- defaultHumanInputFormMessages,
90
89
  defaultToolRegistry,
91
- execTruncated,
92
90
  gitFileDiffToPatch,
93
- isApplyPatch,
94
- isExecSessionLostBanner,
95
- looksBinary,
96
- parseExecBannerSessionId,
97
- parseFreeformApplyPatch,
98
- parseToolArgs,
99
- rawTypeOf,
100
- sandboxCommandExitCode,
101
91
  sessionChromeGoalPillExplanation,
102
92
  sessionChromeGoalPillLabel,
103
93
  sessionChromeGoalPillState,
104
94
  setStartupDetails,
105
- stripExecBanner,
106
- tailPeek,
107
- unwrapMcpOutput,
108
95
  useAvailableModels,
109
96
  useSessionBackgroundCommands,
110
97
  useStartupDetails,
111
98
  useWorkspaceModelCatalog,
112
99
  useWorkspaceSessions,
113
- userMessageLikelyNeedsDisclosure,
114
- v4aToGitFileDiff
115
- } from "./chunk-CREMJMVN.js";
100
+ userMessageLikelyNeedsDisclosure
101
+ } from "./chunk-TZQSHCZN.js";
102
+ import "./chunk-SHLZMAJN.js";
116
103
  import {
117
104
  useThemeType
118
105
  } from "./chunk-B27E3V37.js";
119
- import "./chunk-JH7V627O.js";
120
106
  import "./chunk-2HVLQ26H.js";
121
107
  import "./chunk-LJUMYUBO.js";
122
- import "./chunk-HXYOSSQO.js";
108
+ import {
109
+ registerPierreDiffs
110
+ } from "./chunk-YSRBFJMQ.js";
111
+ import "./chunk-BOFEQC6K.js";
123
112
  import {
124
113
  ArtifactLabelsProvider,
125
114
  DEFAULT_ARTIFACT_LABELS
@@ -133,13 +122,11 @@ import {
133
122
  boundBrowserSessionEventWindow,
134
123
  conversationTimeline,
135
124
  createOlderHistoryLoadReceipt,
136
- humanInputRequestFromEvent,
137
125
  isGoalEvent,
138
126
  isHumanInputEvent,
139
127
  isTitleEvent,
140
128
  isTurnQueueEvent,
141
129
  projectPendingApprovals,
142
- projectPendingHumanInputRequests,
143
130
  useFileAttachments,
144
131
  useGoal,
145
132
  useHumanInputRequests,
@@ -147,20 +134,18 @@ import {
147
134
  useSessionControl,
148
135
  useSessionEvents,
149
136
  useTurnQueue
150
- } from "./chunk-G6YRCIYJ.js";
137
+ } from "./chunk-HNVWMDNN.js";
151
138
  import {
152
139
  buildTimeline,
153
140
  creditExhaustedFromEvents,
154
141
  extractSessionRef,
155
142
  groupTimeline,
156
143
  sessionStatusFromEvents
157
- } from "./chunk-QMMCJGFI.js";
158
- import {
159
- toolDisplayName
160
- } from "./chunk-T46QZH3E.js";
144
+ } from "./chunk-L5OKM2VX.js";
161
145
  import {
162
146
  OpenGeniProvider
163
147
  } from "./chunk-PKCAYHDC.js";
148
+ import "./chunk-RI42H5IU.js";
164
149
  import {
165
150
  McpConnectionCard,
166
151
  SessionCapabilityFrame,
@@ -186,7 +171,7 @@ import {
186
171
  retainedImageId,
187
172
  sandboxFileLocationFromHref,
188
173
  sandboxFilePathFromHref
189
- } from "./chunk-PHBFJCEU.js";
174
+ } from "./chunk-I5EGRXXG.js";
190
175
  import "./chunk-OYQQJL3J.js";
191
176
  import "./chunk-S2QH6EZ5.js";
192
177
  import {
@@ -197,12 +182,40 @@ import {
197
182
  viewerLinkResolver
198
183
  } from "./chunk-OGTTUYNT.js";
199
184
  import {
200
- registerPierreDiffs
201
- } from "./chunk-YSRBFJMQ.js";
185
+ BUILT_IN_TURN_SUMMARY_FACET_IDS,
186
+ answersFromDrafts,
187
+ applyPatchOps,
188
+ applyPatchOpsFromToolItem,
189
+ controlCaret,
190
+ createToolRegistry,
191
+ defaultHumanInputFormMessages,
192
+ execTruncated,
193
+ isApplyPatch,
194
+ isExecSessionLostBanner,
195
+ looksBinary,
196
+ parseExecBannerSessionId,
197
+ parseFreeformApplyPatch,
198
+ parseToolArgs,
199
+ rawTypeOf,
200
+ sandboxCommandExitCode,
201
+ stripExecBanner,
202
+ tailPeek,
203
+ unwrapMcpOutput,
204
+ v4aToGitFileDiff
205
+ } from "./chunk-JDJJMBB3.js";
206
+ import "./chunk-ZIB4H5LN.js";
207
+ import "./chunk-R5R5RQQD.js";
208
+ import {
209
+ humanInputRequestFromEvent,
210
+ projectPendingHumanInputRequests
211
+ } from "./chunk-IZV5FTJC.js";
212
+ import {
213
+ toolDisplayName
214
+ } from "./chunk-T46QZH3E.js";
202
215
  import {
203
216
  copyTextToClipboard,
204
217
  tableElementToTsv
205
- } from "./chunk-CVYCLFMH.js";
218
+ } from "./chunk-PEHTX3V7.js";
206
219
  import {
207
220
  DesktopViewer,
208
221
  useDesktopStream,
@@ -211,7 +224,7 @@ import {
211
224
  import "./chunk-ZUWF4NF7.js";
212
225
  import {
213
226
  ModelPolicyPickerMenu
214
- } from "./chunk-IYQCWGU5.js";
227
+ } from "./chunk-GHJU7XG7.js";
215
228
  import {
216
229
  CommandPalette,
217
230
  ComposerTranscriptionControl,
@@ -231,7 +244,6 @@ import {
231
244
  appendFinalTranscript,
232
245
  argHint,
233
246
  createVoiceRecordingManifest,
234
- defaultChatComposerMessages,
235
247
  defaultCommands,
236
248
  filterCommands,
237
249
  firstMissingRequiredArg,
@@ -244,14 +256,36 @@ import {
244
256
  useSlashCommands,
245
257
  useTranscription,
246
258
  useVoiceInput
247
- } from "./chunk-IUHHPMAX.js";
259
+ } from "./chunk-7RRBX5EM.js";
260
+ import "./chunk-NX4ADH73.js";
261
+ import {
262
+ BillingClassMark,
263
+ ChatGptMark,
264
+ ClaudeMark,
265
+ GrokMark,
266
+ ModelMark,
267
+ ModelName,
268
+ ModelPolicyPicker,
269
+ PickerAnimatedPage,
270
+ PickerBackHeader,
271
+ PickerNavRow,
272
+ modelHasMark
273
+ } from "./chunk-7ZB7I3KP.js";
274
+ import "./chunk-PMV53IMM.js";
248
275
  import {
249
276
  FILE_ONLY_MESSAGE_TEXT,
250
277
  composeSendInput,
251
278
  shouldSteerOnKey,
252
279
  shouldSubmitOnKey,
253
280
  useComposer
254
- } from "./chunk-PBCZL4JP.js";
281
+ } from "./chunk-INIZSNXT.js";
282
+ import "./chunk-N7S72EXK.js";
283
+ import {
284
+ defaultModelPolicyPickerMessages
285
+ } from "./chunk-3ZC6QPOM.js";
286
+ import {
287
+ defaultChatComposerMessages
288
+ } from "./chunk-LHF6BVM4.js";
255
289
  import {
256
290
  LightboxProvider,
257
291
  Tooltip,
@@ -261,22 +295,7 @@ import {
261
295
  useLightbox,
262
296
  useLightboxOptional
263
297
  } from "./chunk-IEE7WCLN.js";
264
- import "./chunk-NX4ADH73.js";
265
- import {
266
- BillingClassMark,
267
- ChatGptMark,
268
- ClaudeMark,
269
- GrokMark,
270
- ModelMark,
271
- ModelName,
272
- ModelPolicyPicker,
273
- PickerAnimatedPage,
274
- PickerBackHeader,
275
- PickerNavRow,
276
- defaultModelPolicyPickerMessages,
277
- modelHasMark
278
- } from "./chunk-L2J3PU7A.js";
279
- import "./chunk-PMV53IMM.js";
298
+ import "./chunk-XEA5BCMA.js";
280
299
  import {
281
300
  advancedSourceSummary,
282
301
  availabilityReasonLabel,
@@ -295,24 +314,28 @@ import {
295
314
  projectPickerRows,
296
315
  runnableLatencyModesForModel,
297
316
  sortPickerRows
298
- } from "./chunk-XS67YG5R.js";
299
- import "./chunk-XEA5BCMA.js";
317
+ } from "./chunk-IX3K4THH.js";
300
318
  import {
301
319
  COMPOSER_MODEL_UNAVAILABLE_MESSAGE,
302
320
  COMPOSER_PAYMENT_REQUIRED_MESSAGE,
303
321
  CREDIT_EXHAUSTION_MESSAGE,
304
322
  composerSubmissionErrorMessage,
323
+ currentProviderRecovery,
305
324
  formatBytes,
306
325
  formatClockTime,
307
326
  formatRelativeTime,
308
327
  humanizeFailureReason,
309
328
  isCreditExhaustion,
310
329
  isModelUnavailableSubmissionError,
330
+ parseProviderRecovery,
311
331
  presentFailure,
332
+ providerRecoveryExhaustedText,
333
+ providerRecoveryRetryingText,
334
+ providerRecoverySubject,
312
335
  stringifyPayload,
313
336
  truncate,
314
337
  tryParseJson
315
- } from "./chunk-LVS3MH5T.js";
338
+ } from "./chunk-ATIRUHBZ.js";
316
339
  import {
317
340
  SandboxTerminal,
318
341
  terminalCanAcquirePty,
@@ -323,6 +346,11 @@ import {
323
346
  sandboxAcceptsLiveIo
324
347
  } from "./chunk-QV3DJVRZ.js";
325
348
  import "./chunk-TNEZNMSN.js";
349
+ import {
350
+ registerCodeEditor,
351
+ registerDesktopViewer,
352
+ registerSandboxTerminal
353
+ } from "./chunk-5I4VRWBB.js";
326
354
  import "./chunk-GC3PH6N7.js";
327
355
  import {
328
356
  useMutationRunner,
@@ -337,15 +365,6 @@ import {
337
365
  useOpenGeni,
338
366
  useOpenGeniClient
339
367
  } from "./chunk-XTD7TZHW.js";
340
- import {
341
- CodeEditor,
342
- languageForPath
343
- } from "./chunk-LSW2OJVV.js";
344
- import {
345
- registerCodeEditor,
346
- registerDesktopViewer,
347
- registerSandboxTerminal
348
- } from "./chunk-5I4VRWBB.js";
349
368
  import {
350
369
  cn
351
370
  } from "./chunk-TXS65BB2.js";
@@ -3768,7 +3787,7 @@ import {
3768
3787
  } from "lucide-react";
3769
3788
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
3770
3789
  var LazySandboxFiles = lazy(
3771
- () => import("./sandbox-files-34CJJNOY.js").then(({ SandboxFiles: SandboxFiles2 }) => ({ default: SandboxFiles2 })).catch(() => ({ default: FilesLoadFailed }))
3790
+ () => import("./sandbox-files-RCVCMXG7.js").then(({ SandboxFiles: SandboxFiles2 }) => ({ default: SandboxFiles2 })).catch(() => ({ default: FilesLoadFailed }))
3772
3791
  );
3773
3792
  function FilesLoadFailed() {
3774
3793
  return /* @__PURE__ */ jsxs5(CenteredState, { tone: "danger", icon: /* @__PURE__ */ jsx6(TriangleAlertIcon, { className: "size-5", "aria-hidden": true }), children: [
@@ -3783,11 +3802,11 @@ function FilesTabBody(props) {
3783
3802
  return /* @__PURE__ */ jsx6(Suspense, { fallback: /* @__PURE__ */ jsx6(WorkbenchSurfaceLoading, { name: "Files" }), children: /* @__PURE__ */ jsx6(LazySandboxFiles, { ...props }) });
3784
3803
  }
3785
3804
  var LazyBrowserViewer = lazy(async () => {
3786
- const { BrowserViewer } = await import("./browser-viewer-WGJ43YGI.js");
3805
+ const { BrowserViewer } = await import("./browser-viewer-CV23VIHB.js");
3787
3806
  return { default: BrowserViewer };
3788
3807
  });
3789
3808
  var LazyComputerViewer = lazy(async () => {
3790
- const { ComputerViewer } = await import("./computer-viewer-46UIN7F3.js");
3809
+ const { ComputerViewer } = await import("./computer-viewer-K4CKYRX6.js");
3791
3810
  return { default: ComputerViewer };
3792
3811
  });
3793
3812
  var WORKBENCH_TAB_CHANGES = "changes";
@@ -3925,6 +3944,7 @@ function useSandboxWorkspaceTabs(options) {
3925
3944
  const initialTab = options.initialTab ?? null;
3926
3945
  const activeTab = options.activeTab ?? initialTab;
3927
3946
  const workspaceVisible = options.workspaceVisible ?? true;
3947
+ const machinesEnabled = options.machinesEnabled ?? true;
3928
3948
  const requestedSurfaces = options.surfaces ?? WORKBENCH_SURFACES;
3929
3949
  const surfaceSet = new Set(requestedSurfaces);
3930
3950
  const changesEnabled = surfaceSet.has(WORKBENCH_TAB_CHANGES);
@@ -3976,7 +3996,7 @@ function useSandboxWorkspaceTabs(options) {
3976
3996
  workspaceId,
3977
3997
  sessionId,
3978
3998
  pollIntervalMs: MACHINES_SESSION_POLL_MS,
3979
- enabled: machineSurfaceEnabled
3999
+ enabled: machineSurfaceEnabled && machinesEnabled
3980
4000
  });
3981
4001
  const activeMachine = machines.machines.find((m) => m.sandboxId === machines.activeSandboxId) ?? machines.machines.find((m) => m.active) ?? null;
3982
4002
  const caps = useSessionCapabilities(sessionId, {
@@ -4336,6 +4356,7 @@ function SandboxWorkspace(props) {
4336
4356
  events,
4337
4357
  primary,
4338
4358
  surfaces,
4359
+ machinesEnabled,
4339
4360
  leadingTabs,
4340
4361
  trailingTabs,
4341
4362
  initialTab,
@@ -4437,6 +4458,7 @@ function SandboxWorkspace(props) {
4437
4458
  sessionId,
4438
4459
  events,
4439
4460
  ...surfaces ? { surfaces } : {},
4461
+ ...machinesEnabled !== void 0 ? { machinesEnabled } : {},
4440
4462
  ...initialTab ? { initialTab } : {},
4441
4463
  activeTab: activeTabHint,
4442
4464
  workspaceVisible: collapsed !== true,
@@ -4924,6 +4946,19 @@ import { jsx as jsx8 } from "react/jsx-runtime";
4924
4946
  function OpenRouterMark(props) {
4925
4947
  return /* @__PURE__ */ jsx8("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx8("path", { d: "M16.778 1.844v1.919q-.569-.026-1.138-.032-.708-.008-1.415.037c-1.93.126-4.023.728-6.149 2.237-2.911 2.066-2.731 1.95-4.14 2.75-.396.223-1.342.574-2.185.798-.841.225-1.753.333-1.751.333v4.229s.768.108 1.61.333c.842.224 1.789.575 2.185.799 1.41.798 1.228.683 4.14 2.75 2.126 1.509 4.22 2.11 6.148 2.236.88.058 1.716.041 2.555.005v1.918l7.222-4.168-7.222-4.17v2.176c-.86.038-1.611.065-2.278.021-1.364-.09-2.417-.357-3.979-1.465-2.244-1.593-2.866-2.027-3.68-2.508.889-.518 1.449-.906 3.822-2.59 1.56-1.109 2.614-1.377 3.978-1.466.667-.044 1.418-.017 2.278.02v2.176L24 6.014Z" }) });
4926
4948
  }
4949
+
4950
+ // src/components/opper-mark.tsx
4951
+ import { jsx as jsx9 } from "react/jsx-runtime";
4952
+ function OpperMark(props) {
4953
+ return /* @__PURE__ */ jsx9("svg", { viewBox: "-49.5 0 315 315", fill: "currentColor", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx9(
4954
+ "path",
4955
+ {
4956
+ fillRule: "evenodd",
4957
+ clipRule: "evenodd",
4958
+ d: "M159.78 315C71.53 315 0 244.49 0 157.5C0 -18.9499 159.78 0.650075 159.78 0.650075C159.78 87.2201 88.36 157.4 0.2 157.5C149.8 157.64 159.78 315 159.78 315ZM160.52 217.98C160.52 217.98 156.94 161.65 105.04 157.52C120.6 157.34 160.52 151.54 160.52 96.5601C160.52 151.54 200.44 157.34 216 157.52C164.1 161.63 160.52 217.98 160.52 217.98Z"
4959
+ }
4960
+ ) });
4961
+ }
4927
4962
  export {
4928
4963
  ActivityDisclosure,
4929
4964
  ActivityRail,
@@ -4998,12 +5033,15 @@ export {
4998
5033
  OpenGeniLinkProvider,
4999
5034
  OpenGeniProvider,
5000
5035
  OpenRouterMark,
5036
+ OpperMark,
5037
+ PROVIDER_RECOVERY_NOTICE_DETAIL,
5001
5038
  PayloadBlock,
5002
5039
  PickerAnimatedPage,
5003
5040
  PickerBackHeader,
5004
5041
  PickerNavRow,
5005
5042
  PierreDiff,
5006
5043
  PierreFile,
5044
+ ProviderRecoveryNotice,
5007
5045
  QueueSurface,
5008
5046
  SESSION_EVENT_BROWSER_MAX_BYTES,
5009
5047
  SESSION_EVENT_BROWSER_MAX_COUNT,
@@ -5089,6 +5127,7 @@ export {
5089
5127
  createWorkspaceRetainedArtifactLoader,
5090
5128
  createWorkspaceRetainedVideoLoader,
5091
5129
  creditExhaustedFromEvents,
5130
+ currentProviderRecovery,
5092
5131
  defaultApprovalSurfaceMessages,
5093
5132
  defaultChatComposerMessages,
5094
5133
  defaultCommands,
@@ -5145,6 +5184,7 @@ export {
5145
5184
  parseExecBannerSessionId,
5146
5185
  parseFreeformApplyPatch,
5147
5186
  parseOpenGeniLink,
5187
+ parseProviderRecovery,
5148
5188
  parseToolArgs,
5149
5189
  payerSummaryForModel,
5150
5190
  planVoiceRecordingChunkCommit,
@@ -5156,6 +5196,9 @@ export {
5156
5196
  projectPendingApprovals,
5157
5197
  projectPendingHumanInputRequests,
5158
5198
  projectPickerRows,
5199
+ providerRecoveryExhaustedText,
5200
+ providerRecoveryRetryingText,
5201
+ providerRecoverySubject,
5159
5202
  rawTypeOf,
5160
5203
  registerCodeEditor,
5161
5204
  registerDesktopViewer,