@opengeni/react 1.0.2-canary.37191796234001 → 1.0.2

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 +15 -6
  2. package/dist/artifacts.js +1 -1
  3. package/dist/{browser-viewer-GTR5XQ7X.js → browser-viewer-SHYKQRNX.js} +4 -4
  4. package/dist/{chunk-CR7U7HAR.js → chunk-26ZNDDLZ.js} +3 -3
  5. package/dist/{chunk-ELCE5SXV.js → chunk-3CTRFMAK.js} +2 -2
  6. package/dist/{chunk-XOAMRDDK.js → chunk-742CZ3L3.js} +2 -2
  7. package/dist/{chunk-H2NJQORO.js → chunk-DO544OSV.js} +7 -1
  8. package/dist/chunk-DO544OSV.js.map +1 -0
  9. package/dist/{chunk-IQUCRAT7.js → chunk-EESD3PY3.js} +2 -2
  10. package/dist/{chunk-23J2ZNXT.js → chunk-EN3YTHKR.js} +3 -3
  11. package/dist/{chunk-JFNEV4LU.js → chunk-GYVRFZDY.js} +3 -3
  12. package/dist/{chunk-YWFG7ZX7.js → chunk-HDJWDK7W.js} +3 -3
  13. package/dist/{chunk-NZUI76EM.js → chunk-J6DBS4T3.js} +2 -2
  14. package/dist/{chunk-SJZDKVW2.js → chunk-JIQYUGVL.js} +4 -4
  15. package/dist/{chunk-XUW2UWQM.js → chunk-RLUSC2WA.js} +3 -3
  16. package/dist/{chunk-XUW2UWQM.js.map → chunk-RLUSC2WA.js.map} +1 -1
  17. package/dist/{chunk-Q5QBEZIQ.js → chunk-RSI7XYXL.js} +2 -2
  18. package/dist/{chunk-NEXLLTP4.js → chunk-TKOTKRWY.js} +4 -4
  19. package/dist/{chunk-NEXLLTP4.js.map → chunk-TKOTKRWY.js.map} +1 -1
  20. package/dist/{chunk-TMJRG4YC.js → chunk-VV5E43LD.js} +432 -180
  21. package/dist/chunk-VV5E43LD.js.map +1 -0
  22. package/dist/{chunk-FFA2OVOV.js → chunk-WGXVEJO5.js} +3 -3
  23. package/dist/{chunk-E3G7SAYZ.js → chunk-YM2DE7BQ.js} +2 -2
  24. package/dist/components/open-geni-chat.d.ts +6 -3
  25. package/dist/components/session-conversation.d.ts +6 -3
  26. package/dist/components/session-proxy-scope.d.ts +21 -0
  27. package/dist/composer.js +6 -6
  28. package/dist/{computer-viewer-ENHVAZ2Q.js → computer-viewer-6SRGWRUX.js} +4 -4
  29. package/dist/index.js +17 -17
  30. package/dist/index.js.map +1 -1
  31. package/dist/interaction.js +4 -4
  32. package/dist/{latest-question-755OW5DS.js → latest-question-HTRIS4KJ.js} +2 -2
  33. package/dist/lib/host-theme.d.ts +7 -0
  34. package/dist/machines.js +3 -3
  35. package/dist/{model-policy-picker-menu-PWRI7R2X.js → model-policy-picker-menu-M54ISBMN.js} +4 -4
  36. package/dist/model-policy.js +1 -1
  37. package/dist/realtime.js +3 -3
  38. package/dist/{sandbox-files-BBC47SLD.js → sandbox-files-GORZOUUJ.js} +4 -4
  39. package/dist/session-ui.js +9 -9
  40. package/dist/session.js +5 -5
  41. package/dist/timeline/turn-summary.d.ts +3 -1
  42. package/dist/timeline/types.d.ts +6 -0
  43. package/dist/usage.js +1 -1
  44. package/package.json +3 -3
  45. package/src/components/message-timeline.tsx +704 -450
  46. package/src/components/open-geni-chat.tsx +56 -37
  47. package/src/components/session-conversation.tsx +87 -73
  48. package/src/components/session-proxy-scope.tsx +92 -0
  49. package/src/hooks/use-session-background-commands.ts +2 -2
  50. package/src/hooks/use-video-artifact-playback.ts +1 -1
  51. package/src/lib/host-theme.ts +15 -2
  52. package/src/model-policy.ts +2 -2
  53. package/src/session-context.ts +3 -3
  54. package/src/timeline/projection.ts +9 -0
  55. package/src/timeline/turn-summary.tsx +10 -0
  56. package/src/timeline/types.ts +6 -0
  57. package/dist/chunk-H2NJQORO.js.map +0 -1
  58. package/dist/chunk-TMJRG4YC.js.map +0 -1
  59. /package/dist/{browser-viewer-GTR5XQ7X.js.map → browser-viewer-SHYKQRNX.js.map} +0 -0
  60. /package/dist/{chunk-CR7U7HAR.js.map → chunk-26ZNDDLZ.js.map} +0 -0
  61. /package/dist/{chunk-ELCE5SXV.js.map → chunk-3CTRFMAK.js.map} +0 -0
  62. /package/dist/{chunk-XOAMRDDK.js.map → chunk-742CZ3L3.js.map} +0 -0
  63. /package/dist/{chunk-IQUCRAT7.js.map → chunk-EESD3PY3.js.map} +0 -0
  64. /package/dist/{chunk-23J2ZNXT.js.map → chunk-EN3YTHKR.js.map} +0 -0
  65. /package/dist/{chunk-JFNEV4LU.js.map → chunk-GYVRFZDY.js.map} +0 -0
  66. /package/dist/{chunk-YWFG7ZX7.js.map → chunk-HDJWDK7W.js.map} +0 -0
  67. /package/dist/{chunk-NZUI76EM.js.map → chunk-J6DBS4T3.js.map} +0 -0
  68. /package/dist/{chunk-SJZDKVW2.js.map → chunk-JIQYUGVL.js.map} +0 -0
  69. /package/dist/{chunk-Q5QBEZIQ.js.map → chunk-RSI7XYXL.js.map} +0 -0
  70. /package/dist/{chunk-FFA2OVOV.js.map → chunk-WGXVEJO5.js.map} +0 -0
  71. /package/dist/{chunk-E3G7SAYZ.js.map → chunk-YM2DE7BQ.js.map} +0 -0
  72. /package/dist/{computer-viewer-ENHVAZ2Q.js.map → computer-viewer-6SRGWRUX.js.map} +0 -0
  73. /package/dist/{latest-question-755OW5DS.js.map → latest-question-HTRIS4KJ.js.map} +0 -0
  74. /package/dist/{model-policy-picker-menu-PWRI7R2X.js.map → model-policy-picker-menu-M54ISBMN.js.map} +0 -0
  75. /package/dist/{sandbox-files-BBC47SLD.js.map → sandbox-files-GORZOUUJ.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  defaultModelPolicyPickerMessages,
7
7
  effectiveRows,
8
8
  groupPresentationFor
9
- } from "./chunk-CR7U7HAR.js";
9
+ } from "./chunk-26ZNDDLZ.js";
10
10
  import {
11
11
  MENU_CHECK_CLASS,
12
12
  MENU_LABEL_CLASS,
@@ -21,7 +21,7 @@ import {
21
21
  labelReasoningEffort,
22
22
  payerSummaryForModel,
23
23
  runnableLatencyModesForModel
24
- } from "./chunk-XUW2UWQM.js";
24
+ } from "./chunk-RLUSC2WA.js";
25
25
  import {
26
26
  cn
27
27
  } from "./chunk-22KP6LR5.js";
