@opengeni/react 0.48.0 → 0.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/README.md +90 -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 +170 -0
  13. package/dist/artifacts.js.map +1 -0
  14. package/dist/chunk-6BBWWOOU.js +82 -0
  15. package/dist/chunk-6BBWWOOU.js.map +1 -0
  16. package/dist/{chunk-FWXGSNXT.js → chunk-724BW4TW.js} +585 -34
  17. package/dist/chunk-724BW4TW.js.map +1 -0
  18. package/dist/chunk-7I2KB3OK.js +3895 -0
  19. package/dist/chunk-7I2KB3OK.js.map +1 -0
  20. package/dist/chunk-7WCLAEFV.js +2828 -0
  21. package/dist/chunk-7WCLAEFV.js.map +1 -0
  22. package/dist/{chunk-I4MPFDRP.js → chunk-FWS3KC3Z.js} +3 -3
  23. package/dist/{chunk-EKZH6IDG.js → chunk-HDBG7XGO.js} +62 -1
  24. package/dist/chunk-HDBG7XGO.js.map +1 -0
  25. package/dist/chunk-HUIKIDM5.js +2148 -0
  26. package/dist/chunk-HUIKIDM5.js.map +1 -0
  27. package/dist/{chunk-XCNTXWBB.js → chunk-JAGDUCZQ.js} +854 -340
  28. package/dist/chunk-JAGDUCZQ.js.map +1 -0
  29. package/dist/{chunk-LHLYWG5R.js → chunk-JR3QFY6B.js} +413 -37
  30. package/dist/chunk-JR3QFY6B.js.map +1 -0
  31. package/dist/chunk-JVYQRRC4.js +53 -0
  32. package/dist/chunk-JVYQRRC4.js.map +1 -0
  33. package/dist/chunk-KCGXPP5V.js +157 -0
  34. package/dist/chunk-KCGXPP5V.js.map +1 -0
  35. package/dist/chunk-PEI6RANI.js +3234 -0
  36. package/dist/chunk-PEI6RANI.js.map +1 -0
  37. package/dist/{chunk-NJ7M2B6Z.js → chunk-ROIRTM37.js} +18 -10
  38. package/dist/{chunk-NJ7M2B6Z.js.map → chunk-ROIRTM37.js.map} +1 -1
  39. package/dist/{chunk-O4VXOBGF.js → chunk-WSK7G5LE.js} +70 -2
  40. package/dist/chunk-WSK7G5LE.js.map +1 -0
  41. package/dist/{chunk-OL6QVXGF.js → chunk-X4S56Y2H.js} +27 -7
  42. package/dist/{chunk-OL6QVXGF.js.map → chunk-X4S56Y2H.js.map} +1 -1
  43. package/dist/client.d.ts +7 -1
  44. package/dist/clipboard.d.ts +1 -0
  45. package/dist/clipboard.js +7 -0
  46. package/dist/clipboard.js.map +1 -0
  47. package/dist/commands/index.d.ts +3 -3
  48. package/dist/commands/registry.d.ts +1 -1
  49. package/dist/commands/types.d.ts +1 -1
  50. package/dist/components/approval-surface.d.ts +2 -2
  51. package/dist/components/artifacts/artifact-surface.d.ts +18 -0
  52. package/dist/components/artifacts/document-editor.d.ts +172 -0
  53. package/dist/components/artifacts/editable-artifact-ui.d.ts +13 -0
  54. package/dist/components/artifacts/editable-artifact-workbench.d.ts +49 -0
  55. package/dist/components/artifacts/editable-document.d.ts +24 -0
  56. package/dist/components/artifacts/editable-presentation.d.ts +24 -0
  57. package/dist/components/artifacts/editable-spreadsheet.d.ts +32 -0
  58. package/dist/components/artifacts/index.d.ts +8 -0
  59. package/dist/components/artifacts/presentation-editor.d.ts +297 -0
  60. package/dist/components/artifacts/spreadsheet-canvas.d.ts +120 -0
  61. package/dist/components/artifacts/spreadsheet-grid.d.ts +113 -0
  62. package/dist/components/browser-viewer.d.ts +29 -0
  63. package/dist/components/chat-composer.d.ts +8 -8
  64. package/dist/components/code-editor.d.ts +25 -3
  65. package/dist/components/command-palette.d.ts +2 -2
  66. package/dist/components/composer-transcription-control.d.ts +2 -2
  67. package/dist/components/composer.d.ts +17 -17
  68. package/dist/components/computer-viewer.d.ts +23 -0
  69. package/dist/components/copy-button.d.ts +2 -2
  70. package/dist/components/desktop-viewer.d.ts +25 -21
  71. package/dist/components/diff-view.d.ts +1 -1
  72. package/dist/components/enrollment-consent.d.ts +1 -1
  73. package/dist/components/enrollment-device-flow.d.ts +1 -1
  74. package/dist/components/file-browser.d.ts +2 -2
  75. package/dist/components/fleet-tile.d.ts +1 -1
  76. package/dist/components/generated-video-player.d.ts +10 -0
  77. package/dist/components/human-input-form.d.ts +1 -1
  78. package/dist/components/human-input-surface.d.ts +2 -2
  79. package/dist/components/interactive-workbench-viewers.d.ts +2 -0
  80. package/dist/components/machine-card.d.ts +2 -2
  81. package/dist/components/machine-dock-bar.d.ts +3 -3
  82. package/dist/components/machine-health-pill.d.ts +2 -2
  83. package/dist/components/machine-input-display.d.ts +1 -1
  84. package/dist/components/machine-metrics.d.ts +2 -2
  85. package/dist/components/machine-status-pill.d.ts +4 -4
  86. package/dist/components/machines/health.d.ts +1 -1
  87. package/dist/components/machines/machine-detail.d.ts +3 -3
  88. package/dist/components/machines/metric-history-chart.d.ts +1 -1
  89. package/dist/components/machines/metric-sparkline.d.ts +2 -2
  90. package/dist/components/machines/series.d.ts +2 -2
  91. package/dist/components/machines-dashboard.d.ts +2 -2
  92. package/dist/components/markdown.d.ts +1 -1
  93. package/dist/components/message-timeline.d.ts +12 -5
  94. package/dist/components/model-picker.d.ts +2 -2
  95. package/dist/components/model-policy-picker.d.ts +7 -7
  96. package/dist/components/pierre-diff.d.ts +1 -1
  97. package/dist/components/pierre-file.d.ts +1 -1
  98. package/dist/components/queue-draft-policy.d.ts +1 -1
  99. package/dist/components/queue-surface-implementation.d.ts +3 -3
  100. package/dist/components/queue-surface-state.d.ts +4 -4
  101. package/dist/components/queue-surface.d.ts +5 -5
  102. package/dist/components/sandbox-files.d.ts +3 -3
  103. package/dist/components/sandbox-terminal.d.ts +21 -4
  104. package/dist/components/sandbox-workspace.d.ts +25 -9
  105. package/dist/components/session-chrome.d.ts +4 -4
  106. package/dist/components/session-status.d.ts +2 -2
  107. package/dist/components/timeline-annotation-selection.d.ts +9 -0
  108. package/dist/components/timeline-annotations-dialog.d.ts +16 -0
  109. package/dist/components/timeline-annotations.d.ts +13 -0
  110. package/dist/components/tooltip.d.ts +4 -4
  111. package/dist/components/user-message-body.d.ts +2 -2
  112. package/dist/components/workbench-changes.d.ts +2 -2
  113. package/dist/components/workspace-dock.d.ts +1 -1
  114. package/dist/composer.d.ts +11 -11
  115. package/dist/composer.js +5 -5
  116. package/dist/hooks/internal.d.ts +1 -1
  117. package/dist/hooks/use-attached-browsers.d.ts +21 -0
  118. package/dist/hooks/use-available-models.d.ts +2 -2
  119. package/dist/hooks/use-billing-usage.d.ts +1 -1
  120. package/dist/hooks/use-browser-frame-stream.d.ts +28 -0
  121. package/dist/hooks/use-browser-identities.d.ts +26 -0
  122. package/dist/hooks/use-browser-session.d.ts +28 -0
  123. package/dist/hooks/use-browser-sessions.d.ts +32 -0
  124. package/dist/hooks/use-codex-accounts.d.ts +2 -2
  125. package/dist/hooks/use-composer.d.ts +36 -9
  126. package/dist/hooks/use-computer-frame-stream.d.ts +24 -0
  127. package/dist/hooks/use-computer-session.d.ts +28 -0
  128. package/dist/hooks/use-computer-sessions.d.ts +28 -0
  129. package/dist/hooks/use-desktop-stream.d.ts +1 -1
  130. package/dist/hooks/use-environments.d.ts +1 -1
  131. package/dist/hooks/use-file-attachments.d.ts +1 -1
  132. package/dist/hooks/use-goal.d.ts +2 -2
  133. package/dist/hooks/use-human-input.d.ts +2 -2
  134. package/dist/hooks/use-last-started-turn-policy.d.ts +2 -2
  135. package/dist/hooks/use-machine-chip.d.ts +2 -2
  136. package/dist/hooks/use-machines.d.ts +4 -4
  137. package/dist/hooks/use-packs.d.ts +7 -2
  138. package/dist/hooks/use-rigs.d.ts +1 -1
  139. package/dist/hooks/use-sandbox-files.d.ts +6 -4
  140. package/dist/hooks/use-sandbox-git.d.ts +6 -5
  141. package/dist/hooks/use-sandbox-terminal.d.ts +1 -1
  142. package/dist/hooks/use-scheduled-tasks.d.ts +1 -1
  143. package/dist/hooks/use-session-capabilities.d.ts +5 -4
  144. package/dist/hooks/use-session-control.d.ts +1 -1
  145. package/dist/hooks/use-session-events.d.ts +2 -2
  146. package/dist/hooks/use-session-lineage.d.ts +1 -1
  147. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  148. package/dist/hooks/use-session.d.ts +2 -2
  149. package/dist/hooks/use-slash-commands.d.ts +1 -1
  150. package/dist/hooks/use-terminal-stream.d.ts +8 -2
  151. package/dist/hooks/use-turn-queue.d.ts +2 -2
  152. package/dist/hooks/use-video-artifact-playback.d.ts +9 -0
  153. package/dist/hooks/use-voice-input.d.ts +1 -1
  154. package/dist/hooks/use-workspace-capture.d.ts +1 -1
  155. package/dist/hooks/use-workspace-edit.d.ts +1 -1
  156. package/dist/hooks/use-workspace-sessions.d.ts +1 -1
  157. package/dist/hooks/use-workspaces.d.ts +1 -1
  158. package/dist/index.d.ts +158 -155
  159. package/dist/index.js +906 -462
  160. package/dist/index.js.map +1 -1
  161. package/dist/interaction.d.ts +23 -0
  162. package/dist/interaction.js +36 -0
  163. package/dist/interaction.js.map +1 -0
  164. package/dist/interactive-workbench-viewers-KHNOHWQE.js +13 -0
  165. package/dist/interactive-workbench-viewers-KHNOHWQE.js.map +1 -0
  166. package/dist/lib/relay-wire.d.ts +4 -0
  167. package/dist/lib/sandbox-liveness.d.ts +9 -0
  168. package/dist/lib/terminal-capability.d.ts +5 -0
  169. package/dist/lib/xterm-theme.d.ts +1 -1
  170. package/dist/machines.d.ts +30 -30
  171. package/dist/machines.js +3 -3
  172. package/dist/provider.d.ts +4 -4
  173. package/dist/{queue-surface-implementation-U5JFG7HT.js → queue-surface-implementation-2KVJTYXH.js} +100 -48
  174. package/dist/queue-surface-implementation-2KVJTYXH.js.map +1 -0
  175. package/dist/realtime/dropdown-menu.d.ts +8 -8
  176. package/dist/realtime/realtime-control.d.ts +6 -6
  177. package/dist/realtime.d.ts +4 -4
  178. package/dist/realtime.js +3 -3
  179. package/dist/session-context.d.ts +19 -1
  180. package/dist/session-ui.d.ts +14 -14
  181. package/dist/session-ui.js +5 -4
  182. package/dist/session.d.ts +28 -28
  183. package/dist/session.js +5 -5
  184. package/dist/timeline/activity-rail.d.ts +5 -3
  185. package/dist/timeline/disclosure-context.d.ts +1 -1
  186. package/dist/timeline/fleet-decision-projection.d.ts +1 -1
  187. package/dist/timeline/fleet-decision-row.d.ts +3 -3
  188. package/dist/timeline/index.d.ts +19 -19
  189. package/dist/timeline/parsers.d.ts +4 -1
  190. package/dist/timeline/projection.d.ts +3 -3
  191. package/dist/timeline/registry.d.ts +8 -2
  192. package/dist/timeline/screenshot-lightbox.d.ts +2 -2
  193. package/dist/timeline/shared.d.ts +21 -10
  194. package/dist/timeline/tool-diff.d.ts +2 -2
  195. package/dist/timeline/tool-renderers.d.ts +1 -1
  196. package/dist/timeline/turn-summary.d.ts +3 -3
  197. package/dist/timeline/types.d.ts +39 -3
  198. package/dist/timeline-annotation-selection-3L7LHGG2.js +187 -0
  199. package/dist/timeline-annotation-selection-3L7LHGG2.js.map +1 -0
  200. package/dist/timeline-annotations-dialog-U7EVLR75.js +196 -0
  201. package/dist/timeline-annotations-dialog-U7EVLR75.js.map +1 -0
  202. package/package.json +36 -7
  203. package/src/artifacts-document.ts +31 -0
  204. package/src/artifacts-presentation.ts +36 -0
  205. package/src/artifacts-spreadsheet.ts +21 -0
  206. package/src/artifacts.ts +86 -0
  207. package/src/client.ts +87 -1
  208. package/src/clipboard.ts +2 -0
  209. package/src/components/artifacts/artifact-surface.tsx +93 -0
  210. package/src/components/artifacts/document-editor.tsx +2255 -0
  211. package/src/components/artifacts/editable-artifact-ui.tsx +89 -0
  212. package/src/components/artifacts/editable-artifact-workbench.tsx +203 -0
  213. package/src/components/artifacts/editable-document.tsx +657 -0
  214. package/src/components/artifacts/editable-presentation.tsx +1020 -0
  215. package/src/components/artifacts/editable-spreadsheet.tsx +733 -0
  216. package/src/components/artifacts/index.ts +99 -0
  217. package/src/components/artifacts/presentation-editor.tsx +3148 -0
  218. package/src/components/artifacts/spreadsheet-canvas.ts +799 -0
  219. package/src/components/artifacts/spreadsheet-grid.tsx +2129 -0
  220. package/src/components/browser-viewer.tsx +1592 -0
  221. package/src/components/chat-composer.tsx +13 -0
  222. package/src/components/code-editor.tsx +89 -30
  223. package/src/components/composer-transcription-control.tsx +10 -6
  224. package/src/components/computer-viewer.tsx +1139 -0
  225. package/src/components/desktop-viewer.tsx +101 -73
  226. package/src/components/generated-video-player.tsx +89 -0
  227. package/src/components/interactive-workbench-viewers.ts +2 -0
  228. package/src/components/machine-input-display.ts +3 -0
  229. package/src/components/message-timeline.tsx +289 -32
  230. package/src/components/queue-surface-implementation.tsx +116 -60
  231. package/src/components/sandbox-files.tsx +2 -2
  232. package/src/components/sandbox-terminal.tsx +106 -41
  233. package/src/components/sandbox-workspace.tsx +215 -87
  234. package/src/components/session-chrome.tsx +53 -13
  235. package/src/components/timeline-annotation-selection.tsx +221 -0
  236. package/src/components/timeline-annotations-dialog.tsx +213 -0
  237. package/src/components/timeline-annotations.tsx +84 -0
  238. package/src/components/workbench-changes.tsx +188 -31
  239. package/src/hooks/use-attached-browsers.ts +152 -0
  240. package/src/hooks/use-browser-frame-stream.ts +316 -0
  241. package/src/hooks/use-browser-identities.ts +225 -0
  242. package/src/hooks/use-browser-session.ts +476 -0
  243. package/src/hooks/use-browser-sessions.ts +281 -0
  244. package/src/hooks/use-composer.ts +769 -24
  245. package/src/hooks/use-computer-frame-stream.ts +311 -0
  246. package/src/hooks/use-computer-session.ts +442 -0
  247. package/src/hooks/use-computer-sessions.ts +245 -0
  248. package/src/hooks/use-machine-chip.ts +5 -3
  249. package/src/hooks/use-machines.ts +33 -3
  250. package/src/hooks/use-packs.ts +51 -0
  251. package/src/hooks/use-sandbox-files.ts +98 -55
  252. package/src/hooks/use-sandbox-git.ts +93 -38
  253. package/src/hooks/use-sandbox-terminal.ts +3 -2
  254. package/src/hooks/use-session-capabilities.ts +59 -46
  255. package/src/hooks/use-terminal-stream.ts +102 -23
  256. package/src/hooks/use-video-artifact-playback.ts +28 -0
  257. package/src/hooks/use-workspace-edit.ts +2 -1
  258. package/src/index.ts +10 -0
  259. package/src/interaction.ts +71 -0
  260. package/src/lib/relay-wire.ts +4 -0
  261. package/src/lib/sandbox-liveness.ts +11 -0
  262. package/src/lib/terminal-capability.ts +10 -0
  263. package/src/session-context.ts +90 -0
  264. package/src/timeline/activity-rail.tsx +19 -3
  265. package/src/timeline/index.ts +3 -0
  266. package/src/timeline/parsers.ts +14 -1
  267. package/src/timeline/projection.ts +211 -14
  268. package/src/timeline/registry.ts +13 -1
  269. package/src/timeline/screenshot-lightbox.tsx +19 -9
  270. package/src/timeline/shared.tsx +56 -8
  271. package/src/timeline/tool-renderers.tsx +303 -50
  272. package/src/timeline/types.ts +55 -3
  273. package/styles/compiled.css +248 -15
  274. package/styles/index.css +15 -0
  275. package/styles/responsive.css +13 -1
  276. package/dist/chunk-EKZH6IDG.js.map +0 -1
  277. package/dist/chunk-FWXGSNXT.js.map +0 -1
  278. package/dist/chunk-LHLYWG5R.js.map +0 -1
  279. package/dist/chunk-O4VXOBGF.js.map +0 -1
  280. package/dist/chunk-XCNTXWBB.js.map +0 -1
  281. package/dist/fleet-decision-projection-SLNZMS42.js +0 -241
  282. package/dist/fleet-decision-projection-SLNZMS42.js.map +0 -1
  283. package/dist/queue-surface-implementation-U5JFG7HT.js.map +0 -1
  284. /package/dist/{chunk-I4MPFDRP.js.map → chunk-FWS3KC3Z.js.map} +0 -0
