@opengeni/react 1.2.1-canary.37222965366001 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +52 -1
  2. package/dist/artifacts.js +2 -2
  3. package/dist/artifacts.js.map +1 -1
  4. package/dist/{chunk-ERGYJIBB.js → chunk-AWZLIMKX.js} +2 -2
  5. package/dist/{chunk-ERGYJIBB.js.map → chunk-AWZLIMKX.js.map} +1 -1
  6. package/dist/{chunk-FZCP527Y.js → chunk-CJUO7J5Z.js} +2 -2
  7. package/dist/{chunk-742CZ3L3.js → chunk-H5X55XH7.js} +16 -200
  8. package/dist/chunk-H5X55XH7.js.map +1 -0
  9. package/dist/{chunk-4OTO7KBK.js → chunk-LJ2UTJJE.js} +2737 -1580
  10. package/dist/chunk-LJ2UTJJE.js.map +1 -0
  11. package/dist/{chunk-CY7WK5FD.js → chunk-LN6TCXD3.js} +22 -1
  12. package/dist/chunk-LN6TCXD3.js.map +1 -0
  13. package/dist/{chunk-TMYGL6X5.js → chunk-MBMPHOMA.js} +71 -6
  14. package/dist/chunk-MBMPHOMA.js.map +1 -0
  15. package/dist/{chunk-RC6BZ44Q.js → chunk-OA6HFRQP.js} +2 -2
  16. package/dist/{chunk-X34BSY2R.js → chunk-WZMYFJD3.js} +242 -63
  17. package/dist/chunk-WZMYFJD3.js.map +1 -0
  18. package/dist/components/approval-surface.d.ts +11 -13
  19. package/dist/components/composer-transcription-control.d.ts +3 -0
  20. package/dist/components/open-geni-chat.d.ts +26 -7
  21. package/dist/components/session-conversation.d.ts +26 -3
  22. package/dist/components/session-list.d.ts +4 -1
  23. package/dist/components/session-proxy-scope.d.ts +16 -2
  24. package/dist/components/tool-action-review.d.ts +47 -0
  25. package/dist/components/tool-review-history.d.ts +25 -0
  26. package/dist/composer.js +1 -1
  27. package/dist/connect.js +1 -1
  28. package/dist/hooks/use-client-config-flags.d.ts +37 -0
  29. package/dist/index.d.ts +7 -4
  30. package/dist/index.js +27 -11
  31. package/dist/index.js.map +1 -1
  32. package/dist/{latest-question-YTOBHCWR.js → latest-question-GPYM2JNU.js} +3 -3
  33. package/dist/realtime/realtime-control.d.ts +2 -0
  34. package/dist/realtime.js +25 -4
  35. package/dist/realtime.js.map +1 -1
  36. package/dist/session-capability-policy.d.ts +20 -1
  37. package/dist/session-ui.d.ts +4 -1
  38. package/dist/session-ui.js +12 -6
  39. package/dist/session-ui.js.map +1 -1
  40. package/dist/session.js +6 -6
  41. package/dist/timeline/index.d.ts +2 -0
  42. package/dist/timeline/retained-loaders.d.ts +27 -0
  43. package/package.json +3 -3
  44. package/src/components/approval-surface.tsx +368 -239
  45. package/src/components/artifacts/session-artifact-viewer.tsx +4 -2
  46. package/src/components/composer-transcription-control.tsx +14 -0
  47. package/src/components/composer.tsx +1 -0
  48. package/src/components/open-geni-chat.tsx +245 -72
  49. package/src/components/session-conversation.tsx +243 -58
  50. package/src/components/session-list.tsx +9 -2
  51. package/src/components/session-proxy-scope.tsx +47 -7
  52. package/src/components/tool-action-review.tsx +649 -0
  53. package/src/components/tool-review-history.tsx +88 -0
  54. package/src/hooks/use-client-config-flags.ts +102 -0
  55. package/src/hooks/use-session-events.ts +19 -16
  56. package/src/hooks/use-transcription.ts +6 -0
  57. package/src/hooks/use-voice-input.ts +6 -0
  58. package/src/index.ts +18 -1
  59. package/src/realtime/realtime-control.tsx +28 -1
  60. package/src/session-capability-policy.ts +119 -6
  61. package/src/session-ui.ts +9 -1
  62. package/src/timeline/index.ts +10 -0
  63. package/src/timeline/retained-loaders.ts +86 -0
  64. package/src/timeline/tool-display-name.ts +5 -1
  65. package/src/timeline/tool-renderers.tsx +148 -8
  66. package/styles/compiled.css +79 -15
  67. package/styles/tokens.css +1 -1
  68. package/dist/chunk-4OTO7KBK.js.map +0 -1
  69. package/dist/chunk-742CZ3L3.js.map +0 -1
  70. package/dist/chunk-CY7WK5FD.js.map +0 -1
  71. package/dist/chunk-TMYGL6X5.js.map +0 -1
  72. package/dist/chunk-X34BSY2R.js.map +0 -1
  73. /package/dist/{chunk-FZCP527Y.js.map → chunk-CJUO7J5Z.js.map} +0 -0
  74. /package/dist/{chunk-RC6BZ44Q.js.map → chunk-OA6HFRQP.js.map} +0 -0
  75. /package/dist/{latest-question-YTOBHCWR.js.map → latest-question-GPYM2JNU.js.map} +0 -0