@@ -316,4 +316,4 @@ export {
316
316
  ModelPolicyPickerMenu,
317
317
  ModelPolicyPickerPopover
318
318
  };
319
- //# sourceMappingURL=chunk-FFA2OVOV.js.map
319
+ //# sourceMappingURL=chunk-WGXVEJO5.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-YV4L3ILF.js";
24
24
  import {
25
25
  useOpenGeni
26
- } from "./chunk-NEXLLTP4.js";
26
+ } from "./chunk-TKOTKRWY.js";
27
27
  import {
28
28
  CodeEditor
29
29
  } from "./chunk-4RVYOY4O.js";
@@ -3121,4 +3121,4 @@ export {
3121
3121
  PierreFile,
3122
3122
  SandboxFiles
3123
3123
  };
3124
- //# sourceMappingURL=chunk-E3G7SAYZ.js.map
3124
+ //# sourceMappingURL=chunk-YM2DE7BQ.js.map
@@ -3,6 +3,7 @@ import { type HostSurfacePreference, type HostThemePreference } from "../lib/hos
3
3
  import { type ClientOverride } from "../session-context.js";
4
4
  import { type SessionConversationProps } from "./session-conversation.js";
5
5
  import { type SessionListLabels, type SessionListProps } from "./session-list.js";
