@opengeni/react 0.57.0 → 1.0.2-canary.37191796234001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +654 -22
- package/dist/accounts.d.ts +64 -0
- package/dist/accounts.js +822 -0
- package/dist/accounts.js.map +1 -0
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +3 -2
- package/dist/artifacts-presentation.js +3 -2
- package/dist/artifacts-spreadsheet.js +2 -2
- package/dist/artifacts.d.ts +4 -1
- package/dist/artifacts.js +518 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-GTR5XQ7X.js +16 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-UGBTNB3L.js +11 -0
- package/dist/chat-interactive-block-UGBTNB3L.js.map +1 -0
- package/dist/{chunk-5UQPNLIO.js → chunk-23J2ZNXT.js} +4117 -3896
- package/dist/chunk-23J2ZNXT.js.map +1 -0
- package/dist/chunk-447JLCBU.js +209 -0
- package/dist/chunk-447JLCBU.js.map +1 -0
- package/dist/chunk-4RVYOY4O.js +379 -0
- package/dist/chunk-4RVYOY4O.js.map +1 -0
- package/dist/chunk-5CVXZA3Y.js +292 -0
- package/dist/chunk-5CVXZA3Y.js.map +1 -0
- package/dist/chunk-5J4FOW6Q.js +108 -0
- package/dist/chunk-5J4FOW6Q.js.map +1 -0
- package/dist/chunk-A2PI6UMY.js +41 -0
- package/dist/chunk-A2PI6UMY.js.map +1 -0
- package/dist/{chunk-7WCLAEFV.js → chunk-A4UJB2MM.js} +37 -27
- package/dist/chunk-A4UJB2MM.js.map +1 -0
- package/dist/chunk-B3V6TG77.js +41 -0
- package/dist/chunk-B3V6TG77.js.map +1 -0
- package/dist/chunk-BRM6FVZA.js +302 -0
- package/dist/chunk-BRM6FVZA.js.map +1 -0
- package/dist/chunk-C5X5AJXK.js +182 -0
- package/dist/chunk-C5X5AJXK.js.map +1 -0
- package/dist/chunk-CR7U7HAR.js +453 -0
- package/dist/chunk-CR7U7HAR.js.map +1 -0
- package/dist/{chunk-R3AZOAB5.js → chunk-DYWBUX5Q.js} +29 -123
- package/dist/chunk-DYWBUX5Q.js.map +1 -0
- package/dist/chunk-E3G7SAYZ.js +3124 -0
- package/dist/chunk-E3G7SAYZ.js.map +1 -0
- package/dist/chunk-ELCE5SXV.js +359 -0
- package/dist/chunk-ELCE5SXV.js.map +1 -0
- package/dist/chunk-ERGYJIBB.js +21 -0
- package/dist/chunk-ERGYJIBB.js.map +1 -0
- package/dist/chunk-FFA2OVOV.js +319 -0
- package/dist/chunk-FFA2OVOV.js.map +1 -0
- package/dist/chunk-FZCP527Y.js +116 -0
- package/dist/chunk-FZCP527Y.js.map +1 -0
- package/dist/chunk-GIMRELBW.js +14 -0
- package/dist/chunk-GIMRELBW.js.map +1 -0
- package/dist/{chunk-6KLX2RH5.js → chunk-H2NJQORO.js} +1069 -79
- package/dist/chunk-H2NJQORO.js.map +1 -0
- package/dist/chunk-I7IWRQLN.js +1608 -0
- package/dist/chunk-I7IWRQLN.js.map +1 -0
- package/dist/{chunk-HA46CYQK.js → chunk-IQUCRAT7.js} +792 -537
- package/dist/chunk-IQUCRAT7.js.map +1 -0
- package/dist/chunk-IWIDV7SB.js +1 -0
- package/dist/chunk-IWIDV7SB.js.map +1 -0
- package/dist/chunk-J2QWVSQY.js +312 -0
- package/dist/chunk-J2QWVSQY.js.map +1 -0
- package/dist/chunk-JFNEV4LU.js +2733 -0
- package/dist/chunk-JFNEV4LU.js.map +1 -0
- package/dist/chunk-JT4JW7BC.js +54 -0
- package/dist/chunk-JT4JW7BC.js.map +1 -0
- package/dist/chunk-K3HQAKQX.js +24 -0
- package/dist/chunk-K3HQAKQX.js.map +1 -0
- package/dist/{chunk-C5ZPSSS5.js → chunk-NEXLLTP4.js} +2 -1
- package/dist/{chunk-C5ZPSSS5.js.map → chunk-NEXLLTP4.js.map} +1 -1
- package/dist/chunk-NZUI76EM.js +371 -0
- package/dist/chunk-NZUI76EM.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-PNY3JKBJ.js} +309 -74
- package/dist/chunk-PNY3JKBJ.js.map +1 -0
- package/dist/{chunk-IGC6A2ZI.js → chunk-Q5QBEZIQ.js} +777 -246
- package/dist/chunk-Q5QBEZIQ.js.map +1 -0
- package/dist/chunk-RHREZ7BO.js +11 -0
- package/dist/chunk-RHREZ7BO.js.map +1 -0
- package/dist/chunk-SCOTPE2I.js +589 -0
- package/dist/chunk-SCOTPE2I.js.map +1 -0
- package/dist/{chunk-B6WPZSTT.js → chunk-SJZDKVW2.js} +1331 -1163
- package/dist/chunk-SJZDKVW2.js.map +1 -0
- package/dist/chunk-TMJRG4YC.js +12803 -0
- package/dist/chunk-TMJRG4YC.js.map +1 -0
- package/dist/chunk-TMYGL6X5.js +742 -0
- package/dist/chunk-TMYGL6X5.js.map +1 -0
- package/dist/chunk-UGLEYEMP.js +33 -0
- package/dist/chunk-UGLEYEMP.js.map +1 -0
- package/dist/chunk-UK4TINKT.js +27 -0
- package/dist/chunk-UK4TINKT.js.map +1 -0
- package/dist/chunk-UTRTG6LH.js +220 -0
- package/dist/chunk-UTRTG6LH.js.map +1 -0
- package/dist/chunk-WEHMPOXK.js +39 -0
- package/dist/chunk-WEHMPOXK.js.map +1 -0
- package/dist/chunk-WRHIZYZF.js +988 -0
- package/dist/chunk-WRHIZYZF.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-WUISZ3WU.js} +223 -115
- package/dist/chunk-WUISZ3WU.js.map +1 -0
- package/dist/chunk-XCHWDJ22.js +107 -0
- package/dist/chunk-XCHWDJ22.js.map +1 -0
- package/dist/chunk-XOAMRDDK.js +481 -0
- package/dist/chunk-XOAMRDDK.js.map +1 -0
- package/dist/chunk-XUW2UWQM.js +299 -0
- package/dist/chunk-XUW2UWQM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-Y2PRMYLC.js} +11 -6
- package/dist/chunk-Y2PRMYLC.js.map +1 -0
- package/dist/chunk-YBXQDQFX.js +1772 -0
- package/dist/chunk-YBXQDQFX.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-YQEAA6LT.js} +7 -3
- package/dist/chunk-YQEAA6LT.js.map +1 -0
- package/dist/chunk-YV4L3ILF.js +9 -0
- package/dist/chunk-YV4L3ILF.js.map +1 -0
- package/dist/{chunk-LLOLUHVG.js → chunk-YWFG7ZX7.js} +1358 -2746
- package/dist/chunk-YWFG7ZX7.js.map +1 -0
- package/dist/chunk-ZYRGEKWS.js +216 -0
- package/dist/chunk-ZYRGEKWS.js.map +1 -0
- package/dist/client.d.ts +7 -4
- package/dist/clipboard.js +1 -0
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +15 -0
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +27 -0
- package/dist/components/artifacts/artifact-surface.d.ts +3 -1
- package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
- package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
- package/dist/components/artifacts/document-editor.d.ts +4 -2
- package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
- package/dist/components/artifacts/editable-artifact-view.d.ts +46 -0
- package/dist/components/artifacts/editable-document.d.ts +1 -1
- package/dist/components/artifacts/editable-presentation.d.ts +2 -2
- package/dist/components/artifacts/editable-spreadsheet.d.ts +2 -1
- package/dist/components/artifacts/index.d.ts +8 -1
- package/dist/components/artifacts/inline-html-document.d.ts +2 -0
- package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
- package/dist/components/artifacts/presentation-editor.d.ts +6 -2
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +48 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +23 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
- package/dist/components/browser-select-control.d.ts +16 -0
- package/dist/components/browser-viewer.d.ts +10 -1
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +5 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer.d.ts +45 -4
- package/dist/components/computer-viewer.d.ts +4 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/enrollment-consent.d.ts +6 -3
- package/dist/components/file-browser.d.ts +10 -1
- package/dist/components/fleet-tile.d.ts +2 -2
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +21 -2
- package/dist/components/human-input-surface.d.ts +6 -3
- package/dist/components/machine-card.d.ts +4 -1
- package/dist/components/machines/machine-detail.d.ts +4 -1
- package/dist/components/machines/machine-operation-policy.d.ts +11 -0
- package/dist/components/machines-dashboard.d.ts +3 -1
- package/dist/components/markdown-table-layout.d.ts +12 -0
- package/dist/components/markdown.d.ts +47 -3
- package/dist/components/message-timeline.d.ts +72 -9
- package/dist/components/model-mark.d.ts +29 -0
- package/dist/components/model-policy-picker-menu.d.ts +9 -0
- package/dist/components/model-policy-picker.d.ts +62 -13
- package/dist/components/open-geni-chat.d.ts +55 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/pierre-file.d.ts +1 -1
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/sandbox-files.d.ts +13 -2
- package/dist/components/sandbox-workspace.d.ts +43 -3
- package/dist/components/session-capability-frame.d.ts +35 -0
- package/dist/components/session-chrome.d.ts +66 -8
- package/dist/components/session-commands-panel.d.ts +6 -0
- package/dist/components/session-commands.d.ts +6 -0
- package/dist/components/session-connection-request.d.ts +8 -0
- package/dist/components/session-conversation.d.ts +86 -0
- package/dist/components/session-list.d.ts +36 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/timeline-anchor.d.ts +24 -0
- package/dist/components/timeline-annotation-chrome.d.ts +25 -0
- package/dist/components/timeline-annotation-layout.d.ts +42 -0
- package/dist/components/timeline-annotation-markers.d.ts +8 -0
- package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
- package/dist/components/timeline-annotation-shared.d.ts +31 -0
- package/dist/components/timeline-annotations-dialog.d.ts +3 -2
- package/dist/components/timeline-annotations.d.ts +13 -3
- package/dist/components/timeline-reading-progress.d.ts +11 -0
- package/dist/components/timeline-search.d.ts +34 -0
- package/dist/components/timeline-settlement.d.ts +16 -0
- package/dist/components/tip-follow.d.ts +16 -0
- package/dist/components/usage-limit-notice.d.ts +49 -0
- package/dist/components/usage-member-list.d.ts +91 -0
- package/dist/components/usage-meter.d.ts +73 -0
- package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
- package/dist/components/user-message-body.d.ts +10 -1
- package/dist/components/workspace-dock.d.ts +6 -2
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +15 -9
- package/dist/computer-viewer-ENHVAZ2Q.js +19 -0
- package/dist/computer-viewer-ENHVAZ2Q.js.map +1 -0
- package/dist/connect-account-identity.d.ts +8 -0
- package/dist/connect-accounts.d.ts +15 -0
- package/dist/connect-chooser.d.ts +18 -0
- package/dist/connect-panel.d.ts +18 -0
- package/dist/connect-setup.d.ts +16 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2129 -0
- package/dist/connect.js.map +1 -0
- package/dist/connection-catalog.d.ts +38 -0
- package/dist/connection-discovery.d.ts +12 -0
- package/dist/connection-installed.d.ts +17 -0
- package/dist/connection-logo.d.ts +9 -0
- package/dist/connection-service-logo.d.ts +8 -0
- package/dist/connection-service-presentation.d.ts +13 -0
- package/dist/connection-skeleton.d.ts +5 -0
- package/dist/connection-type-picker.d.ts +6 -0
- package/dist/conversation-timeline.d.ts +5 -0
- package/dist/desktop.d.ts +7 -0
- package/dist/desktop.js +26 -0
- package/dist/desktop.js.map +1 -0
- package/dist/device-authorization.d.ts +23 -0
- package/dist/diffs.d.ts +8 -0
- package/dist/diffs.js +14 -0
- package/dist/diffs.js.map +1 -0
- package/dist/discovery-cache.d.ts +5 -0
- package/dist/editor.d.ts +7 -0
- package/dist/editor.js +21 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-session-client.d.ts +23 -0
- package/dist/file-node-visibility.d.ts +15 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-YZ3ZKWMM.js} +2 -1
- package/dist/fleet-decision-row-YZ3ZKWMM.js.map +1 -0
- package/dist/hooks/channel-cache.d.ts +23 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +14 -0
- package/dist/hooks/use-attached-browsers.d.ts +2 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
- package/dist/hooks/use-browser-session.d.ts +12 -1
- package/dist/hooks/use-channels.d.ts +1 -0
- package/dist/hooks/use-codex-accounts.d.ts +25 -7
- package/dist/hooks/use-composer.d.ts +45 -9
- package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
- package/dist/hooks/use-computer-input-posture.d.ts +13 -0
- package/dist/hooks/use-computer-session.d.ts +2 -0
- package/dist/hooks/use-connect.d.ts +22 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +21 -2
- package/dist/hooks/use-machine-chip.d.ts +3 -3
- package/dist/hooks/use-machines.d.ts +19 -1
- package/dist/hooks/use-sandbox-files.d.ts +5 -1
- package/dist/hooks/use-session-background-commands.d.ts +14 -0
- package/dist/hooks/use-session-events.d.ts +30 -8
- package/dist/hooks/use-session-lineage.d.ts +4 -0
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session.d.ts +6 -0
- package/dist/hooks/use-turn-queue.d.ts +12 -0
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +27 -5
- package/dist/human-input.d.ts +3 -1
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +60 -17
- package/dist/index.js +2237 -6200
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +35 -184
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-755OW5DS.js +117 -0
- package/dist/latest-question-755OW5DS.js.map +1 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +36 -2
- package/dist/lib/host-theme.d.ts +70 -0
- package/dist/lib/interaction-errors.d.ts +6 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.d.ts +4 -2
- package/dist/machines.js +14 -4
- package/dist/markdown-table-layout-QXSLK4BY.js +106 -0
- package/dist/markdown-table-layout-QXSLK4BY.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-policy-picker-menu-PWRI7R2X.js +14 -0
- package/dist/model-policy-picker-menu-PWRI7R2X.js.map +1 -0
- package/dist/model-policy.d.ts +19 -3
- package/dist/model-policy.js +9 -1
- package/dist/older-history.d.ts +30 -0
- package/dist/platform-activity-row-627BFZ46.js +182 -0
- package/dist/platform-activity-row-627BFZ46.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/provider.d.ts +13 -1
- package/dist/{queue-surface-implementation-2KVJTYXH.js → queue-surface-implementation-ZHFI5JBP.js} +131 -44
- package/dist/queue-surface-implementation-ZHFI5JBP.js.map +1 -0
- package/dist/realtime/realtime-control.d.ts +10 -3
- package/dist/realtime.js +229 -83
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-BBC47SLD.js +20 -0
- package/dist/sandbox-files-BBC47SLD.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +12 -0
- package/dist/session-ui.d.ts +30 -2
- package/dist/session-ui.js +85 -7
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +30 -19
- package/dist/sites-ui.d.ts +34 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +11 -0
- package/dist/sites.js.map +1 -0
- package/dist/skill-discovery.d.ts +47 -0
- package/dist/terminal.d.ts +8 -0
- package/dist/terminal.js +31 -0
- package/dist/terminal.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +10 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/genie-loading.d.ts +34 -0
- package/dist/timeline/index.d.ts +6 -2
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/platform-activity-row.d.ts +14 -0
- package/dist/timeline/presented-image.d.ts +6 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/registry.d.ts +2 -0
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +16 -1
- package/dist/timeline/shared.d.ts +8 -3
- package/dist/timeline/startup-preference.d.ts +3 -0
- package/dist/timeline/startup-timings.d.ts +4 -0
- package/dist/timeline/tool-display-name.d.ts +2 -1
- package/dist/timeline/turn-summary.d.ts +32 -3
- package/dist/timeline/types.d.ts +141 -7
- package/dist/timeline-annotation-markers-GNDHTGBD.js +165 -0
- package/dist/timeline-annotation-markers-GNDHTGBD.js.map +1 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js +241 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js.map +1 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js +273 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js.map +1 -0
- package/dist/types/machines.d.ts +2 -2
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +13 -0
- package/dist/usage.js +1074 -0
- package/dist/usage.js.map +1 -0
- package/package.json +44 -4
- package/src/accounts.tsx +1072 -0
- package/src/approvals.ts +8 -1
- package/src/artifacts.ts +42 -0
- package/src/assets/README.md +8 -0
- package/src/assets/gmail.ico +0 -0
- package/src/assets/outlook.ico +0 -0
- package/src/capability-catalog-row.tsx +94 -0
- package/src/capability-logo-fallback.ts +22 -0
- package/src/client.ts +22 -13
- package/src/commands/registry.ts +18 -15
- package/src/commands/types.ts +2 -0
- package/src/components/anthropic-mark.tsx +10 -0
- package/src/components/approval-surface.tsx +171 -37
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +185 -0
- package/src/components/artifacts/artifact-surface.tsx +39 -19
- package/src/components/artifacts/chat-interactive-block.tsx +260 -0
- package/src/components/artifacts/deferred-chat-media.tsx +67 -0
- package/src/components/artifacts/document-editor.tsx +141 -16
- package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
- package/src/components/artifacts/editable-artifact-view.tsx +187 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
- package/src/components/artifacts/editable-document.tsx +37 -36
- package/src/components/artifacts/editable-presentation.tsx +36 -18
- package/src/components/artifacts/editable-spreadsheet.tsx +5 -2
- package/src/components/artifacts/index.ts +44 -0
- package/src/components/artifacts/inline-html-document.ts +24 -0
- package/src/components/artifacts/latest-task-runner.ts +49 -0
- package/src/components/artifacts/presentation-editor.tsx +323 -67
- package/src/components/artifacts/published-html-artifact-frame.tsx +338 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +376 -0
- package/src/components/artifacts/site-view.tsx +116 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +12 -13
- package/src/components/artifacts/visualization-assets/base.css +1015 -0
- package/src/components/artifacts/visualization-assets/helpers.html +349 -0
- package/src/components/artifacts/visualization-assets.gen.ts +3 -0
- package/src/components/browser-select-control.tsx +312 -0
- package/src/components/browser-viewer.tsx +1054 -314
- package/src/components/chat-composer.tsx +131 -85
- package/src/components/child-session-link.tsx +27 -0
- package/src/components/claude-mark.tsx +10 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +7 -5
- package/src/components/composer.tsx +376 -49
- package/src/components/computer-viewer.tsx +1041 -329
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +65 -7
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +158 -34
- package/src/components/fleet-tile.tsx +8 -16
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +33 -0
- package/src/components/human-input-form.tsx +455 -114
- package/src/components/human-input-surface.tsx +18 -7
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/machine-card.tsx +119 -4
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +23 -2
- package/src/components/machines/machine-detail.tsx +52 -2
- package/src/components/machines/machine-operation-policy.tsx +179 -0
- package/src/components/machines-dashboard.tsx +8 -17
- package/src/components/markdown-table-layout.ts +132 -0
- package/src/components/markdown.tsx +473 -44
- package/src/components/message-timeline.tsx +2498 -663
- package/src/components/model-mark.tsx +90 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +424 -0
- package/src/components/model-policy-picker.tsx +337 -381
- package/src/components/open-geni-chat.tsx +319 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +36 -11
- package/src/components/preview-loading.tsx +154 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +132 -42
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/sandbox-files.tsx +267 -35
- package/src/components/sandbox-terminal.tsx +48 -11
- package/src/components/sandbox-workspace.tsx +337 -135
- package/src/components/session-capability-frame.tsx +192 -0
- package/src/components/session-chrome.tsx +1027 -328
- package/src/components/session-commands-panel.tsx +126 -0
- package/src/components/session-commands.tsx +18 -0
- package/src/components/session-connection-request.tsx +97 -0
- package/src/components/session-conversation.tsx +512 -0
- package/src/components/session-list.tsx +250 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-status.tsx +1 -1
- package/src/components/timeline-anchor.tsx +119 -0
- package/src/components/timeline-annotation-chrome.tsx +196 -0
- package/src/components/timeline-annotation-layout.ts +268 -0
- package/src/components/timeline-annotation-markers.tsx +185 -0
- package/src/components/timeline-annotation-reveal-context.ts +9 -0
- package/src/components/timeline-annotation-selection.tsx +106 -54
- package/src/components/timeline-annotation-shared.ts +245 -0
- package/src/components/timeline-annotations-dialog.tsx +185 -128
- package/src/components/timeline-annotations.tsx +189 -45
- package/src/components/timeline-reading-progress.ts +80 -0
- package/src/components/timeline-search.tsx +168 -0
- package/src/components/timeline-settlement.ts +60 -0
- package/src/components/tip-follow.ts +70 -7
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +194 -49
- package/src/components/workspace-dock.tsx +141 -175
- package/src/composer.ts +6 -1
- package/src/connect-account-identity.tsx +34 -0
- package/src/connect-accounts.tsx +233 -0
- package/src/connect-chooser.tsx +336 -0
- package/src/connect-panel.tsx +99 -0
- package/src/connect-setup.tsx +307 -0
- package/src/connect.ts +60 -0
- package/src/connection-assets.d.ts +4 -0
- package/src/connection-catalog.tsx +162 -0
- package/src/connection-discovery.tsx +235 -0
- package/src/connection-installed.tsx +51 -0
- package/src/connection-logo.tsx +37 -0
- package/src/connection-service-logo.tsx +55 -0
- package/src/connection-service-presentation.ts +46 -0
- package/src/connection-skeleton.tsx +16 -0
- package/src/connection-type-picker.tsx +36 -0
- package/src/conversation-timeline.ts +92 -0
- package/src/desktop.ts +24 -0
- package/src/device-authorization.tsx +98 -0
- package/src/diffs.ts +16 -0
- package/src/discovery-cache.ts +42 -0
- package/src/editor.ts +13 -0
- package/src/embedded-session-client.ts +104 -0
- package/src/file-node-visibility.ts +66 -0
- package/src/hooks/channel-cache.ts +104 -0
- package/src/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +239 -0
- package/src/hooks/use-attached-browsers.ts +5 -1
- package/src/hooks/use-available-models.ts +20 -14
- package/src/hooks/use-browser-frame-stream.ts +25 -3
- package/src/hooks/use-browser-session.ts +271 -71
- package/src/hooks/use-browser-sessions.ts +7 -1
- package/src/hooks/use-channels.ts +32 -10
- package/src/hooks/use-codex-accounts.ts +78 -21
- package/src/hooks/use-composer.ts +1034 -320
- package/src/hooks/use-computer-frame-stream.ts +39 -16
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +110 -32
- package/src/hooks/use-computer-sessions.ts +8 -1
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +118 -10
- package/src/hooks/use-goal.ts +36 -9
- package/src/hooks/use-human-input.ts +31 -4
- package/src/hooks/use-last-started-turn-policy.ts +15 -13
- package/src/hooks/use-machine-chip.ts +23 -6
- package/src/hooks/use-machines.ts +104 -6
- package/src/hooks/use-sandbox-files.ts +253 -150
- package/src/hooks/use-sandbox-git.ts +58 -29
- package/src/hooks/use-session-background-commands.ts +67 -0
- package/src/hooks/use-session-capabilities.ts +21 -2
- package/src/hooks/use-session-events.ts +759 -433
- package/src/hooks/use-session-lineage.ts +28 -6
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session.ts +75 -16
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-turn-queue.ts +113 -13
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-voice-input.ts +12 -1
- package/src/hooks/use-workspace-capture.ts +3 -2
- package/src/hooks/use-workspace-edit.ts +23 -5
- package/src/hooks/use-workspace-sessions.ts +99 -11
- package/src/human-input.ts +12 -1
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +157 -12
- package/src/interaction.ts +1 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +150 -14
- package/src/lib/host-theme.ts +511 -0
- package/src/lib/interaction-errors.ts +33 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/machines.ts +9 -1
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-policy.ts +223 -69
- package/src/older-history.ts +87 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/provider.tsx +55 -14
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/realtime-control.tsx +274 -60
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +83 -0
- package/src/session-context.ts +1 -0
- package/src/session-ui.ts +66 -2
- package/src/session.ts +18 -1
- package/src/sites-ui.tsx +402 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/timeline/activity-rail.tsx +171 -80
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +42 -0
- package/src/timeline/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/genie-loading.tsx +136 -0
- package/src/timeline/index.ts +11 -0
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/parsers.ts +2 -2
- package/src/timeline/platform-activity-row.tsx +216 -0
- package/src/timeline/presented-image.ts +49 -0
- package/src/timeline/projection.ts +1600 -84
- package/src/timeline/registry.ts +15 -3
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/rolling-activity.tsx +92 -0
- package/src/timeline/screenshot-lightbox.tsx +115 -17
- package/src/timeline/shared.tsx +47 -15
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +8 -6
- package/src/timeline/tool-renderers.tsx +497 -128
- package/src/timeline/turn-summary.tsx +208 -44
- package/src/timeline/types.ts +186 -7
- package/src/types/machines.ts +10 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +50 -0
- package/styles/compiled.css +2098 -757
- package/styles/connect.css +284 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +201 -9
- package/styles/responsive.css +27 -1
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +135 -65
- package/dist/chunk-5UQPNLIO.js.map +0 -1
- package/dist/chunk-6KLX2RH5.js.map +0 -1
- package/dist/chunk-7WCLAEFV.js.map +0 -1
- package/dist/chunk-B6WPZSTT.js.map +0 -1
- package/dist/chunk-FK6VG4LL.js +0 -90
- package/dist/chunk-FK6VG4LL.js.map +0 -1
- package/dist/chunk-HA46CYQK.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-IGC6A2ZI.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-LLOLUHVG.js.map +0 -1
- package/dist/chunk-MKPIAGVL.js +0 -465
- package/dist/chunk-MKPIAGVL.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-R3AZOAB5.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-XBZWOM2K.js +0 -218
- package/dist/chunk-XBZWOM2K.js.map +0 -1
- package/dist/chunk-Y7OEDUJ5.js +0 -8810
- package/dist/chunk-Y7OEDUJ5.js.map +0 -1
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/interactive-workbench-viewers-TOHBXJEE.js +0 -15
- package/dist/queue-surface-implementation-2KVJTYXH.js.map +0 -1
- package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
- package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{interactive-workbench-viewers-TOHBXJEE.js.map → browser-viewer-GTR5XQ7X.js.map} +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
/** Completion copy must reflect the provider's actual scope of access. */
|
|
12
|
+
completeLabel?: string;
|
|
13
|
+
actionLabel: string;
|
|
14
|
+
/** Direct navigation actions should not announce a dialog on the card. */
|
|
15
|
+
opensDialog?: boolean;
|
|
16
|
+
note: string;
|
|
17
|
+
onOpen(): void;
|
|
18
|
+
onClose(): void;
|
|
19
|
+
busy?: boolean;
|
|
20
|
+
opener?: RefObject<HTMLButtonElement | null>;
|
|
21
|
+
cardRef?: RefObject<HTMLElement | null>;
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
/** A catalogue row can own the opener while reusing the same details dialog. */
|
|
24
|
+
dialogOnly?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Replaces the action when the viewer cannot start setup here (the provider
|
|
27
|
+
* is not configured, or someone else must connect it). Say why and who can.
|
|
28
|
+
*/
|
|
29
|
+
actionUnavailable?: ReactNode;
|
|
30
|
+
/** Host-owned content inside the card, under its status or actions. */
|
|
31
|
+
details?: ReactNode;
|
|
32
|
+
};
|
|
33
|
+
/** The same conversation card in the console and embedded clients. Setup
|
|
34
|
+
* content owns the provider flow; this frame owns identity and protected focus. */
|
|
35
|
+
export declare function SessionCapabilityFrame({ name, subtitle, logo, typeLabel, description, skill, expanded, complete, completeLabel, actionLabel, opensDialog, note, onOpen, onClose, busy, opener, cardRef, children, dialogOnly, actionUnavailable, details, }: SessionCapabilityFrameProps): import("react").JSX.Element;
|
|
@@ -28,15 +28,23 @@
|
|
|
28
28
|
* Inbox has no product dismiss API; pass `onDismissIncoming` when the host
|
|
29
29
|
* wants a visible action (dev harness may use a local dummy).
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Queue opens by default when chrome is idle and at least one authoritative
|
|
32
|
+
* prompt is queued. Closing the queue dismisses that session's offer until
|
|
33
|
+
* occupancy drains; a different session on the same chrome instance may
|
|
34
|
+
* offer again. An in-flight optimistic Send never opens the drawer —
|
|
35
|
+
* admission stays a paint-only receipt on the chip so layout does not jump
|
|
36
|
+
* under the pointer.
|
|
37
|
+
*
|
|
38
|
+
* Segment switches keep the panel shell mounted and crossfade content. The
|
|
39
|
+
* shell uses one CSS grid-track transition for deliberate open/close actions;
|
|
40
|
+
* live queue reconciliation never feeds measurements back into layout.
|
|
33
41
|
*/
|
|
34
|
-
import type { SessionGoal } from "@opengeni/sdk";
|
|
42
|
+
import type { SessionGoal, SessionStatus, SessionTurn } from "@opengeni/sdk";
|
|
35
43
|
import { type ReactNode } from "react";
|
|
36
|
-
import type { ComposerState } from "../hooks/use-composer.js";
|
|
44
|
+
import type { ComposerOptimisticMessage, ComposerState } from "../hooks/use-composer.js";
|
|
37
45
|
import type { UseGoalResult } from "../hooks/use-goal.js";
|
|
38
46
|
import type { UseTurnQueueResult } from "../hooks/use-turn-queue.js";
|
|
39
|
-
export type SessionChromeSignalId = "incoming" | "steering" | "queue" | "goal" | "agents";
|
|
47
|
+
export type SessionChromeSignalId = "incoming" | "steering" | "queue" | "goal" | "agents" | "commands";
|
|
40
48
|
export type SessionChromeSignalTone = "neutral" | "accent" | "waiting" | "running";
|
|
41
49
|
export type SessionChromeAgentsSignal = {
|
|
42
50
|
count: number;
|
|
@@ -44,12 +52,27 @@ export type SessionChromeAgentsSignal = {
|
|
|
44
52
|
tone?: SessionChromeSignalTone | undefined;
|
|
45
53
|
};
|
|
46
54
|
export type SessionChromeProps = {
|
|
55
|
+
/** Authoritative execution status; omitted by older embedding hosts. */
|
|
56
|
+
sessionStatus?: SessionStatus | undefined;
|
|
47
57
|
queue: UseTurnQueueResult;
|
|
58
|
+
/** Open and focus an existing queued prompt without changing its delivery. */
|
|
59
|
+
queueFocusTarget?: {
|
|
60
|
+
turnId: string;
|
|
61
|
+
requestId: number;
|
|
62
|
+
} | undefined;
|
|
48
63
|
/** Needed for queue edit → composer checkout. Omit with `readOnly`. */
|
|
49
64
|
composer?: ComposerState | undefined;
|
|
65
|
+
/** Focus the composer after a successful queue checkout has applied its draft.
|
|
66
|
+
* Connect to the composer controller's `focusInput`, or a custom input ref.
|
|
67
|
+
* Never called for failed checkout or while replacement awaits confirmation.
|
|
68
|
+
*/
|
|
69
|
+
onComposerFocus?: (() => void) | undefined;
|
|
50
70
|
goal?: UseGoalResult | null | undefined;
|
|
51
71
|
/** Expanded agents body (host supplies tree / list). */
|
|
52
72
|
agentsPanel?: ReactNode;
|
|
73
|
+
/** Active commands only. The host mounts the body only when opened. */
|
|
74
|
+
commandsPanel?: ReactNode;
|
|
75
|
+
commandsCount?: number | undefined;
|
|
53
76
|
/** Chip summary; when `count > 0` the agents segment appears. */
|
|
54
77
|
agentsSignal?: SessionChromeAgentsSignal | undefined;
|
|
55
78
|
/**
|
|
@@ -57,6 +80,8 @@ export type SessionChromeProps = {
|
|
|
57
80
|
* (and the gallery) may still pass a handler so the action is visible.
|
|
58
81
|
*/
|
|
59
82
|
onDismissIncoming?: ((inputId: string) => void) | undefined;
|
|
83
|
+
/** Open a typed child update's source through the host's normal authorized route. */
|
|
84
|
+
onOpenSession?: ((sessionId: string) => void) | undefined;
|
|
60
85
|
readOnly?: boolean | undefined;
|
|
61
86
|
className?: string | undefined;
|
|
62
87
|
/** Controlled active segment; omit for uncontrolled. */
|
|
@@ -64,8 +89,41 @@ export type SessionChromeProps = {
|
|
|
64
89
|
defaultActive?: SessionChromeSignalId | null | undefined;
|
|
65
90
|
onActiveChange?: ((next: SessionChromeSignalId | null) => void) | undefined;
|
|
66
91
|
};
|
|
67
|
-
type GoalPillState = "pursuing" | "scheduled" | "blocked" | "held" | "paused" | "invariant_broken" | "completed";
|
|
92
|
+
type GoalPillState = "pursuing" | "waiting" | "scheduled" | "session_failed" | "blocked" | "held" | "paused" | "invariant_broken" | "completed";
|
|
93
|
+
type GoalPillRecord = Pick<SessionGoal, "status" | "pausedReason"> & {
|
|
94
|
+
continuation?: SessionGoal["continuation"] | null | undefined;
|
|
95
|
+
};
|
|
96
|
+
/** Pill label, with the pause reason spelled out: "Paused · cap" / "Paused · manually". */
|
|
97
|
+
export declare function sessionChromeGoalPillLabel(state: GoalPillState, record: GoalPillRecord | null | undefined): string;
|
|
98
|
+
/**
|
|
99
|
+
* One human sentence explaining WHY the goal is not pursuing right now: the
|
|
100
|
+
* pause reason, the agent's own `wait_for_input` hold (reason + deadline), or the
|
|
101
|
+
* next idle-backoff check time. Null when the state needs no explanation.
|
|
102
|
+
*/
|
|
103
|
+
export declare function sessionChromeGoalPillExplanation(state: GoalPillState, record: GoalPillRecord | null | undefined): string | null;
|
|
104
|
+
export declare function countAuthoritativeQueuedTurns(turns: readonly SessionTurn[], mutationFor: UseTurnQueueResult["mutationFor"]): number;
|
|
105
|
+
export declare function countOptimisticQueuedMessages(messages: readonly ComposerOptimisticMessage[] | undefined, queuedTurnIds: ReadonlySet<string>, snapshot: UseTurnQueueResult["snapshot"]): number;
|
|
106
|
+
/**
|
|
107
|
+
* First uncontrolled segment. An existing authoritative queue opens itself
|
|
108
|
+
* when the host did not pick another default; optimistic-only occupancy
|
|
109
|
+
* stays collapsed so a live Send does not shove a drawer under the pointer.
|
|
110
|
+
*/
|
|
111
|
+
export declare function sessionChromeInitialActive(input: {
|
|
112
|
+
defaultActive: SessionChromeSignalId | null;
|
|
113
|
+
authoritativeQueuedCount: number;
|
|
114
|
+
}): SessionChromeSignalId | null;
|
|
115
|
+
/**
|
|
116
|
+
* Whether idle chrome should offer the queue panel. A dismissed session
|
|
117
|
+
* stays collapsed until occupancy drains. Controlled hosts own this.
|
|
118
|
+
*/
|
|
119
|
+
export declare function sessionChromeShouldOfferQueue(input: {
|
|
120
|
+
controlled: boolean;
|
|
121
|
+
active: SessionChromeSignalId | null;
|
|
122
|
+
activityOpen: boolean;
|
|
123
|
+
authoritativeQueuedCount: number;
|
|
124
|
+
suppressed: boolean;
|
|
125
|
+
}): boolean;
|
|
68
126
|
/** Select pill state from the goal's authoritative continuation projection. */
|
|
69
|
-
export declare function sessionChromeGoalPillState(goalStatus: "active" | "paused" | "completed", continuation: SessionGoal["continuation"] | null | undefined): GoalPillState;
|
|
70
|
-
export declare function SessionChrome({ queue, composer, goal, agentsPanel, agentsSignal, onDismissIncoming, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react").JSX.Element | null;
|
|
127
|
+
export declare function sessionChromeGoalPillState(goalStatus: "active" | "paused" | "completed", continuation: SessionGoal["continuation"] | null | undefined, sessionStatus?: SessionStatus): GoalPillState;
|
|
128
|
+
export declare function SessionChrome({ sessionStatus, queue, queueFocusTarget, composer, onComposerFocus, goal, agentsPanel, commandsPanel, commandsCount, agentsSignal, onDismissIncoming, onOpenSession, readOnly, className, active: activeControlled, defaultActive, onActiveChange, }: SessionChromeProps): import("react").JSX.Element | null;
|
|
71
129
|
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { UseSessionBackgroundCommandsResult } from "../hooks/use-session-background-commands.js";
|
|
2
|
+
/** The current session's live commands. Settled commands belong to the timeline. */
|
|
3
|
+
export declare function SessionCommandsPanel({ commands: state, readOnly, }: {
|
|
4
|
+
commands: UseSessionBackgroundCommandsResult;
|
|
5
|
+
readOnly?: boolean;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
@@ -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;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type CSSProperties } from "react";
|
|
2
|
+
import { type ClientOverride } from "../session-context.js";
|
|
3
|
+
import { type ModelPolicyPickerProps } from "./model-policy-picker.js";
|
|
4
|
+
import { type ChatComposerProps } from "./chat-composer.js";
|
|
5
|
+
import { type HumanInputSurfaceProps } from "./human-input-surface.js";
|
|
6
|
+
import { type MessageTimelineProps } from "./message-timeline.js";
|
|
7
|
+
import { type OpenGeniLinkResolver, type OpenGeniViewerTarget } from "./open-geni-links.js";
|
|
8
|
+
import type { UserMessageDisclosureLabels } from "./user-message-body.js";
|
|
9
|
+
import { type HostSurfacePreference, type HostThemePreference } from "../lib/host-theme.js";
|
|
10
|
+
export type SessionConversationLabels = {
|
|
11
|
+
/** Banner action after a refresh failure; the conversation stays mounted. */
|
|
12
|
+
retry: string;
|
|
13
|
+
/** Action when the conversation could not load at all. */
|
|
14
|
+
tryAgain: string;
|
|
15
|
+
};
|
|
16
|
+
export type SessionConversationProps = ClientOverride & {
|
|
17
|
+
sessionId: string;
|
|
18
|
+
/** Host-owned artifact links, previews and other message presentation. */
|
|
19
|
+
renderMessageText?: MessageTimelineProps["renderMessageText"];
|
|
20
|
+
/**
|
|
21
|
+
* Open OpenGeni object links in agent replies (`artifact:`, `sandbox:`,
|
|
22
|
+
* editable artifacts, Sites). Asked first; by default retained files and
|
|
23
|
+
* sandbox files download only when the proxy explicitly enables them, while
|
|
24
|
+
* editable artifacts and Sites stay unavailable until the host resolves them.
|
|
25
|
+
*/
|
|
26
|
+
resolveLink?: OpenGeniLinkResolver | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Open agent links to editable artifacts and Sites in a host viewer, for
|
|
29
|
+
* example `SessionArtifactViewer` mounted beside the conversation. Asked
|
|
30
|
+
* after `resolveLink`.
|
|
31
|
+
*/
|
|
32
|
+
onOpenArtifact?: ((target: OpenGeniViewerTarget) => void) | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Inline previews for assistant `opengeni-site` / `opengeni-html` fences.
|
|
35
|
+
* Defaults to the OpenGeni preview (Site reads need the proxy's
|
|
36
|
+
* `artifacts` option); `false` shows the fence as code.
|
|
37
|
+
*/
|
|
38
|
+
renderInteractiveBlock?: MessageTimelineProps["renderInteractiveBlock"] | false;
|
|
39
|
+
/** Product-specific tool-call renderers; defaults to the built-in registry. */
|
|
40
|
+
toolRegistry?: MessageTimelineProps["toolRegistry"];
|
|
41
|
+
/**
|
|
42
|
+
* Replace the "usage limit reached" row for an `allowance_exhausted`
|
|
43
|
+
* refusal, for example to link your own plan or admin page.
|
|
44
|
+
*/
|
|
45
|
+
renderAllowanceExhausted?: MessageTimelineProps["renderAllowanceExhausted"];
|
|
46
|
+
/** Replace the words of the default "usage limit reached" row. */
|
|
47
|
+
allowanceExhaustedLabels?: MessageTimelineProps["allowanceExhaustedLabels"];
|
|
48
|
+
/**
|
|
49
|
+
* File attachments in the composer. Defaults to true; the attach control
|
|
50
|
+
* appears only when the deployment's client config enables file uploads.
|
|
51
|
+
*/
|
|
52
|
+
attachments?: boolean | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Show the model/reasoning picker. End users of an embedded product rarely
|
|
55
|
+
* choose models, so it is hidden unless this is `true` or the client config
|
|
56
|
+
* reports `modelSelection: true` (`createSessionProxyHandler({ modelSelection: true })`).
|
|
57
|
+
*/
|
|
58
|
+
modelPicker?: boolean | undefined;
|
|
59
|
+
/** Model-picker appearance only; visibility, policy and delivery remain owned here. */
|
|
60
|
+
modelPickerProps?: Pick<ModelPolicyPickerProps, "groupPresentation" | "messages"> | undefined;
|
|
61
|
+
/** Localized actions for already-sent user-message disclosure. */
|
|
62
|
+
userMessageDisclosureLabels?: UserMessageDisclosureLabels | undefined;
|
|
63
|
+
loadSkillReview?: HumanInputSurfaceProps["loadSkillReview"];
|
|
64
|
+
className?: string;
|
|
65
|
+
/** Defaults to filling the host. The host owns available height. */
|
|
66
|
+
height?: CSSProperties["height"];
|
|
67
|
+
/**
|
|
68
|
+
* Light or dark. Defaults to `auto`: follow the host page (an enclosing
|
|
69
|
+
* `data-og-theme`, `class="dark"`/`data-theme` on <html> or <body>, the
|
|
70
|
+
* host's `color-scheme`, then its background), not the OS setting alone.
|
|
71
|
+
*/
|
|
72
|
+
theme?: HostThemePreference | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* `host` (default) derives backgrounds and cards from the host background so
|
|
75
|
+
* the conversation blends in; `theme` uses the `--og-color-*` surface tokens
|
|
76
|
+
* as they are. Customized surface tokens are always kept.
|
|
77
|
+
*/
|
|
78
|
+
surface?: HostSurfacePreference | undefined;
|
|
79
|
+
/** Conversation-owned copy (error actions). */
|
|
80
|
+
labels?: Partial<SessionConversationLabels> | undefined;
|
|
81
|
+
/** Presentation/custom controls only; queue and delivery wiring stay owned here. */
|
|
82
|
+
composerProps?: Omit<ChatComposerProps, "composer" | "effectiveControl" | "queuedAheadCount" | "attachments">;
|
|
83
|
+
};
|
|
84
|
+
/** 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;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type ClientOverride } from "../session-context.js";
|
|
2
|
+
export type SessionListLabels = {
|
|
3
|
+
heading: string;
|
|
4
|
+
newChat: string;
|
|
5
|
+
empty: string;
|
|
6
|
+
loading: string;
|
|
7
|
+
loadMore: string;
|
|
8
|
+
rename: string;
|
|
9
|
+
archive: string;
|
|
10
|
+
save: string;
|
|
11
|
+
cancel: string;
|
|
12
|
+
};
|
|
13
|
+
export type SessionListProps = ClientOverride & {
|
|
14
|
+
selectedSessionId?: string | null | undefined;
|
|
15
|
+
onSelect: (sessionId: string) => void;
|
|
16
|
+
/** Shown as a "New chat" button when provided. */
|
|
17
|
+
onNewChat?: (() => void) | undefined;
|
|
18
|
+
/** Allow inline rename (`updateSession`). Defaults to true. */
|
|
19
|
+
rename?: boolean | undefined;
|
|
20
|
+
/** Allow archiving (`updateSessionArchive`). Defaults to true. */
|
|
21
|
+
archive?: boolean | undefined;
|
|
22
|
+
/** Called after the selected chat was archived, so the host can move on. */
|
|
23
|
+
onArchived?: ((sessionId: string) => void) | undefined;
|
|
24
|
+
pageSize?: number | undefined;
|
|
25
|
+
/** Change the reference to force a refetch (for example after creating a chat). */
|
|
26
|
+
refreshKey?: unknown;
|
|
27
|
+
labels?: Partial<SessionListLabels> | undefined;
|
|
28
|
+
className?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The workspace's root chats for the current user, newest activity first.
|
|
32
|
+
* Through `createSessionProxyHandler` the list is limited to the chats the
|
|
33
|
+
* resolved user created (or everything they may read, with `sessionList:
|
|
34
|
+
* "visible"`); OpenGeni enforces visibility either way.
|
|
35
|
+
*/
|
|
36
|
+
export declare function SessionList({ client, workspaceId, selectedSessionId, onSelect, onNewChat, rename, archive, onArchived, pageSize, refreshKey, labels: labelOverrides, className, }: SessionListProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
* The provider only ever connects someone's own account (official Gmail,
|
|
20
|
+
* Slack's hosted MCP): no ownership choice, always personal.
|
|
21
|
+
*/
|
|
22
|
+
personalOnly?: boolean;
|
|
23
|
+
/** The connect button's words, "Connect Gmail". Defaults to "Continue to <name>". */
|
|
24
|
+
connectLabel?: string;
|
|
25
|
+
/** The line under the dialog title. Defaults to the kind and provider domain. */
|
|
26
|
+
dialogSubtitle?: string;
|
|
27
|
+
/** The host's product copy for this connection, instead of the catalog description. */
|
|
28
|
+
description?: string;
|
|
29
|
+
/** The host's logo for this connection, when the catalog has no asset. */
|
|
30
|
+
logoSrc?: string | null;
|
|
31
|
+
/** The host's words for the ownership choice. */
|
|
32
|
+
ownershipCopy?: {
|
|
33
|
+
legend: string;
|
|
34
|
+
workspace: string;
|
|
35
|
+
personal: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/** Native OAuth recommendation flow. Identity and endpoint come from the live
|
|
39
|
+
* catalog, never from model-authored recommendation text. */
|
|
40
|
+
export declare function SessionMcpCapabilityCard(props: SessionMcpCapabilityCardProps): import("react").JSX.Element;
|
|
41
|
+
export declare function McpConnectionCard(props: McpConnectionCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component, type ReactNode } from "react";
|
|
2
|
+
type Anchor = {
|
|
3
|
+
element: HTMLElement;
|
|
4
|
+
key: string | null;
|
|
5
|
+
text: string | null;
|
|
6
|
+
top: number;
|
|
7
|
+
focused?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type TimelineAnchor = Anchor[];
|
|
10
|
+
/** Read ownership synchronously: selectionchange may follow the next React commit. */
|
|
11
|
+
export declare function timelineHasReader(scroller: HTMLElement | null): boolean;
|
|
12
|
+
/** Read the old DOM immediately before React changes it, not when a fetch starts. */
|
|
13
|
+
export declare class TimelineBeforeLayout extends Component<{
|
|
14
|
+
capture: () => void;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}> {
|
|
17
|
+
getSnapshotBeforeUpdate(): null;
|
|
18
|
+
componentDidUpdate(): void;
|
|
19
|
+
render(): ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare function captureTimelineAnchor(scroller: HTMLElement): TimelineAnchor | null;
|
|
22
|
+
/** Return only the correction native browser anchoring has not already made. */
|
|
23
|
+
export declare function timelineAnchorCorrection(scroller: HTMLElement, anchors: TimelineAnchor): number | null;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DraftTimelineAnnotation, TimelineAnnotation, TimelineAnnotationSource } from "@opengeni/sdk";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
export type TimelineAnnotationLike = DraftTimelineAnnotation | TimelineAnnotation;
|
|
4
|
+
export declare function AnnotationQuoteSourceButton({ annotation, lines, onRevealSource, onUnavailable, }: {
|
|
5
|
+
annotation: TimelineAnnotationLike;
|
|
6
|
+
lines?: 2 | 3;
|
|
7
|
+
onRevealSource?: ((source: TimelineAnnotationSource) => boolean) | undefined;
|
|
8
|
+
onUnavailable: (id: string | null) => void;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
export declare function AnnotationAccentRow({ children, className, }: {
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
className?: string | undefined;
|
|
13
|
+
}): import("react").JSX.Element;
|
|
14
|
+
export declare function AnnotationNotePreview({ note, annotationId, ordinal, className, }: {
|
|
15
|
+
note: string;
|
|
16
|
+
annotationId: string;
|
|
17
|
+
ordinal: number;
|
|
18
|
+
className?: string | undefined;
|
|
19
|
+
}): import("react").JSX.Element | null;
|
|
20
|
+
export declare function AnnotationNoteField({ annotation, inputRef, onUpdate, onCommit, }: {
|
|
21
|
+
annotation: TimelineAnnotationLike;
|
|
22
|
+
inputRef?: ((node: HTMLTextAreaElement | null) => void) | undefined;
|
|
23
|
+
onUpdate: (id: string, note: string) => void;
|
|
24
|
+
onCommit?: (() => void) | undefined;
|
|
25
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type AnnotationBox = {
|
|
2
|
+
left: number;
|
|
3
|
+
right: number;
|
|
4
|
+
top: number;
|
|
5
|
+
bottom: number;
|
|
6
|
+
};
|
|
7
|
+
export type AnnotationBadgeAnchor = {
|
|
8
|
+
id: string;
|
|
9
|
+
ordinal: number;
|
|
10
|
+
left: number;
|
|
11
|
+
top: number;
|
|
12
|
+
incomplete: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare const ANNOTATION_BADGE_GAP_PX = 32;
|
|
15
|
+
export declare const ANNOTATION_BADGE_MIN_GAP_PX = 12;
|
|
16
|
+
export declare const ANNOTATION_REVIEW_DIALOG_WIDTH_PX = 400;
|
|
17
|
+
export declare const ANNOTATION_REVIEW_DIALOG_MAX_HEIGHT_PX: number;
|
|
18
|
+
export declare const ANNOTATION_REVIEW_DIALOG_MIN_HEIGHT_PX = 160;
|
|
19
|
+
export declare const ANNOTATION_REVIEW_DIALOG_FLOOR_HEIGHT_PX = 80;
|
|
20
|
+
export declare const ANNOTATION_REVIEW_MARGIN_PX = 12;
|
|
21
|
+
export declare const ANNOTATION_NOTE_PREVIEW_CHARS = 280;
|
|
22
|
+
export declare const ANNOTATION_CARD_STACK_SCROLL_AT = 4;
|
|
23
|
+
export declare function annotationBoxIntersects(a: AnnotationBox, b: AnnotationBox): boolean;
|
|
24
|
+
export declare function annotationViewportBox(viewportWidth: number, viewportHeight: number, scroller?: AnnotationBox | null): AnnotationBox;
|
|
25
|
+
export declare function annotationNoteNeedsDisclosure(note: string): boolean;
|
|
26
|
+
export declare function annotationBadgePackGap(viewport: AnnotationBox, count: number, preferred?: number): number;
|
|
27
|
+
export declare function layoutAnnotationBadges(anchors: readonly AnnotationBadgeAnchor[], viewport: AnnotationBox, preferredGap?: number): AnnotationBadgeAnchor[];
|
|
28
|
+
export declare function scrollAnnotationRowIntoList(list: HTMLElement | null | undefined, row: HTMLElement | null | undefined): void;
|
|
29
|
+
export declare function clampAnnotationDialogPlacement(input: {
|
|
30
|
+
triggerLeft: number;
|
|
31
|
+
triggerTop: number;
|
|
32
|
+
triggerBottom: number;
|
|
33
|
+
contentHeight: number;
|
|
34
|
+
viewportWidth: number;
|
|
35
|
+
viewportHeight: number;
|
|
36
|
+
panelWidth?: number;
|
|
37
|
+
}): {
|
|
38
|
+
left: number;
|
|
39
|
+
top: number;
|
|
40
|
+
maxHeight: number;
|
|
41
|
+
above: boolean;
|
|
42
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DraftTimelineAnnotation } from "@opengeni/sdk";
|
|
2
|
+
import { type RefObject } from "react";
|
|
3
|
+
export declare function TimelineAnnotationMarkers({ annotations, onSelect, rootRef, }: {
|
|
4
|
+
annotations: readonly DraftTimelineAnnotation[];
|
|
5
|
+
onSelect?: ((id: string) => void) | undefined;
|
|
6
|
+
rootRef: RefObject<HTMLElement | null>;
|
|
7
|
+
}): import("react").ReactPortal | null;
|
|
8
|
+
export default TimelineAnnotationMarkers;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/** Owning timeline scroller for quote-source navigation. */
|
|
3
|
+
export declare const TimelineAnnotationSourceRootContext: import("react").Context<RefObject<HTMLElement | null> | null>;
|
|
4
|
+
export declare function useTimelineAnnotationSourceRoot(): RefObject<HTMLElement | null> | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TimelineAnnotationSource } from "@opengeni/sdk";
|
|
2
|
+
export declare const ANNOTATION_CHROME_SELECTOR = "[data-og-annotation-chrome], [data-og-annotation-badge], [data-og-annotation-popover]";
|
|
3
|
+
export declare function annotationHasNote(note: string): boolean;
|
|
4
|
+
export declare function annotationDisplayOrdinal(annotation: {
|
|
5
|
+
readonly id?: string;
|
|
6
|
+
readonly ordinal?: number | undefined;
|
|
7
|
+
}, index: number): number;
|
|
8
|
+
export declare function sourceKindLabel(kind: TimelineAnnotationSource["kind"]): string;
|
|
9
|
+
export declare function annotationSourceLabel(source: TimelineAnnotationSource): string;
|
|
10
|
+
export declare function truncateAnnotationQuote(quote: string, maxChars?: number): string;
|
|
11
|
+
export declare function cssEscapeAttribute(value: string): string;
|
|
12
|
+
export declare function isAnnotationChromeNode(node: Node | null): boolean;
|
|
13
|
+
export declare function occurrenceOffsets(text: string, quote: string): number[];
|
|
14
|
+
export declare function matchingQuoteInSource(sourceText: string, quote: string): string | null;
|
|
15
|
+
type AnnotatableSpan = {
|
|
16
|
+
node: Text;
|
|
17
|
+
start: number;
|
|
18
|
+
length: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function annotatableText(root: HTMLElement): {
|
|
21
|
+
text: string;
|
|
22
|
+
spans: AnnotatableSpan[];
|
|
23
|
+
};
|
|
24
|
+
export declare function rangeFromOffsets(spans: AnnotatableSpan[], startOffset: number, endOffset: number): Range | null;
|
|
25
|
+
export declare function buildQuoteRange(sourceEl: HTMLElement, quote: string, occurrenceIndex?: number): Range | null;
|
|
26
|
+
export declare function quoteOccurrenceIndex(sourceEl: HTMLElement, range: Range, quote: string): number;
|
|
27
|
+
export declare function clipRangeToSource(range: Range, sourceEl: HTMLElement): Range | null;
|
|
28
|
+
export declare function visibleClientRect(range: Range): DOMRect | null;
|
|
29
|
+
export declare function resolveAnnotationRevealRoot(from: Element | null | undefined): HTMLElement | null;
|
|
30
|
+
export declare function revealLoadedAnnotationSource(source: TimelineAnnotationSource, root?: ParentNode | null): boolean;
|
|
31
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TimelineAnnotationSource } from "@opengeni/sdk";
|
|
2
2
|
import { type RefObject } from "react";
|
|
3
|
-
import type
|
|
4
|
-
export declare function TimelineAnnotationsDialog({ annotations, editable, focusAnnotationId, onFocusConsumed, onUpdate, onRemove, onRevealSource, triggerRef, countLabel, onDismiss, }: {
|
|
3
|
+
import { type TimelineAnnotationLike } from "./timeline-annotation-chrome.js";
|
|
4
|
+
export declare function TimelineAnnotationsDialog({ annotations, editable, focusAnnotationId, onFocusConsumed, onUpdate, onRemove, onRevealSource, triggerRef, countLabel, onDismiss, onCommit, }: {
|
|
5
5
|
annotations: readonly TimelineAnnotationLike[];
|
|
6
6
|
editable: boolean;
|
|
7
7
|
focusAnnotationId?: string | null | undefined;
|
|
@@ -12,5 +12,6 @@ export declare function TimelineAnnotationsDialog({ annotations, editable, focus
|
|
|
12
12
|
triggerRef: RefObject<HTMLButtonElement | null>;
|
|
13
13
|
countLabel: string;
|
|
14
14
|
onDismiss: (restoreFocus: boolean) => void;
|
|
15
|
+
onCommit: () => void;
|
|
15
16
|
}): import("react").ReactPortal | null;
|
|
16
17
|
export default TimelineAnnotationsDialog;
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import type { TimelineAnnotationSource } from "@opengeni/sdk";
|
|
2
|
+
import { type TimelineAnnotationLike } from "./timeline-annotation-chrome.js";
|
|
3
|
+
export type { TimelineAnnotationLike } from "./timeline-annotation-chrome.js";
|
|
4
|
+
export declare function TimelineAnnotationCards({ annotations, onRevealSource, className, }: {
|
|
5
|
+
annotations: readonly TimelineAnnotationLike[];
|
|
6
|
+
onRevealSource?: ((source: TimelineAnnotationSource) => boolean) | undefined;
|
|
7
|
+
className?: string | undefined;
|
|
8
|
+
}): import("react").JSX.Element | null;
|
|
9
|
+
export declare function TimelineAnnotationsChip({ annotations, editable, focusAnnotationId, onFocusConsumed, onUpdate, onRemove, onRevealSource, className, compact, onCommit, }: {
|
|
4
10
|
annotations: readonly TimelineAnnotationLike[];
|
|
5
11
|
editable?: boolean | undefined;
|
|
6
12
|
focusAnnotationId?: string | null | undefined;
|
|
7
13
|
onFocusConsumed?: (() => void) | undefined;
|
|
8
14
|
onUpdate?: ((id: string, note: string) => void) | undefined;
|
|
9
15
|
onRemove?: ((id: string) => void) | undefined;
|
|
16
|
+
/** Return focus to the owning input after all notes are completed with Enter. */
|
|
17
|
+
onCommit?: (() => void) | undefined;
|
|
10
18
|
onRevealSource?: ((source: TimelineAnnotationSource) => boolean) | undefined;
|
|
11
19
|
className?: string | undefined;
|
|
20
|
+
/** Dense trigger for single-line rows such as the compact queue dock. */
|
|
21
|
+
compact?: boolean | undefined;
|
|
12
22
|
}): import("react").JSX.Element | null;
|
|
13
23
|
export default TimelineAnnotationsChip;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TimelineGroup } from "../timeline/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Settlement may compact history, but cannot remove prose beneath a reader.
|
|
4
|
+
* Keep only progress that was already primary on the preceding commit; loading
|
|
5
|
+
* settled history never expands it. An explicit work toggle or tip return ends
|
|
6
|
+
* the protection. Keeping the original sibling keys also preserves selection.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useReadingProgress(projected: TimelineGroup[], pinned: boolean, scroller: HTMLElement | null): {
|
|
9
|
+
groups: TimelineGroup[];
|
|
10
|
+
release: (id: string | null) => void;
|
|
11
|
+
};
|
|
@@ -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;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TimelineGroup } from "../timeline/types.js";
|
|
2
|
+
export type TimelineSettlement = {
|
|
3
|
+
element: HTMLElement;
|
|
4
|
+
top: number;
|
|
5
|
+
};
|
|
6
|
+
/** Capture only a retained answer at a real live→settled boundary, never history load. */
|
|
7
|
+
export declare function captureTimelineSettlement(scroller: HTMLElement, groups: readonly {
|
|
8
|
+
key: string;
|
|
9
|
+
group: TimelineGroup;
|
|
10
|
+
}[]): TimelineSettlement | null;
|
|
11
|
+
/**
|
|
12
|
+
* Folding earlier prose can clamp scrollTop before paint. Keep the retained
|
|
13
|
+
* answer visually continuous after the normal scroll authority has run. This
|
|
14
|
+
* is one local position transition, not a new scroll writer or a presence tree.
|
|
15
|
+
*/
|
|
16
|
+
export declare function animateTimelineSettlement(snapshot: TimelineSettlement): Animation | null;
|
|
@@ -160,6 +160,22 @@ export declare function tipFollowClearSoftRise(el: HTMLElement): void;
|
|
|
160
160
|
* on screen: scrollTop -= Δh, clamped to the new max.
|
|
161
161
|
*/
|
|
162
162
|
export declare function tipFollowCompensateShrink(scrollTop: number, previousHeight: number, nextHeight: number, clientHeight: number, epsPx?: number): number;
|
|
163
|
+
export type TipFollowContentShrinkBaseline = {
|
|
164
|
+
scrollHeight: number;
|
|
165
|
+
scrollTop: number;
|
|
166
|
+
};
|
|
167
|
+
export type TipFollowContentShrinkObservation = {
|
|
168
|
+
baseline: TipFollowContentShrinkBaseline | null;
|
|
169
|
+
compensatedScrollTop: number | null;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Retain the geometry from the first sub-epsilon content-shrink frame until
|
|
173
|
+
* the cumulative collapse crosses the deadband. Browsers may clamp scrollTop
|
|
174
|
+
* after every tiny frame, so compensating from the latest DOM top would count
|
|
175
|
+
* those already-applied clamps twice and make the result animation-cadence
|
|
176
|
+
* dependent.
|
|
177
|
+
*/
|
|
178
|
+
export declare function tipFollowObserveContentShrink(baseline: TipFollowContentShrinkBaseline | null, previousHeight: number, previousScrollTop: number, nextHeight: number, clientHeight: number, epsPx?: number): TipFollowContentShrinkObservation;
|
|
163
179
|
/**
|
|
164
180
|
* Viewport shrank (SessionChrome / composer / window). maxScroll rises by ≈Δc;
|
|
165
181
|
* keep the same tip distance: scrollTop += Δc. Without this, pinned follow only
|