@@ -1,7 +1,9 @@
1
+ import { type ClientVoiceInputConfig } from "@opengeni/sdk";
1
2
  import { type CSSProperties } from "react";
2
3
  import { type ClientOverride } from "../session-context.js";
3
4
  import { type ModelPolicyPickerProps } from "./model-policy-picker.js";
4
5
  import { type ChatComposerProps } from "./chat-composer.js";
6
+ import type { ComposerTranscriptionControlProps } from "./composer-transcription-control.js";
5
7
  import { type HumanInputSurfaceProps } from "./human-input-surface.js";
6
8
  import { type MessageTimelineProps } from "./message-timeline.js";
7
9
  import { type OpenGeniLinkResolver, type OpenGeniViewerTarget } from "./open-geni-links.js";
@@ -13,6 +15,8 @@ export type SessionConversationLabels = {
13
15
  retry: string;
14
16
  /** Action when the conversation could not load at all. */
15
17
  tryAgain: string;
18
+ /** Shown in place of a Site preview when the session proxy does not serve Sites. */
19
+ sitePreviewUnavailable: string;
16
20
  };
17
21
  export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
18
22
  sessionId: string;
@@ -31,10 +35,17 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
31
35
  * after `resolveLink`.
32
36
  */
33
37
  onOpenArtifact?: ((target: OpenGeniViewerTarget) => void) | undefined;
38
+ /**
39
+ * Open another session the conversation points at: a sub-agent's chat from
40
+ * its worker card or a child update. `OpenGeniChat` opens it in place;
41
+ * without it those entries are not links.
42
+ */
43
+ onOpenSession?: ((sessionId: string) => void) | undefined;
34
44
  /**
35
45
  * Inline previews for assistant `opengeni-site` / `opengeni-html` fences.
36
- * Defaults to the OpenGeni preview (Site reads need the proxy's
37
- * `artifacts` option); `false` shows the fence as code.
46
+ * Defaults to the OpenGeni preview. Behind a session proxy without its
47
+ * `artifacts` option, Sites show as unavailable without a request; `false`
48
+ * shows the fence as code.
38
49
  */
39
50
  renderInteractiveBlock?: MessageTimelineProps["renderInteractiveBlock"] | false;
40
51
  /** Product-specific tool-call renderers; defaults to the built-in registry. */
@@ -51,6 +62,12 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
51
62
  * appears only when the deployment's client config enables file uploads.
52
63
  */
53
64
  attachments?: boolean | undefined;