@@ -1,12 +1,12 @@
1
- import type { UseTurnQueueResult } from "../hooks/use-turn-queue";
1
+ import type { UseTurnQueueResult } from "../hooks/use-turn-queue.js";
2
2
  type QueueStateProps = {
3
3
  queue: UseTurnQueueResult;
4
4
  };
5
- export declare function EmptyQueueStateSurface({ queue }: QueueStateProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function EmptyQueueStateSurface({ queue }: QueueStateProps): import("react").JSX.Element;
6
6
  export declare function QueueStoppingStatus({ queue, dividerAfter, }: QueueStateProps & {
7
7
  dividerAfter?: boolean;
8
- }): import("react/jsx-runtime").JSX.Element;
8
+ }): import("react").JSX.Element;
9
9
  export declare function QueueErrorAlert({ queue, dividerBefore, }: QueueStateProps & {
10
10
  dividerBefore?: boolean;
11
- }): import("react/jsx-runtime").JSX.Element;
11
+ }): import("react").JSX.Element;
12
12
  export {};
@@ -1,12 +1,12 @@
1
1
  import { type ComponentType } from "react";
2
- import type { QueueSurfaceProps } from "./queue-surface-implementation";
3
- export { requestQueueDraftEdit } from "./queue-draft-policy";
4
- export type { QueueSurfaceProps } from "./queue-surface-implementation";
2
+ import type { QueueSurfaceProps } from "./queue-surface-implementation.js";
3
+ export { requestQueueDraftEdit } from "./queue-draft-policy.js";
4
+ export type { QueueSurfaceProps } from "./queue-surface-implementation.js";
5
5
  type QueueSurfaceModule = {
6
6
  QueueSurface: ComponentType<QueueSurfaceProps>;
7
7
  };
