@opengeni/react 0.13.0 → 0.15.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 (41) hide show
  1. package/README.md +19 -13
  2. package/dist/chunk-TOJR776I.js +2280 -0
  3. package/dist/chunk-TOJR776I.js.map +1 -0
  4. package/dist/index.d.ts +314 -255
  5. package/dist/index.js +5862 -4404
  6. package/dist/index.js.map +1 -1
  7. package/dist/{machines-CnlMb7E-.d.ts → machines-BpdwuQcD.d.ts} +130 -10
  8. package/dist/machines.d.ts +1 -1
  9. package/dist/machines.js +23 -1
  10. package/package.json +5 -2
  11. package/src/client.ts +10 -1
  12. package/src/components/chat-composer.tsx +309 -57
  13. package/src/components/machine-card.tsx +81 -15
  14. package/src/components/machine-health-pill.tsx +68 -0
  15. package/src/components/machine-metrics.tsx +10 -24
  16. package/src/components/machines/health.ts +146 -0
  17. package/src/components/machines/machine-detail.tsx +220 -0
  18. package/src/components/machines/metric-history-chart.tsx +298 -0
  19. package/src/components/machines/metric-sparkline.tsx +76 -0
  20. package/src/components/machines/series.ts +113 -0
  21. package/src/components/machines-dashboard.tsx +13 -1
  22. package/src/components/queue-surface.tsx +578 -0
  23. package/src/components/sandbox-files.tsx +94 -9
  24. package/src/components/sandbox-workspace.tsx +186 -52
  25. package/src/components/session-status.tsx +0 -6
  26. package/src/components/workbench-changes.tsx +64 -20
  27. package/src/components/workspace-dock.tsx +146 -55
  28. package/src/hooks/use-composer.ts +369 -39
  29. package/src/hooks/use-session-control.ts +6 -7
  30. package/src/hooks/use-session-events.ts +3 -2
  31. package/src/hooks/use-session-lineage.ts +15 -6
  32. package/src/hooks/use-session.ts +10 -2
  33. package/src/hooks/use-turn-queue.ts +175 -47
  34. package/src/index.ts +13 -7
  35. package/src/machines.ts +16 -0
  36. package/src/provider.tsx +192 -5
  37. package/src/timeline/parsers.ts +43 -6
  38. package/src/timeline/projection.ts +24 -2
  39. package/styles/index.css +22 -0
  40. package/dist/chunk-NFYVQWIB.js +0 -1377
  41. package/dist/chunk-NFYVQWIB.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { OpenGeniClient, MachineState, MetricSample, MachineView, MachineKind, MachinesResponse } from '@opengeni/sdk';
1
+ import { OpenGeniClient, WorkspaceControlEvent, StreamConnectionState, MachineState, MetricSample, MachineView, MachineKind, MachinesResponse } from '@opengeni/sdk';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { ReactNode } from 'react';
4
4
 
@@ -7,22 +7,27 @@ import { ReactNode } from 'react';
7
7
  * pass the real SDK client, a proxy-backed client that routes through their
8
8
  * own API, or a scripted client in tests/demos.
9
9
  */
