@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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ToolRegistry } from "./registry";
|
|
2
|
-
import type { ActivityItem } from "./types";
|
|
1
|
+
import type { RetainedArtifactLoader, RetainedScreenshotLoader, ToolRegistry } from "./registry.js";
|
|
2
|
+
import type { ActivityItem } from "./types.js";
|
|
3
3
|
export type ActivityRailProps = {
|
|
4
4
|
items: ActivityItem[];
|
|
5
5
|
/** Renderer registry for tool calls. Defaults to {@link defaultToolRegistry}. */
|
|
@@ -12,8 +12,11 @@ export type ActivityRailProps = {
|
|
|
12
12
|
* row is then non-interactive rich content). See {@link MessageTimelineProps}.
|
|
13
13
|
*/
|
|
14
14
|
onMemoryClick?: ((memoryId: string) => void) | undefined;
|
|
15
|
+
loadRetainedScreenshot?: RetainedScreenshotLoader | undefined;
|
|
16
|
+
/** Resolve permanent generated-image receipts through the authenticated host SDK. */
|
|
17
|
+
loadRetainedArtifact?: RetainedArtifactLoader | undefined;
|
|
15
18
|
/** Drop the left rule + indent (used inside a folded turn summary). */
|
|
16
19
|
bare?: boolean | undefined;
|
|
17
20
|
className?: string | undefined;
|
|
18
21
|
};
|
|
19
|
-
export declare function ActivityRail({ items, toolRegistry, onOpenSession, onMemoryClick, bare, className, }: ActivityRailProps): import("react
|
|
22
|
+
export declare function ActivityRail({ items, toolRegistry, onOpenSession, onMemoryClick, loadRetainedScreenshot, loadRetainedArtifact, bare, className, }: ActivityRailProps): import("react").JSX.Element;
|
|
@@ -6,7 +6,7 @@ import { type ReactNode } from "react";
|
|
|
6
6
|
export declare function DisclosureDefaultsProvider({ defaultOpen, children, }: {
|
|
7
7
|
defaultOpen: boolean;
|
|
8
8
|
children: ReactNode;
|
|
9
|
-
}): import("react
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
10
|
/**
|
|
11
11
|
* The forced initial-open seed from an ancestor {@link DisclosureDefaultsProvider},
|
|
12
12
|
* or `undefined` when none is mounted (the inert, app-default case).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SessionEvent } from "@opengeni/sdk";
|
|
2
|
-
import type { FleetDecisionItem } from "./types";
|
|
2
|
+
import type { FleetDecisionItem } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Project the identity-free fleet event into the deliberately smaller UI
|
|
5
5
|
* contract. This is a trust boundary: session event payloads are untyped, so
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { FleetDecisionItem } from "./types";
|
|
1
|
+
import type { FleetDecisionItem } from "./types.js";
|
|
2
2
|
type RowJsx = typeof import("react/jsx-runtime").jsx;
|
|
3
3
|
type RowJsxs = typeof import("react/jsx-runtime").jsxs;
|
|
4
4
|
export default function FleetDecisionRow({ item, d: ActivityDisclosure, b: BodyNote, j, s, }: {
|
|
5
5
|
item: FleetDecisionItem;
|
|
6
|
-
d: typeof import("./shared").ActivityDisclosure;
|
|
7
|
-
b: typeof import("./shared").BodyNote;
|
|
6
|
+
d: typeof import("./shared.js").ActivityDisclosure;
|
|
7
|
+
b: typeof import("./shared.js").BodyNote;
|
|
8
8
|
j: RowJsx;
|
|
9
9
|
s: RowJsxs;
|
|
10
10
|
}): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
package/dist/timeline/index.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { buildTimeline, creditExhaustedFromEvents, extractSessionRef, groupTimeline, sessionStatusFromEvents, mcpToolLeaf, toolDisplayName, toolMatchesLeaf, } from "./projection";
|
|
2
|
-
export type { ActivityItem, AgentMessageItem, AuthNeededItem, ContextCompactionItem, FleetDecisionItem, FleetDecisionScoreItem, GoalItem, MachineInputBatchItem, MachineInputMember, MemoryItem, NoticeItem, ReasoningItem, SandboxItem, SessionStatusItem, TimelineGroup, TimelineItem, TurnEndItem, ToolCallItem, UserMessageItem, WorkerCompletionItem, WorkerItem, } from "./types";
|
|
3
|
-
export { createToolRegistry, rawTypeOf } from "./registry";
|
|
4
|
-
export type { CreateToolRegistryOptions, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./registry";
|
|
5
|
-
export { createDefaultToolRegistry, defaultToolRegistry } from "./tool-renderers";
|
|
6
|
-
export { ActivityRail } from "./activity-rail";
|
|
7
|
-
export type { ActivityRailProps } from "./activity-rail";
|
|
8
|
-
export { ActivityDisclosure, BodyNote, MediaEmpty, MediaSkeleton, PayloadBlock, ScreenshotFigure, TermBlock, Thumbnail, } from "./shared";
|
|
9
|
-
export type { ActivityDisclosureProps, DisclosureChip } from "./shared";
|
|
10
|
-
export { LightboxProvider, useLightbox, useLightboxOptional } from "./screenshot-lightbox";
|
|
11
|
-
export { DisclosureDefaultsProvider, useForcedDefaultOpen } from "./disclosure-context";
|
|
12
|
-
export { FoldMemoryProvider, inheritFoldRestingState, useFoldMemory } from "./fold-memory";
|
|
13
|
-
export type { FoldRestingState } from "./fold-memory";
|
|
14
|
-
export { SeenActivityIdsProvider, useSeenActivityIds } from "./seen-activity-ids";
|
|
15
|
-
export { TimelineComputeLabelProvider, useTimelineComputeLabel } from "./compute-label";
|
|
16
|
-
export { BUILT_IN_TURN_SUMMARY_FACET_IDS, TurnSummary, useTurnSettleOpen } from "./turn-summary";
|
|
17
|
-
export type { BuiltInTurnSummaryFacetId, TurnOutcome, TurnSummaryContext, TurnSummaryFacet, TurnSummaryFacetConfiguration, TurnSummaryFacetResult, TurnSummaryOptions, TurnSummaryProps, } from "./turn-summary";
|
|
18
|
-
export { applyPatchOps, applyPatchOpsFromToolItem, parseFreeformApplyPatch, controlCaret, execTruncated, isApplyPatch, isExecSessionLostBanner, looksBinary, parseExecBannerSessionId, parseToolArgs,
|
|
19
|
-
export type { ApplyPatchOperation } from "./parsers";
|
|
1
|
+
export { buildTimeline, creditExhaustedFromEvents, extractSessionRef, groupTimeline, sessionStatusFromEvents, mcpToolLeaf, toolDisplayName, toolMatchesLeaf, } from "./projection.js";
|
|
2
|
+
export type { ActivityItem, AgentMessageItem, AuthNeededItem, ContextCompactionItem, FleetDecisionItem, FleetDecisionScoreItem, GoalItem, MachineInputBatchItem, MachineInputMember, MemoryItem, NoticeItem, ReasoningItem, SandboxItem, SessionStatusItem, TimelineGroup, TimelineItem, TimelineAnnotationSourceDescriptor, TurnEndItem, ToolCallItem, UserMessageItem, WorkerCompletionItem, WorkerItem, } from "./types.js";
|
|
3
|
+
export { createToolRegistry, rawTypeOf } from "./registry.js";
|
|
4
|
+
export type { CreateToolRegistryOptions, RetainedArtifactLoader, RetainedScreenshotLoader, VideoArtifactPlaybackLoader, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./registry.js";
|
|
5
|
+
export { createDefaultToolRegistry, defaultToolRegistry } from "./tool-renderers.js";
|
|
6
|
+
export { ActivityRail } from "./activity-rail.js";
|
|
7
|
+
export type { ActivityRailProps } from "./activity-rail.js";
|
|
8
|
+
export { ActivityDisclosure, BodyNote, MediaEmpty, MediaSkeleton, PayloadBlock, ScreenshotFigure, TermBlock, Thumbnail, } from "./shared.js";
|
|
9
|
+
export type { ActivityDisclosureProps, DisclosureChip } from "./shared.js";
|
|
10
|
+
export { LightboxProvider, useLightbox, useLightboxOptional } from "./screenshot-lightbox.js";
|
|
11
|
+
export { DisclosureDefaultsProvider, useForcedDefaultOpen } from "./disclosure-context.js";
|
|
12
|
+
export { FoldMemoryProvider, inheritFoldRestingState, useFoldMemory } from "./fold-memory.js";
|
|
13
|
+
export type { FoldRestingState } from "./fold-memory.js";
|
|
14
|
+
export { SeenActivityIdsProvider, useSeenActivityIds } from "./seen-activity-ids.js";
|
|
15
|
+
export { TimelineComputeLabelProvider, useTimelineComputeLabel } from "./compute-label.js";
|
|
16
|
+
export { BUILT_IN_TURN_SUMMARY_FACET_IDS, TurnSummary, useTurnSettleOpen } from "./turn-summary.js";
|
|
17
|
+
export type { BuiltInTurnSummaryFacetId, TurnOutcome, TurnSummaryContext, TurnSummaryFacet, TurnSummaryFacetConfiguration, TurnSummaryFacetResult, TurnSummaryOptions, TurnSummaryProps, } from "./turn-summary.js";
|
|
18
|
+
export { applyPatchOps, applyPatchOpsFromToolItem, parseFreeformApplyPatch, controlCaret, execTruncated, isApplyPatch, isExecSessionLostBanner, looksBinary, parseExecBannerSessionId, parseToolArgs, sandboxCommandExitCode, stripExecBanner, tailPeek, unwrapMcpOutput, v4aToGitFileDiff, } from "./parsers.js";
|
|
19
|
+
export type { ApplyPatchOperation } from "./parsers.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type GitFileDiff } from "@opengeni/sdk";
|
|
1
|
+
import { type GeneratedImageReceipt, type GitFileDiff, type RetainedArtifactMetadata } from "@opengeni/sdk";
|
|
2
|
+
export type { GeneratedImageReceipt };
|
|
2
3
|
/** Recover the exit code from a sandbox exec banner (`Process exited with code N`). */
|
|
3
4
|
export declare function sandboxCommandExitCode(out: unknown): number | null;
|
|
4
5
|
/**
|
|
@@ -68,8 +69,6 @@ export declare function isApplyPatch(item: {
|
|
|
68
69
|
name: string;
|
|
69
70
|
raw: unknown;
|
|
70
71
|
}): boolean;
|
|
71
|
-
/** Deep-redact secret-looking values so arguments never leak a key into the UI. */
|
|
72
|
-
export declare function redactSecrets(value: unknown): unknown;
|
|
73
72
|
/** Parse tool arguments that may arrive as a JSON string or an object. */
|
|
74
73
|
export declare function parseToolArgs(args: unknown): Record<string, unknown>;
|
|
75
74
|
/** The last non-empty line of a string -- the compact "what happened" peek. */
|
|
@@ -95,6 +94,10 @@ export declare function unwrapMcpOutput(output: unknown): {
|
|
|
95
94
|
* text/empty presentation).
|
|
96
95
|
*/
|
|
97
96
|
export declare function screenshotDataUrl(out: unknown): string | null;
|
|
97
|
+
/** Parse the closed retained-screenshot receipt carried by new tool events. */
|
|
98
|
+
export declare function retainedScreenshotMetadata(out: unknown): RetainedArtifactMetadata | null;
|
|
99
|
+
/** Parse the closed permanent generated-image receipt from native/function tools. */
|
|
100
|
+
export declare function generatedImageReceipt(out: unknown): GeneratedImageReceipt | null;
|
|
98
101
|
export type TimelineMediaPreview = {
|
|
99
102
|
type: "media_preview";
|
|
100
103
|
mediaType: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { TimelineGroup, TimelineItem } from "./types";
|
|
3
|
-
export { toolDisplayName, mcpToolLeaf, toolMatchesLeaf } from "./tool-display-name";
|
|
1
|
+
import { type SessionEvent, type SessionStatus } from "@opengeni/sdk";
|
|
2
|
+
import type { TimelineGroup, TimelineItem } from "./types.js";
|
|
3
|
+
export { toolDisplayName, mcpToolLeaf, toolMatchesLeaf } from "./tool-display-name.js";
|
|
4
4
|
export declare function buildTimeline(events: SessionEvent[]): TimelineItem[];
|
|
5
5
|
/**
|
|
6
6
|
* Codex subscription web search can return private citation handles without
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
import type { RetainedArtifactReference, VideoArtifactPlaybackSource } from "@opengeni/sdk";
|
|
1
2
|
import type { ComponentType } from "react";
|
|
2
|
-
import type { ToolCallItem } from "./types";
|
|
3
|
+
import type { ToolCallItem } from "./types.js";
|
|
3
4
|
export type ToolRendererProps = {
|
|
4
5
|
item: ToolCallItem;
|
|
6
|
+
loadRetainedScreenshot?: RetainedScreenshotLoader | undefined;
|
|
7
|
+
loadRetainedArtifact?: RetainedArtifactLoader | undefined;
|
|
5
8
|
};
|
|
9
|
+
export type RetainedScreenshotLoader = (artifact: RetainedArtifactReference, signal: AbortSignal) => Promise<Uint8Array | null>;
|
|
10
|
+
export type RetainedArtifactLoader = (artifact: RetainedArtifactReference, signal: AbortSignal) => Promise<Uint8Array | {
|
|
11
|
+
url: string;
|
|
12
|
+
} | null>;
|
|
13
|
+
/** Mint an expiring source for native browser playback without loading video bytes in JS. */
|
|
14
|
+
export type VideoArtifactPlaybackLoader = (artifactId: string, signal: AbortSignal) => Promise<VideoArtifactPlaybackSource>;
|
|
6
15
|
export type ToolRenderer = ComponentType<ToolRendererProps>;
|
|
7
16
|
/** A registry entry: which key it matches and the component that renders it. */
|
|
8
17
|
export type ToolRegistryEntry = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
type LightboxController = {
|
|
3
|
-
open: (src: string, caption?: string) => void;
|
|
3
|
+
open: (src: string, caption?: string, source?: HTMLElement | null, label?: string) => void;
|
|
4
4
|
};
|
|
5
5
|
/** Open the app-level screenshot lightbox. No-op outside a `LightboxProvider`. */
|
|
6
6
|
export declare function useLightbox(): LightboxController;
|
|
@@ -22,5 +22,5 @@ export declare function useLightboxOptional(): LightboxController | null;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare function LightboxProvider({ children }: {
|
|
24
24
|
children: ReactNode;
|
|
25
|
-
}): import("react
|
|
25
|
+
}): import("react").JSX.Element;
|
|
26
26
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import type { ToolCallTruncation } from "./types.js";
|
|
2
3
|
/**
|
|
3
4
|
* A subtle settle signal — see the CHIP DOCTRINE above. The closed tone set.
|
|
4
5
|
* `"interrupted"` is a calm neutral tone for cancelled items — no dot, same
|
|
@@ -8,6 +9,10 @@ export type DisclosureChip = {
|
|
|
8
9
|
tone: "ok" | "bad" | "muted" | "interrupted";
|
|
9
10
|
text: string;
|
|
10
11
|
};
|
|
12
|
+
export declare function ToolCallTruncationProvider({ value, children, }: {
|
|
13
|
+
value: ToolCallTruncation | null;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}): import("react").JSX.Element;
|
|
11
16
|
export type ActivityDisclosureProps = {
|
|
12
17
|
icon: ReactNode;
|
|
13
18
|
/** Icon tint. Defaults to the muted foreground; renderers pass accent/failed. */
|
|
@@ -52,6 +57,8 @@ export type ActivityDisclosureProps = {
|
|
|
52
57
|
cancelled?: boolean | undefined;
|
|
53
58
|
/** When false the row is a static line (no expand affordance). */
|
|
54
59
|
expandable?: boolean | undefined;
|
|
60
|
+
/** Seed this individual disclosure open; user interaction still owns it afterwards. */
|
|
61
|
+
defaultOpen?: boolean | undefined;
|
|
55
62
|
children?: ReactNode | undefined;
|
|
56
63
|
};
|
|
57
64
|
/**
|
|
@@ -60,7 +67,7 @@ export type ActivityDisclosureProps = {
|
|
|
60
67
|
* inline media, and at most one right-gutter settle chip. Compact by default;
|
|
61
68
|
* the body mounts only when expanded.
|
|
62
69
|
*/
|
|
63
|
-
export declare function ActivityDisclosure({ icon, iconTone: iconToneProp, title, titleMono, running, preview, media, chip: chipProp, failed, cancelled, expandable, children, }: ActivityDisclosureProps): import("react
|
|
70
|
+
export declare function ActivityDisclosure({ icon, iconTone: iconToneProp, title, titleMono, running, preview, media, chip: chipProp, failed, cancelled, expandable, defaultOpen, children, }: ActivityDisclosureProps): import("react").JSX.Element;
|
|
64
71
|
export declare function TermBlock({ command, workdir, output, live, tailLines, failed, }: {
|
|
65
72
|
/**
|
|
66
73
|
* The command shown in the prompt header. Pass `null` when the row title
|
|
@@ -81,25 +88,25 @@ export declare function TermBlock({ command, workdir, output, live, tailLines, f
|
|
|
81
88
|
* toggle reveals the rest (never a dead affordance). Defaults to 12.
|
|
82
89
|
*/
|
|
83
90
|
tailLines?: number | undefined;
|
|
84
|
-
}): import("react
|
|
91
|
+
}): import("react").JSX.Element;
|
|
85
92
|
export declare function PayloadBlock({ label, value, failed, }: {
|
|
86
93
|
label: string;
|
|
87
94
|
value: unknown;
|
|
88
95
|
failed?: boolean | undefined;
|
|
89
|
-
}): import("react
|
|
96
|
+
}): import("react").JSX.Element | null;
|
|
90
97
|
/** A quiet inline note inside an expanded body (lost output, empty frame, …). */
|
|
91
98
|
export declare function BodyNote({ children, tone, }: {
|
|
92
99
|
children: ReactNode;
|
|
93
100
|
tone?: "error" | "muted" | undefined;
|
|
94
|
-
}): import("react
|
|
101
|
+
}): import("react").JSX.Element;
|
|
95
102
|
/**
|
|
96
103
|
* A loading screenshot placeholder. A faint camera glyph over a shimmering box,
|
|
97
104
|
* so a still frame of the running state reads unambiguously as "capturing" — not
|
|
98
105
|
* a broken thumbnail.
|
|
99
106
|
*/
|
|
100
|
-
export declare function MediaSkeleton(): import("react
|
|
107
|
+
export declare function MediaSkeleton(): import("react").JSX.Element;
|
|
101
108
|
/** A standardized "tool ran, produced no image" placeholder in the media slot. */
|
|
102
|
-
export declare function MediaEmpty(): import("react
|
|
109
|
+
export declare function MediaEmpty(): import("react").JSX.Element;
|
|
103
110
|
/**
|
|
104
111
|
* A small inline screenshot thumbnail that opens the app lightbox on click.
|
|
105
112
|
*
|
|
@@ -107,19 +114,23 @@ export declare function MediaEmpty(): import("react/jsx-runtime").JSX.Element;
|
|
|
107
114
|
* Outside one it degrades to a plain, non-interactive image — never a dead
|
|
108
115
|
* "Expand" button that announces an action it cannot perform.
|
|
109
116
|
*/
|
|
110
|
-
export declare function Thumbnail({ src, caption, alt, }: {
|
|
117
|
+
export declare function Thumbnail({ src, caption, alt, expandLabel, lightboxLabel, }: {
|
|
111
118
|
src: string;
|
|
112
119
|
caption?: string | undefined;
|
|
113
120
|
alt?: string;
|
|
114
|
-
|
|
121
|
+
expandLabel?: string | undefined;
|
|
122
|
+
lightboxLabel?: string | undefined;
|
|
123
|
+
}): import("react").JSX.Element;
|
|
115
124
|
/**
|
|
116
125
|
* The expanded screenshot inside a tool body: a contained, clickable preview
|
|
117
126
|
* (opens the lightbox) with a quiet caption. Constrained height + object-contain
|
|
118
127
|
* so it never breaks the row layout. Like {@link Thumbnail}, it degrades to a
|
|
119
128
|
* plain image outside a `LightboxProvider`.
|
|
120
129
|
*/
|
|
121
|
-
export declare function ScreenshotFigure({ src, caption, alt, }: {
|
|
130
|
+
export declare function ScreenshotFigure({ src, caption, alt, expandLabel, lightboxLabel, }: {
|
|
122
131
|
src: string;
|
|
123
132
|
caption?: string | undefined;
|
|
124
133
|
alt?: string;
|
|
125
|
-
|
|
134
|
+
expandLabel?: string | undefined;
|
|
135
|
+
lightboxLabel?: string | undefined;
|
|
136
|
+
}): import("react").JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { GitFileDiff } from "@opengeni/sdk";
|
|
2
2
|
export declare function ToolDiff({ files }: {
|
|
3
3
|
files: GitFileDiff[];
|
|
4
|
-
}): import("react
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
5
|
/** Raw-patch fallback for a V4A hunk string the parser could not structure. */
|
|
6
6
|
export declare function RawPatch({ diff }: {
|
|
7
7
|
diff: string;
|
|
8
|
-
}): import("react
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createToolRegistry, type ToolRegistry } from "./registry";
|
|
1
|
+
import { createToolRegistry, type ToolRegistry } from "./registry.js";
|
|
2
2
|
/** The built-in tool renderer registry: every first-party tool plus a fallback. */
|
|
3
3
|
export declare const defaultToolRegistry: ToolRegistry;
|
|
4
4
|
/** Build a registry that extends the built-ins with consumer entries/fallback. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
-
import type { ActivityItem, ToolCallItem, TurnOutcome } from "./types";
|
|
3
|
-
export type { TurnOutcome } from "./types";
|
|
2
|
+
import type { ActivityItem, ToolCallItem, TurnOutcome } from "./types.js";
|
|
3
|
+
export type { TurnOutcome } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* True while settle chrome is active (open beat, slow collapse, or the short
|
|
6
6
|
* cancel-close latch). Nested cluster chips stay mounted and forced OPEN for
|
|
@@ -113,4 +113,4 @@ export type TurnSummaryProps = {
|
|
|
113
113
|
/** The rendered activity rail revealed on expand. */
|
|
114
114
|
children: ReactNode;
|
|
115
115
|
};
|
|
116
|
-
export declare function TurnSummary({ items, outcome, failureText, durationMs, defaultOpen, bare, facets: facetConfiguration, settleFold, foldKey, copyText, contextCompactionCount, children, }: TurnSummaryProps): import("react
|
|
116
|
+
export declare function TurnSummary({ items, outcome, failureText, durationMs, defaultOpen, bare, facets: facetConfiguration, settleFold, foldKey, copyText, contextCompactionCount, children, }: TurnSummaryProps): import("react").JSX.Element;
|
package/dist/timeline/types.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import type { ResourceRef, SessionStatus, ToolAuthNeededPayload, ToolRef } from "@opengeni/sdk";
|
|
1
|
+
import type { MediaGenerationResult, ResourceRef, SessionStatus, TimelineAnnotation, TimelineAnnotationSource, ToolAuthNeededPayload, ToolRef } from "@opengeni/sdk";
|
|
2
|
+
export type TimelineAnnotationSourceDescriptor = Omit<TimelineAnnotationSource, "startOffset" | "endOffset" | "contextBefore" | "contextAfter"> & {
|
|
3
|
+
text: string;
|
|
4
|
+
};
|
|
2
5
|
export type UserMessageItem = {
|
|
3
6
|
kind: "user-message";
|
|
4
7
|
id: string;
|
|
5
8
|
text: string;
|
|
9
|
+
annotations?: TimelineAnnotation[] | undefined;
|
|
10
|
+
annotationSource?: TimelineAnnotationSourceDescriptor | undefined;
|
|
6
11
|
presentation?: {
|
|
7
12
|
kind: "realtime_voice" | "realtime_voice_handoff";
|
|
8
13
|
/** Full bounded execution context sent with this visible voice request. */
|
|
@@ -13,6 +18,13 @@ export type UserMessageItem = {
|
|
|
13
18
|
/** Tools requested for the turn this message starts. */
|
|
14
19
|
tools: ToolRef[];
|
|
15
20
|
occurredAt: string;
|
|
21
|
+
/** Local-only delivery projection; absent for authoritative durable events. */
|
|
22
|
+
delivery?: {
|
|
23
|
+
state: "sending" | "queued" | "failed";
|
|
24
|
+
error?: string | undefined;
|
|
25
|
+
onRetry?: (() => void) | undefined;
|
|
26
|
+
onRemove?: (() => void) | undefined;
|
|
27
|
+
} | undefined;
|
|
16
28
|
};
|
|
17
29
|
export type AgentMessageItem = {
|
|
18
30
|
kind: "agent-message";
|
|
@@ -22,6 +34,8 @@ export type AgentMessageItem = {
|
|
|
22
34
|
/** Still receiving deltas (no completed/turn-end seen yet). */
|
|
23
35
|
streaming: boolean;
|
|
24
36
|
occurredAt: string;
|
|
37
|
+
/** Available only after the canonical completed event lands. */
|
|
38
|
+
annotationSource?: TimelineAnnotationSourceDescriptor | undefined;
|
|
25
39
|
};
|
|
26
40
|
export type ReasoningItem = {
|
|
27
41
|
kind: "reasoning";
|
|
@@ -31,6 +45,22 @@ export type ReasoningItem = {
|
|
|
31
45
|
streaming: boolean;
|
|
32
46
|
occurredAt: string;
|
|
33
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Bounded delivery metadata carried by a projected tool-output event. The
|
|
50
|
+
* canonical event remains unchanged; this fact only explains what the current
|
|
51
|
+
* timeline surface could render and whether separately retained full evidence
|
|
52
|
+
* exists.
|
|
53
|
+
*/
|
|
54
|
+
export type ToolCallTruncation = {
|
|
55
|
+
truncated: true;
|
|
56
|
+
surface: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
omittedBytes: number | null;
|
|
59
|
+
fullEvidence: {
|
|
60
|
+
available: boolean;
|
|
61
|
+
reason: string | null;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
34
64
|
export type ToolCallItem = {
|
|
35
65
|
kind: "tool-call";
|
|
36
66
|
id: string;
|
|
@@ -39,6 +69,7 @@ export type ToolCallItem = {
|
|
|
39
69
|
name: string;
|
|
40
70
|
arguments: unknown;
|
|
41
71
|
output: unknown;
|
|
72
|
+
truncation?: ToolCallTruncation | null;
|
|
42
73
|
/**
|
|
43
74
|
* The provider-native tool item (`agent.toolCall.created.payload.raw`). Carries
|
|
44
75
|
* `type` (e.g. `apply_patch_call`, `computer_call`, `hosted_tool_call`) and the
|
|
@@ -49,6 +80,8 @@ export type ToolCallItem = {
|
|
|
49
80
|
raw: unknown;
|
|
50
81
|
status: "running" | "complete" | "failed" | "cancelled";
|
|
51
82
|
occurredAt: string;
|
|
83
|
+
/** Canonical textual projection of the settled tool output. */
|
|
84
|
+
annotationSource?: TimelineAnnotationSourceDescriptor | undefined;
|
|
52
85
|
};
|
|
53
86
|
/**
|
|
54
87
|
* An orchestration call against another session — the manager spawning or
|
|
@@ -210,10 +243,11 @@ export type ContextCompactionItem = {
|
|
|
210
243
|
};
|
|
211
244
|
export type MachineInputMember = {
|
|
212
245
|
id: string;
|
|
213
|
-
kind: "scheduled_occurrence" | "goal_continuation" | "agent_message" | "agent_steer_instruction" | "child_terminal_result";
|
|
246
|
+
kind: "scheduled_occurrence" | "goal_continuation" | "agent_message" | "agent_steer_instruction" | "child_terminal_result" | "media_generation_result";
|
|
214
247
|
classification: "success" | "failure" | "action_required" | "info";
|
|
215
248
|
sourceId: string;
|
|
216
249
|
summary: string;
|
|
250
|
+
result?: MediaGenerationResult | undefined;
|
|
217
251
|
};
|
|
218
252
|
/**
|
|
219
253
|
* One or more durable non-human inputs that joined the following agent turn.
|
|
@@ -240,6 +274,10 @@ export type AuthNeededItem = {
|
|
|
240
274
|
kind: "auth-needed";
|
|
241
275
|
id: string;
|
|
242
276
|
turnId: string | null;
|
|
277
|
+
/** The runtime surface that requested recovery, when the event is an MCP auth signal. */
|
|
278
|
+
serverId: string | null;
|
|
279
|
+
/** Durable event family that produced this notice. */
|
|
280
|
+
source?: "tool" | "credential" | "capability" | undefined;
|
|
243
281
|
/** The connection's registrable domain, e.g. "linear.app". */
|
|
244
282
|
providerDomain: string;
|
|
245
283
|
/** The lapsed connection to reconnect, when the row survived. */
|
|
@@ -253,6 +291,8 @@ export type AuthNeededItem = {
|
|
|
253
291
|
toolName: string | null;
|
|
254
292
|
/** A pre-minted authorization URL, when the broker already produced one. */
|
|
255
293
|
authorizationUrl: string | null;
|
|
294
|
+
/** Agent-selected catalog recommendation. The host still owns authorization. */
|
|
295
|
+
capability?: NonNullable<ToolAuthNeededPayload["capability"]> | null | undefined;
|
|
256
296
|
occurredAt: string;
|
|
257
297
|
};
|
|
258
298
|
export type TurnOutcome = "complete" | "failed" | "cancelled";
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// src/components/timeline-annotation-selection.tsx
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var INTERACTIVE_SELECTOR = 'a,button,input,textarea,select,summary,[role="button"],[contenteditable="true"],[tabindex]:not([tabindex="-1"])';
|
|
6
|
+
var SOURCE_CONTEXT_BYTES = 160;
|
|
7
|
+
var MAX_QUOTE_BYTES = 16 * 1024;
|
|
8
|
+
function utf8Prefix(value, maxBytes) {
|
|
9
|
+
let output = "";
|
|
10
|
+
let bytes = 0;
|
|
11
|
+
for (const character of value) {
|
|
12
|
+
const next = new TextEncoder().encode(character).byteLength;
|
|
13
|
+
if (bytes + next > maxBytes) break;
|
|
14
|
+
output += character;
|
|
15
|
+
bytes += next;
|
|
16
|
+
}
|
|
17
|
+
return output;
|
|
18
|
+
}
|
|
19
|
+
function utf8Suffix(value, maxBytes) {
|
|
20
|
+
let output = "";
|
|
21
|
+
let bytes = 0;
|
|
22
|
+
for (const character of [...value].reverse()) {
|
|
23
|
+
const next = new TextEncoder().encode(character).byteLength;
|
|
24
|
+
if (bytes + next > maxBytes) break;
|
|
25
|
+
output = character + output;
|
|
26
|
+
bytes += next;
|
|
27
|
+
}
|
|
28
|
+
return output;
|
|
29
|
+
}
|
|
30
|
+
function selectionElement(node) {
|
|
31
|
+
return node instanceof Element ? node : node?.parentElement ?? null;
|
|
32
|
+
}
|
|
33
|
+
function containingSource(node) {
|
|
34
|
+
const element = selectionElement(node);
|
|
35
|
+
const source = element?.closest("[data-og-annotation-source-key]");
|
|
36
|
+
return source instanceof HTMLElement ? source : null;
|
|
37
|
+
}
|
|
38
|
+
function isInteractiveSelection(node, boundary) {
|
|
39
|
+
const element = selectionElement(node);
|
|
40
|
+
const interactive = element?.closest(INTERACTIVE_SELECTOR);
|
|
41
|
+
return interactive instanceof Element && boundary.contains(interactive);
|
|
42
|
+
}
|
|
43
|
+
function occurrenceOffsets(text, quote) {
|
|
44
|
+
const offsets = [];
|
|
45
|
+
let cursor = 0;
|
|
46
|
+
while (cursor <= text.length - quote.length) {
|
|
47
|
+
const offset = text.indexOf(quote, cursor);
|
|
48
|
+
if (offset < 0) break;
|
|
49
|
+
offsets.push(offset);
|
|
50
|
+
cursor = offset + 1;
|
|
51
|
+
}
|
|
52
|
+
return offsets;
|
|
53
|
+
}
|
|
54
|
+
function selectedOccurrence(boundary, range, quote) {
|
|
55
|
+
try {
|
|
56
|
+
const prefix = range.cloneRange();
|
|
57
|
+
prefix.selectNodeContents(boundary);
|
|
58
|
+
prefix.setEnd(range.startContainer, range.startOffset);
|
|
59
|
+
return occurrenceOffsets(prefix.toString(), quote).length;
|
|
60
|
+
} catch {
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function annotationId() {
|
|
65
|
+
if (typeof globalThis.crypto?.randomUUID === "function") {
|
|
66
|
+
return globalThis.crypto.randomUUID();
|
|
67
|
+
}
|
|
68
|
+
return `annotation-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
69
|
+
}
|
|
70
|
+
function buildCandidate(root, sources, keyboard) {
|
|
71
|
+
const selection = document.getSelection();
|
|
72
|
+
if (!selection || selection.rangeCount !== 1 || selection.isCollapsed) return null;
|
|
73
|
+
const range = selection.getRangeAt(0);
|
|
74
|
+
const startBoundary = containingSource(range.startContainer);
|
|
75
|
+
const endBoundary = containingSource(range.endContainer);
|
|
76
|
+
if (!startBoundary || startBoundary !== endBoundary || !root.contains(startBoundary)) return null;
|
|
77
|
+
if (isInteractiveSelection(range.startContainer, startBoundary) || isInteractiveSelection(range.endContainer, startBoundary)) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const sourceKey = startBoundary.dataset.ogAnnotationSourceKey;
|
|
81
|
+
const source = sourceKey ? sources.get(sourceKey) : void 0;
|
|
82
|
+
const quote = selection.toString();
|
|
83
|
+
if (!source || quote.trim().length === 0 || new TextEncoder().encode(quote).byteLength > MAX_QUOTE_BYTES) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const sourceOffsets = occurrenceOffsets(source.text, quote);
|
|
87
|
+
if (sourceOffsets.length === 0) return null;
|
|
88
|
+
const occurrence = selectedOccurrence(startBoundary, range, quote);
|
|
89
|
+
const startOffset = sourceOffsets[Math.min(occurrence, sourceOffsets.length - 1)];
|
|
90
|
+
const endOffset = startOffset + quote.length;
|
|
91
|
+
const rect = range.getBoundingClientRect();
|
|
92
|
+
if (rect.width === 0 && rect.height === 0) return null;
|
|
93
|
+
return {
|
|
94
|
+
annotation: {
|
|
95
|
+
id: annotationId(),
|
|
96
|
+
quote,
|
|
97
|
+
note: "",
|
|
98
|
+
source: {
|
|
99
|
+
kind: source.kind,
|
|
100
|
+
eventId: source.eventId,
|
|
101
|
+
eventType: source.eventType,
|
|
102
|
+
sequence: source.sequence,
|
|
103
|
+
turnId: source.turnId,
|
|
104
|
+
startOffset,
|
|
105
|
+
endOffset,
|
|
106
|
+
contextBefore: utf8Suffix(source.text.slice(0, startOffset), SOURCE_CONTEXT_BYTES),
|
|
107
|
+
contextAfter: utf8Prefix(source.text.slice(endOffset), SOURCE_CONTEXT_BYTES),
|
|
108
|
+
...source.label ? { label: source.label } : {}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
left: Math.min(Math.max(12, rect.left + rect.width / 2), window.innerWidth - 12),
|
|
112
|
+
top: rect.bottom + 48 <= window.innerHeight ? rect.bottom + 8 : Math.max(12, rect.top - 40),
|
|
113
|
+
keyboard
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function TimelineAnnotationSelection({
|
|
117
|
+
rootRef,
|
|
118
|
+
sources,
|
|
119
|
+
onAnnotate
|
|
120
|
+
}) {
|
|
121
|
+
const [candidate, setCandidate] = useState(null);
|
|
122
|
+
const buttonRef = useRef(null);
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
const root = rootRef.current;
|
|
125
|
+
if (!root || !onAnnotate) {
|
|
126
|
+
setCandidate(null);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const update = (keyboard) => {
|
|
130
|
+
setCandidate(buildCandidate(root, sources, keyboard));
|
|
131
|
+
};
|
|
132
|
+
const onPointerUp = () => window.setTimeout(() => update(false), 0);
|
|
133
|
+
const onKeyUp = (event) => {
|
|
134
|
+
if (event.key === "Escape") {
|
|
135
|
+
setCandidate(null);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
window.setTimeout(() => update(true), 0);
|
|
139
|
+
};
|
|
140
|
+
const onPointerDown = (event) => {
|
|
141
|
+
if (candidate && !(event.target instanceof Node && buttonRef.current?.contains(event.target))) {
|
|
142
|
+
setCandidate(null);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const onDocumentKeyDown = (event) => {
|
|
146
|
+
if (event.key === "Escape") setCandidate(null);
|
|
147
|
+
};
|
|
148
|
+
root.addEventListener("pointerup", onPointerUp);
|
|
149
|
+
root.addEventListener("keyup", onKeyUp);
|
|
150
|
+
document.addEventListener("pointerdown", onPointerDown);
|
|
151
|
+
document.addEventListener("keydown", onDocumentKeyDown);
|
|
152
|
+
return () => {
|
|
153
|
+
root.removeEventListener("pointerup", onPointerUp);
|
|
154
|
+
root.removeEventListener("keyup", onKeyUp);
|
|
155
|
+
document.removeEventListener("pointerdown", onPointerDown);
|
|
156
|
+
document.removeEventListener("keydown", onDocumentKeyDown);
|
|
157
|
+
};
|
|
158
|
+
}, [candidate, onAnnotate, rootRef, sources]);
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
if (candidate?.keyboard) buttonRef.current?.focus();
|
|
161
|
+
}, [candidate]);
|
|
162
|
+
if (!candidate || !onAnnotate || typeof document === "undefined") return null;
|
|
163
|
+
return createPortal(
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
"button",
|
|
166
|
+
{
|
|
167
|
+
ref: buttonRef,
|
|
168
|
+
type: "button",
|
|
169
|
+
style: { left: candidate.left, top: candidate.top },
|
|
170
|
+
className: "og-root fixed z-[80] -translate-x-1/2 rounded-full border border-og-border bg-og-surface-1 px-3 py-1.5 text-og-sm font-medium text-og-fg shadow-lg outline-hidden transition hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent pointer-coarse:min-h-[44px]",
|
|
171
|
+
onClick: () => {
|
|
172
|
+
onAnnotate(candidate.annotation);
|
|
173
|
+
document.getSelection()?.removeAllRanges();
|
|
174
|
+
setCandidate(null);
|
|
175
|
+
},
|
|
176
|
+
children: "Annotate"
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
document.body
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
var timeline_annotation_selection_default = TimelineAnnotationSelection;
|
|
183
|
+
export {
|
|
184
|
+
TimelineAnnotationSelection,
|
|
185
|
+
timeline_annotation_selection_default as default
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=timeline-annotation-selection-3L7LHGG2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/timeline-annotation-selection.tsx"],"sourcesContent":["import type { DraftTimelineAnnotation } from \"@opengeni/sdk\";\nimport { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { TimelineAnnotationSourceDescriptor } from \"../timeline\";\n\ntype SelectionCandidate = {\n annotation: DraftTimelineAnnotation;\n left: number;\n top: number;\n keyboard: boolean;\n};\n\nconst INTERACTIVE_SELECTOR =\n 'a,button,input,textarea,select,summary,[role=\"button\"],[contenteditable=\"true\"],[tabindex]:not([tabindex=\"-1\"])';\nconst SOURCE_CONTEXT_BYTES = 160;\nconst MAX_QUOTE_BYTES = 16 * 1024;\n\nfunction utf8Prefix(value: string, maxBytes: number): string {\n let output = \"\";\n let bytes = 0;\n for (const character of value) {\n const next = new TextEncoder().encode(character).byteLength;\n if (bytes + next > maxBytes) break;\n output += character;\n bytes += next;\n }\n return output;\n}\n\nfunction utf8Suffix(value: string, maxBytes: number): string {\n let output = \"\";\n let bytes = 0;\n for (const character of [...value].reverse()) {\n const next = new TextEncoder().encode(character).byteLength;\n if (bytes + next > maxBytes) break;\n output = character + output;\n bytes += next;\n }\n return output;\n}\n\nfunction selectionElement(node: Node | null): Element | null {\n return node instanceof Element ? node : (node?.parentElement ?? null);\n}\n\nfunction containingSource(node: Node | null): HTMLElement | null {\n const element = selectionElement(node);\n const source = element?.closest(\"[data-og-annotation-source-key]\");\n return source instanceof HTMLElement ? source : null;\n}\n\nfunction isInteractiveSelection(node: Node | null, boundary: HTMLElement): boolean {\n const element = selectionElement(node);\n const interactive = element?.closest(INTERACTIVE_SELECTOR);\n return interactive instanceof Element && boundary.contains(interactive);\n}\n\nfunction occurrenceOffsets(text: string, quote: string): number[] {\n const offsets: number[] = [];\n let cursor = 0;\n while (cursor <= text.length - quote.length) {\n const offset = text.indexOf(quote, cursor);\n if (offset < 0) break;\n offsets.push(offset);\n cursor = offset + 1;\n }\n return offsets;\n}\n\nfunction selectedOccurrence(boundary: HTMLElement, range: Range, quote: string): number {\n try {\n const prefix = range.cloneRange();\n prefix.selectNodeContents(boundary);\n prefix.setEnd(range.startContainer, range.startOffset);\n return occurrenceOffsets(prefix.toString(), quote).length;\n } catch {\n return 0;\n }\n}\n\nfunction annotationId(): string {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n return `annotation-${Date.now()}-${Math.random().toString(16).slice(2)}`;\n}\n\nfunction buildCandidate(\n root: HTMLElement,\n sources: ReadonlyMap<string, TimelineAnnotationSourceDescriptor>,\n keyboard: boolean,\n): SelectionCandidate | null {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount !== 1 || selection.isCollapsed) return null;\n const range = selection.getRangeAt(0);\n const startBoundary = containingSource(range.startContainer);\n const endBoundary = containingSource(range.endContainer);\n if (!startBoundary || startBoundary !== endBoundary || !root.contains(startBoundary)) return null;\n if (\n isInteractiveSelection(range.startContainer, startBoundary) ||\n isInteractiveSelection(range.endContainer, startBoundary)\n ) {\n return null;\n }\n const sourceKey = startBoundary.dataset.ogAnnotationSourceKey;\n const source = sourceKey ? sources.get(sourceKey) : undefined;\n const quote = selection.toString();\n if (\n !source ||\n quote.trim().length === 0 ||\n new TextEncoder().encode(quote).byteLength > MAX_QUOTE_BYTES\n ) {\n return null;\n }\n const sourceOffsets = occurrenceOffsets(source.text, quote);\n if (sourceOffsets.length === 0) return null;\n const occurrence = selectedOccurrence(startBoundary, range, quote);\n const startOffset = sourceOffsets[Math.min(occurrence, sourceOffsets.length - 1)]!;\n const endOffset = startOffset + quote.length;\n const rect = range.getBoundingClientRect();\n if (rect.width === 0 && rect.height === 0) return null;\n return {\n annotation: {\n id: annotationId(),\n quote,\n note: \"\",\n source: {\n kind: source.kind,\n eventId: source.eventId,\n eventType: source.eventType,\n sequence: source.sequence,\n turnId: source.turnId,\n startOffset,\n endOffset,\n contextBefore: utf8Suffix(source.text.slice(0, startOffset), SOURCE_CONTEXT_BYTES),\n contextAfter: utf8Prefix(source.text.slice(endOffset), SOURCE_CONTEXT_BYTES),\n ...(source.label ? { label: source.label } : {}),\n },\n },\n left: Math.min(Math.max(12, rect.left + rect.width / 2), window.innerWidth - 12),\n top: rect.bottom + 48 <= window.innerHeight ? rect.bottom + 8 : Math.max(12, rect.top - 40),\n keyboard,\n };\n}\n\nexport function TimelineAnnotationSelection({\n rootRef,\n sources,\n onAnnotate,\n}: {\n rootRef: RefObject<HTMLElement | null>;\n sources: ReadonlyMap<string, TimelineAnnotationSourceDescriptor>;\n onAnnotate?: ((annotation: DraftTimelineAnnotation) => void) | undefined;\n}) {\n const [candidate, setCandidate] = useState<SelectionCandidate | null>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root || !onAnnotate) {\n setCandidate(null);\n return;\n }\n const update = (keyboard: boolean) => {\n setCandidate(buildCandidate(root, sources, keyboard));\n };\n const onPointerUp = () => window.setTimeout(() => update(false), 0);\n const onKeyUp = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setCandidate(null);\n return;\n }\n window.setTimeout(() => update(true), 0);\n };\n const onPointerDown = (event: PointerEvent) => {\n if (\n candidate &&\n !(event.target instanceof Node && buttonRef.current?.contains(event.target))\n ) {\n setCandidate(null);\n }\n };\n const onDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setCandidate(null);\n };\n root.addEventListener(\"pointerup\", onPointerUp);\n root.addEventListener(\"keyup\", onKeyUp);\n document.addEventListener(\"pointerdown\", onPointerDown);\n document.addEventListener(\"keydown\", onDocumentKeyDown);\n return () => {\n root.removeEventListener(\"pointerup\", onPointerUp);\n root.removeEventListener(\"keyup\", onKeyUp);\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onDocumentKeyDown);\n };\n }, [candidate, onAnnotate, rootRef, sources]);\n\n useEffect(() => {\n if (candidate?.keyboard) buttonRef.current?.focus();\n }, [candidate]);\n\n if (!candidate || !onAnnotate || typeof document === \"undefined\") return null;\n return createPortal(\n <button\n ref={buttonRef}\n type=\"button\"\n style={{ left: candidate.left, top: candidate.top }}\n className=\"og-root fixed z-[80] -translate-x-1/2 rounded-full border border-og-border bg-og-surface-1 px-3 py-1.5 text-og-sm font-medium text-og-fg shadow-lg outline-hidden transition hover:bg-og-surface-2 focus-visible:ring-2 focus-visible:ring-og-accent pointer-coarse:min-h-[44px]\"\n onClick={() => {\n onAnnotate(candidate.annotation);\n document.getSelection()?.removeAllRanges();\n setCandidate(null);\n }}\n >\n Annotate\n </button>,\n document.body,\n );\n}\n\nexport default TimelineAnnotationSelection;\n"],"mappings":"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","names":[]}
|