@opengeni/react 0.46.1 → 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.
- package/README.md +158 -14
- package/dist/artifacts-document.d.ts +3 -0
- package/dist/artifacts-document.js +17 -0
- package/dist/artifacts-document.js.map +1 -0
- package/dist/artifacts-presentation.d.ts +3 -0
- package/dist/artifacts-presentation.js +17 -0
- package/dist/artifacts-presentation.js.map +1 -0
- package/dist/artifacts-spreadsheet.d.ts +3 -0
- package/dist/artifacts-spreadsheet.js +17 -0
- package/dist/artifacts-spreadsheet.js.map +1 -0
- package/dist/artifacts.d.ts +2 -0
- package/dist/artifacts.js +170 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/chunk-6BBWWOOU.js +82 -0
- package/dist/chunk-6BBWWOOU.js.map +1 -0
- package/dist/{chunk-HFO4ERGQ.js → chunk-724BW4TW.js} +586 -35
- package/dist/chunk-724BW4TW.js.map +1 -0
- package/dist/chunk-7I2KB3OK.js +3895 -0
- package/dist/chunk-7I2KB3OK.js.map +1 -0
- package/dist/chunk-7WCLAEFV.js +2828 -0
- package/dist/chunk-7WCLAEFV.js.map +1 -0
- package/dist/{chunk-U3CSCMWA.js → chunk-FK6VG4LL.js} +9 -13
- package/dist/chunk-FK6VG4LL.js.map +1 -0
- package/dist/{chunk-SRFUT2ZU.js → chunk-FWS3KC3Z.js} +120 -64
- package/dist/chunk-FWS3KC3Z.js.map +1 -0
- package/dist/{chunk-EKZH6IDG.js → chunk-HDBG7XGO.js} +62 -1
- package/dist/chunk-HDBG7XGO.js.map +1 -0
- package/dist/chunk-HUIKIDM5.js +2148 -0
- package/dist/chunk-HUIKIDM5.js.map +1 -0
- package/dist/{chunk-LGVMUIRV.js → chunk-JAGDUCZQ.js} +1053 -390
- package/dist/chunk-JAGDUCZQ.js.map +1 -0
- package/dist/{chunk-LWR4MXSS.js → chunk-JR3QFY6B.js} +420 -35
- package/dist/chunk-JR3QFY6B.js.map +1 -0
- package/dist/chunk-JVYQRRC4.js +53 -0
- package/dist/chunk-JVYQRRC4.js.map +1 -0
- package/dist/chunk-KCGXPP5V.js +157 -0
- package/dist/chunk-KCGXPP5V.js.map +1 -0
- package/dist/{chunk-EB67J347.js → chunk-KZ73RL76.js} +111 -31
- package/dist/chunk-KZ73RL76.js.map +1 -0
- package/dist/chunk-PEI6RANI.js +3234 -0
- package/dist/chunk-PEI6RANI.js.map +1 -0
- package/dist/{chunk-3PB7MIT6.js → chunk-ROIRTM37.js} +220 -72
- package/dist/chunk-ROIRTM37.js.map +1 -0
- package/dist/chunk-VZTQ73XT.js +86 -0
- package/dist/chunk-VZTQ73XT.js.map +1 -0
- package/dist/{chunk-VCBFUSUZ.js → chunk-WSK7G5LE.js} +72 -4
- package/dist/chunk-WSK7G5LE.js.map +1 -0
- package/dist/{chunk-FGZUCXZF.js → chunk-WYA65Y3F.js} +16 -16
- package/dist/chunk-WYA65Y3F.js.map +1 -0
- package/dist/{chunk-6EDV6YFE.js → chunk-X4S56Y2H.js} +147 -35
- package/dist/chunk-X4S56Y2H.js.map +1 -0
- package/dist/client.d.ts +7 -1
- package/dist/clipboard.d.ts +1 -0
- package/dist/clipboard.js +7 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/commands/index.d.ts +3 -3
- package/dist/commands/registry.d.ts +1 -1
- package/dist/commands/types.d.ts +1 -1
- package/dist/components/approval-surface.d.ts +2 -2
- package/dist/components/artifacts/artifact-surface.d.ts +18 -0
- package/dist/components/artifacts/document-editor.d.ts +172 -0
- package/dist/components/artifacts/editable-artifact-ui.d.ts +13 -0
- package/dist/components/artifacts/editable-artifact-workbench.d.ts +49 -0
- package/dist/components/artifacts/editable-document.d.ts +24 -0
- package/dist/components/artifacts/editable-presentation.d.ts +24 -0
- package/dist/components/artifacts/editable-spreadsheet.d.ts +32 -0
- package/dist/components/artifacts/index.d.ts +8 -0
- package/dist/components/artifacts/presentation-editor.d.ts +297 -0
- package/dist/components/artifacts/spreadsheet-canvas.d.ts +120 -0
- package/dist/components/artifacts/spreadsheet-grid.d.ts +113 -0
- package/dist/components/browser-viewer.d.ts +29 -0
- package/dist/components/chat-composer.d.ts +13 -8
- package/dist/components/code-editor.d.ts +25 -3
- package/dist/components/command-palette.d.ts +2 -2
- package/dist/components/composer-transcription-control.d.ts +4 -2
- package/dist/components/composer.d.ts +29 -15
- package/dist/components/computer-viewer.d.ts +23 -0
- package/dist/components/copy-button.d.ts +2 -2
- package/dist/components/desktop-viewer.d.ts +25 -21
- package/dist/components/diff-view.d.ts +1 -1
- package/dist/components/enrollment-consent.d.ts +1 -1
- package/dist/components/enrollment-device-flow.d.ts +1 -1
- package/dist/components/file-browser.d.ts +2 -2
- package/dist/components/fleet-tile.d.ts +1 -1
- package/dist/components/generated-video-player.d.ts +10 -0
- package/dist/components/human-input-form.d.ts +1 -1
- package/dist/components/human-input-surface.d.ts +2 -2
- package/dist/components/interactive-workbench-viewers.d.ts +2 -0
- package/dist/components/machine-card.d.ts +2 -2
- package/dist/components/machine-dock-bar.d.ts +3 -3
- package/dist/components/machine-health-pill.d.ts +2 -2
- package/dist/components/machine-input-display.d.ts +1 -1
- package/dist/components/machine-metrics.d.ts +2 -2
- package/dist/components/machine-status-pill.d.ts +4 -4
- package/dist/components/machines/health.d.ts +1 -1
- package/dist/components/machines/machine-detail.d.ts +5 -3
- package/dist/components/machines/metric-history-chart.d.ts +1 -1
- package/dist/components/machines/metric-sparkline.d.ts +2 -2
- package/dist/components/machines/series.d.ts +2 -2
- package/dist/components/machines-dashboard.d.ts +5 -5
- package/dist/components/markdown.d.ts +1 -1
- package/dist/components/message-timeline.d.ts +22 -5
- package/dist/components/model-picker.d.ts +2 -2
- package/dist/components/model-policy-picker.d.ts +7 -7
- package/dist/components/pierre-diff.d.ts +1 -1
- package/dist/components/pierre-file.d.ts +1 -1
- package/dist/components/queue-draft-policy.d.ts +1 -1
- package/dist/components/queue-surface-implementation.d.ts +3 -3
- package/dist/components/queue-surface-state.d.ts +4 -4
- package/dist/components/queue-surface.d.ts +5 -5
- package/dist/components/sandbox-files.d.ts +5 -5
- package/dist/components/sandbox-terminal.d.ts +50 -4
- package/dist/components/sandbox-workspace.d.ts +30 -10
- package/dist/components/session-chrome.d.ts +4 -4
- package/dist/components/session-status.d.ts +2 -2
- package/dist/components/timeline-annotation-selection.d.ts +9 -0
- package/dist/components/timeline-annotations-dialog.d.ts +16 -0
- package/dist/components/timeline-annotations.d.ts +13 -0
- package/dist/components/tooltip.d.ts +4 -4
- package/dist/components/user-message-body.d.ts +2 -2
- package/dist/components/workbench-changes.d.ts +2 -2
- package/dist/components/workspace-dock.d.ts +3 -1
- package/dist/composer.d.ts +11 -11
- package/dist/composer.js +7 -7
- package/dist/hooks/internal.d.ts +7 -1
- package/dist/hooks/use-attached-browsers.d.ts +21 -0
- package/dist/hooks/use-available-models.d.ts +2 -2
- package/dist/hooks/use-billing-usage.d.ts +1 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +28 -0
- package/dist/hooks/use-browser-identities.d.ts +26 -0
- package/dist/hooks/use-browser-session.d.ts +28 -0
- package/dist/hooks/use-browser-sessions.d.ts +32 -0
- package/dist/hooks/use-codex-accounts.d.ts +3 -3
- package/dist/hooks/use-composer.d.ts +36 -9
- package/dist/hooks/use-computer-frame-stream.d.ts +24 -0
- package/dist/hooks/use-computer-session.d.ts +28 -0
- package/dist/hooks/use-computer-sessions.d.ts +28 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-environments.d.ts +11 -5
- package/dist/hooks/use-file-attachments.d.ts +1 -1
- package/dist/hooks/use-goal.d.ts +2 -2
- package/dist/hooks/use-human-input.d.ts +2 -2
- package/dist/hooks/use-last-started-turn-policy.d.ts +2 -2
- package/dist/hooks/use-machine-chip.d.ts +2 -2
- package/dist/hooks/use-machines.d.ts +10 -3
- package/dist/hooks/use-packs.d.ts +7 -2
- package/dist/hooks/use-rigs.d.ts +1 -1
- package/dist/hooks/use-sandbox-files.d.ts +25 -4
- package/dist/hooks/use-sandbox-git.d.ts +13 -5
- package/dist/hooks/use-sandbox-terminal.d.ts +1 -1
- package/dist/hooks/use-scheduled-tasks.d.ts +1 -1
- package/dist/hooks/use-session-capabilities.d.ts +5 -4
- package/dist/hooks/use-session-control.d.ts +1 -1
- package/dist/hooks/use-session-events.d.ts +2 -2
- package/dist/hooks/use-session-lineage.d.ts +1 -1
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session.d.ts +2 -2
- package/dist/hooks/use-slash-commands.d.ts +1 -1
- package/dist/hooks/use-terminal-stream.d.ts +8 -2
- package/dist/hooks/use-transcription.d.ts +2 -2
- package/dist/hooks/use-turn-queue.d.ts +2 -2
- package/dist/hooks/use-video-artifact-playback.d.ts +9 -0
- package/dist/hooks/use-voice-input.d.ts +6 -4
- package/dist/hooks/use-workspace-capture.d.ts +1 -1
- package/dist/hooks/use-workspace-edit.d.ts +1 -1
- package/dist/hooks/use-workspace-sessions.d.ts +1 -1
- package/dist/hooks/use-workspaces.d.ts +1 -1
- package/dist/index.d.ts +158 -154
- package/dist/index.js +1718 -908
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +23 -0
- package/dist/interaction.js +36 -0
- package/dist/interaction.js.map +1 -0
- package/dist/interactive-workbench-viewers-KHNOHWQE.js +13 -0
- package/dist/interactive-workbench-viewers-KHNOHWQE.js.map +1 -0
- package/dist/lib/composer-responsive-context.d.ts +9 -0
- package/dist/lib/relay-wire.d.ts +4 -0
- package/dist/lib/sandbox-liveness.d.ts +9 -0
- package/dist/lib/terminal-capability.d.ts +5 -0
- package/dist/lib/use-portal-token-style.d.ts +14 -3
- package/dist/lib/xterm-theme.d.ts +1 -1
- package/dist/machines.d.ts +30 -30
- package/dist/machines.js +3 -3
- package/dist/provider.d.ts +4 -4
- package/dist/{queue-surface-implementation-J4XJFKRW.js → queue-surface-implementation-2KVJTYXH.js} +117 -64
- package/dist/queue-surface-implementation-2KVJTYXH.js.map +1 -0
- package/dist/realtime/dropdown-menu.d.ts +8 -8
- package/dist/realtime/realtime-control.d.ts +15 -6
- package/dist/realtime.d.ts +4 -4
- package/dist/realtime.js +30 -33
- package/dist/realtime.js.map +1 -1
- package/dist/session-context.d.ts +19 -1
- package/dist/session-ui.d.ts +14 -14
- package/dist/session-ui.js +6 -5
- package/dist/session.d.ts +28 -28
- package/dist/session.js +5 -5
- package/dist/timeline/activity-rail.d.ts +6 -3
- package/dist/timeline/disclosure-context.d.ts +1 -1
- package/dist/timeline/fleet-decision-projection.d.ts +1 -1
- package/dist/timeline/fleet-decision-row.d.ts +3 -3
- package/dist/timeline/index.d.ts +19 -19
- package/dist/timeline/parsers.d.ts +6 -3
- package/dist/timeline/projection.d.ts +3 -3
- package/dist/timeline/registry.d.ts +10 -1
- package/dist/timeline/screenshot-lightbox.d.ts +2 -2
- package/dist/timeline/shared.d.ts +21 -10
- package/dist/timeline/tool-diff.d.ts +2 -2
- package/dist/timeline/tool-renderers.d.ts +1 -1
- package/dist/timeline/turn-summary.d.ts +3 -3
- package/dist/timeline/types.d.ts +42 -2
- package/dist/timeline-annotation-selection-3L7LHGG2.js +187 -0
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +1 -0
- package/dist/timeline-annotations-dialog-U7EVLR75.js +196 -0
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +1 -0
- package/dist/voice-recording-store.d.ts +8 -2
- package/package.json +52 -7
- package/src/artifacts-document.ts +31 -0
- package/src/artifacts-presentation.ts +36 -0
- package/src/artifacts-spreadsheet.ts +21 -0
- package/src/artifacts.ts +86 -0
- package/src/client.ts +90 -1
- package/src/clipboard.ts +2 -0
- package/src/components/artifacts/artifact-surface.tsx +93 -0
- package/src/components/artifacts/document-editor.tsx +2255 -0
- package/src/components/artifacts/editable-artifact-ui.tsx +89 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +203 -0
- package/src/components/artifacts/editable-document.tsx +657 -0
- package/src/components/artifacts/editable-presentation.tsx +1020 -0
- package/src/components/artifacts/editable-spreadsheet.tsx +733 -0
- package/src/components/artifacts/index.ts +99 -0
- package/src/components/artifacts/presentation-editor.tsx +3148 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +799 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +2129 -0
- package/src/components/browser-viewer.tsx +1592 -0
- package/src/components/chat-composer.tsx +25 -2
- package/src/components/code-editor.tsx +90 -31
- package/src/components/command-palette.tsx +1 -1
- package/src/components/composer-transcription-control.tsx +51 -22
- package/src/components/composer.tsx +49 -23
- package/src/components/computer-viewer.tsx +1139 -0
- package/src/components/copy-button.tsx +1 -1
- package/src/components/desktop-viewer.tsx +103 -75
- package/src/components/file-browser.tsx +39 -17
- package/src/components/generated-video-player.tsx +89 -0
- package/src/components/human-input-form.tsx +2 -2
- package/src/components/interactive-workbench-viewers.ts +2 -0
- package/src/components/machine-card.tsx +1 -1
- package/src/components/machine-input-display.ts +3 -0
- package/src/components/machines/machine-detail.tsx +39 -15
- package/src/components/machines-dashboard.tsx +7 -6
- package/src/components/message-timeline.tsx +327 -37
- package/src/components/model-picker.tsx +2 -2
- package/src/components/model-policy-picker.tsx +16 -15
- package/src/components/queue-surface-implementation.tsx +135 -75
- package/src/components/queue-surface-state.tsx +2 -2
- package/src/components/sandbox-files.tsx +142 -62
- package/src/components/sandbox-terminal.tsx +119 -35
- package/src/components/sandbox-workspace.tsx +394 -228
- package/src/components/session-chrome.tsx +67 -27
- package/src/components/timeline-annotation-selection.tsx +221 -0
- package/src/components/timeline-annotations-dialog.tsx +213 -0
- package/src/components/timeline-annotations.tsx +84 -0
- package/src/components/tooltip.tsx +13 -16
- package/src/components/user-message-body.tsx +1 -1
- package/src/components/workbench-changes.tsx +192 -35
- package/src/components/workspace-dock.tsx +13 -5
- package/src/composer.ts +3 -0
- package/src/hooks/internal.ts +132 -38
- package/src/hooks/use-attached-browsers.ts +152 -0
- package/src/hooks/use-browser-frame-stream.ts +316 -0
- package/src/hooks/use-browser-identities.ts +225 -0
- package/src/hooks/use-browser-session.ts +476 -0
- package/src/hooks/use-browser-sessions.ts +281 -0
- package/src/hooks/use-codex-accounts.ts +4 -4
- package/src/hooks/use-composer.ts +769 -24
- package/src/hooks/use-computer-frame-stream.ts +311 -0
- package/src/hooks/use-computer-session.ts +442 -0
- package/src/hooks/use-computer-sessions.ts +245 -0
- package/src/hooks/use-environments.ts +24 -5
- package/src/hooks/use-file-attachments.ts +70 -32
- package/src/hooks/use-goal.ts +17 -5
- package/src/hooks/use-machine-chip.ts +5 -3
- package/src/hooks/use-machines.ts +79 -3
- package/src/hooks/use-packs.ts +51 -0
- package/src/hooks/use-sandbox-files.ts +382 -88
- package/src/hooks/use-sandbox-git.ts +208 -46
- package/src/hooks/use-sandbox-terminal.ts +3 -2
- package/src/hooks/use-session-capabilities.ts +94 -70
- package/src/hooks/use-session-events.ts +18 -4
- package/src/hooks/use-terminal-stream.ts +102 -23
- package/src/hooks/use-transcription.ts +4 -14
- package/src/hooks/use-turn-queue.ts +17 -5
- package/src/hooks/use-video-artifact-playback.ts +28 -0
- package/src/hooks/use-voice-input.ts +163 -19
- package/src/hooks/use-windowed-sections.ts +9 -7
- package/src/hooks/use-workspace-edit.ts +2 -1
- package/src/index.ts +21 -6
- package/src/interaction.ts +71 -0
- package/src/lib/composer-responsive-context.ts +15 -0
- package/src/lib/relay-wire.ts +4 -0
- package/src/lib/sandbox-liveness.ts +11 -0
- package/src/lib/terminal-capability.ts +10 -0
- package/src/lib/use-portal-token-style.ts +60 -15
- package/src/provider.tsx +52 -7
- package/src/realtime/dropdown-menu.tsx +15 -19
- package/src/realtime/realtime-control.tsx +16 -5
- package/src/session-context.ts +90 -0
- package/src/timeline/activity-rail.tsx +31 -6
- package/src/timeline/index.ts +4 -1
- package/src/timeline/parsers.ts +46 -20
- package/src/timeline/projection.ts +233 -13
- package/src/timeline/registry.ts +19 -0
- package/src/timeline/screenshot-lightbox.tsx +30 -9
- package/src/timeline/shared.tsx +59 -11
- package/src/timeline/tool-renderers.tsx +421 -24
- package/src/timeline/turn-summary.tsx +2 -2
- package/src/timeline/types.ts +58 -2
- package/src/voice-recording-store.ts +15 -0
- package/styles/compiled.css +5298 -0
- package/styles/compiled.d.ts +2 -0
- package/styles/effective-tokens.css +27 -0
- package/styles/index.css +18 -0
- package/styles/responsive.css +208 -0
- package/styles/responsive.d.ts +2 -0
- package/styles/tokens.css +50 -17
- package/dist/chunk-3PB7MIT6.js.map +0 -1
- package/dist/chunk-6EDV6YFE.js.map +0 -1
- package/dist/chunk-EB67J347.js.map +0 -1
- package/dist/chunk-EKZH6IDG.js.map +0 -1
- package/dist/chunk-FGZUCXZF.js.map +0 -1
- package/dist/chunk-HFO4ERGQ.js.map +0 -1
- package/dist/chunk-JB5725BI.js +0 -48
- package/dist/chunk-JB5725BI.js.map +0 -1
- package/dist/chunk-LGVMUIRV.js.map +0 -1
- package/dist/chunk-LWR4MXSS.js.map +0 -1
- package/dist/chunk-SRFUT2ZU.js.map +0 -1
- package/dist/chunk-U3CSCMWA.js.map +0 -1
- package/dist/chunk-VCBFUSUZ.js.map +0 -1
- package/dist/fleet-decision-projection-SLNZMS42.js +0 -241
- package/dist/fleet-decision-projection-SLNZMS42.js.map +0 -1
- package/dist/queue-surface-implementation-J4XJFKRW.js.map +0 -1
|
@@ -100,10 +100,10 @@ export function ModelPicker({
|
|
|
100
100
|
disabled={disabled === true}
|
|
101
101
|
aria-label={label}
|
|
102
102
|
className={cn(
|
|
103
|
-
"h-8 max-w-[180px] cursor-pointer appearance-none truncate rounded-og-md bg-transparent pointer-coarse:h-11",
|
|
103
|
+
"og-model-picker-native h-8 max-w-[180px] cursor-pointer appearance-none truncate rounded-og-md bg-transparent pointer-coarse:h-11",
|
|
104
104
|
"py-0 pl-2 pr-6 text-[13px] text-og-fg-muted",
|
|
105
105
|
"transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg",
|
|
106
|
-
"focus:outline-
|
|
106
|
+
"focus:outline-hidden focus-visible:outline-hidden",
|
|
107
107
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
108
108
|
)}
|
|
109
109
|
>
|
|
@@ -12,14 +12,13 @@ import { DropdownMenu } from "radix-ui";
|
|
|
12
12
|
import {
|
|
13
13
|
useEffect,
|
|
14
14
|
useMemo,
|
|
15
|
-
useRef,
|
|
16
15
|
useState,
|
|
17
16
|
type CSSProperties,
|
|
18
17
|
type ReactNode,
|
|
19
18
|
type SVGProps,
|
|
20
19
|
} from "react";
|
|
21
20
|
import { cn } from "../lib/cn";
|
|
22
|
-
import { usePortalTokenStyle } from "../lib/use-portal-token-style";
|
|
21
|
+
import { usePortalTokenSource, usePortalTokenStyle } from "../lib/use-portal-token-style";
|
|
23
22
|
import {
|
|
24
23
|
coerceReasoningEffortForModel,
|
|
25
24
|
effortOptionsForModel,
|
|
@@ -243,7 +242,7 @@ export function PickerNavRow(props: {
|
|
|
243
242
|
onClick={props.onClick}
|
|
244
243
|
data-testid={props.testId}
|
|
245
244
|
className={cn(
|
|
246
|
-
"flex w-full cursor-pointer items-center gap-2 rounded-og-sm px-[var(--og-model-picker-row-padding-x)] py-[var(--og-model-picker-row-padding-y)] text-left text-og-fg outline-
|
|
245
|
+
"flex w-full cursor-pointer items-center gap-2 rounded-og-sm px-[var(--og-model-picker-row-padding-x)] py-[var(--og-model-picker-row-padding-y)] text-left text-og-fg outline-hidden transition-colors hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
247
246
|
props.disabled && "cursor-not-allowed opacity-50",
|
|
248
247
|
)}
|
|
249
248
|
>
|
|
@@ -278,7 +277,7 @@ export function PickerBackHeader(props: {
|
|
|
278
277
|
type="button"
|
|
279
278
|
onClick={props.onBack}
|
|
280
279
|
data-testid="model-picker-back"
|
|
281
|
-
className="flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-og-sm px-1.5 py-1.5 text-left text-og-fg outline-
|
|
280
|
+
className="flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-og-sm px-1.5 py-1.5 text-left text-og-fg outline-hidden transition-colors hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent/40"
|
|
282
281
|
>
|
|
283
282
|
<ChevronLeftIcon className="size-3.5 shrink-0 text-og-fg-subtle" />
|
|
284
283
|
{props.icon}
|
|
@@ -455,7 +454,7 @@ export function ModelPolicyPickerMenu(
|
|
|
455
454
|
);
|
|
456
455
|
}}
|
|
457
456
|
className={cn(
|
|
458
|
-
"flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-og-sm text-og-fg-subtle outline-
|
|
457
|
+
"flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-og-sm text-og-fg-subtle outline-hidden transition-colors hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:cursor-not-allowed disabled:opacity-50",
|
|
459
458
|
activeModel && props.latencyMode === "fast" && "text-og-fg",
|
|
460
459
|
)}
|
|
461
460
|
>
|
|
@@ -487,7 +486,7 @@ export function ModelPolicyPickerMenu(
|
|
|
487
486
|
disabled={!focusModel.selectable}
|
|
488
487
|
onClick={() => selectEffort(focusModel, effort)}
|
|
489
488
|
className={cn(
|
|
490
|
-
"flex h-[var(--og-model-picker-effort-height)] w-full cursor-pointer items-center rounded-og-sm px-[var(--og-model-picker-row-padding-x)] text-left text-og-menu text-og-fg outline-
|
|
489
|
+
"flex h-[var(--og-model-picker-effort-height)] w-full cursor-pointer items-center rounded-og-sm px-[var(--og-model-picker-row-padding-x)] text-left text-og-menu text-og-fg outline-hidden transition-colors hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:cursor-not-allowed disabled:opacity-50",
|
|
491
490
|
selected && "bg-og-surface-2",
|
|
492
491
|
)}
|
|
493
492
|
>
|
|
@@ -542,8 +541,8 @@ export function ModelPolicyPicker(props: ModelPolicyPickerProps) {
|
|
|
542
541
|
if (props.open === undefined) setUncontrolledOpen(next);
|
|
543
542
|
props.onOpenChange?.(next);
|
|
544
543
|
};
|
|
545
|
-
const
|
|
546
|
-
const portalStyle = usePortalTokenStyle(
|
|
544
|
+
const trigger = usePortalTokenSource<HTMLButtonElement>();
|
|
545
|
+
const portalStyle = usePortalTokenStyle(trigger.source);
|
|
547
546
|
const messages = useMemo(
|
|
548
547
|
() => ({ ...defaultModelPolicyPickerMessages, ...props.messages }),
|
|
549
548
|
[props.messages],
|
|
@@ -556,7 +555,7 @@ export function ModelPolicyPicker(props: ModelPolicyPickerProps) {
|
|
|
556
555
|
return (
|
|
557
556
|
<span
|
|
558
557
|
className={cn(
|
|
559
|
-
"inline-flex h-8 w-40 shrink-0 animate-pulse rounded-full bg-og-surface-2",
|
|
558
|
+
"og-root inline-flex h-8 w-40 shrink-0 animate-pulse rounded-full bg-og-surface-2",
|
|
560
559
|
props.className,
|
|
561
560
|
)}
|
|
562
561
|
aria-label={messages.loading}
|
|
@@ -568,12 +567,12 @@ export function ModelPolicyPicker(props: ModelPolicyPickerProps) {
|
|
|
568
567
|
<DropdownMenu.Root open={open} onOpenChange={setOpen}>
|
|
569
568
|
<DropdownMenu.Trigger asChild>
|
|
570
569
|
<button
|
|
571
|
-
ref={
|
|
570
|
+
ref={trigger.ref}
|
|
572
571
|
type="button"
|
|
573
572
|
disabled={props.disabled}
|
|
574
573
|
aria-label={messages.label}
|
|
575
574
|
className={cn(
|
|
576
|
-
"og-root inline-flex h-[var(--og-model-picker-trigger-height)] min-w-0 max-w-64 items-center gap-1 rounded-full border border-transparent px-2.5 text-og-control text-og-fg-muted outline-
|
|
575
|
+
"og-root og-model-policy-trigger inline-flex h-[var(--og-model-picker-trigger-height)] min-w-0 max-w-64 items-center gap-1 rounded-full border border-transparent px-2.5 text-og-control text-og-fg-muted outline-hidden transition-colors hover:border-og-border hover:bg-og-surface-2 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:cursor-not-allowed disabled:opacity-50 max-sm:h-11 max-sm:max-w-[7.5rem] max-sm:px-2",
|
|
577
576
|
props.className,
|
|
578
577
|
)}
|
|
579
578
|
>
|
|
@@ -584,13 +583,15 @@ export function ModelPolicyPicker(props: ModelPolicyPickerProps) {
|
|
|
584
583
|
}
|
|
585
584
|
className="text-og-fg"
|
|
586
585
|
/>
|
|
587
|
-
<span className="min-w-0 truncate font-medium text-og-fg max-sm:hidden">
|
|
586
|
+
<span className="og-model-policy-label-full min-w-0 truncate font-medium text-og-fg max-sm:hidden">
|
|
588
587
|
{selected?.label ?? props.model}
|
|
589
588
|
</span>
|
|
590
|
-
<span className="min-w-0 truncate font-medium text-og-fg sm:hidden">
|
|
589
|
+
<span className="og-model-policy-label-short min-w-0 truncate font-medium text-og-fg sm:hidden">
|
|
591
590
|
{selected?.shortLabel ?? selected?.label ?? props.model}
|
|
592
591
|
</span>
|
|
593
|
-
<span className="max-sm:hidden">
|
|
592
|
+
<span className="og-model-policy-effort max-sm:hidden">
|
|
593
|
+
{labelReasoningEffort(props.effort)}
|
|
594
|
+
</span>
|
|
594
595
|
{props.latencyMode === "fast" ? (
|
|
595
596
|
<ZapIcon
|
|
596
597
|
className="size-3.5 shrink-0 fill-current stroke-current text-og-fg"
|
|
@@ -609,7 +610,7 @@ export function ModelPolicyPicker(props: ModelPolicyPickerProps) {
|
|
|
609
610
|
collisionPadding={12}
|
|
610
611
|
onCloseAutoFocus={(event) => event.preventDefault()}
|
|
611
612
|
className={cn(
|
|
612
|
-
"og-root z-50 flex max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height))] w-[var(--og-model-picker-menu-width)] max-w-[calc(100vw-16px)] flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 p-[var(--og-model-picker-menu-padding)] text-og-fg shadow-og-lg",
|
|
613
|
+
"og-root og-model-policy-menu z-50 flex max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height))] w-[var(--og-model-picker-menu-width)] max-w-[calc(100vw-16px)] flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 p-[var(--og-model-picker-menu-padding)] text-og-fg shadow-og-lg",
|
|
613
614
|
props.contentClassName,
|
|
614
615
|
)}
|
|
615
616
|
style={{ ...portalStyle, ...props.contentStyle }}
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
verticalListSortingStrategy,
|
|
17
17
|
} from "@dnd-kit/sortable";
|
|
18
18
|
import { CSS } from "@dnd-kit/utilities";
|
|
19
|
-
import type { SessionPendingInputPreview, SessionTurn } from "@opengeni/sdk";
|
|
19
|
+
import type { SessionPendingInputPreview, SessionTurn, TimelineAnnotation } from "@opengeni/sdk";
|
|
20
20
|
import {
|
|
21
21
|
ArrowDownToLineIcon,
|
|
22
22
|
ArrowUpToLineIcon,
|
|
@@ -32,7 +32,6 @@ import {
|
|
|
32
32
|
useCallback,
|
|
33
33
|
useId,
|
|
34
34
|
useMemo,
|
|
35
|
-
useRef,
|
|
36
35
|
useState,
|
|
37
36
|
type KeyboardEvent as ReactKeyboardEvent,
|
|
38
37
|
} from "react";
|
|
@@ -40,9 +39,14 @@ import {
|
|
|
40
39
|
import { DropdownMenu } from "radix-ui";
|
|
41
40
|
import type { ComposerState } from "../hooks/use-composer";
|
|
42
41
|
import type { QueueMutationKind, UseTurnQueueResult } from "../hooks/use-turn-queue";
|
|
43
|
-
import {
|
|
42
|
+
import {
|
|
43
|
+
type PortalTokenStyle,
|
|
44
|
+
usePortalTokenSource,
|
|
45
|
+
usePortalTokenStyle,
|
|
46
|
+
} from "../lib/use-portal-token-style";
|
|
44
47
|
import { requestQueueDraftEdit } from "./queue-draft-policy";
|
|
45
48
|
import { QueueErrorAlert, QueueStoppingStatus } from "./queue-surface-state";
|
|
49
|
+
import { TimelineAnnotationsChip } from "./timeline-annotations";
|
|
46
50
|
|
|
47
51
|
/** The sole pending-input surface: compact above Goal, Agents, and composer. */
|
|
48
52
|
type QueueSurfaceCommonProps = {
|
|
@@ -80,8 +84,9 @@ export function QueueSurface({
|
|
|
80
84
|
const [replaceDraftFor, setReplaceDraftFor] = useState<string | null>(null);
|
|
81
85
|
const [announcement, setAnnouncement] = useState("");
|
|
82
86
|
const [draggedTurnId, setDraggedTurnId] = useState<string | null>(null);
|
|
83
|
-
const
|
|
84
|
-
const
|
|
87
|
+
const surface = usePortalTokenSource<HTMLDivElement>();
|
|
88
|
+
const surfaceRef = surface.currentRef;
|
|
89
|
+
const portalTokenStyle = usePortalTokenStyle(surface.source);
|
|
85
90
|
const [keyboardDrag, setKeyboardDrag] = useState<{
|
|
86
91
|
turnId: string;
|
|
87
92
|
projectedIndex: number;
|
|
@@ -95,14 +100,15 @@ export function QueueSurface({
|
|
|
95
100
|
(input) => !attachedInputIds.includes(input.id),
|
|
96
101
|
);
|
|
97
102
|
const canEditInComposer = queueComposerCheckoutEnabled(composer, readOnly);
|
|
98
|
-
const collapsedPreview = useMemo(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
const collapsedPreview = useMemo(() => {
|
|
104
|
+
const firstTurn = queue.queue[0];
|
|
105
|
+
return firstTurn
|
|
106
|
+
? queueTurnPreview(firstTurn, QUEUE_COLLAPSED_PREVIEW_CHARACTERS)
|
|
107
|
+
: queuePromptPreview(
|
|
108
|
+
queue.pendingInputs[0]?.summary ?? "",
|
|
109
|
+
QUEUE_COLLAPSED_PREVIEW_CHARACTERS,
|
|
110
|
+
);
|
|
111
|
+
}, [queue.pendingInputs, queue.queue]);
|
|
106
112
|
const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } }));
|
|
107
113
|
|
|
108
114
|
const displayedQueue = useMemo(() => {
|
|
@@ -129,7 +135,7 @@ export function QueueSurface({
|
|
|
129
135
|
);
|
|
130
136
|
if (moved) focusQueueTurn(surfaceRef.current, turnId);
|
|
131
137
|
},
|
|
132
|
-
[queue],
|
|
138
|
+
[queue, surfaceRef],
|
|
133
139
|
);
|
|
134
140
|
|
|
135
141
|
const onDragEnd = useCallback(
|
|
@@ -245,7 +251,7 @@ export function QueueSurface({
|
|
|
245
251
|
|
|
246
252
|
return (
|
|
247
253
|
<div
|
|
248
|
-
ref={
|
|
254
|
+
ref={surface.ref}
|
|
249
255
|
className="og-root mx-auto mb-2 w-full max-w-3xl shrink-0 px-4 sm:px-6"
|
|
250
256
|
data-testid="queue-surface"
|
|
251
257
|
>
|
|
@@ -253,7 +259,7 @@ export function QueueSurface({
|
|
|
253
259
|
{queue.stoppingPreviousAttempt ? <QueueStoppingStatus queue={queue} dividerAfter /> : null}
|
|
254
260
|
<button
|
|
255
261
|
type="button"
|
|
256
|
-
className="flex w-full min-w-0 flex-wrap items-center gap-2 px-3 py-2 text-left outline-
|
|
262
|
+
className="flex w-full min-w-0 flex-wrap items-center gap-2 px-3 py-2 text-left outline-hidden transition-colors hover:bg-surface-2/60 focus-visible:bg-surface-2/60 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring/40 pointer-coarse:min-h-[44px]"
|
|
257
263
|
onClick={() => setOpen((value) => !value)}
|
|
258
264
|
aria-description={!open && totalCount > 0 ? collapsedPreview.summary : undefined}
|
|
259
265
|
aria-expanded={open}
|
|
@@ -405,8 +411,8 @@ export function QueueSurface({
|
|
|
405
411
|
dir="auto"
|
|
406
412
|
>
|
|
407
413
|
{
|
|
408
|
-
|
|
409
|
-
queue.queue.find((turn) => turn.id === draggedTurnId)
|
|
414
|
+
queueTurnPreview(
|
|
415
|
+
queue.queue.find((turn) => turn.id === draggedTurnId),
|
|
410
416
|
QUEUE_ROW_PREVIEW_CHARACTERS,
|
|
411
417
|
).summary
|
|
412
418
|
}
|
|
@@ -486,6 +492,29 @@ type QueuePromptPreview = {
|
|
|
486
492
|
isFallback: boolean;
|
|
487
493
|
};
|
|
488
494
|
|
|
495
|
+
function annotationOnlyQueuePreview(count: number): QueuePromptPreview {
|
|
496
|
+
const summary = `${count} timeline ${count === 1 ? "annotation" : "annotations"}`;
|
|
497
|
+
return {
|
|
498
|
+
summary,
|
|
499
|
+
collapsedVisual: summary,
|
|
500
|
+
visibleStart: summary,
|
|
501
|
+
visibleIdentity: null,
|
|
502
|
+
visibleIdentityLabel: null,
|
|
503
|
+
isFallback: false,
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function queueTurnPreview(
|
|
508
|
+
turn: SessionTurn | undefined,
|
|
509
|
+
maxCharacters: number,
|
|
510
|
+
): QueuePromptPreview {
|
|
511
|
+
if (!turn) return queuePromptPreview("", maxCharacters);
|
|
512
|
+
const annotations = turn.annotations ?? [];
|
|
513
|
+
return turn.prompt.length === 0 && annotations.length > 0
|
|
514
|
+
? annotationOnlyQueuePreview(annotations.length)
|
|
515
|
+
: queuePromptPreview(turn.prompt, maxCharacters);
|
|
516
|
+
}
|
|
517
|
+
|
|
489
518
|
/**
|
|
490
519
|
* Build a bounded head/tail summary of an arbitrary queued prompt. Sampling
|
|
491
520
|
* both ends distinguishes prompts with equal long prefixes. Each sampled edge
|
|
@@ -748,73 +777,94 @@ function isLowSurrogate(codeUnit: number): boolean {
|
|
|
748
777
|
|
|
749
778
|
function QueuePrompt({
|
|
750
779
|
prompt,
|
|
780
|
+
annotations,
|
|
751
781
|
index,
|
|
752
782
|
onDisclosureChange,
|
|
753
783
|
}: {
|
|
754
784
|
prompt: string;
|
|
785
|
+
annotations: readonly TimelineAnnotation[];
|
|
755
786
|
index: number;
|
|
756
787
|
onDisclosureChange: (expanded: boolean) => void;
|
|
757
788
|
}) {
|
|
758
789
|
const [expanded, setExpanded] = useState(false);
|
|
759
790
|
const fullContentId = useId();
|
|
760
|
-
const preview = useMemo(
|
|
791
|
+
const preview = useMemo(
|
|
792
|
+
() =>
|
|
793
|
+
prompt.length === 0 && annotations.length > 0
|
|
794
|
+
? annotationOnlyQueuePreview(annotations.length)
|
|
795
|
+
: queuePromptPreview(prompt, QUEUE_ROW_PREVIEW_CHARACTERS),
|
|
796
|
+
[annotations.length, prompt],
|
|
797
|
+
);
|
|
761
798
|
|
|
762
799
|
return (
|
|
763
800
|
<div className="w-full min-w-0 max-w-full">
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
801
|
+
{prompt ? (
|
|
802
|
+
<div
|
|
803
|
+
aria-label={`Queued prompt ${index + 1} summary: ${preview.summary}`}
|
|
804
|
+
className="max-w-full overflow-hidden text-og-control leading-5 text-fg"
|
|
805
|
+
data-testid={`queue-prompt-preview-${index + 1}`}
|
|
806
|
+
dir="auto"
|
|
807
|
+
role="note"
|
|
808
|
+
>
|
|
772
809
|
<span
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
dir="auto"
|
|
810
|
+
aria-hidden="true"
|
|
811
|
+
className="flex min-w-0 max-w-full items-baseline gap-2 sm:block"
|
|
776
812
|
>
|
|
777
|
-
{preview.visibleStart}
|
|
778
|
-
</span>
|
|
779
|
-
{preview.visibleIdentity && preview.visibleIdentityLabel ? (
|
|
780
813
|
<span
|
|
781
|
-
className="
|
|
782
|
-
data-testid={`queue-prompt-
|
|
814
|
+
className={`${preview.isFallback ? "" : "line-clamp-1 sm:line-clamp-2"} min-w-0 flex-1 whitespace-pre-wrap break-all [unicode-bidi:plaintext]`}
|
|
815
|
+
data-testid={`queue-prompt-start-${index + 1}`}
|
|
816
|
+
dir="auto"
|
|
783
817
|
>
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
818
|
+
{preview.visibleStart}
|
|
819
|
+
</span>
|
|
820
|
+
{preview.visibleIdentity && preview.visibleIdentityLabel ? (
|
|
787
821
|
<span
|
|
788
|
-
className="min-w-0
|
|
789
|
-
data-testid={`queue-prompt-identity-${index + 1}`}
|
|
790
|
-
dir="auto"
|
|
822
|
+
className="flex min-w-0 max-w-[70%] shrink-0 items-center gap-1 text-og-xs leading-4 text-fg-muted sm:mt-0.5 sm:max-w-full"
|
|
823
|
+
data-testid={`queue-prompt-identity-row-${index + 1}`}
|
|
791
824
|
>
|
|
792
|
-
|
|
825
|
+
<span className="shrink-0 font-medium text-fg-subtle">
|
|
826
|
+
{preview.visibleIdentityLabel}
|
|
827
|
+
</span>
|
|
828
|
+
<span
|
|
829
|
+
className="min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-mono [unicode-bidi:plaintext]"
|
|
830
|
+
data-testid={`queue-prompt-identity-${index + 1}`}
|
|
831
|
+
dir="auto"
|
|
832
|
+
>
|
|
833
|
+
{preview.visibleIdentity}
|
|
834
|
+
</span>
|
|
793
835
|
</span>
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
</
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
aria-label={`${expanded ? "Hide" : "Show"} full content for queued prompt ${index + 1}`}
|
|
803
|
-
className="mt-1 inline-flex min-h-7 min-w-0 max-w-full items-center gap-1 whitespace-normal rounded-md text-left text-og-xs font-medium text-fg outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-coarse:min-h-[44px]"
|
|
804
|
-
data-testid={`queue-prompt-disclosure-${index + 1}`}
|
|
805
|
-
onClick={() => {
|
|
806
|
-
const next = !expanded;
|
|
807
|
-
setExpanded(next);
|
|
808
|
-
onDisclosureChange(next);
|
|
809
|
-
}}
|
|
810
|
-
>
|
|
811
|
-
<ChevronDownIcon
|
|
812
|
-
aria-hidden="true"
|
|
813
|
-
className={`size-3 shrink-0 transition-transform ${expanded ? "rotate-180" : ""}`}
|
|
836
|
+
) : null}
|
|
837
|
+
</span>
|
|
838
|
+
</div>
|
|
839
|
+
) : null}
|
|
840
|
+
{annotations.length > 0 ? (
|
|
841
|
+
<TimelineAnnotationsChip
|
|
842
|
+
annotations={annotations}
|
|
843
|
+
className={prompt ? "mt-1" : undefined}
|
|
814
844
|
/>
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
845
|
+
) : null}
|
|
846
|
+
{prompt ? (
|
|
847
|
+
<button
|
|
848
|
+
type="button"
|
|
849
|
+
aria-controls={fullContentId}
|
|
850
|
+
aria-expanded={expanded}
|
|
851
|
+
aria-label={`${expanded ? "Hide" : "Show"} full content for queued prompt ${index + 1}`}
|
|
852
|
+
className="mt-1 inline-flex min-h-7 min-w-0 max-w-full items-center gap-1 whitespace-normal rounded-md text-left text-og-xs font-medium text-fg outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 pointer-coarse:min-h-[44px]"
|
|
853
|
+
data-testid={`queue-prompt-disclosure-${index + 1}`}
|
|
854
|
+
onClick={() => {
|
|
855
|
+
const next = !expanded;
|
|
856
|
+
setExpanded(next);
|
|
857
|
+
onDisclosureChange(next);
|
|
858
|
+
}}
|
|
859
|
+
>
|
|
860
|
+
<ChevronDownIcon
|
|
861
|
+
aria-hidden="true"
|
|
862
|
+
className={`size-3 shrink-0 transition-transform ${expanded ? "rotate-180" : ""}`}
|
|
863
|
+
/>
|
|
864
|
+
{expanded ? "Hide full prompt" : "View full prompt"}
|
|
865
|
+
</button>
|
|
866
|
+
) : null}
|
|
867
|
+
{expanded && prompt ? (
|
|
818
868
|
<pre
|
|
819
869
|
id={fullContentId}
|
|
820
870
|
role="region"
|
|
@@ -846,7 +896,12 @@ function ReadOnlyQueueRow({
|
|
|
846
896
|
<li className="flex min-w-0 items-start gap-2 bg-surface px-3 py-2">
|
|
847
897
|
<span className="mt-1 shrink-0 font-mono text-og-xs text-fg-subtle">{index + 1}</span>
|
|
848
898
|
<div className="min-w-0 flex-1">
|
|
849
|
-
<QueuePrompt
|
|
899
|
+
<QueuePrompt
|
|
900
|
+
prompt={turn.prompt}
|
|
901
|
+
annotations={turn.annotations ?? []}
|
|
902
|
+
index={index}
|
|
903
|
+
onDisclosureChange={onDisclosureChange}
|
|
904
|
+
/>
|
|
850
905
|
{attachedInputs.length > 0 ? (
|
|
851
906
|
<PendingMachineInputs inputs={attachedInputs} attached />
|
|
852
907
|
) : null}
|
|
@@ -937,7 +992,12 @@ function SortableQueueRow({
|
|
|
937
992
|
{index + 1}
|
|
938
993
|
</span>
|
|
939
994
|
<div className="col-span-full row-start-2 min-w-0 sm:col-span-1 sm:col-start-3 sm:row-start-1">
|
|
940
|
-
<QueuePrompt
|
|
995
|
+
<QueuePrompt
|
|
996
|
+
prompt={turn.prompt}
|
|
997
|
+
annotations={turn.annotations ?? []}
|
|
998
|
+
index={index}
|
|
999
|
+
onDisclosureChange={onDisclosureChange}
|
|
1000
|
+
/>
|
|
941
1001
|
{attachedInputs.length > 0 ? (
|
|
942
1002
|
<PendingMachineInputs inputs={attachedInputs} attached />
|
|
943
1003
|
) : null}
|
|
@@ -963,7 +1023,7 @@ function SortableQueueRow({
|
|
|
963
1023
|
onClick={onSteer}
|
|
964
1024
|
aria-label={`Steer queued prompt ${index + 1}`}
|
|
965
1025
|
title="Steer — interrupt the current turn and send this message now"
|
|
966
|
-
className="inline-flex h-7 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-og-control font-medium text-fg outline-
|
|
1026
|
+
className="inline-flex h-7 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-og-control font-medium text-fg outline-hidden transition-[background-color] hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-50 pointer-coarse:min-h-[44px] pointer-coarse:min-w-[44px]"
|
|
967
1027
|
>
|
|
968
1028
|
{pending === "steer" ? (
|
|
969
1029
|
<Loader2Icon className="size-3.5 animate-spin" />
|
|
@@ -978,7 +1038,7 @@ function SortableQueueRow({
|
|
|
978
1038
|
onClick={onDelete}
|
|
979
1039
|
aria-label={`Delete queued prompt ${index + 1}`}
|
|
980
1040
|
title="Delete this queued prompt"
|
|
981
|
-
className="inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-
|
|
1041
|
+
className="inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-hidden transition-colors hover:bg-surface-2 hover:text-status-failed focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-50 pointer-coarse:size-[44px]"
|
|
982
1042
|
>
|
|
983
1043
|
{pending === "delete" ? (
|
|
984
1044
|
<Loader2Icon className="size-3.5 animate-spin" />
|
|
@@ -992,7 +1052,7 @@ function SortableQueueRow({
|
|
|
992
1052
|
type="button"
|
|
993
1053
|
disabled={pending !== null}
|
|
994
1054
|
aria-label={`More actions for queued prompt ${index + 1}`}
|
|
995
|
-
className="inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-
|
|
1055
|
+
className="inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-hidden transition-colors hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-50 pointer-coarse:size-[44px]"
|
|
996
1056
|
>
|
|
997
1057
|
{pending && pending !== "steer" && pending !== "delete" ? (
|
|
998
1058
|
<Loader2Icon className="size-3.5 animate-spin" />
|
|
@@ -1012,7 +1072,7 @@ function SortableQueueRow({
|
|
|
1012
1072
|
{onEdit ? (
|
|
1013
1073
|
<>
|
|
1014
1074
|
<DropdownMenu.Item
|
|
1015
|
-
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-
|
|
1075
|
+
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 pointer-coarse:min-h-[44px]"
|
|
1016
1076
|
onSelect={onEdit}
|
|
1017
1077
|
>
|
|
1018
1078
|
<PencilIcon className="size-3.5" /> Edit in composer
|
|
@@ -1021,28 +1081,28 @@ function SortableQueueRow({
|
|
|
1021
1081
|
</>
|
|
1022
1082
|
) : null}
|
|
1023
1083
|
<DropdownMenu.Item
|
|
1024
|
-
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-
|
|
1084
|
+
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
|
|
1025
1085
|
disabled={index === 0}
|
|
1026
1086
|
onSelect={() => onMove(0)}
|
|
1027
1087
|
>
|
|
1028
1088
|
<ArrowUpToLineIcon className="size-3.5" /> Move to top
|
|
1029
1089
|
</DropdownMenu.Item>
|
|
1030
1090
|
<DropdownMenu.Item
|
|
1031
|
-
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-
|
|
1091
|
+
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
|
|
1032
1092
|
disabled={index === 0}
|
|
1033
1093
|
onSelect={() => onMove(index - 1)}
|
|
1034
1094
|
>
|
|
1035
1095
|
Move up
|
|
1036
1096
|
</DropdownMenu.Item>
|
|
1037
1097
|
<DropdownMenu.Item
|
|
1038
|
-
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-
|
|
1098
|
+
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
|
|
1039
1099
|
disabled={index === count - 1}
|
|
1040
1100
|
onSelect={() => onMove(index + 1)}
|
|
1041
1101
|
>
|
|
1042
1102
|
Move down
|
|
1043
1103
|
</DropdownMenu.Item>
|
|
1044
1104
|
<DropdownMenu.Item
|
|
1045
|
-
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-
|
|
1105
|
+
className="flex min-w-0 cursor-default items-center gap-2 whitespace-normal break-words rounded-sm px-2 py-1.5 outline-hidden focus:bg-surface-2 data-[disabled]:opacity-50 pointer-coarse:min-h-[44px]"
|
|
1046
1106
|
disabled={index === count - 1}
|
|
1047
1107
|
onSelect={() => onMove(count - 1)}
|
|
1048
1108
|
>
|
|
@@ -70,7 +70,7 @@ export function QueueErrorAlert({
|
|
|
70
70
|
role="region"
|
|
71
71
|
aria-label="Queue error details"
|
|
72
72
|
tabIndex={0}
|
|
73
|
-
className="max-h-[min(5rem,20dvh)] min-w-0 max-w-full flex-[1_1_5rem] overflow-auto overscroll-contain whitespace-pre-wrap rounded-sm outline-
|
|
73
|
+
className="max-h-[min(5rem,20dvh)] min-w-0 max-w-full flex-[1_1_5rem] overflow-auto overscroll-contain whitespace-pre-wrap rounded-sm outline-hidden [overflow-wrap:anywhere] [unicode-bidi:plaintext] focus-visible:ring-2 focus-visible:ring-ring/40"
|
|
74
74
|
data-testid="queue-error-message"
|
|
75
75
|
dir="auto"
|
|
76
76
|
>
|
|
@@ -84,7 +84,7 @@ export function QueueErrorAlert({
|
|
|
84
84
|
}}
|
|
85
85
|
aria-label="Dismiss queue error and retry"
|
|
86
86
|
title="Retry loading the queue"
|
|
87
|
-
className="ms-auto inline-flex size-7 shrink-0 items-center justify-center self-start rounded-md outline-
|
|
87
|
+
className="ms-auto inline-flex size-7 shrink-0 items-center justify-center self-start rounded-md outline-hidden transition-colors hover:bg-surface-3 focus-visible:ring-2 focus-visible:ring-ring/40 motion-reduce:transition-none pointer-coarse:size-[44px]"
|
|
88
88
|
>
|
|
89
89
|
<RotateCwIcon className="size-3.5" />
|
|
90
90
|
</button>
|