@opengeni/react 2.0.1 → 2.0.2-canary.38789554071001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifacts.js +4 -2
- package/dist/artifacts.js.map +1 -1
- package/dist/{browser-viewer-RZH5JVFZ.js → browser-viewer-M7BIVFTW.js} +3 -3
- package/dist/{chat-interactive-block-UCACTZIE.js → chat-interactive-block-BO2IWXVK.js} +3 -3
- package/dist/{chunk-NIIXN66Z.js → chunk-5XEXTWEM.js} +2 -2
- package/dist/{chunk-4JUSFDTA.js → chunk-6JFN3OWG.js} +28 -225
- package/dist/chunk-6JFN3OWG.js.map +1 -0
- package/dist/{chunk-BSIADJ4U.js → chunk-6SNDCUPB.js} +2 -2
- package/dist/{chunk-RRYCD3QD.js → chunk-AMVCNAGC.js} +992 -924
- package/dist/chunk-AMVCNAGC.js.map +1 -0
- package/dist/{chunk-ERLG2X3U.js → chunk-CORUP6JB.js} +3 -2
- package/dist/chunk-CORUP6JB.js.map +1 -0
- package/dist/{chunk-6JUSXDF4.js → chunk-HBXL6HWG.js} +2 -2
- package/dist/{chunk-HQN5AZFY.js → chunk-HGKELH6Z.js} +12 -3
- package/dist/{chunk-HQN5AZFY.js.map → chunk-HGKELH6Z.js.map} +1 -1
- package/dist/{chunk-QWA4BHC6.js → chunk-ISN726VG.js} +2 -2
- package/dist/{chunk-QQ5UGGGE.js → chunk-KZENYIA2.js} +16 -2
- package/dist/{chunk-QQ5UGGGE.js.map → chunk-KZENYIA2.js.map} +1 -1
- package/dist/{chunk-25YZS7TK.js → chunk-O5GPRG76.js} +4 -4
- package/dist/{chunk-UPP6YD2R.js → chunk-PWCBMEV2.js} +4 -4
- package/dist/{chunk-X6KAA43Z.js → chunk-Q26UAIXI.js} +2 -2
- package/dist/{chunk-U7A22SY4.js → chunk-TIHSXNBC.js} +6 -2
- package/dist/{chunk-U7A22SY4.js.map → chunk-TIHSXNBC.js.map} +1 -1
- package/dist/{chunk-2U54CHR5.js → chunk-VIUEOHXY.js} +3 -2
- package/dist/chunk-VIUEOHXY.js.map +1 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +3 -0
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +15 -51
- package/dist/components/artifacts/site-view.d.ts +4 -1
- package/dist/components/linkified-text.d.ts +18 -0
- package/dist/composer-messages.js +2 -2
- package/dist/composer.js +4 -4
- package/dist/connect.js +2 -2
- package/dist/index.js +12 -12
- package/dist/interaction.js +2 -2
- package/dist/{latest-question-6WZQV23L.js → latest-question-CHE7E753.js} +3 -3
- package/dist/lib/format.d.ts +7 -0
- package/dist/machines.js +2 -2
- package/dist/{platform-activity-row-UQDQDX4C.js → platform-activity-row-5OCKOQWZ.js} +2 -2
- package/dist/session-ui.js +10 -10
- package/dist/session.js +4 -4
- package/dist/sites.js +1 -1
- package/dist/timeline/types.d.ts +1 -1
- package/dist/timeline-model.js +3 -3
- package/package.json +3 -3
- package/src/components/artifacts/artifact-sandbox.tsx +4 -0
- package/src/components/artifacts/published-html-artifact-frame.tsx +48 -321
- package/src/components/artifacts/site-view.tsx +5 -0
- package/src/components/human-input-form.tsx +19 -13
- package/src/components/linkified-text.tsx +79 -0
- package/src/components/message-timeline.tsx +4 -3
- package/src/hooks/use-machines.ts +4 -0
- package/src/lib/format.ts +25 -1
- package/src/timeline/platform-activity-presentation.ts +1 -0
- package/src/timeline/projection.ts +18 -1
- package/src/timeline/types.ts +1 -0
- package/dist/chunk-2U54CHR5.js.map +0 -1
- package/dist/chunk-4JUSFDTA.js.map +0 -1
- package/dist/chunk-ERLG2X3U.js.map +0 -1
- package/dist/chunk-RRYCD3QD.js.map +0 -1
- /package/dist/{browser-viewer-RZH5JVFZ.js.map → browser-viewer-M7BIVFTW.js.map} +0 -0
- /package/dist/{chat-interactive-block-UCACTZIE.js.map → chat-interactive-block-BO2IWXVK.js.map} +0 -0
- /package/dist/{chunk-NIIXN66Z.js.map → chunk-5XEXTWEM.js.map} +0 -0
- /package/dist/{chunk-BSIADJ4U.js.map → chunk-6SNDCUPB.js.map} +0 -0
- /package/dist/{chunk-6JUSXDF4.js.map → chunk-HBXL6HWG.js.map} +0 -0
- /package/dist/{chunk-QWA4BHC6.js.map → chunk-ISN726VG.js.map} +0 -0
- /package/dist/{chunk-25YZS7TK.js.map → chunk-O5GPRG76.js.map} +0 -0
- /package/dist/{chunk-UPP6YD2R.js.map → chunk-PWCBMEV2.js.map} +0 -0
- /package/dist/{chunk-X6KAA43Z.js.map → chunk-Q26UAIXI.js.map} +0 -0
- /package/dist/{latest-question-6WZQV23L.js.map → latest-question-CHE7E753.js.map} +0 -0
- /package/dist/{platform-activity-row-UQDQDX4C.js.map → platform-activity-row-5OCKOQWZ.js.map} +0 -0
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-4QYP6QUI.js";
|
|
12
12
|
import {
|
|
13
13
|
PublishedHtmlArtifactFrame
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6JFN3OWG.js";
|
|
15
15
|
import {
|
|
16
16
|
inlineHtmlDocument
|
|
17
17
|
} from "./chunk-IGFZFLI2.js";
|
|
@@ -160,6 +160,7 @@ function ArtifactSandbox(props) {
|
|
|
160
160
|
...props.theme ? { theme: props.theme } : {},
|
|
161
161
|
...!focused && props.height ? { style: { height: props.height } } : {},
|
|
162
162
|
...props.toolBridge ? { toolBridge: props.toolBridge } : {},
|
|
163
|
+
...props.viewer ? { viewer: props.viewer } : {},
|
|
163
164
|
className: cn(
|
|
164
165
|
"block h-[clamp(30rem,62vh,48rem)] w-full border-0 bg-white",
|
|
165
166
|
props.fill && "h-0 min-h-0 flex-1",
|
|
@@ -390,4 +391,4 @@ export {
|
|
|
390
391
|
DeferredChatMedia,
|
|
391
392
|
ChatInteractiveBlock
|
|
392
393
|
};
|
|
393
|
-
//# sourceMappingURL=chunk-
|
|
394
|
+
//# sourceMappingURL=chunk-VIUEOHXY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/artifacts/chat-interactive-block.tsx","../src/components/artifacts/artifact-sandbox.tsx","../src/components/artifacts/deferred-chat-media.tsx"],"sourcesContent":["import type { OpenGeniClient, ToolGatewayIdentity } from \"@opengeni/sdk\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport { loadSiteSnapshot } from \"../../sites-ui\";\nimport { useOpenGeniLinkResolver } from \"../open-geni-links\";\nimport {\n ArtifactButton,\n ArtifactLabelsProvider,\n ArtifactSelect,\n useArtifactLabels,\n type ArtifactLabels,\n} from \"./artifact-chrome\";\nimport { ArtifactSandbox } from \"./artifact-sandbox\";\nimport { DeferredChatMedia } from \"./deferred-chat-media\";\nimport { inlineHtmlDocument } from \"./inline-html-document\";\nimport type { PublishedHtmlArtifactToolBridge } from \"./published-html-artifact-frame\";\n\n// Fixed chat viewports keep async Site loads and fragment resize messages from\n// moving the conversation. Full-screen remains available for larger content.\nconst INLINE_PREVIEW_HEIGHT = 360;\nconst SITE_PREVIEW_HEIGHT = 400;\nconst PREVIEW_CHROME_HEIGHT = 50;\n\n/** Reads a Site needs to render; the console client, the SDK client, or a proxy. */\nexport type SiteSnapshotClient = Pick<\n OpenGeniClient,\n \"getWorkspaceArtifact\" | \"getWorkspaceArtifactHtml\"\n> &\n Partial<Pick<OpenGeniClient, \"getWorkspaceArtifactContent\">>;\n\n/** The exact saved Site a tool bridge is pinned to (absent for inline HTML). */\nexport type SiteToolScope = {\n artifactId: string;\n siteVersionId: string;\n requestedTools: readonly ToolGatewayIdentity[];\n};\n\n/** Host-owned Site API access. Omit it and Sites render without workspace tools. */\nexport type SiteToolBridgeFactory = (\n site?: SiteToolScope,\n) => PublishedHtmlArtifactToolBridge | undefined;\n\nexport type ChatInteractiveBlockProps = {\n workspaceId: string;\n kind: \"html\" | \"site\";\n content: string;\n client: SiteSnapshotClient;\n toolBridge?: SiteToolBridgeFactory | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n /** Translations for the preview's copy; defaults to English. */\n labels?: Partial<ArtifactLabels> | undefined;\n};\n\n/**\n * Inline preview for an assistant `opengeni-html` or `opengeni-site` fence, as\n * the Opengeni console renders it. \"Open Site\" goes through the nearest\n * `resolveLink`, so a host decides where a Site opens.\n */\nexport function ChatInteractiveBlock({ labels, ...props }: ChatInteractiveBlockProps) {\n return (\n <ArtifactLabelsProvider labels={labels}>\n <InteractiveBlock {...props} />\n </ArtifactLabelsProvider>\n );\n}\n\nfunction InteractiveBlock(props: ChatInteractiveBlockProps) {\n const labels = useArtifactLabels();\n const height =\n (props.kind === \"html\" ? INLINE_PREVIEW_HEIGHT : SITE_PREVIEW_HEIGHT) + PREVIEW_CHROME_HEIGHT;\n return (\n <DeferredChatMedia\n key={`${props.workspaceId}:${props.kind}:${props.kind === \"site\" ? props.content : \"inline\"}`}\n height={height}\n actionLabel={props.kind === \"html\" ? labels.loadPreview : labels.loadSitePreview}\n >\n <div style={{ height }}>\n <LoadedChatInteractiveBlock {...props} />\n </div>\n </DeferredChatMedia>\n );\n}\n\nfunction LoadedChatInteractiveBlock(props: ChatInteractiveBlockProps) {\n const labels = useArtifactLabels();\n if (props.kind === \"html\") return <InlineHtml {...props} />;\n try {\n const value = JSON.parse(props.content);\n if (\n !value ||\n typeof value.siteId !== \"string\" ||\n !/^[0-9a-f-]{36}$/i.test(value.siteId) ||\n (value.versionId !== undefined &&\n (typeof value.versionId !== \"string\" || !/^[0-9a-f-]{36}$/i.test(value.versionId)))\n )\n throw new Error(\"Invalid Site reference\");\n return (\n <SiteEmbed\n key={`${props.workspaceId}:${value.siteId}:${value.versionId ?? \"current\"}`}\n {...props}\n siteId={value.siteId}\n initialVersionId={value.versionId}\n />\n );\n } catch {\n return <p role=\"alert\">{labels.siteReferenceInvalid}</p>;\n }\n}\n\nfunction InlineHtml({ content, toolBridge, theme }: ChatInteractiveBlockProps) {\n const labels = useArtifactLabels();\n const html = useMemo(() => inlineHtmlDocument(content), [content]);\n const bridge = useMemo(() => toolBridge?.(), [toolBridge]);\n return (\n <ArtifactSandbox\n title={labels.preview}\n showTitle={false}\n showLiveStatus={false}\n html={html}\n toolBridge={bridge}\n height={INLINE_PREVIEW_HEIGHT}\n className=\"h-full\"\n fill\n theme={theme}\n />\n );\n}\n\nfunction SiteEmbed(\n props: ChatInteractiveBlockProps & { siteId: string; initialVersionId?: string },\n) {\n const [versionId, setVersionId] = useState(props.initialVersionId);\n return (\n <SiteEmbedContent\n key={versionId ?? \"current\"}\n {...props}\n versionId={versionId}\n onVersionChange={setVersionId}\n />\n );\n}\n\nfunction SiteEmbedContent({\n workspaceId,\n client,\n toolBridge,\n theme,\n siteId,\n versionId,\n onVersionChange,\n}: ChatInteractiveBlockProps & {\n siteId: string;\n versionId?: string | undefined;\n onVersionChange: (id: string) => void;\n}) {\n const [loaded, setLoaded] = useState<{\n client: SiteSnapshotClient;\n snapshot: Awaited<ReturnType<typeof loadSiteSnapshot>>;\n } | null>(null);\n const snapshot = loaded?.client === client ? loaded.snapshot : null;\n const [error, setError] = useState(false);\n const [retry, setRetry] = useState(0);\n useEffect(() => {\n const abort = new AbortController();\n setError(false);\n setLoaded(null);\n void loadSiteSnapshot(client, workspaceId, siteId, {\n signal: abort.signal,\n ...(versionId ? { versionId } : {}),\n })\n .then((value) => {\n if (!abort.signal.aborted) setLoaded({ client, snapshot: value });\n })\n .catch(() => {\n if (!abort.signal.aborted) setError(true);\n });\n return () => abort.abort();\n }, [client, workspaceId, siteId, versionId, retry]);\n const content = snapshot?.content;\n const bridge = useMemo(\n () =>\n content\n ? toolBridge?.({\n artifactId: siteId,\n siteVersionId: content.versionId,\n requestedTools: content.requestedTools,\n })\n : undefined,\n [toolBridge, siteId, content],\n );\n const open = useOpenGeniLinkResolver()?.({ kind: \"site\", artifactId: siteId, workspaceId });\n const labels = useArtifactLabels();\n if (error)\n return (\n <p role=\"alert\">\n {labels.siteLoadFailed}{\" \"}\n <ArtifactButton size=\"sm\" onClick={() => setRetry((v) => v + 1)}>\n {labels.retry}\n </ArtifactButton>\n </p>\n );\n if (!snapshot) return <p role=\"status\">{labels.loadingSite}</p>;\n if (!content) return <p>{labels.siteUnpublished}</p>;\n return (\n <ArtifactSandbox\n title={snapshot.detail.artifact.title}\n html={content.html}\n toolBridge={bridge}\n height={SITE_PREVIEW_HEIGHT}\n className=\"h-full\"\n fill\n theme={theme}\n headerControls={\n <>\n {/* One published version has nothing to choose; keep the bar for the title. */}\n {snapshot.detail.versions.length > 1 ||\n !snapshot.detail.versions.some((v) => v.id === content.versionId) ? (\n <ArtifactSelect\n aria-label={labels.siteVersion}\n className=\"bg-transparent text-xs\"\n value={content.versionId}\n onChange={(e) => onVersionChange(e.target.value)}\n >\n {!snapshot.detail.versions.some((v) => v.id === content.versionId) && (\n <option value={content.versionId}>{labels.savedVersion}</option>\n )}\n {snapshot.detail.versions.map((v) => (\n <option key={v.id} value={v.id}>\n {labels.version(v.revision)}\n </option>\n ))}\n </ArtifactSelect>\n ) : null}\n {open?.href ? (\n <a\n className=\"shrink-0 whitespace-nowrap text-xs underline\"\n href={open.href}\n data-og-open-site=\"\"\n >\n {labels.openSite}\n </a>\n ) : open?.open ? (\n <button\n type=\"button\"\n className=\"shrink-0 cursor-pointer whitespace-nowrap text-xs underline\"\n data-og-open-site=\"\"\n onClick={() =>\n void Promise.resolve()\n .then(open.open)\n .catch(() => undefined)\n }\n >\n {labels.openSite}\n </button>\n ) : null}\n </>\n }\n />\n );\n}\n","import {\n ArrowLeftIcon,\n Globe2Icon,\n Maximize2Icon,\n PlugZapIcon,\n RefreshCwIcon,\n SparklesIcon,\n} from \"lucide-react\";\nimport { useLayoutEffect, useRef, useState, type ReactNode } from \"react\";\nimport type { SiteViewer } from \"@opengeni/sdk\";\n\nimport { cn } from \"../../lib/cn\";\nimport { ArtifactBadge, ArtifactButton, useArtifactLabels } from \"./artifact-chrome\";\nimport {\n PublishedHtmlArtifactFrame,\n type PublishedHtmlArtifactToolBridge,\n} from \"./published-html-artifact-frame\";\n\nexport type ArtifactSandboxProps = {\n html: string;\n height?: number | undefined;\n autoHeight?: boolean | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n headerControls?: ReactNode | undefined;\n title: string;\n /** Hide the visible title/icon while retaining the accessible iframe title. */\n showTitle?: boolean | undefined;\n showLiveStatus?: boolean | undefined;\n versionLabel?: string | undefined;\n className?: string | undefined;\n editDisabled?: boolean | undefined;\n onEdit?: (() => void) | undefined;\n toolBridge?: PublishedHtmlArtifactToolBridge | undefined;\n /** Who is viewing, answered to the Site's `site.viewer` over the bridge. */\n viewer?: SiteViewer | undefined;\n connectedToolCount?: number | undefined;\n sourceFileCount?: number | undefined;\n fill?: boolean | undefined;\n};\n\n/**\n * The Site/preview frame chrome shared by the console and embedding hosts:\n * title, version and tool badges, live status, reload, and a full-screen mode\n * that escapes the host's scroll containers through the modal top layer.\n */\nexport function ArtifactSandbox(props: ArtifactSandboxProps) {\n const labels = useArtifactLabels();\n const [reloadKey, setReloadKey] = useState(0);\n const [focused, setFocused] = useState(false);\n const frameRef = useRef<HTMLDialogElement>(null);\n const modalRef = useRef(false);\n useLayoutEffect(() => {\n const frame = frameRef.current;\n if (!frame) return;\n if (focused) {\n // A fixed child of the chat timeline is still clipped and layered by its\n // scroll pane and the sibling workspace dock. The modal top layer escapes\n // both while keeping the live Site iframe mounted in the same DOM node.\n frame.close();\n frame.showModal();\n modalRef.current = true;\n } else if (modalRef.current) {\n frame.close();\n frame.show();\n modalRef.current = false;\n }\n }, [focused]);\n const reload = () => {\n setReloadKey((value) => value + 1);\n };\n return (\n <dialog\n ref={frameRef}\n open\n aria-label={props.title}\n onCancel={(event) => {\n event.preventDefault();\n setFocused(false);\n }}\n className={cn(\n \"og-root static m-0 w-full max-h-none max-w-none overflow-hidden rounded-2xl border border-border/80 bg-white p-0 text-left shadow-sm\",\n props.className,\n props.fill && \"flex min-h-0 flex-col\",\n focused &&\n \"fixed inset-0 z-50 flex h-dvh w-dvw flex-col rounded-none border-0 bg-surface shadow-none\",\n )}\n >\n <div className=\"flex min-h-12 shrink-0 items-center justify-between gap-3 border-b border-border/80 bg-surface/95 px-3 sm:px-4\">\n <div className=\"flex min-w-0 items-center gap-2.5\">\n {focused ? (\n <ArtifactButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 shrink-0 px-2\"\n onClick={() => setFocused(false)}\n >\n <ArrowLeftIcon className=\"mr-2 size-3.5\" />\n {labels.back}\n </ArtifactButton>\n ) : null}\n {!focused && props.showTitle !== false ? (\n <span className=\"grid size-6 shrink-0 place-items-center rounded-md bg-surface-2 text-fg-muted\">\n <Globe2Icon className=\"size-3.5\" />\n </span>\n ) : null}\n {props.showTitle !== false && (\n <span className=\"truncate text-xs font-semibold text-fg\">{props.title}</span>\n )}\n {props.headerControls}\n {props.versionLabel ? (\n <ArtifactBadge className=\"hidden h-5 rounded-md border-border/80 px-1.5 text-2xs font-normal text-fg-muted sm:inline-flex\">\n {props.versionLabel}\n </ArtifactBadge>\n ) : null}\n {props.connectedToolCount ? (\n <ArtifactBadge\n className=\"hidden h-5 max-w-40 gap-1 rounded-md border-border/80 px-1.5 text-2xs font-normal text-fg-muted sm:inline-flex\"\n title={labels.toolsAvailable(props.connectedToolCount)}\n >\n <PlugZapIcon className=\"size-3\" />\n {labels.toolCount(props.connectedToolCount)}\n </ArtifactBadge>\n ) : null}\n {props.sourceFileCount ? (\n <span className=\"hidden text-2xs text-fg-subtle xl:inline\">\n {labels.sourceFileCount(props.sourceFileCount)}\n </span>\n ) : null}\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {focused && props.onEdit ? (\n <ArtifactButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 px-2\"\n disabled={props.editDisabled}\n onClick={props.onEdit}\n >\n <SparklesIcon className=\"mr-2 size-3.5\" />\n <span className=\"hidden sm:inline\">{labels.editWithAgent}</span>\n <span className=\"sm:hidden\">{labels.editShort}</span>\n </ArtifactButton>\n ) : null}\n {props.showLiveStatus !== false && (\n <span className=\"mr-1 hidden items-center gap-1.5 text-2xs font-medium text-fg-muted sm:inline-flex\">\n <span className=\"size-1.5 rounded-full bg-status-success ring-4 ring-status-success/10\" />\n {labels.live}\n </span>\n )}\n <ArtifactButton\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-md text-fg-muted hover:text-fg\"\n aria-label={labels.reloadSite}\n onClick={reload}\n >\n <RefreshCwIcon className=\"size-3.5\" />\n </ArtifactButton>\n {!focused ? (\n <ArtifactButton\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-md text-fg-muted hover:text-fg\"\n aria-label={labels.openFullScreen}\n onClick={() => setFocused(true)}\n >\n <Maximize2Icon className=\"size-3.5\" />\n </ArtifactButton>\n ) : null}\n </div>\n </div>\n <PublishedHtmlArtifactFrame\n key={reloadKey}\n title={props.title}\n html={props.html}\n autoHeight={Boolean(props.autoHeight && !focused)}\n {...(props.theme ? { theme: props.theme } : {})}\n {...(!focused && props.height ? { style: { height: props.height } } : {})}\n {...(props.toolBridge ? { toolBridge: props.toolBridge } : {})}\n {...(props.viewer ? { viewer: props.viewer } : {})}\n className={cn(\n \"block h-[clamp(30rem,62vh,48rem)] w-full border-0 bg-white\",\n props.fill && \"h-0 min-h-0 flex-1\",\n focused && \"min-h-0 flex-1\",\n )}\n />\n </dialog>\n );\n}\n","import { useEffect, useRef, useState, type ReactNode } from \"react\";\n\n/**\n * Reserve the chat slot before starting expensive media work. Activation is\n * one-way: scrolling away must not discard an interactive preview's state.\n * The timeline parks at its initial tip in layout effects before this observer\n * is attached, so historical previews above the entry viewport stay dormant.\n */\nexport function DeferredChatMedia({\n children,\n height,\n label,\n actionLabel,\n}: {\n children: ReactNode;\n height: number;\n /** What is loading, as in \"Load {label}\". */\n label?: string | undefined;\n /** The complete (translated) activation label; overrides `label`. */\n actionLabel?: string | undefined;\n}) {\n const host = useRef<HTMLDivElement>(null);\n const [active, setActive] = useState(false);\n useEffect(() => {\n const node = host.current;\n if (active || !node) return;\n if (typeof IntersectionObserver === \"undefined\") {\n setActive(true);\n return;\n }\n let disposed = false;\n const observer = new IntersectionObserver(\n (entries) => {\n if (disposed || !entries.some((entry) => entry.isIntersecting)) return;\n setActive(true);\n observer.disconnect();\n },\n {\n root: node.closest(\"[data-og-timeline-scroller]\"),\n rootMargin: \"200px 0px\",\n },\n );\n observer.observe(node);\n return () => {\n disposed = true;\n observer.disconnect();\n };\n }, [active]);\n\n return (\n <div ref={host} data-chat-media={active ? \"active\" : \"deferred\"}>\n {active ? (\n children\n ) : (\n <div className=\"flex w-full items-center justify-center\" style={{ height }}>\n <button\n type=\"button\"\n className=\"rounded-md px-3 py-2 text-sm text-fg-muted hover:text-fg focus-visible:outline-2 focus-visible:outline-ring\"\n onClick={() => setActive(true)}\n >\n {actionLabel ?? `Load ${label ?? \"media\"}`}\n </button>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["useEffect","useState","useRef","useState","jsx","jsx","jsxs","useState","useEffect"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import type { SiteViewer } from "@opengeni/sdk";
|
|
2
3
|
import { type PublishedHtmlArtifactToolBridge } from "./published-html-artifact-frame.js";
|
|
3
4
|
export type ArtifactSandboxProps = {
|
|
4
5
|
html: string;
|
|
@@ -15,6 +16,8 @@ export type ArtifactSandboxProps = {
|
|
|
15
16
|
editDisabled?: boolean | undefined;
|
|
16
17
|
onEdit?: (() => void) | undefined;
|
|
17
18
|
toolBridge?: PublishedHtmlArtifactToolBridge | undefined;
|
|
19
|
+
/** Who is viewing, answered to the Site's `site.viewer` over the bridge. */
|
|
20
|
+
viewer?: SiteViewer | undefined;
|
|
18
21
|
connectedToolCount?: number | undefined;
|
|
19
22
|
sourceFileCount?: number | undefined;
|
|
20
23
|
fill?: boolean | undefined;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
1
|
+
import { type SiteBridgeToolHandlers } from "@opengeni/sdk/site-bridge-host";
|
|
2
|
+
import type { OpenGeniSiteSignInResult, OpenGeniSiteViewer } from "@opengeni/sdk/site";
|
|
3
3
|
import { type CSSProperties } from "react";
|
|
4
|
+
export { SiteBridgeDocumentLease, SiteBridgeRequestRegistry, handleSiteBridgeRequest, openGeniSiteBridgePortFromBootstrap, siteBridgeError, siteBridgeReadyMessage, } from "@opengeni/sdk/site-bridge-host";
|
|
4
5
|
export declare const PUBLISHED_HTML_ARTIFACT_IFRAME_SANDBOX: string;
|
|
5
6
|
export type PublishedHtmlArtifactFrameProps = {
|
|
6
7
|
html: string;
|
|
@@ -10,29 +11,19 @@ export type PublishedHtmlArtifactFrameProps = {
|
|
|
10
11
|
className?: string;
|
|
11
12
|
style?: CSSProperties;
|
|
12
13
|
toolBridge?: PublishedHtmlArtifactToolBridge;
|
|
14
|
+
/**
|
|
15
|
+
* The signed-in member viewing the Site, answered to `site.viewer`. When
|
|
16
|
+
* omitted the frame does not advertise viewers and the SDK resolves `null`.
|
|
17
|
+
*/
|
|
18
|
+
viewer?: OpenGeniSiteViewer;
|
|
19
|
+
/**
|
|
20
|
+
* Answer `site.auth.signIn()`. The console viewer is already signed in, so
|
|
21
|
+
* the default resolves `{ started: false }`.
|
|
22
|
+
*/
|
|
23
|
+
onSignIn?: () => Promise<OpenGeniSiteSignInResult> | OpenGeniSiteSignInResult;
|
|
13
24
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
signal: AbortSignal;
|
|
17
|
-
}) => Promise<ToolGatewayResolvedTool>;
|
|
18
|
-
invoke?: (request: ToolGatewayInvokeRequest, options: {
|
|
19
|
-
signal: AbortSignal;
|
|
20
|
-
}) => Promise<ToolGatewayInvokeResponse>;
|
|
21
|
-
fetch?: (request: SiteHttpRequest, signal: AbortSignal) => Promise<Response>;
|
|
22
|
-
/** Advertise Site Data: `fetch` forwards `published-artifacts/current` routes to the pinned Site. */
|
|
23
|
-
siteData?: boolean;
|
|
24
|
-
catalog: (options: {
|
|
25
|
-
signal: AbortSignal;
|
|
26
|
-
}) => Promise<OpenGeniSiteToolCatalog>;
|
|
27
|
-
call: (request: ToolGatewayCallRequest, options: {
|
|
28
|
-
signal: AbortSignal;
|
|
29
|
-
}) => Promise<ToolGatewayCallResponse>;
|
|
30
|
-
declarations?: (options: {
|
|
31
|
-
signal: AbortSignal;
|
|
32
|
-
}) => Promise<ToolGatewayDeclarationsResponse>;
|
|
33
|
-
};
|
|
34
|
-
/** Capabilities the host advertises when a Site connects; Sites never ask for more. */
|
|
35
|
-
export declare function siteBridgeReadyMessage(bridge: PublishedHtmlArtifactToolBridge | undefined): OpenGeniSiteBridgeReadyMessage;
|
|
25
|
+
/** Host handlers for Site tools and the Site HTTP channel (see `@opengeni/sdk/site-bridge-host`). */
|
|
26
|
+
export type PublishedHtmlArtifactToolBridge = SiteBridgeToolHandlers;
|
|
36
27
|
export declare function publishedHtmlArtifactDocument(html: string, toolBridgeEnabled: boolean): string;
|
|
37
28
|
/**
|
|
38
29
|
* Render exact published HTML in an opaque-origin iframe. Artifact scripts,
|
|
@@ -41,30 +32,3 @@ export declare function publishedHtmlArtifactDocument(html: string, toolBridgeEn
|
|
|
41
32
|
* or top-level navigation.
|
|
42
33
|
*/
|
|
43
34
|
export declare function PublishedHtmlArtifactFrame(props: PublishedHtmlArtifactFrameProps): import("react").JSX.Element;
|
|
44
|
-
export declare class SiteBridgeRequestRegistry {
|
|
45
|
-
private readonly controllersByPort;
|
|
46
|
-
addPort(port: MessagePort): void;
|
|
47
|
-
start(port: MessagePort, requestId: string): AbortController | null;
|
|
48
|
-
cancel(port: MessagePort, requestId: string): void;
|
|
49
|
-
complete(port: MessagePort, requestId: string, controller: AbortController): void;
|
|
50
|
-
closePort(port: MessagePort): void;
|
|
51
|
-
closeAll(): void;
|
|
52
|
-
}
|
|
53
|
-
export declare class SiteBridgeDocumentLease {
|
|
54
|
-
private readonly attachToolPort;
|
|
55
|
-
private readonly closeActivePorts;
|
|
56
|
-
private readonly createMessageChannel;
|
|
57
|
-
private loaded;
|
|
58
|
-
private bootstrapPort;
|
|
59
|
-
constructor(attachToolPort: (data: unknown, ports: readonly MessagePort[]) => void, closeActivePorts: () => void, createMessageChannel?: () => MessageChannel);
|
|
60
|
-
load(frameWindow: Pick<Window, "postMessage">): boolean;
|
|
61
|
-
close(): void;
|
|
62
|
-
}
|
|
63
|
-
export declare function openGeniSiteBridgePortFromBootstrap(data: unknown, ports: readonly MessagePort[]): MessagePort | null;
|
|
64
|
-
export declare function handleSiteBridgeRequest(bridge: PublishedHtmlArtifactToolBridge | undefined, message: OpenGeniSiteBridgeRequestMessage, signal: AbortSignal): Promise<OpenGeniSiteToolCatalog | ToolGatewayCallResponse | ToolGatewayDeclarationsResponse | ToolGatewayResolvedTool | ToolGatewayInvokeResponse>;
|
|
65
|
-
export declare function siteBridgeError(error: unknown, legacyCall?: boolean): {
|
|
66
|
-
code: string;
|
|
67
|
-
message: string;
|
|
68
|
-
retryable: boolean;
|
|
69
|
-
outcomeUnknown: boolean;
|
|
70
|
-
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SiteViewer } from "@opengeni/sdk";
|
|
1
2
|
import type { SiteSnapshotClient, SiteToolBridgeFactory } from "./chat-interactive-block.js";
|
|
2
3
|
export type SiteViewProps = {
|
|
3
4
|
client: SiteSnapshotClient;
|
|
@@ -5,6 +6,8 @@ export type SiteViewProps = {
|
|
|
5
6
|
siteId: string;
|
|
6
7
|
/** Host-owned Site API access. Omit it and the Site renders without workspace tools. */
|
|
7
8
|
toolBridge?: SiteToolBridgeFactory | undefined;
|
|
9
|
+
/** Who is viewing, answered to the Site's `site.viewer`. */
|
|
10
|
+
viewer?: SiteViewer | undefined;
|
|
8
11
|
theme?: "light" | "dark" | undefined;
|
|
9
12
|
/** Shown instead of the archived notice; the console links to its full page. */
|
|
10
13
|
archivedMessage?: string | undefined;
|
|
@@ -20,4 +23,4 @@ export type SiteViewProps = {
|
|
|
20
23
|
* A published Site filling its container: the console's session dock and an
|
|
21
24
|
* embedding host's artifact viewer render the same view.
|
|
22
25
|
*/
|
|
23
|
-
export declare function SiteView({ client, workspaceId, siteId, toolBridge, theme, archivedMessage, showTitle, loadingLabel, onTitle, className, }: SiteViewProps): import("react").JSX.Element;
|
|
26
|
+
export declare function SiteView({ client, workspaceId, siteId, toolBridge, viewer, theme, archivedMessage, showTitle, loadingLabel, onTitle, className, }: SiteViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export declare const LINKIFIED_LINK_CLASS = "font-medium og-link [overflow-wrap:anywhere]";
|
|
3
|
+
type Segment = {
|
|
4
|
+
kind: "text";
|
|
5
|
+
value: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: "link";
|
|
8
|
+
value: string;
|
|
9
|
+
};
|
|
10
|
+
/** Split plain text into text and bare http(s) URL segments. */
|
|
11
|
+
export declare function linkifySegments(text: string): Segment[];
|
|
12
|
+
/**
|
|
13
|
+
* Render plain text with bare http(s) URLs as links that open in a new tab and
|
|
14
|
+
* wrap anywhere, so a long sign-in or approval URL stays clickable and inside
|
|
15
|
+
* its card. Non-string nodes pass through unchanged.
|
|
16
|
+
*/
|
|
17
|
+
export declare function linkifyText(node: ReactNode): ReactNode;
|
|
18
|
+
export {};
|
package/dist/composer.js
CHANGED
|
@@ -41,10 +41,10 @@ import {
|
|
|
41
41
|
useChatComposer,
|
|
42
42
|
useChatComposerController,
|
|
43
43
|
useVoiceInput
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-PWCBMEV2.js";
|
|
45
45
|
import {
|
|
46
46
|
defaultChatComposerMessages
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-6SNDCUPB.js";
|
|
48
48
|
import "./chunk-NX4ADH73.js";
|
|
49
49
|
import {
|
|
50
50
|
BillingClassMark,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
PickerNavRow
|
|
55
55
|
} from "./chunk-XDA5QJE7.js";
|
|
56
56
|
import "./chunk-PMV53IMM.js";
|
|
57
|
-
import "./chunk-
|
|
57
|
+
import "./chunk-Q26UAIXI.js";
|
|
58
58
|
import "./chunk-KSGQ5ODA.js";
|
|
59
59
|
import "./chunk-XEA5BCMA.js";
|
|
60
60
|
import "./chunk-N7S72EXK.js";
|
|
@@ -65,7 +65,7 @@ import "./chunk-KF33GTWN.js";
|
|
|
65
65
|
import "./chunk-QHUE7E4N.js";
|
|
66
66
|
import "./chunk-CM7LVUKC.js";
|
|
67
67
|
import "./chunk-G76LSA76.js";
|
|
68
|
-
import "./chunk-
|
|
68
|
+
import "./chunk-KZENYIA2.js";
|
|
69
69
|
import "./chunk-TXS65BB2.js";
|
|
70
70
|
export {
|
|
71
71
|
Actions,
|
package/dist/connect.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import "./chunk-M357MHH3.js";
|
|
8
8
|
import {
|
|
9
9
|
Markdown
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5XEXTWEM.js";
|
|
11
11
|
import "./chunk-OYQQJL3J.js";
|
|
12
12
|
import "./chunk-S2QH6EZ5.js";
|
|
13
13
|
import "./chunk-4QYP6QUI.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-PEHTX3V7.js";
|
|
19
19
|
import "./chunk-KSGQ5ODA.js";
|
|
20
20
|
import "./chunk-XEA5BCMA.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-KZENYIA2.js";
|
|
22
22
|
import "./chunk-TXS65BB2.js";
|
|
23
23
|
|
|
24
24
|
// src/capability-catalog-row.tsx
|
package/dist/index.js
CHANGED
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
healthPulses,
|
|
48
48
|
pointsFor,
|
|
49
49
|
useMachines
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-TIHSXNBC.js";
|
|
51
51
|
import {
|
|
52
52
|
McpConnectionCard,
|
|
53
53
|
SessionCapabilityFrame,
|
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
useStartupDetails,
|
|
111
111
|
useWorkspaceSessions,
|
|
112
112
|
userMessageLikelyNeedsDisclosure
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-AMVCNAGC.js";
|
|
114
114
|
import {
|
|
115
115
|
useThemeType
|
|
116
116
|
} from "./chunk-B27E3V37.js";
|
|
@@ -150,14 +150,14 @@ import {
|
|
|
150
150
|
useSessionEvents,
|
|
151
151
|
useTurnQueue,
|
|
152
152
|
useWorkspaceModelCatalog
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-O5GPRG76.js";
|
|
154
154
|
import {
|
|
155
155
|
buildTimeline,
|
|
156
156
|
creditExhaustedFromEvents,
|
|
157
157
|
extractSessionRef,
|
|
158
158
|
groupTimeline,
|
|
159
159
|
sessionStatusFromEvents
|
|
160
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-HGKELH6Z.js";
|
|
161
161
|
import {
|
|
162
162
|
OpenGeniProvider,
|
|
163
163
|
invalidateSharedQueries,
|
|
@@ -187,7 +187,7 @@ import {
|
|
|
187
187
|
sandboxFileLocationFromHref,
|
|
188
188
|
sandboxFilePathFromHref,
|
|
189
189
|
useSecretsUi
|
|
190
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-5XEXTWEM.js";
|
|
191
191
|
import "./chunk-OYQQJL3J.js";
|
|
192
192
|
import "./chunk-S2QH6EZ5.js";
|
|
193
193
|
import {
|
|
@@ -220,8 +220,8 @@ import {
|
|
|
220
220
|
tailPeek,
|
|
221
221
|
unwrapMcpOutput,
|
|
222
222
|
v4aToGitFileDiff
|
|
223
|
-
} from "./chunk-
|
|
224
|
-
import "./chunk-
|
|
223
|
+
} from "./chunk-HBXL6HWG.js";
|
|
224
|
+
import "./chunk-CORUP6JB.js";
|
|
225
225
|
import "./chunk-5YJLGOM5.js";
|
|
226
226
|
import {
|
|
227
227
|
humanInputRequestFromEvent,
|
|
@@ -282,10 +282,10 @@ import {
|
|
|
282
282
|
useSlashCommands,
|
|
283
283
|
useTranscription,
|
|
284
284
|
useVoiceInput
|
|
285
|
-
} from "./chunk-
|
|
285
|
+
} from "./chunk-PWCBMEV2.js";
|
|
286
286
|
import {
|
|
287
287
|
defaultChatComposerMessages
|
|
288
|
-
} from "./chunk-
|
|
288
|
+
} from "./chunk-6SNDCUPB.js";
|
|
289
289
|
import "./chunk-NX4ADH73.js";
|
|
290
290
|
import {
|
|
291
291
|
BillingClassMark,
|
|
@@ -307,7 +307,7 @@ import {
|
|
|
307
307
|
shouldSteerOnKey,
|
|
308
308
|
shouldSubmitOnKey,
|
|
309
309
|
useComposer
|
|
310
|
-
} from "./chunk-
|
|
310
|
+
} from "./chunk-Q26UAIXI.js";
|
|
311
311
|
import {
|
|
312
312
|
LightboxProvider,
|
|
313
313
|
Tooltip,
|
|
@@ -377,7 +377,7 @@ import {
|
|
|
377
377
|
stringifyPayload,
|
|
378
378
|
truncate,
|
|
379
379
|
tryParseJson
|
|
380
|
-
} from "./chunk-
|
|
380
|
+
} from "./chunk-KZENYIA2.js";
|
|
381
381
|
import {
|
|
382
382
|
SandboxTerminal,
|
|
383
383
|
terminalCanAcquirePty,
|
|
@@ -3830,7 +3830,7 @@ function FilesTabBody(props) {
|
|
|
3830
3830
|
return /* @__PURE__ */ jsx6(Suspense, { fallback: /* @__PURE__ */ jsx6(WorkbenchSurfaceLoading, { name: "Files" }), children: /* @__PURE__ */ jsx6(LazySandboxFiles, { ...props }) });
|
|
3831
3831
|
}
|
|
3832
3832
|
var LazyBrowserViewer = lazy(async () => {
|
|
3833
|
-
const { BrowserViewer } = await import("./browser-viewer-
|
|
3833
|
+
const { BrowserViewer } = await import("./browser-viewer-M7BIVFTW.js");
|
|
3834
3834
|
return { default: BrowserViewer };
|
|
3835
3835
|
});
|
|
3836
3836
|
var LazyComputerViewer = lazy(async () => {
|
package/dist/interaction.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
useBrowserSession,
|
|
9
9
|
useBrowserSessions,
|
|
10
10
|
useSiteAuthConnections
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ISN726VG.js";
|
|
12
12
|
import {
|
|
13
13
|
ComputerViewer,
|
|
14
14
|
useComputerFrameStream,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
useEmbeddedInteraction,
|
|
31
31
|
useEmbeddedInterventions
|
|
32
32
|
} from "./chunk-G76LSA76.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-KZENYIA2.js";
|
|
34
34
|
import "./chunk-TNEZNMSN.js";
|
|
35
35
|
import "./chunk-5I4VRWBB.js";
|
|
36
36
|
import "./chunk-TXS65BB2.js";
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
isTimelineUserQuestion,
|
|
4
4
|
isTurnExecutionEvidence,
|
|
5
5
|
timelineQuestionPlacement
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HGKELH6Z.js";
|
|
7
7
|
import "./chunk-3PVDYTTB.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-KZENYIA2.js";
|
|
9
9
|
|
|
10
10
|
// src/hooks/latest-question.ts
|
|
11
11
|
import { SESSION_EVENT_TYPES } from "@opengeni/sdk";
|
|
@@ -115,4 +115,4 @@ export {
|
|
|
115
115
|
TIMELINE_TURN_ANCHOR_EVENT_TYPES,
|
|
116
116
|
resolveLatestQuestion
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=latest-question-
|
|
118
|
+
//# sourceMappingURL=latest-question-CHE7E753.js.map
|
package/dist/lib/format.d.ts
CHANGED
|
@@ -64,6 +64,13 @@ export declare function isSessionUsageLimitSubmissionError(error: Error): boolea
|
|
|
64
64
|
* before a reload (only its text survives) or from an older API is recognized.
|
|
65
65
|
*/
|
|
66
66
|
export declare function isModelUnavailableSubmissionError(error: Error): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* What a published Site's assistant tells a viewer it refused, by the
|
|
69
|
+
* refusal's `details.code`. The draft is kept in every case.
|
|
70
|
+
*/
|
|
71
|
+
export declare const COMPOSER_SITE_REFUSAL_MESSAGES: Readonly<Record<string, string>>;
|
|
72
|
+
/** The Site refusal code of a send refusal, if it is one. */
|
|
73
|
+
export declare function siteRefusalCode(error: Error): string | null;
|
|
67
74
|
export declare function composerSubmissionErrorMessage(error: Error): string;
|
|
68
75
|
/** These definitive refusals need a payment, allowance or model change, not an unchanged retry. */
|
|
69
76
|
export declare function composerSubmissionCanRetry(error: Error): boolean;
|
package/dist/machines.js
CHANGED
|
@@ -29,13 +29,13 @@ import {
|
|
|
29
29
|
healthPulses,
|
|
30
30
|
pointsFor,
|
|
31
31
|
useMachines
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-TIHSXNBC.js";
|
|
33
33
|
import "./chunk-CSX5FFKZ.js";
|
|
34
34
|
import "./chunk-R5SBNG7S.js";
|
|
35
35
|
import "./chunk-QHUE7E4N.js";
|
|
36
36
|
import "./chunk-CM7LVUKC.js";
|
|
37
37
|
import "./chunk-G76LSA76.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-KZENYIA2.js";
|
|
39
39
|
import "./chunk-TXS65BB2.js";
|
|
40
40
|
export {
|
|
41
41
|
CONNECTION_STATUS_META,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
sandboxRowTitle,
|
|
5
5
|
startupDuration,
|
|
6
6
|
startupPhaseTitle
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CORUP6JB.js";
|
|
8
8
|
|
|
9
9
|
// src/timeline/platform-activity-row.tsx
|
|
10
10
|
function PlatformActivityRow({
|
|
@@ -104,4 +104,4 @@ function lucideIcon(j, s, name, children) {
|
|
|
104
104
|
export {
|
|
105
105
|
PlatformActivityRow as default
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=platform-activity-row-
|
|
107
|
+
//# sourceMappingURL=platform-activity-row-5OCKOQWZ.js.map
|
package/dist/session-ui.js
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
setStartupDetails,
|
|
30
30
|
useStartupDetails,
|
|
31
31
|
userMessageLikelyNeedsDisclosure
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-AMVCNAGC.js";
|
|
33
33
|
import "./chunk-B27E3V37.js";
|
|
34
34
|
import "./chunk-SHLZMAJN.js";
|
|
35
35
|
import "./chunk-2HVLQ26H.js";
|
|
@@ -44,8 +44,8 @@ import {
|
|
|
44
44
|
createOlderHistoryLoadReceipt,
|
|
45
45
|
useNewConversation,
|
|
46
46
|
useSessionConversation
|
|
47
|
-
} from "./chunk-
|
|
48
|
-
import "./chunk-
|
|
47
|
+
} from "./chunk-O5GPRG76.js";
|
|
48
|
+
import "./chunk-HGKELH6Z.js";
|
|
49
49
|
import {
|
|
50
50
|
OpenGeniProvider
|
|
51
51
|
} from "./chunk-R5SBNG7S.js";
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
SecretRefChip,
|
|
55
55
|
SecretRefText,
|
|
56
56
|
SecretsUiProvider
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-5XEXTWEM.js";
|
|
58
58
|
import "./chunk-OYQQJL3J.js";
|
|
59
59
|
import "./chunk-S2QH6EZ5.js";
|
|
60
60
|
import {
|
|
@@ -69,8 +69,8 @@ import "./chunk-5WOR7UCL.js";
|
|
|
69
69
|
import {
|
|
70
70
|
BUILT_IN_TURN_SUMMARY_FACET_IDS,
|
|
71
71
|
createToolRegistry
|
|
72
|
-
} from "./chunk-
|
|
73
|
-
import "./chunk-
|
|
72
|
+
} from "./chunk-HBXL6HWG.js";
|
|
73
|
+
import "./chunk-CORUP6JB.js";
|
|
74
74
|
import "./chunk-5YJLGOM5.js";
|
|
75
75
|
import "./chunk-IZV5FTJC.js";
|
|
76
76
|
import "./chunk-3PVDYTTB.js";
|
|
@@ -80,12 +80,12 @@ import {
|
|
|
80
80
|
import "./chunk-O7F6UJO4.js";
|
|
81
81
|
import "./chunk-UNJPZGNK.js";
|
|
82
82
|
import "./chunk-PEHTX3V7.js";
|
|
83
|
-
import "./chunk-
|
|
84
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-PWCBMEV2.js";
|
|
84
|
+
import "./chunk-6SNDCUPB.js";
|
|
85
85
|
import "./chunk-NX4ADH73.js";
|
|
86
86
|
import "./chunk-XDA5QJE7.js";
|
|
87
87
|
import "./chunk-PMV53IMM.js";
|
|
88
|
-
import "./chunk-
|
|
88
|
+
import "./chunk-Q26UAIXI.js";
|
|
89
89
|
import "./chunk-KSGQ5ODA.js";
|
|
90
90
|
import "./chunk-XEA5BCMA.js";
|
|
91
91
|
import "./chunk-N7S72EXK.js";
|
|
@@ -94,7 +94,7 @@ import "./chunk-KF33GTWN.js";
|
|
|
94
94
|
import "./chunk-QHUE7E4N.js";
|
|
95
95
|
import "./chunk-CM7LVUKC.js";
|
|
96
96
|
import "./chunk-G76LSA76.js";
|
|
97
|
-
import "./chunk-
|
|
97
|
+
import "./chunk-KZENYIA2.js";
|
|
98
98
|
import "./chunk-TXS65BB2.js";
|
|
99
99
|
|
|
100
100
|
// src/session-ui.ts
|
package/dist/session.js
CHANGED
|
@@ -24,14 +24,14 @@ import {
|
|
|
24
24
|
useSessionConversation,
|
|
25
25
|
useSessionEvents,
|
|
26
26
|
useTurnQueue
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-O5GPRG76.js";
|
|
28
28
|
import {
|
|
29
29
|
buildTimeline,
|
|
30
30
|
creditExhaustedFromEvents,
|
|
31
31
|
extractSessionRef,
|
|
32
32
|
groupTimeline,
|
|
33
33
|
sessionStatusFromEvents
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-HGKELH6Z.js";
|
|
35
35
|
import {
|
|
36
36
|
humanInputRequestFromEvent,
|
|
37
37
|
projectPendingHumanInputRequests
|
|
@@ -45,12 +45,12 @@ import {
|
|
|
45
45
|
shouldSteerOnKey,
|
|
46
46
|
shouldSubmitOnKey,
|
|
47
47
|
useComposer
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-Q26UAIXI.js";
|
|
49
49
|
import "./chunk-KF33GTWN.js";
|
|
50
50
|
import "./chunk-QHUE7E4N.js";
|
|
51
51
|
import "./chunk-CM7LVUKC.js";
|
|
52
52
|
import "./chunk-G76LSA76.js";
|
|
53
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-KZENYIA2.js";
|
|
54
54
|
export {
|
|
55
55
|
FILE_ONLY_MESSAGE_TEXT,
|
|
56
56
|
approvalsFromRequiresAction,
|
package/dist/sites.js
CHANGED
package/dist/timeline/types.d.ts
CHANGED
|
@@ -208,7 +208,7 @@ export type StartupPhaseItem = {
|
|
|
208
208
|
durationMs: number | null;
|
|
209
209
|
/** Sandbox origin and rig marker outcomes refine the settled label only. */
|
|
210
210
|
outcome: "created" | "restored" | "resumed" | "skipped" | null;
|
|
211
|
-
blockedReason?: "capture_in_progress" | "rotation_in_progress" | "provider_recovery_in_progress" | undefined;
|
|
211
|
+
blockedReason?: "capture_in_progress" | "rotation_in_progress" | "provider_recovery_in_progress" | "compaction_required" | undefined;
|
|
212
212
|
occurredAt: string;
|
|
213
213
|
};
|
|
214
214
|
/**
|
package/dist/timeline-model.js
CHANGED
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
webSearchPresentation,
|
|
67
67
|
withComputePreview,
|
|
68
68
|
writeStdinPresentation
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-HBXL6HWG.js";
|
|
70
70
|
import {
|
|
71
71
|
STARTUP_WAIT_TITLES,
|
|
72
72
|
namedAgentTitle,
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
startupPhaseTitle,
|
|
76
76
|
workerRowTitle,
|
|
77
77
|
workerRowTitleParts
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-CORUP6JB.js";
|
|
79
79
|
import {
|
|
80
80
|
timelineGroupContainsPresentedImage
|
|
81
81
|
} from "./chunk-5YJLGOM5.js";
|
|
@@ -102,7 +102,7 @@ import {
|
|
|
102
102
|
formatRelativeTime,
|
|
103
103
|
stringifyPayload,
|
|
104
104
|
tryParseJson
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-KZENYIA2.js";
|
|
106
106
|
|
|
107
107
|
// src/notification-text.ts
|
|
108
108
|
var INLINE = /\*\*(.+?)\*\*|__(.+?)__|`([^`]+)`|\[([^\]]+)\]\((https:\/\/[^\s)]+)\)/gu;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/react",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2-canary.38789554071001",
|
|
4
4
|
"description": "React hooks and styled components for Opengeni: live session streaming, chat composer, message timeline, session status, and fleet views — token-themed (CSS variables), dark-first, built on Tailwind v4 + Radix + Motion.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -213,8 +213,8 @@
|
|
|
213
213
|
"@dnd-kit/utilities": "3.2.2",
|
|
214
214
|
"@fontsource-variable/noto-sans-arabic": "5.2.10",
|
|
215
215
|
"@fontsource-variable/noto-sans-jp": "5.2.10",
|
|
216
|
-
"@opengeni/connect": "2.0.
|
|
217
|
-
"@opengeni/sdk": "2.0.
|
|
216
|
+
"@opengeni/connect": "2.0.2-canary.38789554071001",
|
|
217
|
+
"@opengeni/sdk": "2.0.2-canary.38789554071001",
|
|
218
218
|
"clsx": "^2.1.1",
|
|
219
219
|
"dequal": "2.0.3",
|
|
220
220
|
"lucide-react": "^1.8.0",
|