8
8
  type QueueSurfaceLoader = () => Promise<QueueSurfaceModule>;
9
9
  /** The sole pending-input surface: compact above Goal, Agents, and composer. */
10
- export declare const QueueSurface: (props: QueueSurfaceProps) => import("react/jsx-runtime").JSX.Element | null;
10
+ export declare const QueueSurface: (props: QueueSurfaceProps) => import("react").JSX.Element | null;
11
11
  /** @internal Deterministic Suspense seam for the QueueSurface regression suite. */
12
- export declare function createQueueSurfaceForTest(loadImplementation: QueueSurfaceLoader): (props: QueueSurfaceProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ export declare function createQueueSurfaceForTest(loadImplementation: QueueSurfaceLoader): (props: QueueSurfaceProps) => import("react").JSX.Element | null;
@@ -1,5 +1,5 @@
1
- import { type UseSandboxFilesResult } from "../hooks/use-sandbox-files";
2
- import type { UseSandboxGitResult } from "../hooks/use-sandbox-git";
1
+ import { type UseSandboxFilesResult } from "../hooks/use-sandbox-files.js";
2
+ import type { UseSandboxGitResult } from "../hooks/use-sandbox-git.js";
3
3
  export type SandboxFilesProps = {
4
4
  /** From `useSandboxFiles(...)`. */
5
5
  files: UseSandboxFilesResult;
@@ -46,4 +46,4 @@ export type SandboxFilesProps = {
46
46
  * surface deliberately does NOT replicate the changed-files list, and does not
47
47
  * diff here — one job per tab). The agent commits; the human reviews.
48
48
  */
49
- export declare function SandboxFiles({ files, git, fileSystemAvailable, usePierre, editable, onEditIntent, requestedPath, requestedPathRequestId, requestedPathReady, workspaceResting, workspaceWaking, liveWorkspaceReady, onWakeWorkspace, themeType, className, }: SandboxFilesProps): import("react/jsx-runtime").JSX.Element;
49
+ export declare function SandboxFiles({ files, git, fileSystemAvailable, usePierre, editable, onEditIntent, requestedPath, requestedPathRequestId, requestedPathReady, workspaceResting, workspaceWaking, liveWorkspaceReady, onWakeWorkspace, themeType, className, }: SandboxFilesProps): import("react").JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import type { TerminalCapability } from "@opengeni/sdk";
2
2
  import { type ReactNode } from "react";
3
- import type { UseSandboxTerminalResult } from "../hooks/use-sandbox-terminal";
4
- import { type RendererTier } from "../lib/xterm-renderer";
3
+ import { type TerminalStreamStatus } from "../hooks/use-terminal-stream.js";
4
+ import type { UseSandboxTerminalResult } from "../hooks/use-sandbox-terminal.js";
5
+ import { type RendererTier } from "../lib/xterm-renderer.js";
5
6
  /**
6
7
  * A COMPLETE xterm `ITheme` (subset by intent, but every field xterm colors a
7
8
  * cell with is present so it never falls back to its stock VGA palette). Built
@@ -55,7 +56,7 @@ export type SandboxTerminalProps = {
55
56
  fontSize?: number | undefined;
56
57
  /**
57
58
  * Lease liveness (`cold` | `warming` | `warm` | `draining`). Drives the
58
- * boot-in-terminal status lines: once the user has focused the terminal and
59
+ * boot-in-terminal status lines: once the user has engaged the terminal and
59
60
  * the box is not yet warm, a styled "● waking machine — Ns…" line is rendered
60
61
  * INSIDE xterm (no overlay/spinner) until the live PTY connects.
61
62
  */
@@ -107,6 +108,22 @@ type XtermLike = {
107
108
  fontSize?: number;
108
109
  };
109
110
  };
111
+ export type TerminalSurfaceState = "loading" | "connecting" | "error" | "waking" | "output-only" | "interactive";
112
+ /**
113
+ * Stable semantic state for hosts and browser acceptance. The xterm helper
114
+ * textarea exists before the live PTY socket is ready, so its presence alone
115
+ * must never be treated as proof that keystrokes can reach the sandbox.
116
+ */
117
+ export declare function terminalSurfaceState(input: {
118
+ ready: boolean;
119
+ acceptsInput: boolean;
120
+ inputPending: boolean;
121
+ ptyStatus: TerminalStreamStatus;
122
+ booting: boolean;
123
+ }): TerminalSurfaceState;
124
+ export declare function subscribeTerminalInput(term: Pick<XtermLike, "onData"> | null, sink: ((data: string) => void) | null, enabled: boolean): {
125
+ dispose: () => void;
126
+ } | null;
110
127
  /** Clear the transient wake line and put the first live prompt at cell 1,1.
111
128
  * `Terminal.clear()` removes scrollback but deliberately preserves the cursor,
112
129
  * which lets the first PTY frame append to the old wake message. */
@@ -148,5 +165,5 @@ declare global {
148
165
  * Resizes are tracked with a `ResizeObserver` on the container (not just
149
166
  * `window.resize`) so dragging the dock handle refits the grid.
150
167
  */
151
- export declare function SandboxTerminal({ result, terminalCapability, theme, fontFamily, fontSize, liveness, readOnly, placeholder, showHeader, shell, onActivate, className, }: SandboxTerminalProps): import("react/jsx-runtime").JSX.Element;
168
+ export declare function SandboxTerminal({ result, terminalCapability, theme, fontFamily, fontSize, liveness, readOnly, placeholder, showHeader, shell, onActivate, className, }: SandboxTerminalProps): import("react").JSX.Element;
152
169
  export {};
@@ -1,9 +1,11 @@
1
1
  import { type ReactNode } from "react";
2
2
  import type { SessionEvent } from "@opengeni/sdk";
3
- import { type ClientOverride } from "../provider";
4
- import { type MachineChip } from "../hooks/use-machine-chip";
5
- import type { MachineView } from "../types/machines";
6
- import { type WorkspaceDockProps, type WorkspaceTab } from "./workspace-dock";
3
+ import { type ClientOverride } from "../provider.js";
4
+ import type { BrowserFrameWebSocketFactory } from "../hooks/use-browser-frame-stream.js";
5
+ import type { ComputerFrameWebSocketFactory } from "../hooks/use-computer-frame-stream.js";
6
+ import { type MachineChip } from "../hooks/use-machine-chip.js";
7
+ import type { MachineView } from "../types/machines.js";
8
+ import { type WorkspaceDockProps, type WorkspaceTab } from "./workspace-dock.js";
7
9
  /** A host-routed notification (replaces the app-only `sonner` toast coupling). */
8
10
  export type WorkspaceNotification = {
9
11
  kind: "error" | "info";
@@ -13,13 +15,14 @@ export type WorkspaceNotification = {
13
15
  export declare const WORKBENCH_TAB_CHANGES = "changes";
14
16
  export declare const WORKBENCH_TAB_FILES = "files";
15
17
  export declare const WORKBENCH_TAB_TERMINAL = "terminal";
18
+ export declare const WORKBENCH_TAB_BROWSER = "browser";
16
19
  export declare const WORKBENCH_TAB_DESKTOP = "desktop";
17
20
  /**
18
21
  * The built-in workbench surfaces in their canonical display order. Hosts can
19
22
  * pass a subset through `surfaces`; omission preserves the complete standalone
20
23
  * workbench.
21
24
  */
22
- export declare const WORKBENCH_SURFACES: readonly ["changes", "files", "terminal", "desktop"];
25
+ export declare const WORKBENCH_SURFACES: readonly ["changes", "files", "terminal", "browser", "desktop"];
23
26
  export type SandboxWorkspaceSurface = (typeof WORKBENCH_SURFACES)[number];
24
27
  /**
25
28
  * Decide a workspace tab from an already-local event log: the newest
@@ -49,7 +52,7 @@ export type UseSandboxWorkspaceTabsOptions = ClientOverride & {
49
52
  /** Live event log (usually `useSessionEvents().events`). */
50
53
  events: SessionEvent[];
51
54
  /**
52
- * Built-in surfaces this host wants to expose. Omit for all four. A disabled
55
+ * Built-in surfaces this host wants to expose. Omit for all five. A disabled
53
56
  * surface is behaviorally dormant: its data hooks, warm intents, stream
54
57
  * attachment, and navigation callbacks are not activated.
55
58
  */
@@ -62,6 +65,10 @@ export type UseSandboxWorkspaceTabsOptions = ClientOverride & {
62
65
  /** Host-routed notifications (mutation errors, desktop-consent failures). The
63
66
  * package never imports a toast library — the host decides how to surface. */
64
67
  onNotify?: ((notification: WorkspaceNotification) => void) | undefined;
68
+ /** Alternate frame transport for non-browser runtimes and deterministic tests. */
69
+ browserWebSocketFactory?: BrowserFrameWebSocketFactory | undefined;
70
+ /** Alternate Computer frame transport for non-browser runtimes and deterministic tests. */
71
+ computerWebSocketFactory?: ComputerFrameWebSocketFactory | undefined;
65
72
  /** File requested by a Changes guard. The Files surface defers the read until
66
73
  * the sandbox is live, then reveals this path. */
67
74
  requestedFilePath?: string | null | undefined;
@@ -70,9 +77,13 @@ export type UseSandboxWorkspaceTabsOptions = ClientOverride & {
70
77
  requestedFileRequestId?: string | number | null | undefined;
71
78
  /** Route a guarded diff into the host's Files tab. */
72
79
  onOpenFile?: ((path: string) => void) | undefined;
80
+ /** Navigate the host dock to one exact linked ComputerSession. */
81
+ onOpenComputerSession?: ((computerSessionId: string) => void) | undefined;
82
+ requestedComputerSessionId?: string | null | undefined;
83
+ requestedComputerRequestId?: string | number | null | undefined;
73
84
  };
74
85
  export type UseSandboxWorkspaceTabsResult = {
75
- /** Changes | Files | Terminal | Desktop (capability-gated where noted). */
86
+ /** Changes | Files | Terminal | Browser | Desktop (capability-gated where noted). */
76
87
  tabs: WorkspaceTab[];
77
88
  /** The source-driven default tab: Changes when the first authoritative capture
78
89
  * or live Git result has changes, else Files (a host `initialTab` overrides).
@@ -85,7 +96,8 @@ export type UseSandboxWorkspaceTabsResult = {
85
96
  /**
86
97
  * Build the workbench tabs + the machine-chip model for one session. This is the
87
98
  * dock "brain": capability negotiation, capture-backed cold reads, prewarm
88
- * flags, desktop consent, and the xterm theme observer — all package-local.
99
+ * flags, automatic desktop acknowledgment, and the xterm theme observer — all
100
+ * package-local.
89
101
  */
90
102
  export declare function useSandboxWorkspaceTabs(options: UseSandboxWorkspaceTabsOptions): UseSandboxWorkspaceTabsResult;
91
103
  export type SandboxWorkspaceProps = ClientOverride & {
@@ -96,7 +108,7 @@ export type SandboxWorkspaceProps = ClientOverride & {
96
108
  primary: ReactNode;
97
109
  /**
98
110
  * Built-in surfaces this host wants to expose. Omit for Changes, Files,
99
- * Terminal, and Desktop. Disabled surfaces remain behaviorally dormant.
111
+ * Terminal, Browser, and Desktop. Disabled surfaces remain behaviorally dormant.
100
112
  */
101
113
  surfaces?: readonly SandboxWorkspaceSurface[] | undefined;
102
114
  /** Host tabs injected BEFORE the workbench tabs (e.g. a "Run" landing tab). */
@@ -108,6 +120,10 @@ export type SandboxWorkspaceProps = ClientOverride & {
108
120
  initialTab?: string | undefined;
109
121
  /** Host-routed notifications (no toast dependency in the package). */
110
122
  onNotify?: ((notification: WorkspaceNotification) => void) | undefined;
123
+ /** Alternate Browser frame transport for non-browser runtimes and deterministic tests. */
124
+ browserWebSocketFactory?: BrowserFrameWebSocketFactory | undefined;
125
+ /** Alternate Computer frame transport for non-browser runtimes and deterministic tests. */
126
+ computerWebSocketFactory?: ComputerFrameWebSocketFactory | undefined;
111
127
  /** Controlled collapsed state for hosts with their own dock toggle. */
112
128
  collapsed?: boolean | undefined;
113
129
  onCollapsedChange?: ((collapsed: boolean) => void) | undefined;
@@ -33,9 +33,9 @@
33
33
  */
34
34
  import type { SessionGoal } from "@opengeni/sdk";
35
35
  import { type ReactNode } from "react";
36
- import type { ComposerState } from "../hooks/use-composer";
37
- import type { UseGoalResult } from "../hooks/use-goal";
38
- import type { UseTurnQueueResult } from "../hooks/use-turn-queue";
36
+ import type { ComposerState } from "../hooks/use-composer.js";
37
+ import type { UseGoalResult } from "../hooks/use-goal.js";
38
+ import type { UseTurnQueueResult } from "../hooks/use-turn-queue.js";
39
39
  export type SessionChromeSignalId = "incoming" | "steering" | "queue" | "goal" | "agents";
40
40
  export type SessionChromeSignalTone = "neutral" | "accent" | "waiting" | "running";
41
41
  export type SessionChromeAgentsSignal = {
@@ -67,5 +67,5 @@ export type SessionChromeProps = {
67
67
  type GoalPillState = "pursuing" | "scheduled" | "blocked" | "held" | "paused" | "invariant_broken" | "completed";
68
68
  /** Select pill state from the goal's authoritative continuation projection. */
69
69
  export declare function sessionChromeGoalPillState(goalStatus: "active" | "paused" | "completed", continuation: SessionGoal["continuation"] | null | undefined): GoalPillState;
70
- export declare function SessionChrome({ queue, composer, goal, agentsPanel, agentsSignal, onDismissIncoming, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react/jsx-runtime").JSX.Element | null;
70
+ export declare function SessionChrome({ queue, composer, goal, agentsPanel, agentsSignal, onDismissIncoming, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react").JSX.Element | null;
71
71
  export {};
@@ -16,10 +16,10 @@ export type SessionStatusProps = {
16
16
  className?: string | undefined;
17
17
  };
18
18
  /** Status badge with a breathing dot for live states. */
19
- export declare function SessionStatus({ status, label, size, className }: SessionStatusProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function SessionStatus({ status, label, size, className }: SessionStatusProps): import("react").JSX.Element;
20
20
  export type StatusDotProps = {
21
21
  status: SessionStatusValue;
22
22
  className?: string | undefined;
23
23
  };
24
24
  /** Just the dot — for dense rows and tiles. */
25
- export declare function StatusDot({ status, className }: StatusDotProps): import("react/jsx-runtime").JSX.Element;
25
+ export declare function StatusDot({ status, className }: StatusDotProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { DraftTimelineAnnotation } from "@opengeni/sdk";
2
+ import { type RefObject } from "react";
3
+ import type { TimelineAnnotationSourceDescriptor } from "../timeline/index.js";
4
+ export declare function TimelineAnnotationSelection({ rootRef, sources, onAnnotate, }: {
5
+ rootRef: RefObject<HTMLElement | null>;
6
+ sources: ReadonlyMap<string, TimelineAnnotationSourceDescriptor>;
7
+ onAnnotate?: ((annotation: DraftTimelineAnnotation) => void) | undefined;
8
+ }): import("react").ReactPortal | null;
9
+ export default TimelineAnnotationSelection;
@@ -0,0 +1,16 @@
1
+ import type { TimelineAnnotationSource } from "@opengeni/sdk";
2
+ import { type RefObject } from "react";
3
+ import type { TimelineAnnotationLike } from "./timeline-annotations.js";
4
+ export declare function TimelineAnnotationsDialog({ annotations, editable, focusAnnotationId, onFocusConsumed, onUpdate, onRemove, onRevealSource, triggerRef, countLabel, onDismiss, }: {
5
+ annotations: readonly TimelineAnnotationLike[];
6
+ editable: boolean;
7
+ focusAnnotationId?: string | null | undefined;
8
+ onFocusConsumed?: (() => void) | undefined;
9
+ onUpdate?: ((id: string, note: string) => void) | undefined;
10
+ onRemove?: ((id: string) => void) | undefined;
11
+ onRevealSource?: ((source: TimelineAnnotationSource) => boolean) | undefined;
12
+ triggerRef: RefObject<HTMLButtonElement | null>;
13
+ countLabel: string;
14
+ onDismiss: (restoreFocus: boolean) => void;
15
+ }): import("react").ReactPortal | null;
16
+ export default TimelineAnnotationsDialog;
@@ -0,0 +1,13 @@
1
+ import type { DraftTimelineAnnotation, TimelineAnnotation, TimelineAnnotationSource } from "@opengeni/sdk";
2
+ export type TimelineAnnotationLike = DraftTimelineAnnotation | TimelineAnnotation;
3
+ export declare function TimelineAnnotationsChip({ annotations, editable, focusAnnotationId, onFocusConsumed, onUpdate, onRemove, onRevealSource, className, }: {
4
+ annotations: readonly TimelineAnnotationLike[];
5
+ editable?: boolean | undefined;
6
+ focusAnnotationId?: string | null | undefined;
7
+ onFocusConsumed?: (() => void) | undefined;
8
+ onUpdate?: ((id: string, note: string) => void) | undefined;
9
+ onRemove?: ((id: string) => void) | undefined;
10
+ onRevealSource?: ((source: TimelineAnnotationSource) => boolean) | undefined;
11
+ className?: string | undefined;
12
+ }): import("react").JSX.Element | null;
13
+ export default TimelineAnnotationsChip;
@@ -9,8 +9,8 @@
9
9
  */
10
10
  import { Tooltip as TooltipPrimitive } from "radix-ui";
11
11
  import { type ComponentProps } from "react";
12
- declare function TooltipProvider({ delayDuration, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
13
- declare function Tooltip({ children, ...props }: ComponentProps<typeof TooltipPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
14
- declare function TooltipTrigger({ asChild, ...props }: ComponentProps<typeof TooltipPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
15
- declare function TooltipContent({ className, sideOffset, children, style, ...props }: ComponentProps<typeof TooltipPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
12
+ declare function TooltipProvider({ delayDuration, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>): import("react").JSX.Element;
13
+ declare function Tooltip({ children, ...props }: ComponentProps<typeof TooltipPrimitive.Root>): import("react").JSX.Element;
14
+ declare function TooltipTrigger({ asChild, ...props }: ComponentProps<typeof TooltipPrimitive.Trigger>): import("react").JSX.Element;
15
+ declare function TooltipContent({ className, sideOffset, children, style, ...props }: ComponentProps<typeof TooltipPrimitive.Content>): import("react").JSX.Element;
16
16
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -7,7 +7,7 @@ export type UserMessageDisclosureContextValue = {
7
7
  export declare function UserMessageDisclosureProvider({ value, children, }: {
8
8
  value: UserMessageDisclosureContextValue;
9
9
  children: ReactNode;
10
- }): import("react/jsx-runtime").JSX.Element;
10
+ }): import("react").JSX.Element;
11
11
  /**
12
12
  * Deterministic first-paint fallback for runtimes without layout measurement.
13
13
  * Real browsers replace this estimate with the rendered-height decision in the
@@ -32,5 +32,5 @@ export type UserMessageBodyProps = {
32
32
  * remembers expansion per durable message id and preserves the reader's scroll
33
33
  * anchor when height changes.
34
34
  */
35
- export declare function UserMessageBody({ messageId, text, children, className }: UserMessageBodyProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function UserMessageBody({ messageId, text, children, className }: UserMessageBodyProps): import("react").JSX.Element;
36
36
  export {};
@@ -1,4 +1,4 @@
1
- import type { SandboxGitFileDiff } from "../hooks/use-sandbox-git";
1
+ import type { SandboxGitFileDiff } from "../hooks/use-sandbox-git.js";
2
2
  export type WorkbenchChangesProps = {
3
3
  /** The changed files (`useSandboxGit().diff`). Assumed non-empty by the caller. */
4
4
  diff: SandboxGitFileDiff[];
@@ -30,5 +30,5 @@ export declare function buildRail(files: SandboxGitFileDiff[]): {
30
30
  rows: RailRow[];
31
31
  grouped: boolean;
32
32
  };
33
- export declare function WorkbenchChanges({ diff, source, capturedAt, captureRevision, themeType, onOpenFile, className, }: WorkbenchChangesProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function WorkbenchChanges({ diff, source, capturedAt, captureRevision, themeType, onOpenFile, className, }: WorkbenchChangesProps): import("react").JSX.Element;
34
34
  export {};
@@ -34,4 +34,4 @@ export type WorkspaceDockProps = {
34
34
  maxSize?: number | undefined;
35
35
  className?: string | undefined;
36
36
  };
37
- export declare function WorkspaceDock({ primary, tabs, activeTab, onActiveTabChange, collapsed: collapsedProp, onCollapsedChange, showCollapseControl, headerAccessory, mobileLeadingControl, autoSaveId, defaultSize, minSize, maxSize, className, }: WorkspaceDockProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function WorkspaceDock({ primary, tabs, activeTab, onActiveTabChange, collapsed: collapsedProp, onCollapsedChange, showCollapseControl, headerAccessory, mobileLeadingControl, autoSaveId, defaultSize, minSize, maxSize, className, }: WorkspaceDockProps): import("react").JSX.Element;
@@ -3,14 +3,14 @@
3
3
  *
4
4
  * `import * as Composer from "@opengeni/react/composer"`.
5
5
  */
6
- export { OPEN_WORKSTREAM_CONTROL_EVENT } from "./workstream-control-event";
7
- export { BillingClassMark, ModelPolicyPicker, ModelPolicyPickerMenu, PickerAnimatedPage, PickerBackHeader, PickerNavRow, defaultModelPolicyPickerMessages, } from "./components/model-policy-picker";
8
- export type { ModelPolicyPickerMessages, ModelPolicyPickerProps, } from "./components/model-policy-picker";
9
- export { Actions, AttachButton, Attachments, CommandPalette, Confirmation, Controls, Footer, Frame, Help, Hint, Input, ModelPicker, PauseButton, PausedState, RestoredResources, Root, SendButton, Status, Surface, defaultChatComposerMessages, useChatComposer, useChatComposerController, } from "./components/composer";
10
- export type { ChatComposerController, ChatComposerContextValue, ChatComposerMessages, ComposerActionsProps, ComposerAttachButtonProps, ComposerCommandPaletteProps, ComposerControlLinks, ComposerControlState, ComposerControlsProps, ComposerDelivery, ComposerDraftState, ComposerFooterProps, ComposerFrameProps, ComposerHintProps, ComposerInputProps, ComposerModelPickerProps, ComposerPauseButtonProps, ComposerRootProps, ComposerSendButtonProps, ComposerSubmitBlocker, ComposerSubmitMode, ComposerSurfaceProps, ResponsiveBasis, UseChatComposerControllerOptions, } from "./components/composer";
11
- export { ComposerTranscriptionControl } from "./components/composer-transcription-control";
12
- export type { ComposerTranscriptionControlProps, ComposerTranscriptionMessages, } from "./components/composer-transcription-control";
13
- export { VOICE_RECORDING_CLIENT_MAX_DURATION_SECONDS, VOICE_RECORDING_OWNER_HEARTBEAT_MILLISECONDS, VOICE_RECORDING_OWNER_STALE_MILLISECONDS, VOICE_RECORDING_TIMESLICE_MILLISECONDS, useVoiceInput, } from "./hooks/use-voice-input";
14
- export type { UseVoiceInputOptions, UseVoiceInputResult, VoiceInputStatus, } from "./hooks/use-voice-input";
15
- export { IndexedDbVoiceRecordingStore, VoiceRecordingChunkConflictError, VoiceRecordingChunkSequenceError, VoiceRecordingNotFoundError, VoiceRecordingOwnedError, VoiceRecordingStorageUnavailableError, createVoiceRecordingManifest, planVoiceRecordingChunkCommit, prepareVoiceRecordingChunk, } from "./voice-recording-store";
16
- export type { PersistVoiceRecordingChunkInput, PersistVoiceRecordingChunkResult, VoiceRecordingCaptureState, VoiceRecordingChunk, VoiceRecordingChunkUploadState, VoiceRecordingFinalizationState, VoiceRecordingHandoffMode, VoiceRecordingManifest, VoiceRecordingRecoveryMode, VoiceRecordingStore, VoiceRecordingTranscriptionState, VoiceRecordingUploadState, } from "./voice-recording-store";
6
+ export { OPEN_WORKSTREAM_CONTROL_EVENT } from "./workstream-control-event.js";
7
+ export { BillingClassMark, ModelPolicyPicker, ModelPolicyPickerMenu, PickerAnimatedPage, PickerBackHeader, PickerNavRow, defaultModelPolicyPickerMessages, } from "./components/model-policy-picker.js";
8
+ export type { ModelPolicyPickerMessages, ModelPolicyPickerProps, } from "./components/model-policy-picker.js";
9
+ export { Actions, AttachButton, Attachments, CommandPalette, Confirmation, Controls, Footer, Frame, Help, Hint, Input, ModelPicker, PauseButton, PausedState, RestoredResources, Root, SendButton, Status, Surface, defaultChatComposerMessages, useChatComposer, useChatComposerController, } from "./components/composer.js";
10
+ export type { ChatComposerController, ChatComposerContextValue, ChatComposerMessages, ComposerActionsProps, ComposerAttachButtonProps, ComposerCommandPaletteProps, ComposerControlLinks, ComposerControlState, ComposerControlsProps, ComposerDelivery, ComposerDraftState, ComposerFooterProps, ComposerFrameProps, ComposerHintProps, ComposerInputProps, ComposerModelPickerProps, ComposerPauseButtonProps, ComposerRootProps, ComposerSendButtonProps, ComposerSubmitBlocker, ComposerSubmitMode, ComposerSurfaceProps, ResponsiveBasis, UseChatComposerControllerOptions, } from "./components/composer.js";
11
+ export { ComposerTranscriptionControl } from "./components/composer-transcription-control.js";
12
+ export type { ComposerTranscriptionControlProps, ComposerTranscriptionMessages, } from "./components/composer-transcription-control.js";
13
+ export { VOICE_RECORDING_CLIENT_MAX_DURATION_SECONDS, VOICE_RECORDING_OWNER_HEARTBEAT_MILLISECONDS, VOICE_RECORDING_OWNER_STALE_MILLISECONDS, VOICE_RECORDING_TIMESLICE_MILLISECONDS, useVoiceInput, } from "./hooks/use-voice-input.js";
14
+ export type { UseVoiceInputOptions, UseVoiceInputResult, VoiceInputStatus, } from "./hooks/use-voice-input.js";
15
+ export { IndexedDbVoiceRecordingStore, VoiceRecordingChunkConflictError, VoiceRecordingChunkSequenceError, VoiceRecordingNotFoundError, VoiceRecordingOwnedError, VoiceRecordingStorageUnavailableError, createVoiceRecordingManifest, planVoiceRecordingChunkCommit, prepareVoiceRecordingChunk, } from "./voice-recording-store.js";
16
+ export type { PersistVoiceRecordingChunkInput, PersistVoiceRecordingChunkResult, VoiceRecordingCaptureState, VoiceRecordingChunk, VoiceRecordingChunkUploadState, VoiceRecordingFinalizationState, VoiceRecordingHandoffMode, VoiceRecordingManifest, VoiceRecordingRecoveryMode, VoiceRecordingStore, VoiceRecordingTranscriptionState, VoiceRecordingUploadState, } from "./voice-recording-store.js";
package/dist/composer.js CHANGED
@@ -37,9 +37,7 @@ import {
37
37
  useChatComposer,
38
38
  useChatComposerController,
39
39
  useVoiceInput
40
- } from "./chunk-NJ7M2B6Z.js";
41
- import "./chunk-FWXGSNXT.js";
42
- import "./chunk-KZ73RL76.js";
40
+ } from "./chunk-ROIRTM37.js";
43
41
  import {
44
42
  BillingClassMark,
45
43
  ModelPolicyPicker,
@@ -49,11 +47,13 @@ import {
49
47
  PickerNavRow,
50
48
  defaultModelPolicyPickerMessages
51
49
  } from "./chunk-WYA65Y3F.js";
52
- import "./chunk-EKZH6IDG.js";
53
50
  import "./chunk-23EJ676W.js";
54
51
  import "./chunk-FK6VG4LL.js";
55
- import "./chunk-LAKLF4PA.js";
56
52
  import "./chunk-VZTQ73XT.js";
53
+ import "./chunk-724BW4TW.js";
54
+ import "./chunk-LAKLF4PA.js";
55
+ import "./chunk-KZ73RL76.js";
56
+ import "./chunk-HDBG7XGO.js";
57
57
  import "./chunk-22KP6LR5.js";
58
58
  export {
59
59
  Actions,
@@ -1,5 +1,5 @@
1
1
  import type { SessionEvent } from "@opengeni/sdk";
2
- import type { EmbeddedSessionEventClientLike } from "../client";
2
+ import type { EmbeddedSessionEventClientLike } from "../client.js";
3
3
  /**
4
4
  * Keep live browser work active while the page is visible, then suspend it
5
5
  * after a short hidden-tab grace period. Returning to the page re-enables the
@@ -0,0 +1,21 @@
1
+ import type { AttachedBrowserDevice } from "@opengeni/sdk/interaction";
2
+ import type { EmbeddedBrowserInteractionClientLike } from "../client.js";
3
+ import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
4
+ export type UseAttachedBrowsersOptions = EmbeddedBrowserInteractionClientOverride & {
5
+ enabled?: boolean | undefined;
6
+ includeDisconnected?: boolean | undefined;
7
+ pollIntervalMs?: number | undefined;
8
+ };
9
+ export type UseAttachedBrowsersResult = {
10
+ revision: number;
11
+ devices: AttachedBrowserDevice[];
12
+ loading: boolean;
13
+ refreshing: boolean;
14
+ error: Error | null;
15
+ refresh: () => Promise<void>;
16
+ };
17
+ /** Workspace-wide inventory of Chrome profiles currently connected through an
18
+ * enrolled OpenGeni machine. BrowserSessions remain the execution authority. */
19
+ export declare function useAttachedBrowsers(options?: UseAttachedBrowsersOptions): UseAttachedBrowsersResult;
20
+ /** Exported for narrow proxy implementations and tests. */
21
+ export type AttachedBrowsersClient = EmbeddedBrowserInteractionClientLike;
@@ -1,6 +1,6 @@
1
1
  import type { WorkspaceModelCatalogModel } from "@opengeni/sdk";
2
- import { type PickerModelRow } from "../model-policy";
3
- import { type ClientOverride } from "../provider";
2
+ import { type PickerModelRow } from "../model-policy.js";
3
+ import { type ClientOverride } from "../provider.js";
4
4
  export type UseAvailableModelsOptions = Pick<ClientOverride, "client"> & {
5
5
  /** Refresh interval (ms). Off by default — the host model list rarely moves. */
6
6
  pollIntervalMs?: number | undefined;
@@ -1,5 +1,5 @@
1
1
  import type { BillingBalance, UsageEvent } from "@opengeni/sdk";
2
- import { type ClientOverride } from "../provider";
2
+ import { type ClientOverride } from "../provider.js";
3
3
  export type UseBillingUsageOptions = Pick<ClientOverride, "client"> & {
4
4
  /** Account to read. Defaults to the caller's default account server-side. */
5
5
  accountId?: string | undefined;
@@ -0,0 +1,28 @@
1
+ import { type BrowserFrame, type BrowserFrameStreamOptions, type BrowserSessionAttachment } from "@opengeni/sdk/interaction";
2
+ import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
3
+ export type BrowserFrameConnectionState = "idle" | "attaching" | "connecting" | "live" | "reconnecting" | "error";
4
+ export type BrowserFrameWebSocket = Pick<WebSocket, "binaryType" | "readyState" | "close" | "addEventListener" | "removeEventListener"> & {
5
+ send(data: ArrayBuffer): void;
6
+ };
7
+ export type BrowserFrameWebSocketFactory = (url: string, protocols: string[]) => BrowserFrameWebSocket;
8
+ export type UseBrowserFrameStreamOptions = EmbeddedBrowserInteractionClientOverride & {
9
+ browserSessionId: string | null;
10
+ targetId: string | null;
11
+ enabled?: boolean | undefined;
12
+ stream?: BrowserFrameStreamOptions | undefined;
13
+ webSocketFactory?: BrowserFrameWebSocketFactory | undefined;
14
+ };
15
+ export type UseBrowserFrameStreamResult = {
16
+ state: BrowserFrameConnectionState;
17
+ frame: BrowserFrame | null;
18
+ attachment: Pick<BrowserSessionAttachment, "browserSessionId" | "controllerGeneration" | "targetId" | "expiresAt"> | null;
19
+ error: Error | null;
20
+ reconnect: () => void;
21
+ };
22
+ /**
23
+ * Reconnecting, latest-only BrowserSession media attachment. Direct placement
24
+ * grants travel as a WebSocket subprotocol; connected-machine grants stay in the
25
+ * relay's first authenticated binary message. Neither transport puts a grant in
26
+ * a URL, event, log, or separately exposed React state.
27
+ */
28
+ export declare function useBrowserFrameStream(options: UseBrowserFrameStreamOptions): UseBrowserFrameStreamResult;
@@ -0,0 +1,26 @@
1
+ import type { BrowserIdentity, BrowserIdentityMutationResponse, BrowserRevisionListResponse, CreateBrowserIdentityRequest, PublishBrowserRevisionRequest, PublishBrowserRevisionResponse } from "@opengeni/sdk/interaction";
2
+ import type { EmbeddedBrowserInteractionClientLike } from "../client.js";
3
+ import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
4
+ export type UseBrowserIdentitiesOptions = EmbeddedBrowserInteractionClientOverride & {
5
+ enabled?: boolean | undefined;
6
+ };
7
+ export type UseBrowserIdentitiesResult = {
8
+ revision: number;
9
+ identities: BrowserIdentity[];
10
+ loading: boolean;
11
+ refreshing: boolean;
12
+ mutating: boolean;
13
+ error: Error | null;
14
+ refresh: () => Promise<void>;
15
+ create: (request: Omit<CreateBrowserIdentityRequest, "operationId"> & {
16
+ operationId?: string;
17
+ }) => Promise<BrowserIdentityMutationResponse>;
18
+ revisions: (identityId: string) => Promise<BrowserRevisionListResponse>;
19
+ publish: (browserSessionId: string, request: Omit<PublishBrowserRevisionRequest, "operationId"> & {
20
+ operationId?: string;
21
+ }) => Promise<PublishBrowserRevisionResponse>;
22
+ };
23
+ /** Workspace browser-profile library and explicit immutable-version mutations. */
24
+ export declare function useBrowserIdentities(options?: UseBrowserIdentitiesOptions): UseBrowserIdentitiesResult;
25
+ /** Exported for narrow proxy implementations and tests. */
26
+ export type BrowserIdentitiesClient = EmbeddedBrowserInteractionClientLike;
@@ -0,0 +1,28 @@
1
+ import type { BrowserAction, BrowserActionBatch, BrowserActionReceipt, BrowserDiagnosticBatch, BrowserDiagnosticsOptions, BrowserFrame, BrowserObservation, BrowserSession, BrowserTarget } from "@opengeni/sdk/interaction";
2
+ import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
3
+ export type UseBrowserSessionOptions = EmbeddedBrowserInteractionClientOverride & {
4
+ browserSessionId: string | null;
5
+ enabled?: boolean | undefined;
6
+ pollIntervalMs?: number | undefined;
7
+ };
8
+ export type UseBrowserSessionResult = {
9
+ session: BrowserSession | null;
10
+ targets: BrowserTarget[];
11
+ selectedTarget: BrowserTarget | null;
12
+ observation: BrowserObservation | null;
13
+ loading: boolean;
14
+ mutating: boolean;
15
+ error: Error | null;
16
+ refresh: () => Promise<void>;
17
+ selectTarget: (targetId: string) => Promise<BrowserTarget>;
18
+ openTarget: (url?: string) => Promise<BrowserTarget>;
19
+ closeTarget: (targetId: string) => Promise<void>;
20
+ act: (action: BrowserAction | BrowserActionBatch, operationId?: string) => Promise<BrowserActionReceipt>;
21
+ /** Dispatch input against the exact image a human saw. Stale images fail at
22
+ * the controller fence instead of targeting a newer page. */
23
+ actFromFrame: (action: BrowserAction | BrowserActionBatch, frame: BrowserFrame, operationId?: string) => Promise<BrowserActionReceipt>;
24
+ diagnostics: (options?: BrowserDiagnosticsOptions) => Promise<BrowserDiagnosticBatch>;
25
+ };
26
+ /** Selected BrowserSession control state. All human actions use the same
27
+ * generation-fenced controller operation stream as agent actions. */
28
+ export declare function useBrowserSession(options: UseBrowserSessionOptions): UseBrowserSessionResult;
@@ -0,0 +1,32 @@
1
+ import type { BrowserSession, BrowserSessionMutationResponse, CreateBrowserSessionRequest } from "@opengeni/sdk/interaction";
2
+ import type { EmbeddedBrowserInteractionClientLike } from "../client.js";
3
+ import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
4
+ export type UseBrowserSessionsOptions = EmbeddedBrowserInteractionClientOverride & {
5
+ /** Current agent/session relevance. Workspace peers remain in `sessions`. */
6
+ sessionId?: string | undefined;
7
+ enabled?: boolean | undefined;
8
+ /** Temporary invalidation path until the interaction event stream lands. */
9
+ pollIntervalMs?: number | undefined;
10
+ };
11
+ export type UseBrowserSessionsResult = {
12
+ revision: number;
13
+ sessions: BrowserSession[];
14
+ relevantSessions: BrowserSession[];
15
+ loading: boolean;
16
+ refreshing: boolean;
17
+ error: Error | null;
18
+ refresh: () => Promise<void>;
19
+ create: (request: Omit<CreateBrowserSessionRequest, "operationId"> & {
20
+ operationId?: string;
21
+ }) => Promise<BrowserSessionMutationResponse>;
22
+ suspend: (browserSessionId: string, operationId?: string) => Promise<BrowserSessionMutationResponse>;
23
+ resume: (browserSessionId: string, operationId?: string) => Promise<BrowserSessionMutationResponse>;
24
+ end: (browserSessionId: string, operationId?: string) => Promise<BrowserSessionMutationResponse>;
25
+ };
26
+ /**
27
+ * Workspace-wide BrowserSession registry. Associations rank relevance but never
28
+ * hide peer resources; no explicit share ceremony or per-view ownership exists.
29
+ */
30
+ export declare function useBrowserSessions(options?: UseBrowserSessionsOptions): UseBrowserSessionsResult;
31
+ /** Exported for narrow proxy implementations and tests. */
32
+ export type BrowserSessionsClient = EmbeddedBrowserInteractionClientLike;
@@ -1,6 +1,6 @@
1
1
  import type { CodexAccount, CodexAccountsResponse, CodexRotationSettings, SessionEvent } from "@opengeni/sdk";
2
- import { type ClientOverride } from "../provider";
3
- import { type SessionEventFeedOptions } from "./internal";
2
+ import { type ClientOverride } from "../provider.js";
3
+ import { type SessionEventFeedOptions } from "./internal.js";
4
4
  /** Events that change which Codex account a session runs on (or just ran). */
5
5
  export declare function isCodexAccountEvent(event: Pick<SessionEvent, "type">): boolean;
6
6
  /**