@opengeni/react 0.28.2 → 0.32.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/dist/approvals.d.ts +14 -0
- package/dist/{chunk-M7X4JZOD.js → chunk-4QOQ2DSR.js} +8 -1
- package/dist/chunk-4QOQ2DSR.js.map +1 -0
- package/dist/{chunk-HQFPO7VX.js → chunk-7CJOAW3V.js} +24 -3
- package/dist/{chunk-HQFPO7VX.js.map → chunk-7CJOAW3V.js.map} +1 -1
- package/dist/{chunk-PMSGE233.js → chunk-A2WITZTI.js} +377 -113
- package/dist/chunk-A2WITZTI.js.map +1 -0
- package/dist/{chunk-BC6RKIHS.js → chunk-GZ4KR67U.js} +11 -11
- package/dist/{chunk-4F2YLLHP.js → chunk-KZRUYCL4.js} +14 -17
- package/dist/chunk-KZRUYCL4.js.map +1 -0
- package/dist/{chunk-OCHBZ2X7.js → chunk-TCCE5ZU5.js} +192 -28
- package/dist/chunk-TCCE5ZU5.js.map +1 -0
- package/dist/chunk-U255M5EZ.js +178 -0
- package/dist/chunk-U255M5EZ.js.map +1 -0
- package/dist/{chunk-XVVQP7A4.js → chunk-WY2QN2CX.js} +2539 -2174
- package/dist/chunk-WY2QN2CX.js.map +1 -0
- package/dist/chunk-ZNNE2VES.js +6413 -0
- package/dist/chunk-ZNNE2VES.js.map +1 -0
- package/dist/client.d.ts +33 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/registry.d.ts +41 -0
- package/dist/commands/types.d.ts +85 -0
- package/dist/components/approval-surface.d.ts +28 -0
- package/dist/components/chat-composer.d.ts +51 -0
- package/dist/components/code-editor.d.ts +43 -0
- package/dist/components/command-palette.d.ts +25 -0
- package/dist/components/composer-transcription-control.d.ts +36 -0
- package/dist/components/composer.d.ts +277 -0
- package/dist/components/copy-button.d.ts +26 -0
- package/dist/components/desktop-viewer.d.ts +85 -0
- package/dist/components/diff-view.d.ts +38 -0
- package/dist/components/enrollment-consent.d.ts +33 -0
- package/dist/components/enrollment-device-flow.d.ts +27 -0
- package/dist/components/file-browser.d.ts +47 -0
- package/dist/components/fleet-tile.d.ts +18 -0
- package/dist/components/human-input-form.d.ts +47 -0
- package/dist/components/machine-card.d.ts +21 -0
- package/dist/components/machine-dock-bar.d.ts +31 -0
- package/dist/components/machine-health-pill.d.ts +9 -0
- package/dist/components/machine-metrics.d.ts +15 -0
- package/dist/components/machine-status-pill.d.ts +54 -0
- package/dist/components/machines/health.d.ts +25 -0
- package/dist/components/machines/machine-detail.d.ts +14 -0
- package/dist/components/machines/metric-history-chart.d.ts +24 -0
- package/dist/components/machines/metric-sparkline.d.ts +9 -0
- package/dist/components/machines/series.d.ts +24 -0
- package/dist/components/machines-dashboard.d.ts +30 -0
- package/dist/components/markdown.d.ts +31 -0
- package/dist/components/message-timeline.d.ts +98 -0
- package/dist/components/model-picker.d.ts +19 -0
- package/dist/components/pierre-diff.d.ts +34 -0
- package/dist/components/pierre-file.d.ts +27 -0
- package/dist/components/queue-draft-policy.d.ts +7 -0
- package/dist/components/queue-surface-implementation.d.ts +20 -0
- package/dist/components/queue-surface-state.d.ts +12 -0
- package/dist/components/queue-surface.d.ts +12 -0
- package/dist/components/sandbox-files.d.ts +49 -0
- package/dist/components/sandbox-terminal.d.ts +123 -0
- package/dist/components/sandbox-workspace.d.ts +128 -0
- package/dist/components/session-chrome.d.ts +70 -0
- package/dist/components/session-status.d.ts +25 -0
- package/dist/components/soften-streaming-markdown.d.ts +13 -0
- package/dist/components/stream-reveal.d.ts +37 -0
- package/dist/components/tip-follow.d.ts +139 -0
- package/dist/components/tooltip.d.ts +16 -0
- package/dist/components/workbench-changes.d.ts +34 -0
- package/dist/components/workspace-dock.d.ts +35 -0
- package/dist/composer.d.ts +11 -7
- package/dist/composer.js +9 -6
- package/dist/hooks/internal.d.ts +46 -0
- package/dist/hooks/use-available-models.d.ts +37 -0
- package/dist/hooks/use-billing-usage.d.ts +26 -0
- package/dist/hooks/use-codex-accounts.d.ts +69 -0
- package/dist/{use-composer-ClHy1rkL.d.ts → hooks/use-composer.d.ts} +16 -24
- package/dist/hooks/use-desktop-stream.d.ts +43 -0
- package/dist/hooks/use-environments.d.ts +35 -0
- package/dist/{use-file-attachments-BmT8WtqO.d.ts → hooks/use-file-attachments.d.ts} +6 -9
- package/dist/hooks/use-goal.d.ts +46 -0
- package/dist/hooks/use-human-input.d.ts +26 -0
- package/dist/hooks/use-last-started-turn-policy.d.ts +27 -0
- package/dist/hooks/use-machine-chip.d.ts +54 -0
- package/dist/hooks/use-machines.d.ts +81 -0
- package/dist/hooks/use-packs.d.ts +27 -0
- package/dist/hooks/use-relay-frame-stream.d.ts +53 -0
- package/dist/hooks/use-rigs.d.ts +87 -0
- package/dist/hooks/use-sandbox-files.d.ts +108 -0
- package/dist/hooks/use-sandbox-git.d.ts +58 -0
- package/dist/hooks/use-sandbox-terminal.d.ts +62 -0
- package/dist/hooks/use-scheduled-tasks.d.ts +15 -0
- package/dist/hooks/use-session-capabilities.d.ts +83 -0
- package/dist/hooks/use-session-control.d.ts +22 -0
- package/dist/hooks/use-session-events.d.ts +92 -0
- package/dist/hooks/use-session-lineage.d.ts +17 -0
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +23 -0
- package/dist/hooks/use-session.d.ts +23 -0
- package/dist/hooks/use-slash-commands.d.ts +66 -0
- package/dist/hooks/use-terminal-stream.d.ts +46 -0
- package/dist/hooks/use-transcription.d.ts +73 -0
- package/dist/hooks/use-turn-queue.d.ts +44 -0
- package/dist/hooks/use-voice-input.d.ts +25 -0
- package/dist/hooks/use-windowed-sections.d.ts +42 -0
- package/dist/hooks/use-workspace-capture.d.ts +49 -0
- package/dist/hooks/use-workspace-edit.d.ts +73 -0
- package/dist/hooks/use-workspace-sessions.d.ts +30 -0
- package/dist/hooks/use-workspaces.d.ts +22 -0
- package/dist/human-input.d.ts +18 -0
- package/dist/index.d.ts +144 -2119
- package/dist/index.js +421 -324
- package/dist/index.js.map +1 -1
- package/dist/lib/clipboard.d.ts +7 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/format.d.ts +48 -0
- package/dist/lib/git-patch.d.ts +8 -0
- package/dist/lib/motion-inspect.d.ts +5 -0
- package/dist/lib/motion.d.ts +14 -0
- package/dist/lib/noto-sans-arabic-loader.d.ts +1 -0
- package/dist/lib/noto-sans-jp-loader.generated.d.ts +1 -0
- package/dist/lib/relay-wire.d.ts +30 -0
- package/dist/lib/use-portal-token-style.d.ts +9 -0
- package/dist/lib/use-theme-type.d.ts +5 -0
- package/dist/lib/use-unicode-fonts.d.ts +12 -0
- package/dist/lib/xterm-renderer.d.ts +19 -0
- package/dist/lib/xterm-theme.d.ts +75 -0
- package/dist/machines.d.ts +30 -413
- package/dist/machines.js +3 -3
- package/dist/model-policy.d.ts +32 -0
- package/dist/model-policy.js +33 -0
- package/dist/model-policy.js.map +1 -0
- package/dist/provider.d.ts +16 -0
- package/dist/{queue-surface-implementation-UQ535OKQ.js → queue-surface-implementation-THPAKGMD.js} +2 -2
- package/dist/{queue-surface-implementation-UQ535OKQ.js.map → queue-surface-implementation-THPAKGMD.js.map} +1 -1
- package/dist/session-context.d.ts +82 -0
- package/dist/session-ui.d.ts +10 -7
- package/dist/session-ui.js +9 -5
- package/dist/session.d.ts +28 -6
- package/dist/session.js +11 -11
- package/dist/timeline/activity-rail.d.ts +19 -0
- package/dist/timeline/disclosure-context.d.ts +14 -0
- package/dist/timeline/entrance.d.ts +14 -0
- package/dist/timeline/fleet-decision-projection.d.ts +9 -0
- package/dist/timeline/fleet-decision-row.d.ts +11 -0
- package/dist/timeline/fold-memory.d.ts +15 -0
- package/dist/timeline/index.d.ts +18 -0
- package/dist/timeline/parsers.d.ts +96 -0
- package/dist/timeline/projection.d.ts +38 -0
- package/dist/timeline/registry.d.ts +40 -0
- package/dist/timeline/screenshot-lightbox.d.ts +26 -0
- package/dist/timeline/seen-activity-ids.d.ts +2 -0
- package/dist/timeline/shared.d.ts +125 -0
- package/dist/timeline/tool-diff.d.ts +8 -0
- package/dist/timeline/tool-display-name.d.ts +10 -0
- package/dist/timeline/tool-renderers.d.ts +5 -0
- package/dist/timeline/turn-summary.d.ts +116 -0
- package/dist/{use-turn-queue-Drm_ypue.d.ts → timeline/types.d.ts} +57 -67
- package/dist/types/machines.d.ts +11 -0
- package/package.json +8 -4
- package/src/client.ts +1 -0
- package/src/components/composer-transcription-control.tsx +278 -130
- package/src/components/composer.tsx +20 -15
- package/src/components/copy-button.tsx +127 -0
- package/src/components/markdown.tsx +231 -32
- package/src/components/message-timeline.tsx +1382 -378
- package/src/components/model-picker.tsx +83 -43
- package/src/components/queue-surface-implementation.tsx +1 -1
- package/src/components/session-chrome.tsx +942 -0
- package/src/components/soften-streaming-markdown.ts +205 -0
- package/src/components/stream-reveal.ts +195 -0
- package/src/components/tip-follow.ts +459 -0
- package/src/components/tooltip.tsx +103 -0
- package/src/composer.ts +6 -0
- package/src/hooks/internal.ts +30 -4
- package/src/hooks/use-available-models.ts +51 -4
- package/src/hooks/use-composer.ts +24 -18
- package/src/hooks/use-last-started-turn-policy.ts +95 -0
- package/src/hooks/use-session-events.ts +359 -5
- package/src/hooks/use-voice-input.ts +232 -0
- package/src/index.ts +49 -1
- package/src/lib/clipboard.ts +58 -0
- package/src/lib/format.ts +18 -0
- package/src/lib/motion-inspect.ts +5 -0
- package/src/lib/motion.ts +80 -0
- package/src/model-policy.ts +210 -0
- package/src/session-ui.ts +7 -0
- package/src/session.ts +2 -0
- package/src/timeline/activity-rail.tsx +46 -7
- package/src/timeline/entrance.tsx +10 -0
- package/src/timeline/fold-memory.ts +52 -0
- package/src/timeline/index.ts +11 -1
- package/src/timeline/projection.ts +252 -47
- package/src/timeline/seen-activity-ids.ts +19 -0
- package/src/timeline/shared.tsx +1 -1
- package/src/timeline/tool-renderers.tsx +75 -6
- package/src/timeline/turn-summary.tsx +387 -97
- package/src/timeline/types.ts +47 -0
- package/styles/index.css +99 -7
- package/styles/tokens.css +44 -3
- package/dist/chunk-4F2YLLHP.js.map +0 -1
- package/dist/chunk-M7X4JZOD.js.map +0 -1
- package/dist/chunk-OCHBZ2X7.js.map +0 -1
- package/dist/chunk-PMSGE233.js.map +0 -1
- package/dist/chunk-WAA247AB.js +0 -3858
- package/dist/chunk-WAA247AB.js.map +0 -1
- package/dist/chunk-XVVQP7A4.js.map +0 -1
- package/dist/composer-BMzimGTO.d.ts +0 -528
- package/dist/session-C3tIXLim.d.ts +0 -264
- package/dist/session-context-CAjlaeZb.d.ts +0 -84
- package/dist/session-ui-B_7cfN5u.d.ts +0 -259
- /package/dist/{chunk-BC6RKIHS.js.map → chunk-GZ4KR67U.js.map} +0 -0
|
@@ -1,58 +1,90 @@
|
|
|
1
1
|
import type { ClientModel } from "@opengeni/sdk";
|
|
2
2
|
import { ChevronDownIcon } from "lucide-react";
|
|
3
3
|
import { useId, useMemo } from "react";
|
|
4
|
+
import { groupPickerRowsByBillingClass, type PickerModelRow } from "../model-policy";
|
|
4
5
|
import { cn } from "../lib/cn";
|
|
5
6
|
|
|
6
7
|
export type ModelPickerProps = {
|
|
7
|
-
/**
|
|
8
|
-
models
|
|
9
|
-
/**
|
|
8
|
+
/** Legacy host config models grouped by provider. */
|
|
9
|
+
models?: ClientModel[] | undefined;
|
|
10
|
+
/** Catalog-backed rows grouped by billing class. Preferred when available. */
|
|
11
|
+
rows?: PickerModelRow[] | undefined;
|
|
10
12
|
value?: string | undefined;
|
|
11
|
-
/** Called with the chosen model id when the operator picks a row. */
|
|
12
13
|
onChange: (modelId: string) => void;
|
|
13
14
|
disabled?: boolean | undefined;
|
|
14
15
|
className?: string | undefined;
|
|
15
|
-
/** Visible-to-assistive-technology label. Defaults to "Model". */
|
|
16
16
|
label?: string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* When true (remote compaction v2), non-Codex models remain listed but are
|
|
19
|
+
* disabled. Same picker chrome — only selectability changes.
|
|
20
|
+
*/
|
|
21
|
+
codexOnly?: boolean | undefined;
|
|
17
22
|
};
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
const EMPTY_CLIENT_MODELS: ClientModel[] = [];
|
|
25
|
+
|
|
26
|
+
function isCodexClientModel(model: ClientModel): boolean {
|
|
27
|
+
return model.id.startsWith("codex/") || model.provider === "codex-subscription";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function isCodexPickerRow(row: PickerModelRow): boolean {
|
|
31
|
+
return row.id.startsWith("codex/") || row.provider === "codex-subscription";
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function applyCodexOnlyRows(rows: PickerModelRow[], codexOnly: boolean): PickerModelRow[] {
|
|
35
|
+
if (!codexOnly) return rows;
|
|
36
|
+
return rows.map((row) => {
|
|
37
|
+
if (isCodexPickerRow(row)) return row;
|
|
38
|
+
return {
|
|
39
|
+
...row,
|
|
40
|
+
selectable: false,
|
|
41
|
+
unavailableReason: row.unavailableReason ?? "Codex-only session",
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function providerGroups(models: ClientModel[], codexOnly: boolean) {
|
|
47
|
+
const byProvider = new Map<
|
|
48
|
+
string,
|
|
49
|
+
{ label: string; models: Array<ClientModel & { optionDisabled: boolean }> }
|
|
50
|
+
>();
|
|
51
|
+
for (const model of models) {
|
|
52
|
+
let group = byProvider.get(model.provider);
|
|
53
|
+
if (!group) {
|
|
54
|
+
group = { label: model.providerLabel, models: [] };
|
|
55
|
+
byProvider.set(model.provider, group);
|
|
56
|
+
}
|
|
57
|
+
group.models.push({
|
|
58
|
+
...model,
|
|
59
|
+
optionDisabled: codexOnly && !isCodexClientModel(model),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return [...byProvider.values()];
|
|
63
|
+
}
|
|
64
|
+
|
|
30
65
|
export function ModelPicker({
|
|
31
|
-
models,
|
|
66
|
+
models = EMPTY_CLIENT_MODELS,
|
|
67
|
+
rows,
|
|
32
68
|
value,
|
|
33
69
|
onChange,
|
|
34
70
|
disabled,
|
|
35
71
|
className,
|
|
36
72
|
label = "Model",
|
|
73
|
+
codexOnly = false,
|
|
37
74
|
}: ModelPickerProps) {
|
|
38
75
|
const selectId = useId();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
group.models.push(model);
|
|
51
|
-
}
|
|
52
|
-
return [...byProvider.values()];
|
|
53
|
-
}, [models]);
|
|
76
|
+
const effectiveRows = useMemo(
|
|
77
|
+
() => (rows && rows.length > 0 ? applyCodexOnlyRows(rows, codexOnly) : []),
|
|
78
|
+
[rows, codexOnly],
|
|
79
|
+
);
|
|
80
|
+
const billingGroups = useMemo(
|
|
81
|
+
() => (effectiveRows.length > 0 ? groupPickerRowsByBillingClass(effectiveRows) : []),
|
|
82
|
+
[effectiveRows],
|
|
83
|
+
);
|
|
84
|
+
const providerGroupList = useMemo(() => providerGroups(models, codexOnly), [models, codexOnly]);
|
|
85
|
+
const useBillingGroups = Boolean(effectiveRows.length);
|
|
54
86
|
|
|
55
|
-
if (models.length === 0) {
|
|
87
|
+
if (models.length === 0 && effectiveRows.length === 0) {
|
|
56
88
|
return null;
|
|
57
89
|
}
|
|
58
90
|
|
|
@@ -68,8 +100,6 @@ export function ModelPicker({
|
|
|
68
100
|
disabled={disabled === true}
|
|
69
101
|
aria-label={label}
|
|
70
102
|
className={cn(
|
|
71
|
-
// Sized like the other footer controls; the chevron overlay needs the
|
|
72
|
-
// right padding so the value never collides with it.
|
|
73
103
|
"h-8 max-w-[180px] cursor-pointer appearance-none truncate rounded-og-md bg-transparent",
|
|
74
104
|
"py-0 pl-2 pr-6 text-[13px] text-og-fg-muted",
|
|
75
105
|
"transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg",
|
|
@@ -77,15 +107,25 @@ export function ModelPicker({
|
|
|
77
107
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
78
108
|
)}
|
|
79
109
|
>
|
|
80
|
-
{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
110
|
+
{useBillingGroups
|
|
111
|
+
? billingGroups.map((group) => (
|
|
112
|
+
<optgroup key={group.billingClass} label={group.label}>
|
|
113
|
+
{group.rows.map((row) => (
|
|
114
|
+
<option key={row.id} value={row.id} disabled={!row.selectable}>
|
|
115
|
+
{row.unavailableReason ? `${row.label} (${row.unavailableReason})` : row.label}
|
|
116
|
+
</option>
|
|
117
|
+
))}
|
|
118
|
+
</optgroup>
|
|
119
|
+
))
|
|
120
|
+
: providerGroupList.map((group) => (
|
|
121
|
+
<optgroup key={group.label} label={group.label}>
|
|
122
|
+
{group.models.map((model) => (
|
|
123
|
+
<option key={model.id} value={model.id} disabled={model.optionDisabled}>
|
|
124
|
+
{model.label}
|
|
125
|
+
</option>
|
|
126
|
+
))}
|
|
127
|
+
</optgroup>
|
|
86
128
|
))}
|
|
87
|
-
</optgroup>
|
|
88
|
-
))}
|
|
89
129
|
</select>
|
|
90
130
|
<ChevronDownIcon
|
|
91
131
|
aria-hidden
|
|
@@ -953,7 +953,7 @@ function SortableQueueRow({
|
|
|
953
953
|
disabled={pending !== null}
|
|
954
954
|
onClick={onSteer}
|
|
955
955
|
aria-label={`Steer queued prompt ${index + 1}`}
|
|
956
|
-
title="
|
|
956
|
+
title="Steer — interrupt the current turn and send this message now"
|
|
957
957
|
className="inline-flex h-7 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-xs font-medium text-fg outline-none 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]"
|
|
958
958
|
>
|
|
959
959
|
{pending === "steer" ? (
|