65
+ /**
66
+ * Composer microphone (dictation into the draft). Defaults to true; it
67
+ * appears only when the client config reports voice input available
68
+ * (`createSessionProxyHandler({ voiceInput: false })` turns it off).
69
+ */
70
+ voiceInput?: boolean | undefined;
54
71
  /**
55
72
  * Show the model/reasoning picker. End users of an embedded product rarely
56
73
  * choose models, so it is hidden unless this is `true` or the client config
@@ -86,4 +103,10 @@ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
86
103
  * (including Site clients), one shared event feed, and authoritative queue state.
87
104
  * `<SessionConversation baseUrl="/api/opengeni" sessionId={id} />` needs no
88
105
  * provider: it talks to your session proxy and its resolved workspace. */
89
- export declare function SessionConversation({ baseUrl, ...props }: SessionConversationProps): import("react").JSX.Element;
106
+ export declare function SessionConversation({ baseUrl, headers, fetch, ...props }: SessionConversationProps): import("react").JSX.Element;
107
+ /**
108
+ * The composer microphone: shown when the deployment can transcribe, enabled
109
+ * once the workspace's voice-input setting allows it.
110
+ */
111
+ export declare function useComposerTranscription(client: unknown, workspaceId: string, capability: ClientVoiceInputConfig | null): ComposerTranscriptionControlProps | null;
112
+ export { useClientConfigFlags } from "../hooks/use-client-config-flags.js";
@@ -17,7 +17,10 @@ export type SessionListProps = ClientOverride & {
17
17
  onNewChat?: (() => void) | undefined;
18
18
  /** Allow inline rename (`updateSession`). Defaults to true. */
19
19
  rename?: boolean | undefined;
20
- /** Allow archiving (`updateSessionArchive`). Defaults to true. */
20
+ /**
21
+ * Allow archiving (`updateSessionArchive`). Defaults to true; hidden when the
22
+ * session proxy reports archive disabled (`archive: false`).
23
+ */
21
24
  archive?: boolean | undefined;
22
25
  /** Called after the selected chat was archived, so the host can move on. */
23
26
  onArchived?: ((sessionId: string) => void) | undefined;
@@ -1,21 +1,35 @@
1
+ import { type FetchLike } from "@opengeni/sdk/browser";
1
2
  import { type ReactNode } from "react";
3
+ import type { SessionClientLike } from "../client.js";
4
+ /** Request headers for every proxy call: static, or computed per request. */
5
+ export type SessionProxyHeaders = Record<string, string> | (() => Record<string, string>);
2
6
  export type SessionProxyBaseUrl = {
3
7
  /**
4
8
  * Mount path of your `createSessionProxyHandler` (for example
5
9
  * `"/api/opengeni"`). The component then needs no `OpenGeniProvider`,
6
10
  * client, or workspace id: it creates the browser client for that path and
7
11
  * uses the workspace the proxy resolved for the signed-in user. An explicit
8
- * `workspaceId` skips that lookup.
12
+ * `workspaceId` skips that lookup. A `client` you pass is used instead of
13
+ * the created one (point it at the same proxy).
9
14
  */
10
15
  baseUrl?: string | undefined;
16
+ /**
17
+ * `baseUrl` mode: headers added to every proxy request, for hosts that
18
+ * authenticate with a bearer token instead of cookies. A function is called
19
+ * per request, so it can return the current token.
20
+ */
21
+ headers?: SessionProxyHeaders | undefined;
22
+ /** `baseUrl` mode: custom fetch for every proxy request (async auth, retries). */
23
+ fetch?: FetchLike | undefined;
11
24
  };
12
25
  /**
13
26
  * `OpenGeniProvider` for a same-origin session proxy, from its base URL alone.
14
27
  * The proxy's client config names the resolved workspace, so the browser
15
28
  * never handles an Opengeni id. Provider-based usage is unchanged.
16
29
  */
17
- export declare function SessionProxyScope({ baseUrl, workspaceId, children, }: {
30
+ export declare function SessionProxyScope({ baseUrl, workspaceId, client: suppliedClient, headers, fetch, children, }: Omit<SessionProxyBaseUrl, "baseUrl"> & {
18
31
  baseUrl: string;
19
32
  workspaceId?: string | undefined;
33
+ client?: SessionClientLike | undefined;
20
34
  children: ReactNode;
21
35
  }): import("react").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ import type { ToolActionReview, ToolReviewDetailsPage } from "@opengeni/sdk";
3
+ export type ToolReviewDetailsLoader = (review: ToolActionReview, path: string, offset: number) => Promise<ToolReviewDetailsPage>;
4
+ type Tone = "waiting" | "ok" | "failed" | "muted";
5
+ /** Shown when an older request's saved values are gone: approval is impossible, decline is not. */
6
+ export declare const UNRECOVERABLE_TEXT = "The details of this older request couldn't be recovered, so it can't be approved. Decline it to let the agent continue.";
7
+ /** Card chrome shared by the review, its loading state and its load failure. */
8
+ export declare function ToolReviewFrame({ tone, icon, eyebrow, title, titleId, subtitle, children, footer, bare, ...rest }: {
9
+ tone: Tone;
10
+ icon: ReactNode;
11
+ eyebrow: ReactNode;
12
+ title: ReactNode;
13
+ titleId?: string | undefined;
14
+ subtitle?: ReactNode;
15
+ children?: ReactNode;
16
+ footer?: ReactNode;
17
+ bare?: boolean | undefined;
18
+ } & Omit<HTMLAttributes<HTMLElement>, "title">): import("react").JSX.Element;
19
+ export declare function DeclineButton({ busy, submitting, label, onClick, }: {
20
+ busy: boolean;
21
+ submitting: boolean;
22
+ label?: string | undefined;
23
+ onClick: () => void;
24
+ }): import("react").JSX.Element;
25
+ /** One host-neutral review. All callbacks refer to the immutable action; none can edit it. */
26
+ export declare function ToolActionReviewCard({ review, onApprove, onReject, submitting, disabled, onViewDetails, pendingLabel, rejectLabel, bare, }: {
27
+ review: ToolActionReview;
28
+ onApprove?: (() => void) | undefined;
29
+ onReject?: (() => void) | undefined;
30
+ submitting?: "approve" | "reject" | null | undefined;
31
+ disabled?: boolean | undefined;
32
+ onViewDetails?: ((path: string) => void) | undefined;
33
+ pendingLabel?: string | undefined;
34
+ rejectLabel?: string | undefined;
35
+ /** Render without card chrome, e.g. inside an expanded timeline row. */
36
+ bare?: boolean | undefined;
37
+ }): import("react").JSX.Element;
38
+ /** Full-page detail content: hosts choose navigation, never a nested scrolling panel. */
39
+ export declare function ToolActionReviewDetails({ review, path: initialPath, load, onBack, manageFocus, }: {
40
+ review: ToolActionReview;
41
+ path?: string;
42
+ load: ToolReviewDetailsLoader;
43
+ onBack: () => void;
44
+ /** Hosts rendering simultaneous previews can retain their own focus. */
45
+ manageFocus?: boolean;
46
+ }): import("react").JSX.Element;
47
+ export {};
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from "react";
2
+ import type { SessionEvent, ToolActionReview } from "@opengeni/sdk";
3
+ type HistoryContext = {
4
+ approvalIds: ReadonlySet<string>;
5
+ revision: number;
6
+ load: (approvalId: string) => Promise<ToolActionReview>;
7
+ onViewDetails: (review: ToolActionReview, path: string) => void;
8
+ };
9
+ /** Opt-in, authenticated history for the exact reviewed calls in the visible event window. */
10
+ export declare function ToolReviewHistoryProvider({ events, load, onViewDetails, children, }: {
11
+ events: readonly SessionEvent[];
12
+ load: HistoryContext["load"];
13
+ onViewDetails: HistoryContext["onViewDetails"];
14
+ children: ReactNode;
15
+ }): import("react").JSX.Element;
16
+ export declare function useHasToolReview(approvalId: string | null): boolean;
17
+ /**
18
+ * The saved review for one recorded call, or null while it loads or when it is
19
+ * unavailable (callers then keep their ordinary tool row).
20
+ */
21
+ export declare function useRecordedToolReview(approvalId: string | null): {
22
+ review: ToolActionReview | null;
23
+ onViewDetails: ((path: string) => void) | undefined;
24
+ };
25
+ export {};
package/dist/composer.js CHANGED
@@ -41,7 +41,7 @@ import {
41
41
  useChatComposer,
42
42
  useChatComposerController,
43
43
  useVoiceInput
44
- } from "./chunk-CY7WK5FD.js";
44
+ } from "./chunk-LN6TCXD3.js";
45
45
  import "./chunk-RSI7XYXL.js";
46
46
  import "./chunk-BRM6FVZA.js";
47
47
  import {
package/dist/connect.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  McpConnectionCard,
4
4
  mcpConnectionDiscoveryState,
5
5
  useConnect
6
- } from "./chunk-TMYGL6X5.js";
6
+ } from "./chunk-MBMPHOMA.js";
7
7
  import {
8
8
  Markdown
9
9
  } from "./chunk-I7IWRQLN.js";
@@ -0,0 +1,37 @@
1
+ import type { ClientVoiceInputConfig, ReasoningEffort } from "@opengeni/sdk";
2
+ /** The client-config fields the stock conversation and chat read. */
3
+ export type ClientConfigFlagsSource = {
4
+ getClientConfig: () => Promise<{
5
+ fileUploads?: {
6
+ enabled?: boolean;
7
+ };
8
+ modelSelection?: boolean | undefined;
9
+ sandboxFiles?: boolean | undefined;
10
+ defaultReasoningEffort?: ReasoningEffort | undefined;
11
+ artifacts?: unknown;
12
+ sessionCreation?: boolean | undefined;
13
+ archive?: boolean | undefined;
14
+ voiceInput?: ClientVoiceInputConfig | undefined;
15
+ }>;
16
+ };
17
+ export type ClientConfigFlags = {
18
+ /** Whether the config has loaded. Proxy capability flags stay `true` until it says otherwise. */
19
+ loaded: boolean;
20
+ uploads: boolean;
21
+ modelSelection: boolean;
22
+ sandboxFiles: boolean;
23
+ defaultReasoningEffort: ReasoningEffort | null;
24
+ /**
25
+ * Inline Site previews and the artifact viewer. `false` only when a session
26
+ * proxy says it does not serve them; native deployments omit the flag.
27
+ */
28
+ artifacts: boolean;
29
+ /** Browser chat creation. `false` only when a session proxy has no `createSession` hook. */
30
+ sessionCreation: boolean;
31
+ /** Chat archive/restore. `false` only when a session proxy disables it. */
32
+ archive: boolean;
33
+ /** Native voice input when the deployment can transcribe, else null. */
34
+ voiceInput: ClientVoiceInputConfig | null;
35
+ };
36
+ /** Deployment and session-proxy capabilities from the client config. */
37
+ export declare function useClientConfigFlags(client: Partial<ClientConfigFlagsSource> | ClientConfigFlagsSource): ClientConfigFlags;
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { sessionAuthRecommendation } from "./session-auth-recommendation.js";
2
2
  export { SessionConnectionRequest, type SessionConnectionRequestProps, } from "./components/session-connection-request.js";
3
3
  export { SessionMcpCapabilityCard, McpConnectionCard, type McpConnectionCardProps, type SessionMcpCapabilityCardProps, } from "./components/session-mcp-capability-card.js";
4
4
  export { SessionCapabilityFrame, type SessionCapabilityFrameProps, } from "./components/session-capability-frame.js";
5
- export { attachSessionCapability, completeSessionCapabilityOAuth, } from "./session-capability-policy.js";
5
+ export { attachSessionCapability, completeSessionCapabilityOAuth, prepareSessionCapabilityAccess, applySessionCapabilityAccess, type SessionCapabilityAccessPlan, } from "./session-capability-policy.js";
6
6
  export { retainedImageId } from "./components/markdown.js";
7
7
  export type { EmbeddedBrowserInteractionClientLike, EmbeddedComputerInteractionClientLike, EmbeddedFileAttachmentClientLike, EmbeddedGoalClientLike, EmbeddedHumanInputSessionClientLike, EmbeddedInteractionClientLike, EmbeddedSessionEventClientLike, EmbeddedSessionLineageClientLike, EmbeddedSessionMcpApprovalPolicyClientLike, EmbeddedSessionReadClientLike, EmbeddedSessionClientLike, SessionClientLike, } from "./client.js";
8
8
  export { OpenGeniProvider } from "./provider.js";
@@ -91,6 +91,8 @@ export type { DeriveMachineChipInput, MachineChip, MachineChipState, UseMachineC
91
91
  export { approvalsFromRequiresAction, projectPendingApprovals } from "./approvals.js";
92
92
  export type { PendingApproval } from "./approvals.js";
93
93
  export { ApprovalSurface, defaultApprovalSurfaceMessages } from "./components/approval-surface.js";
94
+ export { ToolActionReviewCard, ToolActionReviewDetails } from "./components/tool-action-review.js";
95
+ export type { ToolReviewDetailsLoader } from "./components/tool-action-review.js";
94
96
  export type { ApprovalSurfaceMessages, ApprovalSurfaceProps } from "./components/approval-surface.js";
95
97
  export { humanInputRequestFromEvent, projectPendingHumanInputRequests } from "./human-input.js";
96
98
  export type { PendingHumanInputRequest } from "./human-input.js";
@@ -102,8 +104,8 @@ export { HumanInputSurface } from "./components/human-input-surface.js";
102
104
  export type { HumanInputSurfaceProps } from "./components/human-input-surface.js";
103
105
  export { buildTimeline, creditExhaustedFromEvents, extractSessionRef, groupTimeline, sessionStatusFromEvents, toolDisplayName, } from "./timeline/index.js";
104
106
  export type { GroupTimelineOptions, ActivityItem, AgentMessageItem, AuthNeededItem, ContextCompactionItem, GoalItem, HumanInputAnswerSummary, HumanInputItem, MachineInputBatchItem, MachineInputMember, NoticeItem, ReasoningItem, SandboxItem, SessionStatusItem, TimelineGroup, TimelineItem, TurnEndItem, ToolCallItem, UserMessageItem, WorkerItem, } from "./timeline/index.js";
105
- export { createDefaultToolRegistry, createToolRegistry, defaultToolRegistry, rawTypeOf, } from "./timeline/index.js";
106
- export type { CreateToolRegistryOptions, RetainedArtifactLoader, RetainedScreenshotLoader, VideoArtifactPlaybackLoader, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./timeline/index.js";
107
+ export { createDefaultToolRegistry, createSessionRetainedScreenshotLoader, createToolRegistry, createWorkspaceRetainedArtifactLoader, createWorkspaceRetainedVideoLoader, defaultToolRegistry, rawTypeOf, } from "./timeline/index.js";
108
+ export type { CreateToolRegistryOptions, RetainedArtifactLoader, RetainedArtifactLoaderClient, RetainedScreenshotLoader, RetainedScreenshotLoaderClient, RetainedVideoLoaderClient, VideoArtifactPlaybackLoader, ToolRegistry, ToolRegistryEntry, ToolRenderer, ToolRendererProps, } from "./timeline/index.js";
107
109
  export { ActivityDisclosure, ActivityRail, BodyNote, DisclosureDefaultsProvider, LightboxProvider, MediaEmpty, MediaSkeleton, PayloadBlock, ScreenshotFigure, TermBlock, Thumbnail, TurnSummary, BUILT_IN_TURN_SUMMARY_FACET_IDS, useLightbox, useLightboxOptional, } from "./timeline/index.js";
108
110
  export type { ActivityDisclosureProps, ActivityRailProps, DisclosureChip, BuiltInTurnSummaryFacetId, TurnOutcome, TurnSummaryContext, TurnSummaryFacet, TurnSummaryFacetConfiguration, TurnSummaryFacetResult, TurnSummaryOptions, TurnSummaryProps, TurnSummaryStatus, LightboxControlLabels, } from "./timeline/index.js";
109
111
  export { applyPatchOps, applyPatchOpsFromToolItem, controlCaret, execTruncated, isApplyPatch, isExecSessionLostBanner, looksBinary, parseExecBannerSessionId, parseFreeformApplyPatch, parseToolArgs, sandboxCommandExitCode, stripExecBanner, tailPeek, unwrapMcpOutput, v4aToGitFileDiff, } from "./timeline/index.js";
@@ -121,7 +123,7 @@ export { SessionConversation } from "./components/session-conversation.js";
121
123
  export { SessionList } from "./components/session-list.js";
122
124
  export type { SessionListLabels, SessionListProps } from "./components/session-list.js";
123
125
  export { OpenGeniChat } from "./components/open-geni-chat.js";
124
- export type { OpenGeniChatLabels, OpenGeniChatProps } from "./components/open-geni-chat.js";
126
+ export type { OpenGeniChatCreateOptions, OpenGeniChatLabels, OpenGeniChatProps, } from "./components/open-geni-chat.js";
125
127
  export type { SessionConversationLabels, SessionConversationProps, } from "./components/session-conversation.js";
126
128
  export type { ChatComposerProps } from "./components/chat-composer.js";
127
129
  export { ComposerTranscriptionControl } from "./components/composer-transcription-control.js";
@@ -203,3 +205,4 @@ export { ClaudeMark } from "./components/claude-mark.js";
203
205
  export { AnthropicMark } from "./components/anthropic-mark.js";
204
206
  export { OpenRouterMark } from "./components/openrouter-mark.js";
205
207
  export { GrokMark } from "./components/grok-mark.js";
208
+ export { ToolReviewHistoryProvider } from "./components/tool-review-history.js";
package/dist/index.js CHANGED
@@ -11,13 +11,11 @@ import {
11
11
  } from "./chunk-YM2DE7BQ.js";
12
12
  import {
13
13
  createEmbeddedSessionClient,
14
- isGoalEvent,
15
14
  isLineageRefreshEvent,
16
15
  isSessionMcpApprovalPolicyEvent,
17
- useGoal,
18
16
  useSessionLineage,
19
17
  useSessionMcpApprovalPolicy
20
- } from "./chunk-742CZ3L3.js";
18
+ } from "./chunk-H5X55XH7.js";
21
19
  import {
22
20
  CONNECTION_STATUS_META,
23
21
  ConnectionDot,
@@ -72,6 +70,9 @@ import {
72
70
  StartupTimings,
73
71
  StatusDot,
74
72
  TimelineRow,
73
+ ToolActionReviewCard,
74
+ ToolActionReviewDetails,
75
+ ToolReviewHistoryProvider,
75
76
  TurnSummary,
76
77
  UserMessageBody,
77
78
  answersFromDrafts,
@@ -79,7 +80,10 @@ import {
79
80
  applyPatchOpsFromToolItem,
80
81
  controlCaret,
81
82
  createDefaultToolRegistry,
83
+ createSessionRetainedScreenshotLoader,
82
84
  createToolRegistry,
85
+ createWorkspaceRetainedArtifactLoader,
86
+ createWorkspaceRetainedVideoLoader,
83
87
  defaultApprovalSurfaceMessages,
84
88
  defaultHumanInputFormMessages,
85
89
  defaultToolRegistry,
@@ -107,14 +111,14 @@ import {
107
111
  useWorkspaceSessions,
108
112
  userMessageLikelyNeedsDisclosure,
109
113
  v4aToGitFileDiff
110
- } from "./chunk-4OTO7KBK.js";
114
+ } from "./chunk-LJ2UTJJE.js";
111
115
  import {
112
116
  useThemeType
113
117
  } from "./chunk-UK4TINKT.js";
114
118
  import "./chunk-J2QWVSQY.js";
115
119
  import "./chunk-C5X5AJXK.js";
116
120
  import "./chunk-ZYRGEKWS.js";
117
- import "./chunk-FZCP527Y.js";
121
+ import "./chunk-CJUO7J5Z.js";
118
122
  import {
119
123
  ArtifactLabelsProvider,
120
124
  DEFAULT_ARTIFACT_LABELS
@@ -129,28 +133,30 @@ import {
129
133
  conversationTimeline,
130
134
  createOlderHistoryLoadReceipt,
131
135
  humanInputRequestFromEvent,
136
+ isGoalEvent,
132
137
  isHumanInputEvent,
133
138
  isTitleEvent,
134
139
  isTurnQueueEvent,
135
140
  projectPendingApprovals,
136
141
  projectPendingHumanInputRequests,
137
142
  useFileAttachments,
143
+ useGoal,
138
144
  useHumanInputRequests,
139
145
  useSession,
140
146
  useSessionControl,
141
147
  useSessionEvents,
142
148
  useTurnQueue
143
- } from "./chunk-X34BSY2R.js";
149
+ } from "./chunk-WZMYFJD3.js";
144
150
  import {
145
151
  buildTimeline,
146
152
  creditExhaustedFromEvents,
147
153
  extractSessionRef,
148
154
  groupTimeline,
149
155
  sessionStatusFromEvents
150
- } from "./chunk-RC6BZ44Q.js";
156
+ } from "./chunk-OA6HFRQP.js";
151
157
  import {
152
158
  toolDisplayName
153
- } from "./chunk-ERGYJIBB.js";
159
+ } from "./chunk-AWZLIMKX.js";
154
160
  import {
155
161
  OpenGeniProvider
156
162
  } from "./chunk-3CTRFMAK.js";
@@ -158,9 +164,11 @@ import {
158
164
  McpConnectionCard,
159
165
  SessionCapabilityFrame,
160
166
  SessionMcpCapabilityCard,
167
+ applySessionCapabilityAccess,
161
168
  attachSessionCapability,
162
- completeSessionCapabilityOAuth
163
- } from "./chunk-TMYGL6X5.js";
169
+ completeSessionCapabilityOAuth,
170
+ prepareSessionCapabilityAccess
171
+ } from "./chunk-MBMPHOMA.js";
164
172
  import {
165
173
  ActivityDisclosure,
166
174
  BodyNote,
@@ -235,7 +243,7 @@ import {
235
243
  useSlashCommands,
236
244
  useTranscription,
237
245
  useVoiceInput
238
- } from "./chunk-CY7WK5FD.js";
246
+ } from "./chunk-LN6TCXD3.js";
239
247
  import {
240
248
  FILE_ONLY_MESSAGE_TEXT,
241
249
  composeSendInput,
@@ -5019,6 +5027,9 @@ export {
5019
5027
  TermBlock,
5020
5028
  Thumbnail,
5021
5029
  TimelineRow,
5030
+ ToolActionReviewCard,
5031
+ ToolActionReviewDetails,
5032
+ ToolReviewHistoryProvider,
5022
5033
  Tooltip,
5023
5034
  TooltipContent,
5024
5035
  TooltipProvider,
@@ -5048,6 +5059,7 @@ export {
5048
5059
  appendFinalTranscript,
5049
5060
  applyPatchOps,
5050
5061
  applyPatchOpsFromToolItem,
5062
+ applySessionCapabilityAccess,
5051
5063
  approvalsFromRequiresAction,
5052
5064
  argHint,
5053
5065
  attachSessionCapability,
@@ -5069,8 +5081,11 @@ export {
5069
5081
  createDefaultToolRegistry,
5070
5082
  createEmbeddedSessionClient,
5071
5083
  createOlderHistoryLoadReceipt,
5084
+ createSessionRetainedScreenshotLoader,
5072
5085
  createToolRegistry,
5073
5086
  createVoiceRecordingManifest,
5087
+ createWorkspaceRetainedArtifactLoader,
5088
+ createWorkspaceRetainedVideoLoader,
5074
5089
  creditExhaustedFromEvents,
5075
5090
  defaultApprovalSurfaceMessages,
5076
5091
  defaultChatComposerMessages,
@@ -5132,6 +5147,7 @@ export {
5132
5147
  payerSummaryForModel,
5133
5148
  planVoiceRecordingChunkCommit,
5134
5149
  pointsFor,
5150
+ prepareSessionCapabilityAccess,
5135
5151
  prepareVoiceRecordingChunk,
5136
5152
  presentFailure,
5137
5153
  projectClientModelRows,