10
- type SessionClientLike = Pick<OpenGeniClient, "getClientConfig" | "getSession" | "getSessionLineage" | "updateSession" | "updateSessionPin" | "listSessions" | "listSessionPage" | "sendMessage" | "steerMessage" | "pauseSession" | "resumeSession" | "sendApprovalDecision" | "listEvents" | "streamEvents" | "getQueue" | "cancelQueueItem" | "listTurns" | "getGoal" | "updateGoal" | "deleteGoal" | "clearSessionContext" | "compactSessionContext" | "listScheduledTasks" | "uploadFile" | "getFile" | "createFileDownloadUrl" | "listVariableSets" | "createVariableSet" | "updateVariableSet" | "deleteVariableSet" | "setVariableSetVariable" | "deleteVariableSetVariable" | "listEnvironments" | "createEnvironment" | "updateEnvironment" | "deleteEnvironment" | "setEnvironmentVariable" | "deleteEnvironmentVariable" | "listRigs" | "createRig" | "getRig" | "updateRig" | "deleteRig" | "listRigVersions" | "activateRigVersion" | "listRigChanges" | "proposeRigChange" | "getRigChange" | "verifyRigChange" | "promoteRigChange" | "verifyRig" | "listPacks" | "registerPack" | "enablePack" | "deletePack" | "listWorkspaces" | "createWorkspace" | "updateWorkspace" | "getBillingUsage" | "getClientConfig" | "getStreamCapabilities" | "acknowledgeStream" | "attachViewer" | "heartbeatViewer" | "detachViewer" | "fsList" | "fsRead" | "fsWrite" | "fsDelete" | "fsMove" | "fsMkdir" | "gitStatus" | "gitDiff" | "getWorkspaceCapture" | "getWorkspaceCaptureFile" | "terminalExec" | "terminalPtyOpen" | "terminalPtyWrite" | "terminalPtyResize" | "terminalPtyClose">;
10
+ type SessionClientLike = Pick<OpenGeniClient, "getClientConfig" | "getSession" | "getSessionLineage" | "updateSession" | "updateSessionPin" | "listSessions" | "listSessionPage" | "sendMessage" | "steerMessage" | "pauseSession" | "resumeSession" | "sendApprovalDecision" | "listEvents" | "streamEvents" | "getQueue" | "moveQueueItem" | "editQueueItem" | "steerQueueItem" | "deleteQueueItem" | "getComposerDraft" | "saveComposerDraft" | "listTurns" | "getGoal" | "updateGoal" | "deleteGoal" | "clearSessionContext" | "compactSessionContext" | "listScheduledTasks" | "uploadFile" | "getFile" | "createFileDownloadUrl" | "listVariableSets" | "createVariableSet" | "updateVariableSet" | "deleteVariableSet" | "setVariableSetVariable" | "deleteVariableSetVariable" | "listEnvironments" | "createEnvironment" | "updateEnvironment" | "deleteEnvironment" | "setEnvironmentVariable" | "deleteEnvironmentVariable" | "listRigs" | "createRig" | "getRig" | "updateRig" | "deleteRig" | "listRigVersions" | "activateRigVersion" | "listRigChanges" | "proposeRigChange" | "getRigChange" | "verifyRigChange" | "promoteRigChange" | "verifyRig" | "listPacks" | "registerPack" | "enablePack" | "deletePack" | "listWorkspaces" | "createWorkspace" | "updateWorkspace" | "setWorkspaceInferenceState" | "getWorkspace" | "listWorkspaceControlEvents" | "streamWorkspaceControlEvents" | "getBillingUsage" | "getClientConfig" | "getStreamCapabilities" | "acknowledgeStream" | "attachViewer" | "heartbeatViewer" | "detachViewer" | "fsList" | "fsRead" | "fsWrite" | "fsDelete" | "fsMove" | "fsMkdir" | "gitStatus" | "gitDiff" | "getWorkspaceCapture" | "getWorkspaceCaptureFile" | "terminalExec" | "terminalPtyOpen" | "terminalPtyWrite" | "terminalPtyResize" | "terminalPtyClose">;
11
11
 
12
12
  type OpenGeniContextValue = {
13
13
  client: SessionClientLike;
14
14
  workspaceId: string;
15
+ workspaceControlEvent: WorkspaceControlEvent | null;
16
+ workspaceControlConnectionState: StreamConnectionState | "idle" | "error";
17
+ registerSessionReconciler: (sessionId: string, key: string, reconcile: () => Promise<void>) => () => void;
18
+ reconcileSession: (sessionId: string) => Promise<void>;
15
19
  };
16
20
  type OpenGeniProviderProps = {
17
21
  client: SessionClientLike;
18
22
  workspaceId: string;
23
+ onWorkspaceControlEvent?: ((event: WorkspaceControlEvent) => void) | undefined;
19
24
  children?: ReactNode;
20
25
  };
