@opengeni/react 0.48.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/README.md +138 -2
  2. package/dist/artifacts-document.d.ts +3 -0
  3. package/dist/artifacts-document.js +17 -0
  4. package/dist/artifacts-document.js.map +1 -0
  5. package/dist/artifacts-presentation.d.ts +3 -0
  6. package/dist/artifacts-presentation.js +17 -0
  7. package/dist/artifacts-presentation.js.map +1 -0
  8. package/dist/artifacts-spreadsheet.d.ts +3 -0
  9. package/dist/artifacts-spreadsheet.js +17 -0
  10. package/dist/artifacts-spreadsheet.js.map +1 -0
  11. package/dist/artifacts.d.ts +2 -0
  12. package/dist/artifacts.js +199 -0
  13. package/dist/artifacts.js.map +1 -0
  14. package/dist/{chunk-NJ7M2B6Z.js → chunk-5UQPNLIO.js} +16 -8
  15. package/dist/{chunk-NJ7M2B6Z.js.map → chunk-5UQPNLIO.js.map} +1 -1
  16. package/dist/{chunk-LHLYWG5R.js → chunk-6KLX2RH5.js} +461 -38
  17. package/dist/chunk-6KLX2RH5.js.map +1 -0
  18. package/dist/chunk-7WCLAEFV.js +2828 -0
  19. package/dist/chunk-7WCLAEFV.js.map +1 -0
  20. package/dist/{chunk-I4MPFDRP.js → chunk-B6WPZSTT.js} +104 -104
  21. package/dist/{chunk-I4MPFDRP.js.map → chunk-B6WPZSTT.js.map} +1 -1
  22. package/dist/{chunk-EKZH6IDG.js → chunk-C5ZPSSS5.js} +111 -1
  23. package/dist/chunk-C5ZPSSS5.js.map +1 -0
  24. package/dist/{chunk-OL6QVXGF.js → chunk-HA46CYQK.js} +152 -8
  25. package/dist/chunk-HA46CYQK.js.map +1 -0
  26. package/dist/chunk-HUIKIDM5.js +2148 -0
  27. package/dist/chunk-HUIKIDM5.js.map +1 -0
  28. package/dist/{chunk-FWXGSNXT.js → chunk-IGC6A2ZI.js} +585 -34
  29. package/dist/chunk-IGC6A2ZI.js.map +1 -0
  30. package/dist/chunk-JVYQRRC4.js +53 -0
  31. package/dist/chunk-JVYQRRC4.js.map +1 -0
  32. package/dist/chunk-KCGXPP5V.js +157 -0
  33. package/dist/chunk-KCGXPP5V.js.map +1 -0
  34. package/dist/chunk-LLOLUHVG.js +5937 -0
  35. package/dist/chunk-LLOLUHVG.js.map +1 -0
  36. package/dist/{chunk-WYA65Y3F.js → chunk-MKPIAGVL.js} +13 -3
  37. package/dist/chunk-MKPIAGVL.js.map +1 -0
  38. package/dist/chunk-PEI6RANI.js +3234 -0
  39. package/dist/chunk-PEI6RANI.js.map +1 -0
  40. package/dist/chunk-R3AZOAB5.js +933 -0
  41. package/dist/chunk-R3AZOAB5.js.map +1 -0
  42. package/dist/{chunk-O4VXOBGF.js → chunk-WSK7G5LE.js} +70 -2
  43. package/dist/chunk-WSK7G5LE.js.map +1 -0
  44. package/dist/{chunk-23EJ676W.js → chunk-XBZWOM2K.js} +9 -4
  45. package/dist/chunk-XBZWOM2K.js.map +1 -0
  46. package/dist/{chunk-XCNTXWBB.js → chunk-Y7OEDUJ5.js} +856 -338
  47. package/dist/chunk-Y7OEDUJ5.js.map +1 -0
  48. package/dist/client.d.ts +10 -2
  49. package/dist/clipboard.d.ts +1 -0
  50. package/dist/clipboard.js +7 -0
  51. package/dist/clipboard.js.map +1 -0
  52. package/dist/commands/index.d.ts +3 -3
  53. package/dist/commands/registry.d.ts +1 -1
  54. package/dist/commands/types.d.ts +1 -1
  55. package/dist/components/approval-surface.d.ts +2 -2
  56. package/dist/components/artifacts/artifact-surface.d.ts +18 -0
  57. package/dist/components/artifacts/document-editor.d.ts +172 -0
  58. package/dist/components/artifacts/editable-artifact-ui.d.ts +13 -0
  59. package/dist/components/artifacts/editable-artifact-workbench.d.ts +49 -0
  60. package/dist/components/artifacts/editable-document.d.ts +24 -0
  61. package/dist/components/artifacts/editable-presentation.d.ts +24 -0
  62. package/dist/components/artifacts/editable-spreadsheet.d.ts +32 -0
  63. package/dist/components/artifacts/index.d.ts +9 -0
  64. package/dist/components/artifacts/presentation-editor.d.ts +297 -0
  65. package/dist/components/artifacts/published-html-artifact-frame.d.ts +14 -0
  66. package/dist/components/artifacts/spreadsheet-canvas.d.ts +120 -0
  67. package/dist/components/artifacts/spreadsheet-grid.d.ts +113 -0
  68. package/dist/components/browser-input.d.ts +7 -0
  69. package/dist/components/browser-viewer.d.ts +30 -0
  70. package/dist/components/chat-composer.d.ts +8 -8
  71. package/dist/components/code-editor.d.ts +25 -3
  72. package/dist/components/command-palette.d.ts +2 -2
  73. package/dist/components/composer-transcription-control.d.ts +2 -2
  74. package/dist/components/composer.d.ts +17 -17
  75. package/dist/components/computer-viewer.d.ts +24 -0
  76. package/dist/components/copy-button.d.ts +2 -2
  77. package/dist/components/desktop-viewer.d.ts +50 -22
  78. package/dist/components/diff-view.d.ts +1 -1
  79. package/dist/components/enrollment-consent.d.ts +1 -1
  80. package/dist/components/enrollment-device-flow.d.ts +1 -1
  81. package/dist/components/file-browser.d.ts +2 -2
  82. package/dist/components/fleet-tile.d.ts +1 -1
  83. package/dist/components/generated-video-player.d.ts +10 -0
  84. package/dist/components/human-input-form.d.ts +1 -1
  85. package/dist/components/human-input-surface.d.ts +2 -2
  86. package/dist/components/interaction-intervention-banner.d.ts +11 -0
  87. package/dist/components/interactive-workbench-viewers.d.ts +2 -0
  88. package/dist/components/machine-card.d.ts +2 -2
  89. package/dist/components/machine-dock-bar.d.ts +3 -3
  90. package/dist/components/machine-health-pill.d.ts +2 -2
  91. package/dist/components/machine-input-display.d.ts +1 -1
  92. package/dist/components/machine-metrics.d.ts +2 -2
  93. package/dist/components/machine-status-pill.d.ts +4 -4
  94. package/dist/components/machines/health.d.ts +1 -1
  95. package/dist/components/machines/machine-detail.d.ts +3 -3
  96. package/dist/components/machines/metric-history-chart.d.ts +1 -1
  97. package/dist/components/machines/metric-sparkline.d.ts +2 -2
  98. package/dist/components/machines/series.d.ts +2 -2
  99. package/dist/components/machines-dashboard.d.ts +2 -2
  100. package/dist/components/markdown.d.ts +1 -1
  101. package/dist/components/message-timeline.d.ts +12 -5
  102. package/dist/components/model-picker.d.ts +2 -2
  103. package/dist/components/model-policy-picker.d.ts +7 -7
  104. package/dist/components/pierre-diff.d.ts +1 -1
  105. package/dist/components/pierre-file.d.ts +1 -1
  106. package/dist/components/queue-draft-policy.d.ts +1 -1
  107. package/dist/components/queue-surface-implementation.d.ts +3 -3
  108. package/dist/components/queue-surface-state.d.ts +4 -4
  109. package/dist/components/queue-surface.d.ts +5 -5
  110. package/dist/components/sandbox-files.d.ts +3 -3
  111. package/dist/components/sandbox-terminal.d.ts +24 -4
  112. package/dist/components/sandbox-workspace.d.ts +28 -9
  113. package/dist/components/session-chrome.d.ts +4 -4
  114. package/dist/components/session-status.d.ts +2 -2
  115. package/dist/components/timeline-annotation-selection.d.ts +9 -0
  116. package/dist/components/timeline-annotations-dialog.d.ts +16 -0
  117. package/dist/components/timeline-annotations.d.ts +13 -0
  118. package/dist/components/tooltip.d.ts +4 -4
  119. package/dist/components/user-message-body.d.ts +2 -2
  120. package/dist/components/workbench-changes.d.ts +2 -2
  121. package/dist/components/workspace-dock.d.ts +1 -1
  122. package/dist/composer.d.ts +11 -11
  123. package/dist/composer.js +7 -7
  124. package/dist/hooks/internal.d.ts +1 -1
  125. package/dist/hooks/use-attached-browsers.d.ts +21 -0
  126. package/dist/hooks/use-auth-runs.d.ts +32 -0
  127. package/dist/hooks/use-available-models.d.ts +2 -2
  128. package/dist/hooks/use-billing-usage.d.ts +1 -1
  129. package/dist/hooks/use-browser-downloads.d.ts +25 -0
  130. package/dist/hooks/use-browser-frame-stream.d.ts +28 -0
  131. package/dist/hooks/use-browser-identities.d.ts +30 -0
  132. package/dist/hooks/use-browser-session.d.ts +29 -0
  133. package/dist/hooks/use-browser-sessions.d.ts +32 -0
  134. package/dist/hooks/use-channels.d.ts +26 -0
  135. package/dist/hooks/use-codex-accounts.d.ts +2 -2
  136. package/dist/hooks/use-composer.d.ts +36 -9
  137. package/dist/hooks/use-computer-frame-stream.d.ts +24 -0
  138. package/dist/hooks/use-computer-session.d.ts +29 -0
  139. package/dist/hooks/use-computer-sessions.d.ts +28 -0
  140. package/dist/hooks/use-desktop-stream.d.ts +5 -1
  141. package/dist/hooks/use-environments.d.ts +1 -1
  142. package/dist/hooks/use-file-attachments.d.ts +1 -1
  143. package/dist/hooks/use-goal.d.ts +2 -2
  144. package/dist/hooks/use-human-input.d.ts +2 -2
  145. package/dist/hooks/use-interaction-interventions.d.ts +27 -0
  146. package/dist/hooks/use-interaction-invalidation.d.ts +19 -0
  147. package/dist/hooks/use-last-started-turn-policy.d.ts +2 -2
  148. package/dist/hooks/use-machine-chip.d.ts +2 -2
  149. package/dist/hooks/use-machines.d.ts +4 -4
  150. package/dist/hooks/use-network-routes.d.ts +25 -0
  151. package/dist/hooks/use-packs.d.ts +7 -2
  152. package/dist/hooks/use-rigs.d.ts +1 -1
  153. package/dist/hooks/use-sandbox-files.d.ts +6 -4
  154. package/dist/hooks/use-sandbox-git.d.ts +6 -5
  155. package/dist/hooks/use-sandbox-terminal.d.ts +1 -1
  156. package/dist/hooks/use-scheduled-tasks.d.ts +1 -1
  157. package/dist/hooks/use-session-capabilities.d.ts +5 -4
  158. package/dist/hooks/use-session-control.d.ts +1 -1
  159. package/dist/hooks/use-session-events.d.ts +2 -2
  160. package/dist/hooks/use-session-lineage.d.ts +1 -1
  161. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  162. package/dist/hooks/use-session.d.ts +2 -2
  163. package/dist/hooks/use-site-auth-connections.d.ts +25 -0
  164. package/dist/hooks/use-slash-commands.d.ts +1 -1
  165. package/dist/hooks/use-supergrok-accounts.d.ts +26 -0
  166. package/dist/hooks/use-terminal-stream.d.ts +11 -2
  167. package/dist/hooks/use-turn-queue.d.ts +2 -2
  168. package/dist/hooks/use-video-artifact-playback.d.ts +9 -0
  169. package/dist/hooks/use-voice-input.d.ts +1 -1
  170. package/dist/hooks/use-workspace-capture.d.ts +1 -1
  171. package/dist/hooks/use-workspace-edit.d.ts +1 -1
  172. package/dist/hooks/use-workspace-sessions.d.ts +1 -1
  173. package/dist/hooks/use-workspaces.d.ts +1 -1
  174. package/dist/index.d.ts +162 -155
  175. package/dist/index.js +1822 -1703
  176. package/dist/index.js.map +1 -1
  177. package/dist/interaction.d.ts +33 -0
  178. package/dist/interaction.js +550 -0
  179. package/dist/interaction.js.map +1 -0
  180. package/dist/interactive-workbench-viewers-TOHBXJEE.js +15 -0
  181. package/dist/interactive-workbench-viewers-TOHBXJEE.js.map +1 -0
  182. package/dist/lib/host-platform.d.ts +5 -0
  183. package/dist/lib/relay-wire.d.ts +24 -1
  184. package/dist/lib/sandbox-liveness.d.ts +9 -0
  185. package/dist/lib/terminal-capability.d.ts +5 -0
  186. package/dist/lib/xterm-theme.d.ts +1 -1
  187. package/dist/machines.d.ts +30 -30
  188. package/dist/machines.js +2 -2
  189. package/dist/model-policy.d.ts +1 -1
  190. package/dist/model-policy.js +1 -1
  191. package/dist/provider.d.ts +6 -5
  192. package/dist/{queue-surface-implementation-U5JFG7HT.js → queue-surface-implementation-2KVJTYXH.js} +100 -48
  193. package/dist/queue-surface-implementation-2KVJTYXH.js.map +1 -0
  194. package/dist/realtime/dropdown-menu.d.ts +8 -8
  195. package/dist/realtime/realtime-control.d.ts +8 -8
  196. package/dist/realtime.d.ts +4 -4
  197. package/dist/realtime.js +38 -11
  198. package/dist/realtime.js.map +1 -1
  199. package/dist/session-context.d.ts +28 -2
  200. package/dist/session-ui.d.ts +14 -14
  201. package/dist/session-ui.js +5 -4
  202. package/dist/session.d.ts +28 -28
  203. package/dist/session.js +10 -10
  204. package/dist/timeline/activity-rail.d.ts +5 -3
  205. package/dist/timeline/disclosure-context.d.ts +1 -1
  206. package/dist/timeline/fleet-decision-projection.d.ts +1 -1
  207. package/dist/timeline/fleet-decision-row.d.ts +3 -3
  208. package/dist/timeline/index.d.ts +19 -19
  209. package/dist/timeline/parsers.d.ts +4 -1
  210. package/dist/timeline/projection.d.ts +3 -3
  211. package/dist/timeline/registry.d.ts +8 -2
  212. package/dist/timeline/screenshot-lightbox.d.ts +2 -2
  213. package/dist/timeline/shared.d.ts +21 -10
  214. package/dist/timeline/tool-diff.d.ts +2 -2
  215. package/dist/timeline/tool-renderers.d.ts +1 -1
  216. package/dist/timeline/turn-summary.d.ts +3 -3
  217. package/dist/timeline/types.d.ts +44 -3
  218. package/dist/timeline-annotation-selection-3L7LHGG2.js +187 -0
  219. package/dist/timeline-annotation-selection-3L7LHGG2.js.map +1 -0
  220. package/dist/timeline-annotations-dialog-U7EVLR75.js +196 -0
  221. package/dist/timeline-annotations-dialog-U7EVLR75.js.map +1 -0
  222. package/package.json +36 -7
  223. package/src/artifacts-document.ts +31 -0
  224. package/src/artifacts-presentation.ts +36 -0
  225. package/src/artifacts-spreadsheet.ts +21 -0
  226. package/src/artifacts.ts +89 -0
  227. package/src/client.ts +157 -1
  228. package/src/clipboard.ts +2 -0
  229. package/src/components/artifacts/artifact-surface.tsx +93 -0
  230. package/src/components/artifacts/document-editor.tsx +2255 -0
  231. package/src/components/artifacts/editable-artifact-ui.tsx +89 -0
  232. package/src/components/artifacts/editable-artifact-workbench.tsx +203 -0
  233. package/src/components/artifacts/editable-document.tsx +657 -0
  234. package/src/components/artifacts/editable-presentation.tsx +1020 -0
  235. package/src/components/artifacts/editable-spreadsheet.tsx +733 -0
  236. package/src/components/artifacts/index.ts +104 -0
  237. package/src/components/artifacts/presentation-editor.tsx +3148 -0
  238. package/src/components/artifacts/published-html-artifact-frame.tsx +38 -0
  239. package/src/components/artifacts/spreadsheet-canvas.ts +799 -0
  240. package/src/components/artifacts/spreadsheet-grid.tsx +2129 -0
  241. package/src/components/browser-input.ts +65 -0
  242. package/src/components/browser-viewer.tsx +2702 -0
  243. package/src/components/chat-composer.tsx +13 -0
  244. package/src/components/code-editor.tsx +89 -30
  245. package/src/components/composer-transcription-control.tsx +10 -6
  246. package/src/components/computer-viewer.tsx +1636 -0
  247. package/src/components/desktop-viewer.tsx +215 -74
  248. package/src/components/generated-video-player.tsx +89 -0
  249. package/src/components/interaction-intervention-banner.tsx +99 -0
  250. package/src/components/interactive-workbench-viewers.ts +2 -0
  251. package/src/components/machine-input-display.ts +3 -0
  252. package/src/components/machines/machine-detail.tsx +1 -1
  253. package/src/components/message-timeline.tsx +289 -32
  254. package/src/components/model-policy-picker.tsx +15 -0
  255. package/src/components/queue-surface-implementation.tsx +116 -60
  256. package/src/components/sandbox-files.tsx +2 -2
  257. package/src/components/sandbox-terminal.tsx +128 -46
  258. package/src/components/sandbox-workspace.tsx +256 -90
  259. package/src/components/session-chrome.tsx +53 -13
  260. package/src/components/timeline-annotation-selection.tsx +221 -0
  261. package/src/components/timeline-annotations-dialog.tsx +213 -0
  262. package/src/components/timeline-annotations.tsx +84 -0
  263. package/src/components/workbench-changes.tsx +188 -31
  264. package/src/components/workspace-dock.tsx +59 -5
  265. package/src/hooks/use-attached-browsers.ts +154 -0
  266. package/src/hooks/use-auth-runs.ts +278 -0
  267. package/src/hooks/use-browser-downloads.ts +218 -0
  268. package/src/hooks/use-browser-frame-stream.ts +425 -0
  269. package/src/hooks/use-browser-identities.ts +266 -0
  270. package/src/hooks/use-browser-session.ts +543 -0
  271. package/src/hooks/use-browser-sessions.ts +286 -0
  272. package/src/hooks/use-channels.ts +99 -0
  273. package/src/hooks/use-composer.ts +769 -24
  274. package/src/hooks/use-computer-frame-stream.ts +434 -0
  275. package/src/hooks/use-computer-session.ts +462 -0
  276. package/src/hooks/use-computer-sessions.ts +251 -0
  277. package/src/hooks/use-desktop-stream.ts +39 -7
  278. package/src/hooks/use-interaction-interventions.ts +242 -0
  279. package/src/hooks/use-interaction-invalidation.ts +66 -0
  280. package/src/hooks/use-machine-chip.ts +15 -3
  281. package/src/hooks/use-machines.ts +33 -3
  282. package/src/hooks/use-network-routes.ts +214 -0
  283. package/src/hooks/use-packs.ts +51 -0
  284. package/src/hooks/use-sandbox-files.ts +98 -55
  285. package/src/hooks/use-sandbox-git.ts +93 -38
  286. package/src/hooks/use-sandbox-terminal.ts +3 -2
  287. package/src/hooks/use-session-capabilities.ts +59 -46
  288. package/src/hooks/use-site-auth-connections.ts +226 -0
  289. package/src/hooks/use-supergrok-accounts.ts +81 -0
  290. package/src/hooks/use-terminal-stream.ts +359 -47
  291. package/src/hooks/use-video-artifact-playback.ts +28 -0
  292. package/src/hooks/use-workspace-edit.ts +2 -1
  293. package/src/index.ts +18 -0
  294. package/src/interaction.ts +101 -0
  295. package/src/lib/host-platform.ts +10 -0
  296. package/src/lib/relay-wire.ts +47 -4
  297. package/src/lib/sandbox-liveness.ts +11 -0
  298. package/src/lib/terminal-capability.ts +10 -0
  299. package/src/model-policy.ts +19 -4
  300. package/src/provider.tsx +133 -1
  301. package/src/realtime/realtime-control.tsx +34 -6
  302. package/src/session-context.ts +156 -1
  303. package/src/timeline/activity-rail.tsx +25 -3
  304. package/src/timeline/index.ts +3 -0
  305. package/src/timeline/parsers.ts +14 -1
  306. package/src/timeline/projection.ts +269 -14
  307. package/src/timeline/registry.ts +13 -1
  308. package/src/timeline/screenshot-lightbox.tsx +19 -9
  309. package/src/timeline/shared.tsx +56 -8
  310. package/src/timeline/tool-renderers.tsx +303 -50
  311. package/src/timeline/types.ts +57 -3
  312. package/styles/compiled.css +312 -21
  313. package/styles/index.css +15 -0
  314. package/styles/responsive.css +13 -1
  315. package/dist/chunk-23EJ676W.js.map +0 -1
  316. package/dist/chunk-EKZH6IDG.js.map +0 -1
  317. package/dist/chunk-FWXGSNXT.js.map +0 -1
  318. package/dist/chunk-LHLYWG5R.js.map +0 -1
  319. package/dist/chunk-O4VXOBGF.js.map +0 -1
  320. package/dist/chunk-OL6QVXGF.js.map +0 -1
  321. package/dist/chunk-WYA65Y3F.js.map +0 -1
  322. package/dist/chunk-XCNTXWBB.js.map +0 -1
  323. package/dist/fleet-decision-projection-SLNZMS42.js +0 -241
  324. package/dist/fleet-decision-projection-SLNZMS42.js.map +0 -1
  325. package/dist/queue-surface-implementation-U5JFG7HT.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { ClientVoiceInputConfig, OpenGeniClient, TranscriptionAdapter, WorkspaceTranscriptionPolicy } from "@opengeni/sdk";