6
+ import { type SessionProxyBaseUrl } from "./session-proxy-scope.js";
6
7
  export type OpenGeniChatLabels = SessionListLabels & {
7
8
  openChats: string;
8
9
  closeChats: string;
@@ -12,7 +13,7 @@ export type OpenGeniChatLabels = SessionListLabels & {
12
13
  send: string;
13
14
  newChatUnavailable: string;
14
15
  };
15
- export type OpenGeniChatProps = ClientOverride & {
16
+ export type OpenGeniChatProps = ClientOverride & SessionProxyBaseUrl & {
16
17
  /** Controlled selection. `null` shows the new-chat composer. */
17
18
  sessionId?: string | null | undefined;
18
19
  /** Initial selection when uncontrolled. Defaults to a new chat. */
@@ -27,7 +28,7 @@ export type OpenGeniChatProps = ClientOverride & {
27
28
  /** Hide the "New chat" entry point. */
28
29
  newChat?: boolean | undefined;
29
30
  /** Forwarded to the conversation (message rendering, tool renderers, composer...). */
30
- conversationProps?: Omit<SessionConversationProps, "sessionId" | "client" | "workspaceId">;
31
+ conversationProps?: Omit<SessionConversationProps, "sessionId" | "client" | "workspaceId" | "baseUrl">;
31
32
  /** Forwarded to the list (rename/archive toggles, page size). */
32
33
  listProps?: Pick<SessionListProps, "rename" | "archive" | "pageSize"> | undefined;
33
34
  labels?: Partial<OpenGeniChatLabels> | undefined;
@@ -51,5 +52,7 @@ export type OpenGeniChatProps = ClientOverride & {
51
52
  * A complete chat experience: the user's chat list plus the conversation.
52
53
  * The list is a sidebar when the component is wide and a drawer when narrow
53
54
  * (container-based, so it adapts inside panels as well as full pages).
55
+ * `<OpenGeniChat baseUrl="/api/opengeni" />` needs no provider: it talks to
56
+ * your session proxy and uses the workspace the proxy resolves.
54
57
  */
55
- export declare function OpenGeniChat({ client, workspaceId, sessionId: controlledSessionId, defaultSessionId, onSessionChange, createSession, newChat, conversationProps, listProps, labels: labelOverrides, className, height, theme, surface, }: OpenGeniChatProps): import("react").JSX.Element;
58
+ export declare function OpenGeniChat({ baseUrl, ...props }: OpenGeniChatProps): import("react").JSX.Element;
@@ -6,6 +6,7 @@ import { type HumanInputSurfaceProps } from "./human-input-surface.js";
6
6
  import { type MessageTimelineProps } from "./message-timeline.js";
7
7
  import { type OpenGeniLinkResolver, type OpenGeniViewerTarget } from "./open-geni-links.js";
8
8
  import type { UserMessageDisclosureLabels } from "./user-message-body.js";
9
+ import { type SessionProxyBaseUrl } from "./session-proxy-scope.js";
9
10
  import { type HostSurfacePreference, type HostThemePreference } from "../lib/host-theme.js";
10
11
  export type SessionConversationLabels = {
11
12
  /** Banner action after a refresh failure; the conversation stays mounted. */
@@ -13,7 +14,7 @@ export type SessionConversationLabels = {
13
14
  /** Action when the conversation could not load at all. */
14
15
  tryAgain: string;
15
16
  };
16
- export type SessionConversationProps = ClientOverride & {
17
+ export type SessionConversationProps = ClientOverride & SessionProxyBaseUrl & {
17
18
  sessionId: string;
18
19
  /** Host-owned artifact links, previews and other message presentation. */
19
20
  renderMessageText?: MessageTimelineProps["renderMessageText"];
@@ -82,5 +83,7 @@ export type SessionConversationProps = ClientOverride & {
82
83
  composerProps?: Omit<ChatComposerProps, "composer" | "effectiveControl" | "queuedAheadCount" | "attachments">;
83
84
  };
84
85
  /** Complete existing-session conversation. Uses the provider's normal SDK client
85
- * (including Site clients), one shared event feed, and authoritative queue state. */
86
- export declare function SessionConversation(props: SessionConversationProps): import("react").JSX.Element;
86
+ * (including Site clients), one shared event feed, and authoritative queue state.
87
+ * `<SessionConversation baseUrl="/api/opengeni" sessionId={id} />` needs no
88
+ * provider: it talks to your session proxy and its resolved workspace. */
89
+ export declare function SessionConversation({ baseUrl, ...props }: SessionConversationProps): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { type ReactNode } from "react";
2
+ export type SessionProxyBaseUrl = {
3
+ /**
4
+ * Mount path of your `createSessionProxyHandler` (for example
5
+ * `"/api/opengeni"`). The component then needs no `OpenGeniProvider`,
6
+ * client, or workspace id: it creates the browser client for that path and
7
+ * uses the workspace the proxy resolved for the signed-in user. An explicit
8
+ * `workspaceId` skips that lookup.
9
+ */
10
+ baseUrl?: string | undefined;
11
+ };
12
+ /**
13
+ * `OpenGeniProvider` for a same-origin session proxy, from its base URL alone.
14
+ * The proxy's client config names the resolved workspace, so the browser
15
+ * never handles an Opengeni id. Provider-based usage is unchanged.
16
+ */
17
+ export declare function SessionProxyScope({ baseUrl, workspaceId, children, }: {
18
+ baseUrl: string;
19
+ workspaceId?: string | undefined;
20
+ children: ReactNode;
21
+ }): import("react").JSX.Element;
package/dist/composer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ModelPolicyPickerMenu
3
- } from "./chunk-FFA2OVOV.js";
3
+ } from "./chunk-WGXVEJO5.js";
4
4
  import {
5
5
  Actions,
6
6
  AttachButton,
@@ -41,8 +41,8 @@ import {
41
41
  useChatComposer,
42
42
  useChatComposerController,
43
43
  useVoiceInput
44
- } from "./chunk-23J2ZNXT.js";
45
- import "./chunk-Q5QBEZIQ.js";
44
+ } from "./chunk-EN3YTHKR.js";
45
+ import "./chunk-RSI7XYXL.js";
46
46
  import "./chunk-BRM6FVZA.js";
47
47
  import {
48
48
  BillingClassMark,
@@ -51,14 +51,14 @@ import {
51
51
  PickerBackHeader,
52
52
  PickerNavRow,
53
53
  defaultModelPolicyPickerMessages
54
- } from "./chunk-CR7U7HAR.js";
54
+ } from "./chunk-26ZNDDLZ.js";
55
55
  import "./chunk-K3HQAKQX.js";
56
- import "./chunk-XUW2UWQM.js";
56
+ import "./chunk-RLUSC2WA.js";
57
57
  import "./chunk-VZTQ73XT.js";
58
58
  import "./chunk-UTRTG6LH.js";
59
59
  import "./chunk-YQEAA6LT.js";
60
60
  import "./chunk-UGLEYEMP.js";
61
- import "./chunk-NEXLLTP4.js";
61
+ import "./chunk-TKOTKRWY.js";
62
62
  import "./chunk-22KP6LR5.js";
63
63
  export {
64
64
  Actions,
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  ComputerViewer,
3
3
  computerKey
4
- } from "./chunk-JFNEV4LU.js";
5
- import "./chunk-NZUI76EM.js";
4
+ } from "./chunk-GYVRFZDY.js";
5
+ import "./chunk-J6DBS4T3.js";
6
6
  import "./chunk-JVYQRRC4.js";
7
7
  import "./chunk-DYWBUX5Q.js";
8
8
  import "./chunk-RHREZ7BO.js";
9
9
  import "./chunk-5J4FOW6Q.js";
10
10
  import "./chunk-YQEAA6LT.js";
11
11
  import "./chunk-UGLEYEMP.js";
12
- import "./chunk-NEXLLTP4.js";
12
+ import "./chunk-TKOTKRWY.js";
13
13
  import "./chunk-JT4JW7BC.js";
14
14
  import "./chunk-22KP6LR5.js";
15
15
  export {
16
16
  ComputerViewer,
17
17
  computerKey
18
18
  };
19
- //# sourceMappingURL=computer-viewer-ENHVAZ2Q.js.map
19
+ //# sourceMappingURL=computer-viewer-6SRGWRUX.js.map
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  useSandboxFiles,
9
9
  useUnicodeFallbackFonts,
10
10
  visibleFileTree
11
- } from "./chunk-E3G7SAYZ.js";
11
+ } from "./chunk-YM2DE7BQ.js";
12
12
  import {
13
13
  createEmbeddedSessionClient,
14
14
  isGoalEvent,
@@ -17,7 +17,7 @@ import {
17
17
  useGoal,
18
18
  useSessionLineage,
19
19
  useSessionMcpApprovalPolicy
20
- } from "./chunk-XOAMRDDK.js";
20
+ } from "./chunk-742CZ3L3.js";
21
21
  import {
22
22
  CONNECTION_STATUS_META,
23
23
  ConnectionDot,
@@ -48,7 +48,7 @@ import {
48
48
  healthPulses,
49
49
  pointsFor,
50
50
  useMachines
51
- } from "./chunk-IQUCRAT7.js";
51
+ } from "./chunk-EESD3PY3.js";
52
52
  import {
53
53
  ActivityRail,
54
54
  ApprovalSurface,
@@ -107,7 +107,7 @@ import {
107
107
  useWorkspaceSessions,
108
108
  userMessageLikelyNeedsDisclosure,
109
109
  v4aToGitFileDiff
110
- } from "./chunk-TMJRG4YC.js";
110
+ } from "./chunk-VV5E43LD.js";
111
111
  import {
112
112
  useThemeType
113
113
  } from "./chunk-UK4TINKT.js";
@@ -140,20 +140,20 @@ import {
140
140
  useSessionControl,
141
141
  useSessionEvents,
142
142
  useTurnQueue
143
- } from "./chunk-SJZDKVW2.js";
143
+ } from "./chunk-JIQYUGVL.js";
144
144
  import {
145
145
  buildTimeline,
146
146
  creditExhaustedFromEvents,
147
147
  extractSessionRef,
148
148
  groupTimeline,
149
149
  sessionStatusFromEvents
150
- } from "./chunk-H2NJQORO.js";
150
+ } from "./chunk-DO544OSV.js";
151
151
  import {
152
152
  toolDisplayName
153
153
  } from "./chunk-ERGYJIBB.js";
154
154
  import {
155
155
  OpenGeniProvider
156
- } from "./chunk-ELCE5SXV.js";
156
+ } from "./chunk-3CTRFMAK.js";
157
157
  import {
158
158
  McpConnectionCard,
159
159
  SessionCapabilityFrame,
@@ -202,7 +202,7 @@ import {
202
202
  import "./chunk-RHREZ7BO.js";
203
203
  import {
204
204
  ModelPolicyPickerMenu
205
- } from "./chunk-FFA2OVOV.js";
205
+ } from "./chunk-WGXVEJO5.js";
206
206
  import {
207
207
  CommandPalette,
208
208
  ComposerTranscriptionControl,
@@ -235,14 +235,14 @@ import {
235
235
  useSlashCommands,
236
236
  useTranscription,
237
237
  useVoiceInput
238
- } from "./chunk-23J2ZNXT.js";
238
+ } from "./chunk-EN3YTHKR.js";
239
239
  import {
240
240
  FILE_ONLY_MESSAGE_TEXT,
241
241
  composeSendInput,
242
242
  shouldSteerOnKey,
243
243
  shouldSubmitOnKey,
244
244
  useComposer
245
- } from "./chunk-Q5QBEZIQ.js";
245
+ } from "./chunk-RSI7XYXL.js";
246
246
  import {
247
247
  LightboxProvider,
248
248
  Tooltip,
@@ -265,7 +265,7 @@ import {
265
265
  PickerNavRow,
266
266
  defaultModelPolicyPickerMessages,
267
267
  modelHasMark
268
- } from "./chunk-CR7U7HAR.js";
268
+ } from "./chunk-26ZNDDLZ.js";
269
269
  import "./chunk-K3HQAKQX.js";
