@opengeni/react 6.1.0 → 7.0.0-canary.35625901699001

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 (214) hide show
  1. package/README.md +83 -2
  2. package/dist/approvals.d.ts +2 -1
  3. package/dist/artifacts-document.js +1 -1
  4. package/dist/artifacts-presentation.js +1 -1
  5. package/dist/artifacts-spreadsheet.js +1 -1
  6. package/dist/artifacts.js +3 -3
  7. package/dist/{browser-viewer-NTD6UIPR.js → browser-viewer-LGH4IP47.js} +3 -3
  8. package/dist/capability-catalog-row.d.ts +20 -0
  9. package/dist/capability-logo-fallback.d.ts +3 -0
  10. package/dist/{chunk-NOSYBS2D.js → chunk-2VHARTBL.js} +2 -1
  11. package/dist/{chunk-VRBL3F5E.js → chunk-5GAL23FF.js} +10 -2
  12. package/dist/{chunk-VRBL3F5E.js.map → chunk-5GAL23FF.js.map} +1 -1
  13. package/dist/chunk-5UONOQ3Y.js +635 -0
  14. package/dist/chunk-5UONOQ3Y.js.map +1 -0
  15. package/dist/{chunk-NYESIADM.js → chunk-AKOMC3VO.js} +3 -3
  16. package/dist/chunk-AKOMC3VO.js.map +1 -0
  17. package/dist/chunk-BRM6FVZA.js +302 -0
  18. package/dist/chunk-BRM6FVZA.js.map +1 -0
  19. package/dist/{chunk-KANFU34B.js → chunk-DBPVUGQT.js} +11 -2
  20. package/dist/chunk-DBPVUGQT.js.map +1 -0
  21. package/dist/chunk-FHIGTPME.js +1589 -0
  22. package/dist/chunk-FHIGTPME.js.map +1 -0
  23. package/dist/{chunk-5M6VTFJ5.js → chunk-GBPCZH3Y.js} +2 -2
  24. package/dist/{chunk-YBM6CQRU.js → chunk-GEN54DU5.js} +4 -4
  25. package/dist/{chunk-UMECRJRV.js → chunk-HJ5VJ4JB.js} +21 -12
  26. package/dist/chunk-HJ5VJ4JB.js.map +1 -0
  27. package/dist/{chunk-R4KRSFGA.js → chunk-IP4BUBKH.js} +3 -3
  28. package/dist/{chunk-NLTS7JHI.js → chunk-JPHDWKZE.js} +5 -5
  29. package/dist/{chunk-TDSEILUH.js → chunk-MI6ALLLD.js} +1297 -1535
  30. package/dist/chunk-MI6ALLLD.js.map +1 -0
  31. package/dist/{chunk-ICA6R6TW.js → chunk-OWHPKAOV.js} +28 -20
  32. package/dist/chunk-OWHPKAOV.js.map +1 -0
  33. package/dist/{chunk-24M4YBCL.js → chunk-PNAVEK2U.js} +4 -4
  34. package/dist/{chunk-L2NBTKRX.js → chunk-TXCBE32L.js} +203 -19
  35. package/dist/chunk-TXCBE32L.js.map +1 -0
  36. package/dist/{chunk-45XEUVTK.js → chunk-UXE5SSNN.js} +293 -463
  37. package/dist/chunk-UXE5SSNN.js.map +1 -0
  38. package/dist/{chunk-PEI6RANI.js → chunk-VR4Z73EU.js} +203 -9
  39. package/dist/chunk-VR4Z73EU.js.map +1 -0
  40. package/dist/{chunk-HUIKIDM5.js → chunk-XMXRI5JK.js} +65 -18
  41. package/dist/chunk-XMXRI5JK.js.map +1 -0
  42. package/dist/client.d.ts +1 -1
  43. package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
  44. package/dist/components/chat-composer.d.ts +13 -3
  45. package/dist/components/markdown.d.ts +6 -3
  46. package/dist/components/message-timeline.d.ts +7 -2
  47. package/dist/components/preview-loading.d.ts +2 -0
  48. package/dist/components/session-capability-frame.d.ts +24 -0
  49. package/dist/components/session-chrome.d.ts +1 -2
  50. package/dist/components/session-commands.d.ts +6 -0
  51. package/dist/components/session-connection-request.d.ts +8 -0
  52. package/dist/components/session-conversation.d.ts +3 -0
  53. package/dist/components/session-mcp-capability-card.d.ts +22 -0
  54. package/dist/components/timeline-search.d.ts +34 -0
  55. package/dist/composer.js +7 -7
  56. package/dist/connect-account-identity.d.ts +8 -0
  57. package/dist/connect-accounts.d.ts +5 -0
  58. package/dist/connect-chooser.d.ts +6 -0
  59. package/dist/connect-panel.d.ts +9 -2
  60. package/dist/connect-setup.d.ts +5 -1
  61. package/dist/connect.d.ts +5 -21
  62. package/dist/connect.js +1268 -584
  63. package/dist/connect.js.map +1 -1
  64. package/dist/connection-catalog.d.ts +6 -1
  65. package/dist/connection-discovery.d.ts +12 -0
  66. package/dist/connection-installed.d.ts +1 -0
  67. package/dist/connection-logo.d.ts +5 -2
  68. package/dist/connection-service-logo.d.ts +8 -0
  69. package/dist/connection-service-presentation.d.ts +13 -0
  70. package/dist/connection-skeleton.d.ts +5 -0
  71. package/dist/discovery-cache.d.ts +5 -0
  72. package/dist/hooks/use-codex-accounts.d.ts +11 -5
  73. package/dist/hooks/use-connect.d.ts +22 -0
  74. package/dist/hooks/use-session-events.d.ts +5 -0
  75. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  76. package/dist/hooks/use-workspace-sessions.d.ts +2 -0
  77. package/dist/index.d.ts +8 -2
  78. package/dist/index.js +771 -793
  79. package/dist/index.js.map +1 -1
  80. package/dist/interaction.js +2 -2
  81. package/dist/machines.js +2 -2
  82. package/dist/mcp-connection-status.d.ts +14 -0
  83. package/dist/{model-policy-picker-menu-3R336DP2.js → model-policy-picker-menu-RVOQ4ZZG.js} +4 -4
  84. package/dist/model-policy.d.ts +6 -2
  85. package/dist/model-policy.js +1 -1
  86. package/dist/{platform-activity-row-DUE2W74J.js → platform-activity-row-HLOH7FW4.js} +9 -4
  87. package/dist/platform-activity-row-HLOH7FW4.js.map +1 -0
  88. package/dist/plugin-discovery.d.ts +6 -0
  89. package/dist/{queue-surface-implementation-LK3S4BIW.js → queue-surface-implementation-3RIFK2BS.js} +4 -4
  90. package/dist/realtime.js +22 -22
  91. package/dist/realtime.js.map +1 -1
  92. package/dist/session-auth-recommendation.d.ts +5 -0
  93. package/dist/session-capability-policy.d.ts +12 -0
  94. package/dist/session-ui.d.ts +2 -0
  95. package/dist/session-ui.js +14 -12
  96. package/dist/session.d.ts +1 -0
  97. package/dist/session.js +6 -4
  98. package/dist/skill-discovery.d.ts +11 -0
  99. package/dist/timeline/compaction-copy.d.ts +10 -0
  100. package/dist/timeline/projection.d.ts +3 -1
  101. package/dist/timeline/tool-display-name.d.ts +2 -1
  102. package/dist/timeline/turn-summary.d.ts +2 -2
  103. package/dist/timeline/types.d.ts +24 -2
  104. package/dist/{timeline-annotation-markers-DRSTLEM6.js → timeline-annotation-markers-OY6OWR3V.js} +2 -2
  105. package/dist/{timeline-annotation-selection-IHLUGVND.js → timeline-annotation-selection-BOXA2TIN.js} +2 -2
  106. package/dist/{timeline-annotations-dialog-6Q53N5FG.js → timeline-annotations-dialog-RGY3MHL3.js} +3 -3
  107. package/package.json +3 -3
  108. package/src/approvals.ts +8 -1
  109. package/src/assets/README.md +8 -0
  110. package/src/assets/gmail.ico +0 -0
  111. package/src/assets/outlook.ico +0 -0
  112. package/src/capability-catalog-row.tsx +94 -0
  113. package/src/capability-logo-fallback.ts +22 -0
  114. package/src/client.ts +0 -9
  115. package/src/components/approval-surface.tsx +12 -2
  116. package/src/components/artifacts/document-editor.tsx +63 -6
  117. package/src/components/artifacts/presentation-editor.tsx +214 -9
  118. package/src/components/artifacts/spreadsheet-canvas.ts +3 -8
  119. package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
  120. package/src/components/artifacts/spreadsheet-grid.tsx +10 -11
  121. package/src/components/chat-composer.tsx +26 -3
  122. package/src/components/composer.tsx +10 -4
  123. package/src/components/human-input-form.tsx +12 -2
  124. package/src/components/markdown.tsx +133 -9
  125. package/src/components/message-timeline.tsx +104 -36
  126. package/src/components/model-picker.tsx +11 -3
  127. package/src/components/model-policy-picker-menu.tsx +10 -3
  128. package/src/components/preview-loading.tsx +154 -0
  129. package/src/components/sandbox-workspace.tsx +20 -36
  130. package/src/components/session-capability-frame.tsx +163 -0
  131. package/src/components/session-chrome.tsx +46 -77
  132. package/src/components/session-commands.tsx +18 -0
  133. package/src/components/session-connection-request.tsx +97 -0
  134. package/src/components/session-conversation.tsx +10 -5
  135. package/src/components/session-mcp-capability-card.tsx +532 -0
  136. package/src/components/session-status.tsx +2 -2
  137. package/src/components/timeline-anchor.tsx +9 -8
  138. package/src/components/timeline-search.tsx +168 -0
  139. package/src/components/user-message-body.tsx +7 -0
  140. package/src/connect-account-identity.tsx +34 -0
  141. package/src/connect-accounts.tsx +114 -52
  142. package/src/connect-chooser.tsx +171 -39
  143. package/src/connect-panel.tsx +73 -9
  144. package/src/connect-setup.tsx +72 -25
  145. package/src/connect.ts +13 -22
  146. package/src/connection-assets.d.ts +4 -0
  147. package/src/connection-catalog.tsx +61 -39
  148. package/src/connection-discovery.tsx +235 -0
  149. package/src/connection-installed.tsx +2 -0
  150. package/src/connection-logo.tsx +18 -10
  151. package/src/connection-service-logo.tsx +55 -0
  152. package/src/connection-service-presentation.ts +46 -0
  153. package/src/connection-skeleton.tsx +16 -0
  154. package/src/conversation-timeline.ts +1 -0
  155. package/src/discovery-cache.ts +42 -0
  156. package/src/hooks/use-codex-accounts.ts +33 -14
  157. package/src/hooks/use-composer.ts +4 -5
  158. package/src/hooks/use-connect.ts +23 -0
  159. package/src/hooks/use-session-events.ts +114 -1
  160. package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
  161. package/src/hooks/use-workspace-sessions.ts +10 -0
  162. package/src/index.ts +22 -2
  163. package/src/mcp-connection-status.ts +35 -0
  164. package/src/model-policy.ts +21 -0
  165. package/src/plugin-details.tsx +8 -5
  166. package/src/plugin-discovery.tsx +92 -72
  167. package/src/realtime/realtime-control.tsx +6 -8
  168. package/src/session-auth-recommendation.ts +48 -0
  169. package/src/session-capability-policy.ts +83 -0
  170. package/src/session-ui.ts +2 -0
  171. package/src/session.ts +1 -0
  172. package/src/skill-discovery.tsx +101 -56
  173. package/src/timeline/compaction-copy.ts +40 -0
  174. package/src/timeline/platform-activity-row.tsx +8 -3
  175. package/src/timeline/projection.ts +78 -2
  176. package/src/timeline/rolling-activity.tsx +4 -2
  177. package/src/timeline/shared.tsx +6 -1
  178. package/src/timeline/startup-timings.tsx +1 -1
  179. package/src/timeline/tool-display-name.ts +8 -6
  180. package/src/timeline/tool-renderers.tsx +5 -3
  181. package/src/timeline/turn-summary.tsx +17 -3
  182. package/src/timeline/types.ts +24 -2
  183. package/styles/compiled.css +325 -27
  184. package/styles/connect.css +90 -15
  185. package/styles/index.css +46 -0
  186. package/styles/session-capability.css +42 -0
  187. package/dist/chunk-45XEUVTK.js.map +0 -1
  188. package/dist/chunk-HQV2I5HV.js +0 -124
  189. package/dist/chunk-HQV2I5HV.js.map +0 -1
  190. package/dist/chunk-HUIKIDM5.js.map +0 -1
  191. package/dist/chunk-ICA6R6TW.js.map +0 -1
  192. package/dist/chunk-IHQII5WO.js +0 -886
  193. package/dist/chunk-IHQII5WO.js.map +0 -1
  194. package/dist/chunk-KANFU34B.js.map +0 -1
  195. package/dist/chunk-L2NBTKRX.js.map +0 -1
  196. package/dist/chunk-NYESIADM.js.map +0 -1
  197. package/dist/chunk-PEI6RANI.js.map +0 -1
  198. package/dist/chunk-TDSEILUH.js.map +0 -1
  199. package/dist/chunk-UMECRJRV.js.map +0 -1
  200. package/dist/hooks/use-packs.d.ts +0 -32
  201. package/dist/platform-activity-row-DUE2W74J.js.map +0 -1
  202. package/src/hooks/use-packs.ts +0 -157
  203. /package/dist/{browser-viewer-NTD6UIPR.js.map → browser-viewer-LGH4IP47.js.map} +0 -0
  204. /package/dist/{chunk-NOSYBS2D.js.map → chunk-2VHARTBL.js.map} +0 -0
  205. /package/dist/{chunk-5M6VTFJ5.js.map → chunk-GBPCZH3Y.js.map} +0 -0
  206. /package/dist/{chunk-YBM6CQRU.js.map → chunk-GEN54DU5.js.map} +0 -0
  207. /package/dist/{chunk-R4KRSFGA.js.map → chunk-IP4BUBKH.js.map} +0 -0
  208. /package/dist/{chunk-NLTS7JHI.js.map → chunk-JPHDWKZE.js.map} +0 -0
  209. /package/dist/{chunk-24M4YBCL.js.map → chunk-PNAVEK2U.js.map} +0 -0
  210. /package/dist/{model-policy-picker-menu-3R336DP2.js.map → model-policy-picker-menu-RVOQ4ZZG.js.map} +0 -0
  211. /package/dist/{queue-surface-implementation-LK3S4BIW.js.map → queue-surface-implementation-3RIFK2BS.js.map} +0 -0
  212. /package/dist/{timeline-annotation-markers-DRSTLEM6.js.map → timeline-annotation-markers-OY6OWR3V.js.map} +0 -0
  213. /package/dist/{timeline-annotation-selection-IHLUGVND.js.map → timeline-annotation-selection-BOXA2TIN.js.map} +0 -0
  214. /package/dist/{timeline-annotations-dialog-6Q53N5FG.js.map → timeline-annotations-dialog-RGY3MHL3.js.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
+ import { type TimelineSearchTarget } from "./timeline-search.js";
2
3
  /**
3
4
  * The default renderer for chat message bodies in {@link MessageTimeline}.
4
5
  *
@@ -18,6 +19,10 @@ export type MarkdownInteractiveBlock = {
18
19
  content: string;
19
20
  };
20
21
  export type MarkdownProps = {
22
+ /** Resolve a retained-file reference to the host's authenticated artifact page. */
23
+ artifactHref?: ((artifactId: string) => string) | undefined;
24
+ /** Reveals a bounded source excerpt; closing Find retains it until explicit restore. */
25
+ searchTarget?: TimelineSearchTarget | null | undefined;
21
26
  renderImage?: ((image: {
22
27
  src: string;
23
28
  alt: string;
@@ -56,7 +61,5 @@ export declare function sandboxFileLocationFromHref(href: string | undefined): S
56
61
  /** Return the exact decoded path for a supported sandbox-link href. */
57
62
  export declare function sandboxFilePathFromHref(href: string | undefined): string | null;
58
63
  export declare function retainedImageId(src: string): string | null;
59
- declare function MarkdownImpl({ children, className, streaming, onSandboxFile, renderInteractiveBlock, renderImage, }: MarkdownProps): import("react").JSX.Element;
60
64
  /** Memoized so streaming re-renders of the parent don't re-parse settled bodies. */
61
- export declare const Markdown: import("react").MemoExoticComponent<typeof MarkdownImpl>;
62
- export {};
65
+ export declare const Markdown: import("react").MemoExoticComponent<(props: MarkdownProps) => import("react").JSX.Element>;
@@ -1,3 +1,4 @@
1
+ import { type TimelineSearchTarget } from "./timeline-search.js";
1
2
  import { type GenieLoadingOptions } from "../timeline/genie-loading.js";
2
3
  import type { DraftTimelineAnnotation, SessionEvent, SessionStatus } from "@opengeni/sdk";
3
4
  import { type ReactNode } from "react";
@@ -5,6 +6,8 @@ import { type OlderHistoryLoader } from "../older-history.js";
5
6
  import { type UserMessageDisclosureLabels } from "./user-message-body.js";
6
7
  import { type AgentMessageItem, type AuthNeededItem, type TimelineGroup, type TimelineItem, type RetainedArtifactLoader, type RetainedScreenshotLoader, type VideoArtifactPlaybackLoader, type ToolRegistry, type TurnSummaryOptions, type UserMessageItem } from "../timeline/index.js";
7
8
  export type MessageTimelineProps = {
9
+ /** Exact durable search hit; clearing it removes highlighting without moving the reader. */
10
+ searchTarget?: TimelineSearchTarget | null | undefined;
8
11
  /** Localized user-message disclosure actions, including custom UserMessageBody renderers. */
9
12
  userMessageDisclosureLabels?: UserMessageDisclosureLabels | undefined;
10
13
  /** Raw session events (projected internally) … */
@@ -16,7 +19,9 @@ export type MessageTimelineProps = {
16
19
  /** Host-owned controls beside Copy and the timestamp on settled message rows. */
17
20
  renderMessageActions?: ((item: AgentMessageItem | UserMessageItem) => ReactNode) | undefined;
18
21
  /** Plug a markdown renderer for message bodies (e.g. streamdown). */
19
- renderMessageText?: ((text: string, item: AgentMessageItem | UserMessageItem) => ReactNode) | undefined;
22
+ renderMessageText?: ((text: string, item: AgentMessageItem | UserMessageItem, context: {
23
+ searchTarget: TimelineSearchTarget | null;
24
+ }) => ReactNode) | undefined;
20
25
  /** Drill into a spawned worker session. */
21
26
  onOpenSession?: ((sessionId: string) => void) | undefined;
22
27
  /**
@@ -116,7 +121,7 @@ export type MessageTimelineProps = {
116
121
  * cards, goal markers, and status transitions. Owns stick-to-bottom scrolling
117
122
  * with a "jump to latest" affordance when the reader scrolls back.
118
123
  */
119
- export declare function MessageTimeline({ userMessageDisclosureLabels, events, items, status: _status, renderMessageActions, renderMessageText, onOpenSession, onMemoryClick, onReconnect, renderAuthNeeded, shouldRenderAuthNeeded, resolveProviderLogo, toolRegistry, loadRetainedScreenshot, loadRetainedArtifact, loadVideoArtifactPlayback, computeLabel, genieLoading, turnSummary, autoFollow, onAnnotate, draftAnnotations, onDraftAnnotationSelect, hasOlder, loadingOlder, onLoadOlder, onJumpToStart, loadingOldest, hasNewer, loadingNewer, onLoadNewer, onJumpToLatest, trailingState, emptyState, className, }: MessageTimelineProps): import("react").JSX.Element;
124
+ export declare function MessageTimeline({ userMessageDisclosureLabels, searchTarget, events, items, status: _status, renderMessageActions, renderMessageText, onOpenSession, onMemoryClick, onReconnect, renderAuthNeeded, shouldRenderAuthNeeded, resolveProviderLogo, toolRegistry, loadRetainedScreenshot, loadRetainedArtifact, loadVideoArtifactPlayback, computeLabel, genieLoading, turnSummary, autoFollow, onAnnotate, draftAnnotations, onDraftAnnotationSelect, hasOlder, loadingOlder, onLoadOlder, onJumpToStart, loadingOldest, hasNewer, loadingNewer, onLoadNewer, onJumpToLatest, trailingState, emptyState, className, }: MessageTimelineProps): import("react").JSX.Element;
120
125
  /**
121
126
  * Settled turns lift the final agent answer out as a sibling group. Include it
122
127
  * in "Copy turn" when present so the chip copies the full assistant reply.
@@ -0,0 +1,2 @@
1
+ /** Private loading surface: never receives or executes the unfinished fence. */
2
+ export declare function PreviewLoading(): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { type ReactNode, type RefObject } from "react";
2
+ export type SessionCapabilityFrameProps = {
3
+ name: string;
4
+ subtitle: string;
5
+ logo: string | null;
6
+ typeLabel: string;
7
+ description: string;
8
+ skill: boolean;
9
+ expanded: boolean;
10
+ complete: boolean;
11
+ actionLabel: string;
12
+ note: string;
13
+ onOpen(): void;
14
+ onClose(): void;
15
+ busy?: boolean;
16
+ opener?: RefObject<HTMLButtonElement | null>;
17
+ cardRef?: RefObject<HTMLElement | null>;
18
+ children?: ReactNode;
19
+ /** A catalogue row can own the opener while reusing the same details dialog. */
20
+ dialogOnly?: boolean;
21
+ };
22
+ /** The same conversation card in the console and embedded clients. Setup
23
+ * content owns the provider flow; this frame owns identity and protected focus. */
24
+ export declare function SessionCapabilityFrame({ name, subtitle, logo, typeLabel, description, skill, expanded, complete, actionLabel, note, onOpen, onClose, busy, opener, cardRef, children, dialogOnly, }: SessionCapabilityFrameProps): import("react").JSX.Element;
@@ -52,7 +52,6 @@ export type SessionChromeAgentsSignal = {
52
52
  tone?: SessionChromeSignalTone | undefined;
53
53
  };
54
54
  export type SessionChromeProps = {
55
- compact?: boolean;
56
55
  /** Authoritative execution status; omitted by older embedding hosts. */
57
56
  sessionStatus?: SessionStatus | undefined;
58
57
  queue: UseTurnQueueResult;
@@ -121,5 +120,5 @@ export declare function sessionChromeShouldOfferQueue(input: {
121
120
  }): boolean;
122
121
  /** Select pill state from the goal's authoritative continuation projection. */
123
122
  export declare function sessionChromeGoalPillState(goalStatus: "active" | "paused" | "completed", continuation: SessionGoal["continuation"] | null | undefined, sessionStatus?: SessionStatus): GoalPillState;
124
- export declare function SessionChrome({ compact, sessionStatus, queue, composer, onComposerFocus, goal, agentsPanel, commandsPanel, commandsCount, agentsSignal, onDismissIncoming, onOpenSession, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react").JSX.Element | null;
123
+ export declare function SessionChrome({ sessionStatus, queue, composer, onComposerFocus, goal, agentsPanel, commandsPanel, commandsCount, agentsSignal, onDismissIncoming, onOpenSession, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react").JSX.Element | null;
125
124
  export {};
@@ -0,0 +1,6 @@
1
+ import { type UseSessionBackgroundCommandsOptions } from "../hooks/use-session-background-commands.js";
2
+ /** Mount in the open activity panel so closed chrome never polls commands. */
3
+ export declare function SessionCommands({ sessionId, readOnly, ...options }: UseSessionBackgroundCommandsOptions & {
4
+ sessionId: string;
5
+ readOnly?: boolean;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { AuthNeededItem } from "../timeline/types.js";
2
+ import { type SessionMcpCapabilityCardProps } from "./session-mcp-capability-card.js";
3
+ export type SessionConnectionRequestProps = Omit<SessionMcpCapabilityCardProps, "capabilityId" | "name" | "rationale"> & {
4
+ request: AuthNeededItem;
5
+ };
6
+ /** Resolve native reauthorization notices with the same exact-identity rules
7
+ * as the console. Recommendations never supply endpoints or account authority. */
8
+ export declare function SessionConnectionRequest(props: SessionConnectionRequestProps): import("react").JSX.Element;
@@ -2,9 +2,12 @@ import { type CSSProperties } from "react";
2
2
  import { type ClientOverride } from "../session-context.js";
3
3
  import { type ChatComposerProps } from "./chat-composer.js";
4
4
  import { type HumanInputSurfaceProps } from "./human-input-surface.js";
5
+ import { type MessageTimelineProps } from "./message-timeline.js";
5
6
  import type { UserMessageDisclosureLabels } from "./user-message-body.js";
6
7
  export type SessionConversationProps = ClientOverride & {
7
8
  sessionId: string;
9
+ /** Host-owned artifact links, previews and other message presentation. */
10
+ renderMessageText?: MessageTimelineProps["renderMessageText"];
8
11
  /** Localized actions for already-sent user-message disclosure. */
9
12
  userMessageDisclosureLabels?: UserMessageDisclosureLabels | undefined;
10
13
  loadSkillReview?: HumanInputSurfaceProps["loadSkillReview"];
@@ -0,0 +1,22 @@
1
+ import type { OpenGeniBrowserClient as OpenGeniClient } from "@opengeni/sdk/browser";
2
+ export type SessionMcpCapabilityCardProps = {
3
+ client: OpenGeniClient;
4
+ workspaceId: string;
5
+ sessionId: string;
6
+ capabilityId: string;
7
+ name: string;
8
+ rationale?: string;
9
+ /** Exact host route; no console-specific routing is assumed. */
10
+ returnUrl: string;
11
+ onConfigured?: (() => void | Promise<void>) | undefined;
12
+ };
13
+ export type McpConnectionCardProps = Omit<SessionMcpCapabilityCardProps, "sessionId"> & {
14
+ /** Omit for connection management: no session tool selection is written. */
15
+ sessionId?: string;
16
+ dialogOnly?: boolean;
17
+ onClose?: (() => void) | undefined;
18
+ };
19
+ /** Native OAuth recommendation flow. Identity and endpoint come from the live
20
+ * catalog, never from model-authored recommendation text. */
21
+ export declare function SessionMcpCapabilityCard(props: SessionMcpCapabilityCardProps): import("react").JSX.Element;
22
+ export declare function McpConnectionCard(props: McpConnectionCardProps): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { type RefObject } from "react";
2
+ import type { TimelineItem } from "../timeline/types.js";
3
+ export type TimelineSearchTarget = {
4
+ sequence: number;
5
+ eventId?: string | undefined;
6
+ /** Literal, case-insensitive text. No regex interpretation. */
7
+ query: string;
8
+ /** Zero-based occurrence within the source message. Defaults to zero. */
9
+ occurrence?: number | undefined;
10
+ /**
11
+ * Zero-based UTF-16 offset of the match in the original message text, as
12
+ * reported by backend all-occurrence search (messageMatchOffset). When set
13
+ * it takes precedence over `occurrence` and is validated against `query`,
14
+ * so a stale offset degrades to no highlight rather than a wrong one.
15
+ */
16
+ offset?: number | undefined;
17
+ };
18
+ /** Scoped to the target's group; disclosure expansion persists after closing find. */
19
+ export declare const TimelineSearchRevealContext: import("react").Context<string | null>;
20
+ export declare const useTimelineSearchReveal: () => string | null;
21
+ export declare function isTimelineSearchTarget(item: TimelineItem, target: TimelineSearchTarget): boolean;
22
+ /** Scan without allocating an offset array proportional to a huge message. */
23
+ export declare function literalSearchOffset(text: string, query: string, occurrence?: number): number;
24
+ /**
25
+ * Validate a caller-supplied UTF-16 offset against the text and query. The
26
+ * sticky flag pins the match to exactly `offset`; like literalSearchOffset,
27
+ * regex escaping keeps offsets in UTF-16 units even for length-changing case
28
+ * folds. Returns -1 when the offset is stale or the text no longer matches.
29
+ */
30
+ export declare function matchAtOffset(text: string, query: string, offset: number): number;
31
+ /** Resolve a target to a UTF-16 offset: explicit offset wins, else the ordinal scan. */
32
+ export declare function searchMatchOffset(text: string, target: TimelineSearchTarget): number;
33
+ /** Range highlighting does not mutate React-owned text or its layout. */
34
+ export declare function useTimelineSearchNavigation(root: RefObject<HTMLDivElement | null>, itemId: string | undefined, target: TimelineSearchTarget | null | undefined, releasePin: () => void, revision: unknown): void;
package/dist/composer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ModelPolicyPickerMenu
3
- } from "./chunk-UMECRJRV.js";
3
+ } from "./chunk-HJ5VJ4JB.js";
4
4
  import {
5
5
  Actions,
6
6
  AttachButton,
@@ -40,8 +40,8 @@ import {
40
40
  useChatComposer,
41
41
  useChatComposerController,
42
42
  useVoiceInput
43
- } from "./chunk-45XEUVTK.js";
44
- import "./chunk-HQV2I5HV.js";
43
+ } from "./chunk-UXE5SSNN.js";
44
+ import "./chunk-BRM6FVZA.js";
45
45
  import {
46
46
  BillingClassMark,
47
47
  ModelPolicyPicker,
@@ -49,13 +49,13 @@ import {
49
49
  PickerBackHeader,
50
50
  PickerNavRow,
51
51
  defaultModelPolicyPickerMessages
52
- } from "./chunk-R4KRSFGA.js";
52
+ } from "./chunk-IP4BUBKH.js";
53
53
  import "./chunk-VZTQ73XT.js";
54
- import "./chunk-NYESIADM.js";
55
- import "./chunk-PLYRL5ER.js";
54
+ import "./chunk-AKOMC3VO.js";
56
55
  import "./chunk-KZ73RL76.js";
56
+ import "./chunk-PLYRL5ER.js";
57
57
  import "./chunk-NEXLLTP4.js";
58
- import "./chunk-VRBL3F5E.js";
58
+ import "./chunk-5GAL23FF.js";
59
59
  import "./chunk-22KP6LR5.js";
60
60
  export {
61
61
  Actions,
@@ -0,0 +1,8 @@
1
+ import type { ConnectAccount } from "@opengeni/connect";
2
+ import type { CapabilityCatalogItem, OpenGeniClient } from "@opengeni/sdk";
3
+ /** Service presentation never changes which exact credential is acted on. */
4
+ export declare function ConnectAccountIdentity({ account, client, capabilities, }: {
5
+ account: ConnectAccount;
6
+ client?: OpenGeniClient | undefined;
7
+ capabilities: CapabilityCatalogItem[];
8
+ }): import("react").JSX.Element;
@@ -1,9 +1,14 @@
1
1
  import type { ConnectController } from "@opengeni/connect";
2
+ import type { OpenGeniClient } from "@opengeni/sdk";
2
3
  export type ConnectAccountsProps = {
3
4
  controller: ConnectController;
4
5
  className?: string;
5
6
  /** Enables explicit account-bound reconnect. Host supplies the exact destination. */
6
7
  returnUrl?: string;
8
+ /** Uses authenticated catalogue assets and exact connection references for service identity. */
9
+ client?: OpenGeniClient | undefined;
10
+ /** Reconcile surrounding service state after a confirmed account disconnect. */
11
+ onDisconnected?: (() => void) | undefined;
7
12
  };
8
13
  /** Local credential revocation only. Unknown or changed versions must be
9
14
  * refreshed; this component never retries a destructive operation implicitly. */
@@ -5,6 +5,12 @@ export type ConnectChooserProps = {
5
5
  returnUrl: string;
6
6
  className?: string;
7
7
  presentation?: "select" | "catalog";
8
+ /** Compact mechanism picker when service discovery is already shown by the host. */
9
+ customOnly?: boolean;
10
+ providerOnly?: boolean;
11
+ compact?: boolean;
12
+ /** Select a service from the unified discovery list. */
13
+ initialProviderId?: string;
8
14
  };
9
15
  /** Catalog readiness is supplied by the authenticated backend, never inferred
10
16
  * from the existence of a provider definition. Host replaces the controller on
@@ -1,11 +1,18 @@
1
1
  import { type ConnectSetupProps } from "./connect-setup.js";
2
+ import type { OpenGeniClient } from "@opengeni/sdk";
2
3
  export type ConnectPanelProps = ConnectSetupProps & {
3
4
  returnUrl: string;
4
- title?: string;
5
+ /** Null omits the heading when the host already supplies one. */
6
+ title?: string | null;
5
7
  showAccounts?: boolean;
8
+ /** Presentation only; the host backend owns acquisition admission. */
9
+ showCustomConnections?: boolean;
10
+ /** Include ready, non-custom adapters from the host's Connect catalogue. */
11
+ showProviderConnections?: boolean;
6
12
  presentation?: "select" | "catalog";
13
+ client?: OpenGeniClient | undefined;
7
14
  };
8
15
  /** Optional composition over the same unstyled surfaces. Import
9
16
  * @opengeni/react/connect.css for styling; the host retains navigation,
10
17
  * transport, actor admission, and controller lifetime. */
11
- export declare function ConnectPanel({ returnUrl, title, showAccounts, presentation, className, ...setup }: ConnectPanelProps): import("react").JSX.Element;
18
+ export declare function ConnectPanel({ returnUrl, title, showAccounts, showCustomConnections, showProviderConnections, presentation, className, client, ...setup }: ConnectPanelProps): import("react").JSX.Element;
@@ -3,10 +3,14 @@ export type ConnectSetupProps = {
3
3
  controller: ConnectController;
4
4
  /** Called synchronously in the click handler so a host can open a popup. */
5
5
  onAuthorize: (attempt: ConnectAttempt) => void | Promise<unknown>;
6
+ /** Called synchronously on Continue; hosts can reserve a popup before advancing. */
7
+ onSelectAccount?: (accountId: string) => void | Promise<unknown>;
6
8
  /** Host pagination must retain selections across pages and submit the final set. */
7
9
  onBrowseResources?: (attempt: ConnectAttempt) => void | Promise<unknown>;
8
10
  className?: string;
11
+ /** Provider-specific label supplied by the embedding host. */
12
+ authorizeLabel?: string | undefined;
9
13
  };
10
- /** Unstyled setup surface. No provider secrets enter React state. Host owns
14
+ /** Controller-backed setup surface, styled by opt-in connect.css. No provider secrets enter React state. Host owns
11
15
  * chooser, controller lifetime, navigation and recovery after full redirect. */
12
16
  export declare function ConnectSetup(props: ConnectSetupProps): import("react").JSX.Element;
package/dist/connect.d.ts CHANGED
@@ -1,37 +1,21 @@
1
+ export { useConnect } from "./hooks/use-connect.js";
2
+ export { CapabilityCatalogRow, CapabilityCatalogIndicator, type CapabilityCatalogRowProps, type CapabilityCatalogStatus, } from "./capability-catalog-row.js";
1
3
  export { SkillDiscovery, type SkillDiscoveryProps, type SkillDiscoveryClient, type SkillDiscoveryItem, type SkillDiscoveryPage, } from "./skill-discovery.js";
2
- import type { ConnectController } from "@opengeni/connect";
3
4
  export { ConnectSetup, type ConnectSetupProps } from "./connect-setup.js";
4
5
  export { ConnectChooser, type ConnectChooserProps } from "./connect-chooser.js";
5
6
  export { ConnectAccounts, type ConnectAccountsProps } from "./connect-accounts.js";
6
7
  export { ConnectPanel, type ConnectPanelProps } from "./connect-panel.js";
8
+ export { ConnectionDiscovery, type ConnectionDiscoveryProps } from "./connection-discovery.js";
9
+ export { McpConnectionCard, type McpConnectionCardProps, } from "./components/session-mcp-capability-card.js";
7
10
  export { DeviceAuthorization, type DeviceAuthorizationProps } from "./device-authorization.js";
8
11
  export { IdentityLinkConsent, type IdentityLinkClient, type IdentityLinkConsentProps, } from "./identity-link-consent.js";
9
12
  export { IdentityLinkAccounts, type IdentityLinkAccountsClient } from "./identity-link-accounts.js";
10
13
  export type { ConnectSnapshot } from "@opengeni/connect";
11
14
  export type { ConnectAccount, ConnectAdvance, ConnectAttempt, ConnectNextAction, ConnectOwnership, ConnectProvider, ConnectResource, ConnectTransport, } from "@opengeni/connect";
12
- export declare function useConnect(controller: ConnectController): {
13
- attempt: import("@opengeni/connect").ConnectAttempt | null;
14
- busy: boolean;
15
- error: Error | null;
16
- begin: (input: {
17
- providerId: string;
18
- ownership: import("@opengeni/connect").ConnectOwnership;
19
- returnUrl: string;
20
- idempotencyKey: string;
21
- reconnectAccountId?: string;
22
- installationTarget?: import("@opengeni/connect").ConnectInstallationTarget;
23
- }) => Promise<import("@opengeni/connect").ConnectAttempt>;
24
- recover: (attemptId: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
25
- refresh: () => Promise<import("@opengeni/connect").ConnectAttempt>;
26
- waitForAction: (options?: {
27
- timeoutMs?: number;
28
- }) => Promise<import("@opengeni/connect").ConnectAttempt>;
29
- advance: (action: import("@opengeni/connect").ConnectAdvance, idempotencyKey: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
30
- cancel: (idempotencyKey: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
31
- };
32
15
  export { ConnectionCatalog, ConnectionServiceRow, ConnectionOptionRow, type ConnectionCatalogProps, type ConnectionCatalogService, type ConnectionCatalogOption, } from "./connection-catalog.js";
33
16
  export { ConnectionInstalled, type ConnectionInstalledItem } from "./connection-installed.js";
34
17
  export { ConnectionTypePicker, type ConnectionType } from "./connection-type-picker.js";
35
18
  export { ConnectionLogo } from "./connection-logo.js";
19
+ export { capabilityLogoFallback } from "./capability-logo-fallback.js";
36
20
  export { PluginDiscovery, type PluginDiscoveryProps } from "./plugin-discovery.js";
37
21
  export { PluginDetails } from "./plugin-details.js";