2
- import type { VoiceRecordingStore } from "../voice-recording-store";
2
+ import type { VoiceRecordingStore } from "../voice-recording-store.js";
3
3
  export type ComposerTranscriptionMessages = {
4
4
  start: string;
5
5
  stop: string;
@@ -50,4 +50,4 @@ export type ComposerTranscriptionControlProps = {
50
50
  suppressed?: boolean | undefined;
51
51
  };
52
52
  /** One provider-neutral microphone control for the nearest editable composer. */
53
- export declare function ComposerTranscriptionControl({ client, workspaceId, capability, workspaceEnabled, messages: overrides, className, createRecordingStore, createOwnerId, suppressed, }: ComposerTranscriptionControlProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function ComposerTranscriptionControl({ client, workspaceId, capability, workspaceEnabled, messages: overrides, className, createRecordingStore, createOwnerId, suppressed, }: ComposerTranscriptionControlProps): import("react").JSX.Element;
@@ -1,14 +1,14 @@
1
1
  import type { ClientModel, EffectiveSessionControl } from "@opengeni/sdk";
2
2
  import { type ButtonHTMLAttributes, type ChangeEvent, type ClipboardEvent, type ComponentPropsWithoutRef, type DragEvent, type KeyboardEvent, type ReactNode, type RefObject } from "react";
3
- import type { Notice, SlashCommand } from "../commands/types";
4
- import type { ComposerState } from "../hooks/use-composer";
5
- import type { UseFileAttachmentsResult } from "../hooks/use-file-attachments";
6
- import { type ConfirmState, type SlashCommandContext } from "../hooks/use-slash-commands";
7
- import { type ResponsiveBasis } from "../lib/composer-responsive-context";
8
- import type { PickerModelRow } from "../model-policy";
9
- import { OPEN_WORKSTREAM_CONTROL_EVENT } from "../workstream-control-event";
3
+ import type { Notice, SlashCommand } from "../commands/types.js";
4
+ import type { ComposerState } from "../hooks/use-composer.js";
5
+ import type { UseFileAttachmentsResult } from "../hooks/use-file-attachments.js";
6
+ import { type ConfirmState, type SlashCommandContext } from "../hooks/use-slash-commands.js";
7
+ import { type ResponsiveBasis } from "../lib/composer-responsive-context.js";
8
+ import type { PickerModelRow } from "../model-policy.js";
9
+ import { OPEN_WORKSTREAM_CONTROL_EVENT } from "../workstream-control-event.js";
10
10
  export { OPEN_WORKSTREAM_CONTROL_EVENT };
11
- export type { ResponsiveBasis } from "../lib/composer-responsive-context";
11
+ export type { ResponsiveBasis } from "../lib/composer-responsive-context.js";
12
12
  export type ComposerDelivery = Pick<ComposerState, "value" | "setValue" | "send" | "steer" | "sending" | "canSend" | "error" | "clearError">;
13
13
  export type ComposerDraftState = Pick<ComposerState, "draftConflict" | "draftSaving" | "resolveDraftConflict" | "restoredResources" | "removeRestoredResource">;
14
14
  export type ComposerControlState = Pick<ComposerState, "pause" | "pausing" | "resume" | "resumeScope" | "resuming">;
@@ -203,7 +203,7 @@ export declare function useChatComposerController({ delivery, draft, control, ef
203
203
  handleDragOver: (event: DragEvent<HTMLDivElement>) => void;
204
204
  handleDragLeave: (event: DragEvent<HTMLDivElement>) => void;
205
205
  handleDrop: (event: DragEvent<HTMLDivElement>) => void;
206
- palette: import("..").UseSlashCommandsResult;
206
+ palette: import("../index.js").UseSlashCommandsResult;
207
207
  paletteEnabled: boolean;
208
208
  commandDraftBlocked: boolean;
209
209
  confirmState: ConfirmState;
@@ -251,17 +251,17 @@ export declare const Frame: import("react").ForwardRefExoticComponent<Omit<impor
251
251
  export type ComposerCommandPaletteProps = {
252
252
  className?: string | undefined;
253
253
  };
254
- export declare function CommandPalette({ className }: ComposerCommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
254
+ export declare function CommandPalette({ className }: ComposerCommandPaletteProps): import("react").JSX.Element | null;
255
255
  type OwnedSurfaceProps = "onDragOver" | "onDragLeave" | "onDrop";
256
256
  export type ComposerSurfaceProps = Omit<ComponentPropsWithoutRef<"div">, OwnedSurfaceProps>;
257
257
  export declare const Surface: import("react").ForwardRefExoticComponent<ComposerSurfaceProps & import("react").RefAttributes<HTMLDivElement>>;
258
- export declare function PausedState(): import("react/jsx-runtime").JSX.Element | null;
259
- export declare function RestoredResources(): import("react/jsx-runtime").JSX.Element | null;
260
- export declare function Attachments(): import("react/jsx-runtime").JSX.Element | null;
258
+ export declare function PausedState(): import("react").JSX.Element | null;
259
+ export declare function RestoredResources(): import("react").JSX.Element | null;
260
+ export declare function Attachments(): import("react").JSX.Element | null;
261
261
  type OwnedInputProps = "value" | "defaultValue" | "onChange" | "onKeyDown" | "onPaste" | "disabled" | "aria-autocomplete" | "aria-controls" | "aria-activedescendant" | "aria-keyshortcuts";
262
262
  export type ComposerInputProps = Omit<ComponentPropsWithoutRef<"textarea">, OwnedInputProps>;
263
263
  export declare const Input: import("react").ForwardRefExoticComponent<ComposerInputProps & import("react").RefAttributes<HTMLTextAreaElement>>;
264
- export declare function Confirmation(): import("react/jsx-runtime").JSX.Element | null;
264
+ export declare function Confirmation(): import("react").JSX.Element | null;
265
265
  export type ComposerFooterProps = ComponentPropsWithoutRef<"div">;
266
266
  export declare const Footer: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
267
267
  export type ComposerControlsProps = ComponentPropsWithoutRef<"span">;
@@ -290,10 +290,10 @@ export type ComposerModelPickerProps = {
290
290
  /** Filter to Codex models for remote_v2-locked sessions. */
291
291
  codexOnly?: boolean | undefined;
292
292
  };
293
- export declare function ModelPicker({ models, rows, value, onChange, label, className, codexOnly, }: ComposerModelPickerProps): import("react/jsx-runtime").JSX.Element;
293
+ export declare function ModelPicker({ models, rows, value, onChange, label, className, codexOnly, }: ComposerModelPickerProps): import("react").JSX.Element;
294
294
  export type ComposerPauseButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, OwnedButtonProps>;
295
295
  export declare const PauseButton: import("react").ForwardRefExoticComponent<ComposerPauseButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
296
296
  export type ComposerSendButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, OwnedButtonProps>;
297
297
  export declare const SendButton: import("react").ForwardRefExoticComponent<ComposerSendButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
298
- export declare function Help(): import("react/jsx-runtime").JSX.Element;
299
- export declare function Status(): import("react/jsx-runtime").JSX.Element;
298
+ export declare function Help(): import("react").JSX.Element;
299
+ export declare function Status(): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { type KeyboardEvent, type ReactNode } from "react";
2
+ import { type ComputerFrameWebSocketFactory } from "../hooks/use-computer-frame-stream.js";
3
+ import type { EmbeddedComputerInteractionClientOverride } from "../session-context.js";
4
+ export type ComputerViewerNotification = {
5
+ kind: "error" | "info";
6
+ message: string;
7
+ };
8
+ export type ComputerViewerProps = EmbeddedComputerInteractionClientOverride & {
9
+ /** Selected OpenGeni agent/session. Peer ComputerSessions remain visible. */
10
+ sessionId: string;
11
+ enabled?: boolean | undefined;
12
+ className?: string | undefined;
13
+ onNotify?: ((notification: ComputerViewerNotification) => void) | undefined;
14
+ /** Tests/demos only. Production uses the browser's native WebSocket. */
15
+ webSocketFactory?: ComputerFrameWebSocketFactory | undefined;
16
+ renderEmpty?: ((create: () => void, creating: boolean) => ReactNode) | undefined;
17
+ /** Host navigation request for one exact ComputerSession. */
18
+ requestedComputerSessionId?: string | null | undefined;
19
+ requestedComputerRequestId?: string | number | null | undefined;
20
+ };
21
+ /** Full ComputerSession surface: workspace discovery, peer switching, app/window/
22
+ * screen navigation, semantic controls, exact-frame input, and live media. */
23
+ export declare function ComputerViewer({ sessionId, enabled, className, onNotify, webSocketFactory, renderEmpty, requestedComputerSessionId, requestedComputerRequestId, ...override }: ComputerViewerProps): string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
24
+ export declare function computerKey(event: Pick<KeyboardEvent<HTMLTextAreaElement>, "altKey" | "ctrlKey" | "key" | "metaKey" | "shiftKey">): string | null;
@@ -15,7 +15,7 @@ export type CopyButtonProps = {
15
15
  * Ghost icon copy control — no chrome box, no "Copy code" label.
16
16
  * Copy → check flash. Hover-reveal via `group/copy` on a parent.
17
17
  */
18
- export declare function CopyButton({ text, label, className, reveal, }: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function CopyButton({ text, label, className, reveal, }: CopyButtonProps): import("react").JSX.Element;
19
19
  /** Hover-reveal chrome around a message / turn so {@link CopyButton} can fade in. */
20
20
  export declare function CopyHoverFrame({ children, className, copyText, label, align, trailing, }: {
21
21
  children: ReactNode;
@@ -25,4 +25,4 @@ export declare function CopyHoverFrame({ children, className, copyText, label, a
25
25
  align?: "start" | "end" | undefined;
26
26
  /** Optional footer meta (e.g. sent/finished clock) — immediately after the copy control. */
27
27
  trailing?: ReactNode | undefined;
28
- }): import("react/jsx-runtime").JSX.Element;
28
+ }): import("react").JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import type { CapabilityUnavailableReason, DesktopRfbFactory, DesktopStreamCapability } from "@opengeni/sdk";
2
- import { type ReactNode } from "react";
3
- import type { DesktopWebSocketFactory } from "../hooks/use-relay-frame-stream";
2
+ import { type KeyboardEvent as ReactKeyboardEvent, type ReactNode } from "react";
3
+ import { type InteractionHostPlatform } from "../lib/host-platform.js";
4
+ import type { DesktopWebSocketFactory } from "../hooks/use-relay-frame-stream.js";
4
5
  export type DesktopViewerProps = {
5
6
  /** The desktop cell of the negotiated capabilities (`capabilities.DesktopStream`). */
6
7
  capability: DesktopStreamCapability | null;
@@ -16,26 +17,43 @@ export type DesktopViewerProps = {
16
17
  scaleViewport?: boolean | undefined;
17
18
  /** Custom RFB factory (tests / a WebRTC swap). Defaults to lazy @novnc/novnc. */
18
19
  rfbFactory?: DesktopRfbFactory | undefined;
20
+ /** Authenticated controller protocols for proxied RFB transports. */
21
+ webSocketProtocols?: string[] | undefined;
19
22
  /** Custom socket factory for the self-hosted `relay-frames` transport (tests).
20
23
  * Defaults to `new WebSocket(url)`. Mirrors `rfbFactory`. */
21
24
  webSocketFactory?: DesktopWebSocketFactory | undefined;
22
25
  /**
23
- * Consent gate for the un-redacted (and possibly shared) pixel plane. Rendered
24
- * BEFORE connecting whenever the desktop requires acknowledgment that hasn't
25
- * been given. Call `onAccept` to record consent (the host wires it to
26
- * `client.acknowledgeStream` + a re-negotiate). When omitted, a default
27
- * banner is shown.
26
+ * Optional host-owned paste path. ComputerSession hosts use their native,
27
+ * target-scoped clipboard action instead of relying on an RFB server to sync
28
+ * ClientCutText into the graphical seat. Return true once the host accepted
29
+ * the text. Without a host authority the viewer leaves paste untouched rather
30
+ * than claiming success for an unreliable display-server clipboard heuristic.
31
+ */
32
+ onPasteText?: ((text: string) => boolean) | undefined;
33
+ /** OS behind the RFB seat. Used only to translate the host's primary shortcut
34
+ * (Cmd on macOS, Ctrl elsewhere) to the target's primary modifier. */
35
+ targetPlatform?: "linux" | "macos" | "windows" | null | undefined;
36
+ /**
37
+ * @deprecated Desktop acknowledgment is automatic. Retained as an ignored
38
+ * compatibility prop so existing embedders keep compiling.
28
39
  */
29
40
  renderConsentGate?: ((onAccept: () => void, shared: boolean) => ReactNode) | undefined;
30
- /** Called when the default consent gate's accept button is pressed. */
31
- onAcknowledge?: (() => void) | undefined;
32
41
  /**
33
- * Whether the host has the viewer attach engaged (i.e. the user has opted into
34
- * watching the parent's `watchDesktop`/`attachDesktop`). Drives the
35
- * cold-state behaviour: when watching, a cold-but-warmable lease AUTO-WARMS
36
- * (and re-warms when the box drains) instead of dead-ending. When omitted we
37
- * infer it from a recorded consent (the default gate's accept), so the
38
- * component still self-heals after the first acknowledgment.
42
+ * Called once when the viewer mounts. Hosts use this to engage the desktop
43
+ * holder immediately when the Desktop tab opens.
44
+ */
45
+ onActivate?: (() => void) | undefined;
46
+ /**
47
+ * Called automatically when the server requires acknowledgment of the
48
+ * un-redacted (and possibly shared) pixel plane. The viewer shows its ordinary
49
+ * opening state while this completes; no click-through gate is rendered.
50
+ */
51
+ onAcknowledge?: (() => void | Promise<void>) | undefined;
52
+ /**
53
+ * Whether the host has the viewer attach engaged. Drives the cold-state
54
+ * behaviour: when watching, a cold-but-warmable lease AUTO-WARMS (and re-warms
55
+ * when the box drains) instead of dead-ending. Mounting the viewer counts as
56
+ * watching when this is omitted.
39
57
  */
40
58
  watching?: boolean | undefined;
41
59
  /**
@@ -43,8 +61,7 @@ export type DesktopViewerProps = {
43
61
  * already been recorded — only the box drained). The host wires this to
44
62
  * "engage the viewer attach + re-negotiate". Called automatically when a
45
63
  * watched desktop is found cold-but-warmable, and behind the manual retry on
46
- * the warming notice. Distinct from `onAcknowledge`, which is the FIRST,
47
- * consent-bearing warm.
64
+ * the warming notice. Distinct from the automatic acknowledgment request.
48
65
  */
49
66
  onWarm?: (() => void) | undefined;
50
67
  /** Shown when transport is null (headless backend / degraded / disabled). */
@@ -77,9 +94,20 @@ export type DesktopViewerProps = {
77
94
  * reason).
78
95
  *
79
96
  * Warming: a cold-but-warmable lease (`reason: "lease_cold"`) is NOT a dead end.
80
- * When the user is watching (consented), the viewer asks the host to (re)warm
81
- * the box (`onWarm`) and shows a "Warming…" spinner; if the box later drains to
82
- * cold it re-warms. Genuinely-unavailable surfaces (headless/policy/os/backend)
83
- * keep a clear, static unavailable notice.
97
+ * When the viewer is mounted, it asks the host to engage the desktop and records
98
+ * any required acknowledgment automatically. A cold-but-warmable box then
99
+ * (re)warms through `onWarm`; if it later drains to cold it re-warms.
100
+ * Genuinely-unavailable surfaces (headless/policy/os/backend) keep a clear,
101
+ * static unavailable notice.
84
102
  */
85
- export declare function DesktopViewer({ capability, interactive, showControlToggle, scaleViewport, rfbFactory, webSocketFactory, renderConsentGate, onAcknowledge, watching, onWarm, renderUnavailable, renderWarming, renderViewerCap, viewerCapReached, connectTimeoutMs, className, }: DesktopViewerProps): import("react/jsx-runtime").JSX.Element;
103
+ export declare function DesktopViewer({ capability, interactive, showControlToggle, scaleViewport, rfbFactory, webSocketProtocols, webSocketFactory, onPasteText, targetPlatform, onActivate, onAcknowledge, watching, onWarm, renderUnavailable, renderWarming, renderViewerCap, viewerCapReached, connectTimeoutMs, className, }: DesktopViewerProps): import("react").JSX.Element;
104
+ type RfbKeyEvent = {
105
+ keysym: number;
106
+ code: string;
107
+ down: boolean;
108
+ };
109
+ /** Translate one host-primary chord into deterministic RFB events for the
110
+ * target OS. noVNC otherwise treats a Mac Command key as remote Alt, which
111
+ * makes ordinary Cmd+A/Z shortcuts silently wrong on Linux sandboxes. */
112
+ export declare function desktopPrimaryShortcut(event: Pick<ReactKeyboardEvent<HTMLDivElement>, "altKey" | "ctrlKey" | "key" | "metaKey" | "shiftKey" | "code">, hostPlatform: InteractionHostPlatform, targetPlatform: "linux" | "macos" | "windows"): RfbKeyEvent[] | "clipboard" | null;
113
+ export {};
@@ -35,4 +35,4 @@ export type DiffViewProps = {
35
35
  * (Shiki-highlighted, unified/split) with a plain-text fallback for a host
36
36
  * without `@pierre/diffs`. Removed next major.
37
37
  */
38
- export declare function DiffView({ diff, fallback, layout, themeType, isRepo, emptyState, className, }: DiffViewProps): import("react/jsx-runtime").JSX.Element;
38
+ export declare function DiffView({ diff, fallback, layout, themeType, isRepo, emptyState, className, }: DiffViewProps): import("react").JSX.Element;
@@ -30,4 +30,4 @@ export type EnrollmentConsentProps = {
30
30
  * The danger framing is deliberate (§18 hardening: whole-machine = loud consent),
31
31
  * never buried. Renders review / approving / approved / denied / error phases.
32
32
  */
33
- export declare function EnrollmentConsent({ userCode, machine, phase, onApprove, onDeny, errorMessage, className, }: EnrollmentConsentProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function EnrollmentConsent({ userCode, machine, phase, onApprove, onDeny, errorMessage, className, }: EnrollmentConsentProps): import("react").JSX.Element;
@@ -24,4 +24,4 @@ export type EnrollmentDeviceFlowProps = {
24
24
  * pending → authorized/denied/expired progression with a connection pill. This is
25
25
  * the FIRST step of the IA flow (device-flow → Machines list → attach/swap).
26
26
  */
27
- export declare function EnrollmentDeviceFlow({ userCode, verificationUri, verificationUriComplete, installCommand, phase, expiresInSeconds, onCopyCode, onCopyInstall, onOpenVerification, className, }: EnrollmentDeviceFlowProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function EnrollmentDeviceFlow({ userCode, verificationUri, verificationUriComplete, installCommand, phase, expiresInSeconds, onCopyCode, onCopyInstall, onOpenVerification, className, }: EnrollmentDeviceFlowProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- import type { FileTreeNode, UseSandboxFilesResult } from "../hooks/use-sandbox-files";
2
+ import type { FileTreeNode, UseSandboxFilesResult } from "../hooks/use-sandbox-files.js";
3
3
  export type FileBrowserProps = {
4
4
  /** From `useSandboxFiles(...)`. */
5
5
  result: UseSandboxFilesResult;
@@ -44,4 +44,4 @@ export type FileBrowserProps = {
44
44
  * `renderNode` is still honoured as the Pierre-swap escape hatch for the row
45
45
  * chrome; the manager scaffolding (toolbar, dnd, menu, inline inputs) wraps it.
46
46
  */
47
- export declare function FileBrowser({ result, fallback, onSelectFile, selectedPath, renderNode, emptyState, editable, confirmDelete, className, }: FileBrowserProps): import("react/jsx-runtime").JSX.Element;
47
+ export declare function FileBrowser({ result, fallback, onSelectFile, selectedPath, renderNode, emptyState, editable, confirmDelete, className, }: FileBrowserProps): import("react").JSX.Element;
@@ -15,4 +15,4 @@ export declare function sessionDisplayTitle(session: Session): string;
15
15
  * recency — dense but calm. Running sessions carry a breathing status dot
16
16
  * and a faint accent edge so the live ones read at a glance.
17
17
  */
18
- export declare function FleetTile({ session, title, subtitle, onOpen, className }: FleetTileProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function FleetTile({ session, title, subtitle, onOpen, className }: FleetTileProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type { GeneratedVideoReceipt } from "@opengeni/sdk";
2
+ import type { VideoArtifactPlaybackLoader } from "../timeline/index.js";
3
+ export type GeneratedVideoPlayerProps = {
4
+ receipt: GeneratedVideoReceipt;
5
+ loadPlaybackSource: VideoArtifactPlaybackLoader;
6
+ className?: string | undefined;
7
+ label?: string | undefined;
8
+ };
9
+ /** Native, Range-based playback. Video bytes never pass through React or the SDK heap. */
10
+ export declare function GeneratedVideoPlayer({ receipt, loadPlaybackSource, className, label, }: GeneratedVideoPlayerProps): import("react").JSX.Element;
@@ -50,7 +50,7 @@ export type HumanInputFormProps = {
50
50
  * options, sticky ask/submit chrome. Hosts can replace title/description or
51
51
  * use `useHumanInputRequests` headlessly.
52
52
  */
53
- export declare function HumanInputForm({ request, onSubmit, submitting, error, title, description, progressLabel, submitLabel, skipLabel, messages: messageOverrides, autoFocus, defaultCollapsed, className, }: HumanInputFormProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function HumanInputForm({ request, onSubmit, submitting, error, title, description, progressLabel, submitLabel, skipLabel, messages: messageOverrides, autoFocus, defaultCollapsed, className, }: HumanInputFormProps): import("react").JSX.Element;
54
54
  export declare function answersFromDrafts(questions: HumanInputQuestion[], drafts: Record<string, HumanInputAnswerDraft>, messageOverrides?: Partial<HumanInputFormMessages>): {
55
55
  answers: HumanInputAnswer[];
56
56
  errors: Record<string, string>;
@@ -1,5 +1,5 @@
1
1
  import type { SessionHumanInputRequest, SubmitHumanInputResponseRequest } from "@opengeni/sdk";
2
- import { type HumanInputFormMessages } from "./human-input-form";
2
+ import { type HumanInputFormMessages } from "./human-input-form.js";
3
3
  export type HumanInputSurfaceProps = {
4
4
  requests: SessionHumanInputRequest[];
5
5
  onSubmit: (requestId: string, response: SubmitHumanInputResponseRequest) => void | Promise<void>;
@@ -16,4 +16,4 @@ export type HumanInputSurfaceProps = {
16
16
  * settles the active request and the next remaining set advances automatically
17
17
  * when the authoritative pending list updates.
18
18
  */
19
- export declare function HumanInputSurface({ requests, onSubmit, respondingRequestId, error, messages, className, autoFocus, }: HumanInputSurfaceProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export declare function HumanInputSurface({ requests, onSubmit, respondingRequestId, error, messages, className, autoFocus, }: HumanInputSurfaceProps): import("react").JSX.Element | null;
@@ -0,0 +1,11 @@
1
+ import type { InteractionIntervention } from "@opengeni/sdk/interaction";
2
+ export type InteractionInterventionBannerProps = {
3
+ interventions: InteractionIntervention[];
4
+ activeTargetId?: string | null | undefined;
5
+ mutating?: boolean | undefined;
6
+ className?: string | undefined;
7
+ onOpen?: ((intervention: InteractionIntervention) => void) | undefined;
8
+ onResolve: (intervention: InteractionIntervention, outcome: "completed" | "dismissed") => void;
9
+ };
10
+ /** Compact durable human-action prompt shared by Browser and Computer viewers. */
11
+ export declare function InteractionInterventionBanner({ interventions, activeTargetId, mutating, className, onOpen, onResolve, }: InteractionInterventionBannerProps): import("react").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ export { BrowserViewer } from "./browser-viewer.js";
2
+ export { ComputerViewer } from "./computer-viewer.js";
@@ -1,4 +1,4 @@
1
- import type { MachineView, MetricSample } from "../types/machines";
1
+ import type { MachineView, MetricSample } from "../types/machines.js";
2
2
  export type MachineCardProps = {
3
3
  machine: MachineView;
4
4
  /** Attach/swap the session's active sandbox to this machine. */
@@ -18,4 +18,4 @@ export type MachineCardProps = {
18
18
  * freshness, and attach/swap. The whole card opens the telemetry detail when
19
19
  * `onOpenDetail` is wired. The session's active sandbox carries an accent edge.
20
20
  */
21
- export declare function MachineCard({ machine, onAttach, attaching, series, onOpenDetail, now, className, }: MachineCardProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function MachineCard({ machine, onAttach, attaching, series, onOpenDetail, now, className, }: MachineCardProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { MachineKind, MachineState } from "../types/machines";
1
+ import type { MachineKind, MachineState } from "../types/machines.js";
2
2
  export type MachineDockBarProps = {
3
3
  /** The active machine's display name. */
4
4
  name: string;
@@ -16,7 +16,7 @@ export type MachineDockBarProps = {
16
16
  * render IDENTICALLY regardless of backend — this bar is the only backend-aware
17
17
  * chrome (the dock-parity contract: selfhosted == Modal for the surfaces).
18
18
  */
19
- export declare function MachineDockBar({ name, kind, state, className }: MachineDockBarProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function MachineDockBar({ name, kind, state, className }: MachineDockBarProps): import("react").JSX.Element;
20
20
  export type SharedMachineDisclosureProps = {
21
21
  sharedSessionCount: number;
22
22
  /** Compact (inline strip) vs full (a notice block). */
@@ -28,4 +28,4 @@ export type SharedMachineDisclosureProps = {
28
28
  * dock (and reused on the desktop take-control gate) so the user knows others are
29
29
  * driving the same whole-machine lease. Render when `sharedSessionCount > 1`.
30
30
  */
31
- export declare function SharedMachineDisclosure({ sharedSessionCount, density, className, }: SharedMachineDisclosureProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function SharedMachineDisclosure({ sharedSessionCount, density, className, }: SharedMachineDisclosureProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { MachineState, MetricSample } from "../types/machines";
1
+ import type { MachineState, MetricSample } from "../types/machines.js";
2
2
  export type MachineHealthPillProps = {
3
3
  state: MachineState;
4
4
  metrics: MetricSample | null;
@@ -6,4 +6,4 @@ export type MachineHealthPillProps = {
6
6
  size?: "sm" | "md" | undefined;
7
7
  className?: string | undefined;
8
8
  };
9
- export declare function MachineHealthPill({ state, metrics, now, size, className, }: MachineHealthPillProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function MachineHealthPill({ state, metrics, now, size, className, }: MachineHealthPillProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { MachineInputMember } from "../timeline/types";
1
+ import type { MachineInputMember } from "../timeline/types.js";
2
2
  export declare const MACHINE_INPUT_META: Record<MachineInputMember["kind"], string>;
3
3
  /**
4
4
  * Collapsed landmark label for a coalesced machine-input batch.
@@ -1,4 +1,4 @@
1
- import type { MetricSample } from "../types/machines";
1
+ import type { MetricSample } from "../types/machines.js";
2
2
  export type MachineMetricsProps = {
3
3
  /** The latest metric sample, or null when the machine hasn't reported yet. */
4
4
  metrics: MetricSample | null;
@@ -12,4 +12,4 @@ export type MachineMetricsProps = {
12
12
  * null the panel shows a quiet "no samples yet" placeholder (offline / just
13
13
  * enrolled). GPU rows only render when `gpuUtilPct` is non-null.
14
14
  */
15
- export declare function MachineMetrics({ metrics, density, className }: MachineMetricsProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function MachineMetrics({ metrics, density, className }: MachineMetricsProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { type ConnectionStatus, type MachineState } from "../types/machines";
1
+ import { type ConnectionStatus, type MachineState } from "../types/machines.js";
2
2
  export type ConnectionStatusMeta = {
3
3
  label: string;
4
4
  dotClassName: string;
@@ -30,13 +30,13 @@ export type ConnectionStatusPillProps = {
30
30
  * the Machines dashboard, the dock header, and the session timeline. Reconnecting
31
31
  * breathes (the resiliency-as-headline blip), online/offline hold still.
32
32
  */
33
- export declare function ConnectionStatusPill({ status, label, size, className, }: ConnectionStatusPillProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function ConnectionStatusPill({ status, label, size, className, }: ConnectionStatusPillProps): import("react").JSX.Element;
34
34
  export type ConnectionDotProps = {
35
35
  status: ConnectionStatus;
36
36
  className?: string | undefined;
37
37
  };
38
38
  /** Just the dot — for dense rows, the dock header, and timeline notices. */
39
- export declare function ConnectionDot({ status, className }: ConnectionDotProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function ConnectionDot({ status, className }: ConnectionDotProps): import("react").JSX.Element;
40
40
  export type MachineStatusPillProps = {
41
41
  /** The machine's full state — drives the connection pill + any state badge. */
42
42
  state: MachineState;
@@ -51,4 +51,4 @@ export type MachineStatusPillProps = {
51
51
  * dashboard row, the dock header, and the timeline all reuse so the status
52
52
  * language is identical everywhere.
53
53
  */
54
- export declare function MachineStatusPill({ state, sharedSessionCount, size, className, }: MachineStatusPillProps): import("react/jsx-runtime").JSX.Element;
54
+ export declare function MachineStatusPill({ state, sharedSessionCount, size, className, }: MachineStatusPillProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { MachineState, MetricSample } from "../../types/machines";
1
+ import type { MachineState, MetricSample } from "../../types/machines.js";
2
2
  export type HealthLevel = "healthy" | "degraded" | "critical" | "offline" | "unknown";
3
3
  export type HealthVerdict = {
4
4
  level: HealthLevel;
@@ -1,5 +1,5 @@
1
- import type { MachineView, MetricSample } from "../../types/machines";
2
- import { type MetricWindow } from "./series";
1
+ import type { MachineView, MetricSample } from "../../types/machines.js";
2
+ import { type MetricWindow } from "./series.js";
3
3
  export type MachineDetailProps = {
4
4
  machine: MachineView;
5
5
  /** Downsampled history for the active window (from `fetchSeries`). */
@@ -13,4 +13,4 @@ export type MachineDetailProps = {
13
13
  now?: number | undefined;
14
14
  className?: string | undefined;
15
15
  };
16
- export declare function MachineDetail({ machine, series, window, onWindowChange, loadingSeries, onBack, onRemove, now, className, }: MachineDetailProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function MachineDetail({ machine, series, window, onWindowChange, loadingSeries, onBack, onRemove, now, className, }: MachineDetailProps): import("react").JSX.Element;
@@ -21,4 +21,4 @@ export type MetricHistoryChartProps = {
21
21
  rangeLabel?: string | undefined;
22
22
  className?: string | undefined;
23
23
  };
24
- export declare function MetricHistoryChart({ points, yMax, yMin, format, unit, color, thresholds, height, rangeLabel, className, }: MetricHistoryChartProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare function MetricHistoryChart({ points, yMax, yMin, format, unit, color, thresholds, height, rangeLabel, className, }: MetricHistoryChartProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { SeriesPoint } from "./metric-history-chart";
1
+ import type { SeriesPoint } from "./metric-history-chart.js";
2
2
  export type MetricSparklineProps = {
3
3
  points: SeriesPoint[];
4
4
  color?: string;
@@ -6,4 +6,4 @@ export type MetricSparklineProps = {
6
6
  height?: number;
7
7
  className?: string | undefined;
8
8
  };
9
- export declare function MetricSparkline({ points, color, yMax, height, className, }: MetricSparklineProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function MetricSparkline({ points, color, yMax, height, className, }: MetricSparklineProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { MetricSample } from "../../types/machines";
2
- import type { SeriesPoint } from "./metric-history-chart";
1
+ import type { MetricSample } from "../../types/machines.js";
2
+ import type { SeriesPoint } from "./metric-history-chart.js";
3
3
  export type MetricWindow = "15m" | "1h" | "6h" | "24h";
4
4
  export declare const METRIC_WINDOWS: MetricWindow[];
5
5
  export declare const WINDOW_LABEL: Record<MetricWindow, string>;
@@ -1,4 +1,4 @@
1
- import type { MachineView, MetricSample } from "../types/machines";
1
+ import type { MachineView, MetricSample } from "../types/machines.js";
2
2
  export type MachinesDashboardProps = {
3
3
  machines: MachineView[];
4
4
  /** The session's active sandbox id (drives the per-card "Active" marker). */
@@ -27,4 +27,4 @@ export type MachinesDashboardProps = {
27
27
  * machines → connect CTA), a load error, and the populated grid. The component
28
28
  * is purely presentational — feed it `MachinesResponse` data via `useMachines`.
29
29
  */
30
- export declare function MachinesDashboard({ machines, activeSandboxId, loading, error, onAttach, attachingSandboxId, seriesByMachine, onOpenDetail, now, onEnroll, onRefresh, className, }: MachinesDashboardProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function MachinesDashboard({ machines, activeSandboxId, loading, error, onAttach, attachingSandboxId, seriesByMachine, onOpenDetail, now, onEnroll, onRefresh, className, }: MachinesDashboardProps): import("react").JSX.Element;
@@ -25,7 +25,7 @@ export type MarkdownProps = {
25
25
  */
26
26
  streaming?: boolean | undefined;
27
27
  };
28
- declare function MarkdownImpl({ children, className, streaming }: MarkdownProps): import("react/jsx-runtime").JSX.Element;
28
+ declare function MarkdownImpl({ children, className, streaming }: MarkdownProps): import("react").JSX.Element;
29
29
  /** Memoized so streaming re-renders of the parent don't re-parse settled bodies. */
30
30
  export declare const Markdown: import("react").MemoExoticComponent<typeof MarkdownImpl>;
31
31
  export {};
@@ -1,6 +1,6 @@
1
- import type { SessionEvent, SessionStatus } from "@opengeni/sdk";
1
+ import type { DraftTimelineAnnotation, SessionEvent, SessionStatus } from "@opengeni/sdk";
2
2
  import { type ReactNode } from "react";
3
- import { type AgentMessageItem, type AuthNeededItem, type TimelineGroup, type TimelineItem, type RetainedScreenshotLoader, type ToolRegistry, type TurnSummaryOptions, type UserMessageItem } from "../timeline";
3
+ import { type AgentMessageItem, type AuthNeededItem, type TimelineGroup, type TimelineItem, type RetainedArtifactLoader, type RetainedScreenshotLoader, type VideoArtifactPlaybackLoader, type ToolRegistry, type TurnSummaryOptions, type UserMessageItem } from "../timeline/index.js";
4
4
  export type MessageTimelineProps = {
5
5
  /** Raw session events (projected internally) … */
6
6
  events?: SessionEvent[] | undefined;
@@ -51,6 +51,10 @@ export type MessageTimelineProps = {
51
51
  toolRegistry?: ToolRegistry | undefined;
52
52
  /** Resolve opaque retained screenshot receipts through the authenticated host SDK. */
53
53
  loadRetainedScreenshot?: RetainedScreenshotLoader | undefined;
54
+ /** Resolve permanent generated-image receipts through the authenticated host SDK. */
55
+ loadRetainedArtifact?: RetainedArtifactLoader | undefined;
56
+ /** Mint short-lived native playback sources for retained generated videos. */
57
+ loadVideoArtifactPlayback?: VideoArtifactPlaybackLoader | undefined;
54
58
  /**
55
59
  * Display name of the session's active compute target (Connected Machine or
56
60
  * cloud sandbox). When set, exec_command collapsed previews prefix `on {label}`.
@@ -60,6 +64,8 @@ export type MessageTimelineProps = {
60
64
  turnSummary?: TurnSummaryOptions | undefined;
61
65
  /** Follow new events when pinned to the bottom. Defaults to true. */
62
66
  autoFollow?: boolean | undefined;
67
+ /** Capture a same-row text selection into the host's canonical composer draft. */
68
+ onAnnotate?: ((annotation: DraftTimelineAnnotation) => void) | undefined;
63
69
  /** Older durable history exists above the current window (see useSessionEvents). */
64
70
  hasOlder?: boolean | undefined;
65
71
  /** An older window is being fetched; shows the quiet top shimmer. */
@@ -92,7 +98,7 @@ export type MessageTimelineProps = {
92
98
  * cards, goal markers, and status transitions. Owns stick-to-bottom scrolling
93
99
  * with a "jump to latest" affordance when the reader scrolls back.
94
100
  */
95
- export declare function MessageTimeline({ events, items, status: _status, renderMessageText, onOpenSession, onMemoryClick, onReconnect, shouldRenderAuthNeeded, resolveProviderLogo, toolRegistry, loadRetainedScreenshot, computeLabel, turnSummary, autoFollow, hasOlder, loadingOlder, onLoadOlder, onJumpToStart, loadingOldest, hasNewer, loadingNewer, onLoadNewer, onJumpToLatest, trailingState, emptyState, className, }: MessageTimelineProps): import("react/jsx-runtime").JSX.Element;
101
+ export declare function MessageTimeline({ events, items, status: _status, renderMessageText, onOpenSession, onMemoryClick, onReconnect, shouldRenderAuthNeeded, resolveProviderLogo, toolRegistry, loadRetainedScreenshot, loadRetainedArtifact, loadVideoArtifactPlayback, computeLabel, turnSummary, autoFollow, onAnnotate, hasOlder, loadingOlder, onLoadOlder, onJumpToStart, loadingOldest, hasNewer, loadingNewer, onLoadNewer, onJumpToLatest, trailingState, emptyState, className, }: MessageTimelineProps): import("react").JSX.Element;
96
102
  /**
97
103
  * Settled turns lift the final agent answer out as a sibling group. Include it
98
104
  * in "Copy turn" when present so the chip copies the full assistant reply.
@@ -104,10 +110,11 @@ export declare function trailingAgentTextAfterTurn(group: TimelineGroup, next: T
104
110
  * landmark, notice). Exported so the component demo draws the EXACT same rows as
105
111
  * the live app — no forked bubble/goal markup.
106
112
  */
107
- export declare function TimelineRow({ item, renderMessageText, onReconnect, resolveProviderLogo, onOpenSession, }: {
113
+ export declare function TimelineRow({ item, renderMessageText, onReconnect, resolveProviderLogo, onOpenSession, loadVideoArtifactPlayback, }: {
108
114
  item: TimelineItem;
109
115
  renderMessageText?: ((text: string, item: AgentMessageItem | UserMessageItem) => ReactNode) | undefined;
110
116
  onReconnect?: ((item: AuthNeededItem) => void | Promise<void>) | undefined;
111
117
  resolveProviderLogo?: ((providerDomain: string) => string | null | undefined) | undefined;
112
118
  onOpenSession?: ((sessionId: string) => void) | undefined;
113
- }): import("react/jsx-runtime").JSX.Element | null;
119
+ loadVideoArtifactPlayback?: VideoArtifactPlaybackLoader | undefined;
120
+ }): import("react").JSX.Element | null;
@@ -1,5 +1,5 @@
1
1
  import type { ClientModel } from "@opengeni/sdk";
2
- import { type PickerModelRow } from "../model-policy";
2
+ import { type PickerModelRow } from "../model-policy.js";
3
3
  export type ModelPickerProps = {
4
4
  /** Legacy host config models grouped by provider. */
5
5
  models?: ClientModel[] | undefined;
@@ -16,4 +16,4 @@ export type ModelPickerProps = {
16
16
  */
17
17
  codexOnly?: boolean | undefined;
18
18
  };
19
- export declare function ModelPicker({ models, rows, value, onChange, disabled, className, label, codexOnly, }: ModelPickerProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export declare function ModelPicker({ models, rows, value, onChange, disabled, className, label, codexOnly, }: ModelPickerProps): import("react").JSX.Element | null;