270
270
  import {
271
271
  advancedSourceSummary,
@@ -285,7 +285,7 @@ import {
285
285
  projectPickerRows,
286
286
  runnableLatencyModesForModel,
287
287
  sortPickerRows
288
- } from "./chunk-XUW2UWQM.js";
288
+ } from "./chunk-RLUSC2WA.js";
289
289
  import "./chunk-VZTQ73XT.js";
290
290
  import {
291
291
  COMPOSER_MODEL_UNAVAILABLE_MESSAGE,
@@ -326,7 +326,7 @@ import {
326
326
  import {
327
327
  useOpenGeni,
328
328
  useOpenGeniClient
329
- } from "./chunk-NEXLLTP4.js";
329
+ } from "./chunk-TKOTKRWY.js";
330
330
  import {
331
331
  CodeEditor,
332
332
  languageForPath
@@ -451,7 +451,7 @@ function useVideoArtifactPlaybackLoader(options = {}) {
451
451
  return useMemo(
452
452
  () => async (artifactId, signal) => {
453
453
  if (typeof client.createVideoArtifactPlaybackSource !== "function") {
454
- throw new Error("This OpenGeni host does not expose retained-video playback.");
454
+ throw new Error("This Opengeni host does not expose retained-video playback.");
455
455
  }
456
456
  return await client.createVideoArtifactPlaybackSource(
457
457
  workspaceId,
@@ -3758,7 +3758,7 @@ import {
3758
3758
  } from "lucide-react";
3759
3759
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
3760
3760
  var LazySandboxFiles = lazy(
3761
- () => import("./sandbox-files-BBC47SLD.js").then(({ SandboxFiles: SandboxFiles2 }) => ({ default: SandboxFiles2 })).catch(() => ({ default: FilesLoadFailed }))
3761
+ () => import("./sandbox-files-GORZOUUJ.js").then(({ SandboxFiles: SandboxFiles2 }) => ({ default: SandboxFiles2 })).catch(() => ({ default: FilesLoadFailed }))
3762
3762
  );
3763
3763
  function FilesLoadFailed() {
3764
3764
  return /* @__PURE__ */ jsxs5(CenteredState, { tone: "danger", icon: /* @__PURE__ */ jsx6(TriangleAlertIcon, { className: "size-5", "aria-hidden": true }), children: [
@@ -3773,11 +3773,11 @@ function FilesTabBody(props) {
3773
3773
  return /* @__PURE__ */ jsx6(Suspense, { fallback: /* @__PURE__ */ jsx6(WorkbenchSurfaceLoading, { name: "Files" }), children: /* @__PURE__ */ jsx6(LazySandboxFiles, { ...props }) });
3774
3774
  }
3775
3775
  var LazyBrowserViewer = lazy(async () => {
3776
- const { BrowserViewer } = await import("./browser-viewer-GTR5XQ7X.js");
3776
+ const { BrowserViewer } = await import("./browser-viewer-SHYKQRNX.js");
3777
3777
  return { default: BrowserViewer };
3778
3778
  });
3779
3779
  var LazyComputerViewer = lazy(async () => {
3780
- const { ComputerViewer } = await import("./computer-viewer-ENHVAZ2Q.js");
3780
+ const { ComputerViewer } = await import("./computer-viewer-6SRGWRUX.js");
3781
3781
  return { default: ComputerViewer };
3782
3782
  });
3783
3783
  var WORKBENCH_TAB_CHANGES = "changes";