21
26
  /**
22
27
  * Supplies the OpenGeni client + workspace to all hooks below it. Hooks also
23
28
  * accept `{ client, workspaceId }` overrides per call for multi-workspace UIs.
24
29
  */
25
- declare function OpenGeniProvider({ client, workspaceId, children }: OpenGeniProviderProps): react_jsx_runtime.JSX.Element;
30
+ declare function OpenGeniProvider({ client, workspaceId, onWorkspaceControlEvent, children, }: OpenGeniProviderProps): react_jsx_runtime.JSX.Element;
26
31
  type ClientOverride = {
27
32
  client?: SessionClientLike | undefined;
28
33
  workspaceId?: string | undefined;
@@ -120,15 +125,124 @@ type MachineCardProps = {
120
125
  onAttach?: ((machine: MachineView) => void) | undefined;
121
126
  /** Whether an attach/swap is currently in flight (disables the affordance). */
122
127
  attaching?: boolean | undefined;
128
+ /** Short recent history (e.g. 15m) — drives the card's CPU trend + preview. */
129
+ series?: MetricSample[] | undefined;
130
+ /** Open the full per-machine telemetry detail. Makes the whole card actionable. */
131
+ onOpenDetail?: ((machine: MachineView) => void) | undefined;
132
+ now?: number | undefined;
123
133
  className?: string | undefined;
124
134
  };
125
135
  /**
126
- * One machine in the Machines dashboard: name + kind + OS/arch, the composite
127
- * connection/state/shared status, latest resource meters, last-seen recency, and
128
- * an attach/swap affordance. The session's currently-active sandbox carries an
129
- * accent edge + an "Active" marker (never an attach button — it's already active).
136
+ * One machine in the Machines dashboard: name + kind + OS/arch, the fused HEALTH
137
+ * verdict, latest resource meters, a CPU trend that previews the history, live
138
+ * freshness, and attach/swap. The whole card opens the telemetry detail when
139
+ * `onOpenDetail` is wired. The session's active sandbox carries an accent edge.
130
140
  */
131
- declare function MachineCard({ machine, onAttach, attaching, className }: MachineCardProps): react_jsx_runtime.JSX.Element;
141
+ declare function MachineCard({ machine, onAttach, attaching, series, onOpenDetail, now, className, }: MachineCardProps): react_jsx_runtime.JSX.Element;
142
+
143
+ type MachineHealthPillProps = {
144
+ state: MachineState;
145
+ metrics: MetricSample | null;
146
+ now?: number | undefined;
147
+ size?: "sm" | "md" | undefined;
148
+ className?: string | undefined;
149
+ };
150
+ declare function MachineHealthPill({ state, metrics, now, size, className, }: MachineHealthPillProps): react_jsx_runtime.JSX.Element;
151
+
152
+ type HealthLevel = "healthy" | "degraded" | "critical" | "offline" | "unknown";
153
+ type HealthVerdict = {
154
+ level: HealthLevel;
155
+ /** Title-case label for the pill ("Healthy", "Under load", "Critical", …). */
156
+ label: string;
157
+ /** One short human clause naming the dominant cause ("Memory 94%", "No display"…). */
158
+ reason: string;
159
+ /** The latest sample is older than we'd expect from a live agent (~5s cadence). */
160
+ stale: boolean;
161
+ };
162
+ /** Fold a machine's reachability + latest sample + wall-clock into one verdict. */
163
+ declare function deriveHealth(state: MachineState, metrics: MetricSample | null, now?: number): HealthVerdict;
164
+ /**
165
+ * The token color ramp for a health level. Green/amber/red/grey is the
166
+ * universally-legible traffic model; we reserve it for the HEALTH verdict
167
+ * specifically (per-resource meters keep their own ramp in `machine-metrics`).
168
+ */
169
+ declare const HEALTH_TOKEN: Record<HealthLevel, {
170
+ text: string;
171
+ dot: string;
172
+ soft: string;
173
+ }>;
174
+ /** Live/transient levels breathe; settled levels hold still. */
175
+ declare function healthPulses(level: HealthLevel): boolean;
176
+
177
+ type SeriesPoint = {
178
+ t: number;
179
+ v: number | null;
180
+ };
181
+ type MetricHistoryChartProps = {
182
+ points: SeriesPoint[];
183
+ /** Fixed ceiling (100 for %) or "auto" to fit the data with headroom. */
184
+ yMax?: number | "auto";
185
+ yMin?: number;
186
+ /** Format a value for the axis + readout (default: rounded + unit). */
187
+ format?: (v: number) => string;
188
+ unit?: string;
189
+ /** Stroke/fill hue — any CSS color; pass a token var to stay theme-safe. */
190
+ color?: string;
191
+ thresholds?: {
192
+ warn?: number | undefined;
193
+ crit?: number | undefined;
194
+ } | undefined;
195
+ height?: number;
196
+ /** Human range label for the empty state ("in the last hour"). */
197
+ rangeLabel?: string | undefined;
198
+ className?: string | undefined;
199
+ };
200
+ declare function MetricHistoryChart({ points, yMax, yMin, format, unit, color, thresholds, height, rangeLabel, className, }: MetricHistoryChartProps): react_jsx_runtime.JSX.Element;
201
+
202
+ type MetricSparklineProps = {
203
+ points: SeriesPoint[];
204
+ color?: string;
205
+ yMax?: number | "auto";
206
+ height?: number;
207
+ className?: string | undefined;
208
+ };
209
+ declare function MetricSparkline({ points, color, yMax, height, className, }: MetricSparklineProps): react_jsx_runtime.JSX.Element;
210
+
211
+ type MetricWindow = "15m" | "1h" | "6h" | "24h";
212
+ declare const METRIC_WINDOWS: MetricWindow[];
213
+ declare const WINDOW_LABEL: Record<MetricWindow, string>;
214
+ type MetricKey = "cpu" | "mem" | "disk" | "load" | "gpu";
215
+ type MetricDef = {
216
+ key: MetricKey;
217
+ title: string;
218
+ unit: string;
219
+ yMax: number | "auto";
220
+ color: string;
221
+ thresholds?: {
222
+ warn?: number;
223
+ crit?: number;
224
+ };
225
+ pick: (s: MetricSample) => number | null;
226
+ /** Big current-value string for tiles/badges. */
227
+ current: (s: MetricSample) => string;
228
+ /** Optional sub-line under the current value. */
229
+ sub?: (s: MetricSample) => string | null;
230
+ };
231
+ declare const METRICS: MetricDef[];
232
+ declare function pointsFor(def: MetricDef, samples: MetricSample[]): SeriesPoint[];
233
+
234
+ type MachineDetailProps = {
235
+ machine: MachineView;
236
+ /** Downsampled history for the active window (from `fetchSeries`). */
237
+ series: MetricSample[];
238
+ window: MetricWindow;
239
+ onWindowChange: (w: MetricWindow) => void;
240
+ loadingSeries?: boolean | undefined;
241
+ onBack?: (() => void) | undefined;
242
+ now?: number | undefined;
243
+ className?: string | undefined;
244
+ };
245
+ declare function MachineDetail({ machine, series, window, onWindowChange, loadingSeries, onBack, now, className, }: MachineDetailProps): react_jsx_runtime.JSX.Element;
132
246
 
133
247
  type MachinesDashboardProps = {
134
248
  machines: MachineView[];
@@ -140,6 +254,12 @@ type MachinesDashboardProps = {
140
254
  onAttach?: ((machine: MachineView) => void) | undefined;
141
255
  /** The sandbox id currently being attached/swapped to (disables that card). */
142
256
  attachingSandboxId?: string | null | undefined;
257
+ /** Short recent history per machine (keyed by sandboxId) — drives card sparklines. */
258
+ seriesByMachine?: Record<string, MetricSample[]> | undefined;
259
+ /** Open the per-machine telemetry detail (makes each card actionable). */
260
+ onOpenDetail?: ((machine: MachineView) => void) | undefined;
261
+ /** Shared clock so freshness/relative times render consistently across cards. */
262
+ now?: number | undefined;
143
263
  /** Open the enrollment flow (the "Enroll a machine" CTA). */
144
264
  onEnroll?: (() => void) | undefined;
145
265
  onRefresh?: (() => void) | undefined;
@@ -152,7 +272,7 @@ type MachinesDashboardProps = {
152
272
  * machines → enroll CTA), a load error, and the populated grid. The component
153
273
  * is purely presentational — feed it `MachinesResponse` data via `useMachines`.
154
274
  */
155
- declare function MachinesDashboard({ machines, activeSandboxId, loading, error, onAttach, attachingSandboxId, onEnroll, onRefresh, className, }: MachinesDashboardProps): react_jsx_runtime.JSX.Element;
275
+ declare function MachinesDashboard({ machines, activeSandboxId, loading, error, onAttach, attachingSandboxId, seriesByMachine, onOpenDetail, now, onEnroll, onRefresh, className, }: MachinesDashboardProps): react_jsx_runtime.JSX.Element;
156
276
 
157
277
  type MachineDockBarProps = {
158
278
  /** The active machine's display name. */
@@ -326,4 +446,4 @@ type UseMachinesResult = {
326
446
  */
327
447
  declare function useMachines(options?: UseMachinesOptions): UseMachinesResult;
328
448
 
329
- export { SharedMachineDisclosure as A, type SharedMachineDisclosureProps as B, type ClientOverride as C, type DeviceFlowPhase as D, EnrollmentConsent as E, type UseMachinesResult as F, connectionStatusForState as G, useMachines as H, useOpenGeni as I, useOpenGeniClient as J, MACHINE_STATE_BADGE_META as M, type OpenGeniContextValue as O, type SessionClientLike as S, type UseMachinesOptions as U, CONNECTION_STATUS_META as a, ConnectionDot as b, type ConnectionDotProps as c, type ConnectionStatus as d, type ConnectionStatusMeta as e, ConnectionStatusPill as f, type ConnectionStatusPillProps as g, type EnrollmentConsentMachine as h, type EnrollmentConsentPhase as i, type EnrollmentConsentProps as j, EnrollmentDeviceFlow as k, type EnrollmentDeviceFlowProps as l, MachineCard as m, type MachineCardProps as n, MachineDockBar as o, type MachineDockBarProps as p, MachineMetrics as q, type MachineMetricsProps as r, type MachineStateBadgeMeta as s, MachineStatusPill as t, type MachineStatusPillProps as u, type MachinesClientLike as v, MachinesDashboard as w, type MachinesDashboardProps as x, OpenGeniProvider as y, type OpenGeniProviderProps as z };
449
+ export { WINDOW_LABEL as $, type MachineStateBadgeMeta as A, MachineStatusPill as B, type ClientOverride as C, type DeviceFlowPhase as D, EnrollmentConsent as E, type MachineStatusPillProps as F, type MachinesClientLike as G, HEALTH_TOKEN as H, MachinesDashboard as I, type MachinesDashboardProps as J, type MetricDef as K, MetricHistoryChart as L, MACHINE_STATE_BADGE_META as M, type MetricHistoryChartProps as N, type MetricKey as O, MetricSparkline as P, type MetricSparklineProps as Q, type MetricWindow as R, type SessionClientLike as S, type OpenGeniContextValue as T, OpenGeniProvider as U, type OpenGeniProviderProps as V, type SeriesPoint as W, SharedMachineDisclosure as X, type SharedMachineDisclosureProps as Y, type UseMachinesOptions as Z, type UseMachinesResult as _, CONNECTION_STATUS_META as a, connectionStatusForState as a0, deriveHealth as a1, healthPulses as a2, pointsFor as a3, useMachines as a4, useOpenGeni as a5, useOpenGeniClient as a6, ConnectionDot as b, type ConnectionDotProps as c, type ConnectionStatus as d, type ConnectionStatusMeta as e, ConnectionStatusPill as f, type ConnectionStatusPillProps as g, type EnrollmentConsentMachine as h, type EnrollmentConsentPhase as i, type EnrollmentConsentProps as j, EnrollmentDeviceFlow as k, type EnrollmentDeviceFlowProps as l, type HealthLevel as m, type HealthVerdict as n, METRICS as o, METRIC_WINDOWS as p, MachineCard as q, type MachineCardProps as r, MachineDetail as s, type MachineDetailProps as t, MachineDockBar as u, type MachineDockBarProps as v, MachineHealthPill as w, type MachineHealthPillProps as x, MachineMetrics as y, type MachineMetricsProps as z };
@@ -1,4 +1,4 @@
1
- export { a as CONNECTION_STATUS_META, b as ConnectionDot, c as ConnectionDotProps, d as ConnectionStatus, e as ConnectionStatusMeta, f as ConnectionStatusPill, g as ConnectionStatusPillProps, D as DeviceFlowPhase, E as EnrollmentConsent, h as EnrollmentConsentMachine, i as EnrollmentConsentPhase, j as EnrollmentConsentProps, k as EnrollmentDeviceFlow, l as EnrollmentDeviceFlowProps, M as MACHINE_STATE_BADGE_META, m as MachineCard, n as MachineCardProps, o as MachineDockBar, p as MachineDockBarProps, q as MachineMetrics, r as MachineMetricsProps, s as MachineStateBadgeMeta, t as MachineStatusPill, u as MachineStatusPillProps, v as MachinesClientLike, w as MachinesDashboard, x as MachinesDashboardProps, A as SharedMachineDisclosure, B as SharedMachineDisclosureProps, U as UseMachinesOptions, F as UseMachinesResult, G as connectionStatusForState, H as useMachines } from './machines-CnlMb7E-.js';
1
+ export { a as CONNECTION_STATUS_META, b as ConnectionDot, c as ConnectionDotProps, d as ConnectionStatus, e as ConnectionStatusMeta, f as ConnectionStatusPill, g as ConnectionStatusPillProps, D as DeviceFlowPhase, E as EnrollmentConsent, h as EnrollmentConsentMachine, i as EnrollmentConsentPhase, j as EnrollmentConsentProps, k as EnrollmentDeviceFlow, l as EnrollmentDeviceFlowProps, H as HEALTH_TOKEN, m as HealthLevel, n as HealthVerdict, M as MACHINE_STATE_BADGE_META, o as METRICS, p as METRIC_WINDOWS, q as MachineCard, r as MachineCardProps, s as MachineDetail, t as MachineDetailProps, u as MachineDockBar, v as MachineDockBarProps, w as MachineHealthPill, x as MachineHealthPillProps, y as MachineMetrics, z as MachineMetricsProps, A as MachineStateBadgeMeta, B as MachineStatusPill, F as MachineStatusPillProps, G as MachinesClientLike, I as MachinesDashboard, J as MachinesDashboardProps, K as MetricDef, L as MetricHistoryChart, N as MetricHistoryChartProps, O as MetricKey, P as MetricSparkline, Q as MetricSparklineProps, R as MetricWindow, W as SeriesPoint, X as SharedMachineDisclosure, Y as SharedMachineDisclosureProps, Z as UseMachinesOptions, _ as UseMachinesResult, $ as WINDOW_LABEL, a0 as connectionStatusForState, a1 as deriveHealth, a2 as healthPulses, a3 as pointsFor, a4 as useMachines } from './machines-BpdwuQcD.js';
2
2
  export { MachineKind, MachineMetricsSeriesResponse, MachineState, MachineView, MachinesResponse, MetricSample } from '@opengeni/sdk';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/dist/machines.js CHANGED
@@ -4,30 +4,52 @@ import {
4
4
  ConnectionStatusPill,
5
5
  EnrollmentConsent,
6
6
  EnrollmentDeviceFlow,
7
+ HEALTH_TOKEN,
7
8
  MACHINE_STATE_BADGE_META,
9
+ METRICS,
10
+ METRIC_WINDOWS,
8
11
  MachineCard,
12
+ MachineDetail,
9
13
  MachineDockBar,
14
+ MachineHealthPill,
10
15
  MachineMetrics,
11
16
  MachineStatusPill,
12
17
  MachinesDashboard,
18
+ MetricHistoryChart,
19
+ MetricSparkline,
13
20
  SharedMachineDisclosure,
21
+ WINDOW_LABEL,
14
22
  connectionStatusForState,
23
+ deriveHealth,
24
+ healthPulses,
25
+ pointsFor,
15
26
  useMachines
16
- } from "./chunk-NFYVQWIB.js";
27
+ } from "./chunk-TOJR776I.js";
17
28
  export {
18
29
  CONNECTION_STATUS_META,
19
30
  ConnectionDot,
20
31
  ConnectionStatusPill,
21
32
  EnrollmentConsent,
22
33
  EnrollmentDeviceFlow,
34
+ HEALTH_TOKEN,
23
35
  MACHINE_STATE_BADGE_META,
36
+ METRICS,
37
+ METRIC_WINDOWS,
24
38
  MachineCard,
39
+ MachineDetail,
25
40
  MachineDockBar,
41
+ MachineHealthPill,
26
42
  MachineMetrics,
27
43
  MachineStatusPill,
28
44
  MachinesDashboard,
45
+ MetricHistoryChart,
46
+ MetricSparkline,
29
47
  SharedMachineDisclosure,
48
+ WINDOW_LABEL,
30
49
  connectionStatusForState,
50
+ deriveHealth,
51
+ healthPulses,
52
+ pointsFor,
31
53
  useMachines
32
54
  };
33
55
  //# sourceMappingURL=machines.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/react",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "React hooks and styled components for OpenGeni: live session streaming, chat composer, message timeline, session status, and fleet views — token-themed (CSS variables), dark-first, built on Tailwind v4 + Radix + Motion.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -43,7 +43,10 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@bufbuild/protobuf": "^2.2.0",
46
- "@opengeni/sdk": "^0.13.0",
46
+ "@dnd-kit/core": "6.3.1",
47
+ "@dnd-kit/sortable": "10.0.0",
48
+ "@dnd-kit/utilities": "3.2.2",
49
+ "@opengeni/sdk": "^0.15.0",
47
50
  "clsx": "^2.1.1",
48
51
  "lucide-react": "^1.8.0",
49
52
  "motion": "^12.0.0",
package/src/client.ts CHANGED
@@ -25,7 +25,12 @@ export type SessionClientLike = Pick<
25
25
  | "streamEvents"
26
26
  // Turn queue
27
27
  | "getQueue"
28
- | "cancelQueueItem"
28
+ | "moveQueueItem"
29
+ | "editQueueItem"
30
+ | "steerQueueItem"
31
+ | "deleteQueueItem"
32
+ | "getComposerDraft"
33
+ | "saveComposerDraft"
29
34
  | "listTurns"
30
35
  // Goal
31
36
  | "getGoal"
@@ -76,6 +81,10 @@ export type SessionClientLike = Pick<
76
81
  | "listWorkspaces"
77
82
  | "createWorkspace"
78
83
  | "updateWorkspace"
84
+ | "setWorkspaceInferenceState"
85
+ | "getWorkspace"
86
+ | "listWorkspaceControlEvents"
87
+ | "streamWorkspaceControlEvents"
79
88
  | "getBillingUsage"
80
89
  // Stream surfacing (Phase 5): capability negotiation + viewer lifecycle
81
90
  | "getClientConfig"