@opengeni/react 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +769 -22
- package/dist/accounts.js +2 -0
- package/dist/accounts.js.map +1 -1
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +5 -3
- package/dist/artifacts-presentation.js +5 -3
- package/dist/artifacts-spreadsheet.d.ts +1 -1
- package/dist/artifacts-spreadsheet.js +5 -3
- package/dist/artifacts.d.ts +5 -1
- package/dist/artifacts.js +536 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-ZWR6MWJ7.js +19 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-4EUKJXUO.js +14 -0
- package/dist/chunk-2DDJ6YH6.js +41 -0
- package/dist/chunk-2DDJ6YH6.js.map +1 -0
- package/dist/chunk-2HVLQ26H.js +183 -0
- package/dist/chunk-2HVLQ26H.js.map +1 -0
- package/dist/{chunk-XYRDDSXF.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-JAQ5K7W6.js → chunk-2SFFYIH3.js} +1178 -166
- package/dist/chunk-2SFFYIH3.js.map +1 -0
- package/dist/chunk-3PVDYTTB.js +24 -0
- package/dist/chunk-3PVDYTTB.js.map +1 -0
- package/dist/chunk-3RJKUVCA.js +14068 -0
- package/dist/chunk-3RJKUVCA.js.map +1 -0
- package/dist/chunk-3UZCWK46.js +298 -0
- package/dist/chunk-3UZCWK46.js.map +1 -0
- package/dist/chunk-47CKUXTW.js +293 -0
- package/dist/chunk-47CKUXTW.js.map +1 -0
- package/dist/chunk-4QYP6QUI.js +109 -0
- package/dist/chunk-4QYP6QUI.js.map +1 -0
- package/dist/chunk-5EY26VZ7.js +1053 -0
- package/dist/chunk-5EY26VZ7.js.map +1 -0
- package/dist/chunk-5I4VRWBB.js +56 -0
- package/dist/chunk-5I4VRWBB.js.map +1 -0
- package/dist/chunk-5WOR7UCL.js +191 -0
- package/dist/chunk-5WOR7UCL.js.map +1 -0
- package/dist/chunk-5YJLGOM5.js +51 -0
- package/dist/chunk-5YJLGOM5.js.map +1 -0
- package/dist/chunk-6JFN3OWG.js +386 -0
- package/dist/chunk-6JFN3OWG.js.map +1 -0
- package/dist/chunk-7QJT5O4S.js +35 -0
- package/dist/chunk-7QJT5O4S.js.map +1 -0
- package/dist/chunk-A55KV72M.js +402 -0
- package/dist/chunk-A55KV72M.js.map +1 -0
- package/dist/chunk-ADWCLI4G.js +2028 -0
- package/dist/chunk-ADWCLI4G.js.map +1 -0
- package/dist/chunk-B27E3V37.js +29 -0
- package/dist/chunk-B27E3V37.js.map +1 -0
- package/dist/chunk-B7TC2A33.js +83 -0
- package/dist/chunk-B7TC2A33.js.map +1 -0
- package/dist/chunk-BLL56F7R.js +385 -0
- package/dist/chunk-BLL56F7R.js.map +1 -0
- package/dist/chunk-BOFEQC6K.js +162 -0
- package/dist/chunk-BOFEQC6K.js.map +1 -0
- package/dist/chunk-CM7LVUKC.js +35 -0
- package/dist/chunk-CM7LVUKC.js.map +1 -0
- package/dist/chunk-CORUP6JB.js +122 -0
- package/dist/chunk-CORUP6JB.js.map +1 -0
- package/dist/chunk-CSX5FFKZ.js +35 -0
- package/dist/chunk-CSX5FFKZ.js.map +1 -0
- package/dist/chunk-EGVHJKGJ.js +3125 -0
- package/dist/chunk-EGVHJKGJ.js.map +1 -0
- package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
- package/dist/chunk-G76LSA76.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
- package/dist/chunk-GQMRL52F.js.map +1 -0
- package/dist/{chunk-ELIYWBZR.js → chunk-GUUXOISA.js} +1113 -457
- package/dist/chunk-GUUXOISA.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
- package/dist/chunk-I7X2P4FU.js.map +1 -0
- package/dist/chunk-IGFZFLI2.js +1390 -0
- package/dist/chunk-IGFZFLI2.js.map +1 -0
- package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
- package/dist/chunk-IMSUVYQB.js.map +1 -0
- package/dist/chunk-IOYHDEP3.js +38 -0
- package/dist/chunk-IOYHDEP3.js.map +1 -0
- package/dist/chunk-IZV5FTJC.js +55 -0
- package/dist/chunk-IZV5FTJC.js.map +1 -0
- package/dist/chunk-KF33GTWN.js +343 -0
- package/dist/chunk-KF33GTWN.js.map +1 -0
- package/dist/chunk-KSGQ5ODA.js +457 -0
- package/dist/chunk-KSGQ5ODA.js.map +1 -0
- package/dist/{chunk-ZPBTI3TE.js → chunk-KZC6QRNR.js} +1513 -697
- package/dist/chunk-KZC6QRNR.js.map +1 -0
- package/dist/chunk-LJUMYUBO.js +218 -0
- package/dist/chunk-LJUMYUBO.js.map +1 -0
- package/dist/chunk-LSW2OJVV.js +380 -0
- package/dist/chunk-LSW2OJVV.js.map +1 -0
- package/dist/chunk-M357MHH3.js +2 -0
- package/dist/chunk-M357MHH3.js.map +1 -0
- package/dist/chunk-MK2TQO4Y.js +24 -0
- package/dist/chunk-MK2TQO4Y.js.map +1 -0
- package/dist/chunk-N7S72EXK.js +25 -0
- package/dist/chunk-N7S72EXK.js.map +1 -0
- package/dist/{chunk-YVCHAQZY.js → chunk-NKMYZFHA.js} +616 -621
- package/dist/chunk-NKMYZFHA.js.map +1 -0
- package/dist/chunk-NX4ADH73.js +14 -0
- package/dist/chunk-NX4ADH73.js.map +1 -0
- package/dist/chunk-O7F6UJO4.js +71 -0
- package/dist/chunk-O7F6UJO4.js.map +1 -0
- package/dist/chunk-OYQQJL3J.js +16 -0
- package/dist/chunk-OYQQJL3J.js.map +1 -0
- package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
- package/dist/chunk-P4BNUO57.js.map +1 -0
- package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
- package/dist/chunk-PEHTX3V7.js.map +1 -0
- package/dist/chunk-PMV53IMM.js +26 -0
- package/dist/chunk-PMV53IMM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
- package/dist/chunk-PYEOPA4M.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
- package/dist/chunk-QHUE7E4N.js.map +1 -0
- package/dist/chunk-QV3DJVRZ.js +11 -0
- package/dist/chunk-QV3DJVRZ.js.map +1 -0
- package/dist/chunk-R5SBNG7S.js +810 -0
- package/dist/chunk-R5SBNG7S.js.map +1 -0
- package/dist/chunk-RI42H5IU.js +326 -0
- package/dist/chunk-RI42H5IU.js.map +1 -0
- package/dist/chunk-S2QH6EZ5.js +211 -0
- package/dist/chunk-S2QH6EZ5.js.map +1 -0
- package/dist/chunk-SHLZMAJN.js +304 -0
- package/dist/chunk-SHLZMAJN.js.map +1 -0
- package/dist/chunk-TGXK4BAZ.js +293 -0
- package/dist/chunk-TGXK4BAZ.js.map +1 -0
- package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
- package/dist/chunk-TNEZNMSN.js.map +1 -0
- package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
- package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
- package/dist/chunk-UNJPZGNK.js +63 -0
- package/dist/chunk-UNJPZGNK.js.map +1 -0
- package/dist/{chunk-IOLVN74D.js → chunk-V5ZUJT2T.js} +175 -42
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-WBJY57A3.js +402 -0
- package/dist/chunk-WBJY57A3.js.map +1 -0
- package/dist/chunk-WIUKB3LD.js +1911 -0
- package/dist/chunk-WIUKB3LD.js.map +1 -0
- package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
- package/dist/chunk-WNN7NO2N.js.map +1 -0
- package/dist/{chunk-3AGBGTRT.js → chunk-X5UVUIMF.js} +1712 -1174
- package/dist/chunk-X5UVUIMF.js.map +1 -0
- package/dist/chunk-XDA5QJE7.js +402 -0
- package/dist/chunk-XDA5QJE7.js.map +1 -0
- package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
- package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
- package/dist/chunk-XHF7OYAN.js +1150 -0
- package/dist/chunk-XHF7OYAN.js.map +1 -0
- package/dist/chunk-YSRBFJMQ.js +43 -0
- package/dist/chunk-YSRBFJMQ.js.map +1 -0
- package/dist/chunk-ZOZAPAUO.js +174 -0
- package/dist/chunk-ZOZAPAUO.js.map +1 -0
- package/dist/chunk-ZQV5W7YC.js +809 -0
- package/dist/chunk-ZQV5W7YC.js.map +1 -0
- package/dist/chunk-ZUWF4NF7.js +13 -0
- package/dist/chunk-ZUWF4NF7.js.map +1 -0
- package/dist/client.d.ts +16 -7
- package/dist/clipboard.js +3 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +19 -6
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
- package/dist/components/artifacts/artifact-surface.d.ts +4 -2
- 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 +48 -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 +8 -3
- package/dist/components/artifacts/index.d.ts +9 -2
- 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 +23 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +26 -0
- package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
- package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
- package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
- package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -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 +11 -2
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +9 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer-transcription-control.d.ts +7 -0
- package/dist/components/composer.d.ts +34 -67
- package/dist/components/computer-viewer.d.ts +1 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +28 -32
- package/dist/components/human-input-surface.d.ts +7 -2
- package/dist/components/linkified-text.d.ts +18 -0
- package/dist/components/machine-input-display.d.ts +22 -1
- package/dist/components/machines/agent-status-icon.d.ts +6 -0
- package/dist/components/machines/machine-detail.d.ts +7 -1
- package/dist/components/machines/machine-status.d.ts +48 -0
- package/dist/components/markdown-table-layout.d.ts +18 -0
- package/dist/components/markdown.d.ts +37 -4
- package/dist/components/message-timeline.d.ts +86 -7
- 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 +35 -28
- package/dist/components/new-conversation.d.ts +32 -0
- package/dist/components/open-geni-chat.d.ts +73 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/opper-mark.d.ts +7 -0
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/provider-recovery-notice.d.ts +16 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/rehype-secret-refs.d.ts +23 -0
- package/dist/components/remark-soft-line-breaks.d.ts +38 -0
- package/dist/components/sandbox-files.d.ts +3 -1
- package/dist/components/sandbox-workspace.d.ts +18 -0
- package/dist/components/secret-question-field.d.ts +31 -0
- package/dist/components/secret-ref-chip.d.ts +35 -0
- package/dist/components/session-capability-frame.d.ts +37 -0
- package/dist/components/session-chrome.d.ts +57 -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 +157 -0
- package/dist/components/session-list.d.ts +39 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +35 -0
- package/dist/components/session-status.d.ts +4 -1
- package/dist/components/session-usage-limit-notice.d.ts +39 -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/tool-action-review.d.ts +47 -0
- package/dist/components/tool-review-history.d.ts +25 -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/composer-messages.d.ts +74 -0
- package/dist/composer-messages.js +9 -0
- package/dist/composer-messages.js.map +1 -0
- package/dist/composer-voice-events.d.ts +8 -0
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +26 -13
- package/dist/computer-viewer-GMLDXPON.js +20 -0
- package/dist/computer-viewer-GMLDXPON.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 +18 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2149 -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 +27 -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 +15 -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 +22 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
- package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
- package/dist/embedded-voice-RPHPYVBT.js +18 -0
- package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
- package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +4 -0
- package/dist/hooks/shared-query.d.ts +113 -0
- package/dist/hooks/use-attached-browsers.d.ts +1 -1
- package/dist/hooks/use-auth-runs.d.ts +1 -4
- package/dist/hooks/use-available-models.d.ts +1 -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-client-config-flags.d.ts +49 -0
- package/dist/hooks/use-codex-accounts.d.ts +59 -10
- package/dist/hooks/use-composer.d.ts +24 -2
- 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 +4 -0
- package/dist/hooks/use-connect.d.ts +23 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +12 -0
- package/dist/hooks/use-goal.d.ts +2 -1
- package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
- package/dist/hooks/use-new-conversation.d.ts +56 -0
- package/dist/hooks/use-new-session-draft.d.ts +74 -0
- package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
- package/dist/hooks/use-sandbox-files.d.ts +4 -1
- package/dist/hooks/use-session-conversation.d.ts +49 -0
- package/dist/hooks/use-session-events.d.ts +26 -5
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session-model-account.d.ts +48 -0
- package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
- package/dist/hooks/use-terminal-stream.d.ts +11 -5
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-vaults.d.ts +53 -0
- package/dist/hooks/use-voice-input.d.ts +8 -1
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +24 -5
- package/dist/human-input-model.d.ts +122 -0
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +82 -20
- package/dist/index.js +2340 -6603
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +14 -24
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-R77KWSUP.js +118 -0
- package/dist/latest-question-R77KWSUP.js.map +1 -0
- package/dist/lib/clipboard.d.ts +7 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +58 -4
- package/dist/lib/host-theme.d.ts +77 -0
- package/dist/lib/interaction-errors.d.ts +3 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/notify-observer.d.ts +2 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/provider-recovery.d.ts +55 -0
- package/dist/lib/scrollbars.d.ts +11 -0
- package/dist/lib/terminal-input-readiness.d.ts +11 -0
- package/dist/lib/transient-retry.d.ts +25 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.js +9 -5
- package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
- package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-mark-paths.d.ts +34 -0
- package/dist/model-mark-paths.js +16 -0
- package/dist/model-mark-paths.js.map +1 -0
- package/dist/model-picker-model.d.ts +111 -0
- package/dist/model-picker-model.js +25 -0
- package/dist/model-picker-model.js.map +1 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
- package/dist/model-policy.d.ts +30 -3
- package/dist/model-policy.js +14 -1
- package/dist/native-previews.d.ts +28 -0
- package/dist/native-previews.js +82 -0
- package/dist/native-previews.js.map +1 -0
- package/dist/new-session-draft.d.ts +7 -0
- package/dist/new-session-draft.js +639 -0
- package/dist/new-session-draft.js.map +1 -0
- package/dist/notification-text.d.ts +27 -0
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
- package/dist/older-history.d.ts +3 -2
- package/dist/organization-model.d.ts +32 -0
- package/dist/organization-model.js +65 -0
- package/dist/organization-model.js.map +1 -0
- package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
- package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/preview-loading-paint.d.ts +20 -0
- package/dist/provider.d.ts +25 -2
- package/dist/queue-presentation-model.d.ts +72 -0
- package/dist/queue-presentation-model.js +38 -0
- package/dist/queue-presentation-model.js.map +1 -0
- package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
- package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
- package/dist/realtime/embedded-new-voice.d.ts +1 -0
- package/dist/realtime/embedded-voice.d.ts +1 -0
- package/dist/realtime/realtime-control.d.ts +4 -65
- package/dist/realtime/session-realtime.d.ts +78 -0
- package/dist/realtime.js +25 -1333
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-O27IPOZW.js +21 -0
- package/dist/sandbox-files-O27IPOZW.js.map +1 -0
- package/dist/sandbox-label-model.d.ts +30 -0
- package/dist/sandbox-label-model.js +20 -0
- package/dist/sandbox-label-model.js.map +1 -0
- package/dist/scrollbars.d.ts +1 -0
- package/dist/scrollbars.js +10 -0
- package/dist/scrollbars.js.map +1 -0
- package/dist/secret-reference-label.d.ts +14 -0
- package/dist/secrets-ui.d.ts +57 -0
- package/dist/session-agents-model.d.ts +10 -0
- package/dist/session-agents-model.js +25 -0
- package/dist/session-agents-model.js.map +1 -0
- package/dist/session-attention-model.d.ts +8 -0
- package/dist/session-attention-model.js +47 -0
- package/dist/session-attention-model.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +31 -0
- package/dist/session-feedback-model.d.ts +20 -0
- package/dist/session-feedback-model.js +56 -0
- package/dist/session-feedback-model.js.map +1 -0
- package/dist/session-list-model.d.ts +138 -0
- package/dist/session-list-model.js +274 -0
- package/dist/session-list-model.js.map +1 -0
- package/dist/session-realtime-7DJOIHQW.js +21 -0
- package/dist/session-realtime-7DJOIHQW.js.map +1 -0
- package/dist/session-realtime.d.ts +7 -0
- package/dist/session-realtime.js +19 -0
- package/dist/session-realtime.js.map +1 -0
- package/dist/session-status-model.d.ts +36 -0
- package/dist/session-ui.d.ts +39 -1
- package/dist/session-ui.js +126 -12
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +35 -20
- package/dist/site-snapshot.d.ts +14 -0
- package/dist/sites-ui.d.ts +24 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +14 -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 +32 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing/session-scenarios.d.ts +10 -0
- package/dist/testing/session-scenarios.js +367 -0
- package/dist/testing/session-scenarios.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/agent-identity.d.ts +30 -0
- package/dist/timeline/agent-row.d.ts +31 -0
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +46 -0
- package/dist/timeline/focus-sequence.d.ts +9 -0
- package/dist/timeline/genie-copy.d.ts +3 -0
- package/dist/timeline/genie-loading.d.ts +47 -0
- package/dist/timeline/index.d.ts +10 -5
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/message-sender.d.ts +19 -0
- package/dist/timeline/notice-presentation.d.ts +13 -0
- package/dist/timeline/parsers.d.ts +11 -0
- package/dist/timeline/patch-apply-command.d.ts +18 -0
- package/dist/timeline/platform-activity-presentation.d.ts +21 -0
- package/dist/timeline/platform-activity-row.d.ts +1 -2
- package/dist/timeline/presented-image.d.ts +11 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/provider-logo.d.ts +15 -0
- package/dist/timeline/question-nav-model.d.ts +23 -0
- package/dist/timeline/registry.d.ts +12 -1
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/retained-loaders.d.ts +27 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +23 -1
- package/dist/timeline/session-usage-limit-row.d.ts +11 -0
- package/dist/timeline/shared.d.ts +4 -1
- package/dist/timeline/startup-dispatch-details.d.ts +5 -0
- 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 +5 -2
- package/dist/timeline/tool-presentation.d.ts +172 -0
- package/dist/timeline/turn-summary-model.d.ts +95 -0
- package/dist/timeline/turn-summary.d.ts +20 -54
- package/dist/timeline/types.d.ts +179 -7
- package/dist/timeline/work-presentation.d.ts +60 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
- package/dist/timeline-model.d.ts +29 -0
- package/dist/timeline-model.js +254 -0
- package/dist/timeline-model.js.map +1 -0
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/session-usage-limit.d.ts +88 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.js +1187 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice-recording-owner.d.ts +7 -0
- package/package.json +106 -7
- package/src/approvals.ts +8 -1
- package/src/artifacts-spreadsheet.ts +1 -0
- package/src/artifacts.ts +44 -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 +20 -31
- 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 +401 -138
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +193 -0
- package/src/components/artifacts/artifact-surface.tsx +40 -20
- 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 +197 -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 +543 -103
- package/src/components/artifacts/index.ts +45 -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 +122 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
- package/src/components/artifacts/site-view.tsx +121 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
- package/src/components/artifacts/spreadsheet-download.tsx +109 -0
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
- package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
- package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
- 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 +778 -318
- package/src/components/chat-composer.tsx +47 -5
- package/src/components/child-session-link.tsx +36 -0
- package/src/components/claude-mark.tsx +11 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +128 -30
- package/src/components/composer.tsx +404 -195
- package/src/components/computer-viewer.tsx +880 -253
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +1 -1
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +10 -14
- package/src/components/fleet-tile.tsx +5 -3
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +34 -0
- package/src/components/human-input-form.tsx +590 -283
- package/src/components/human-input-surface.tsx +11 -0
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/linkified-text.tsx +79 -0
- package/src/components/machine-card.tsx +35 -78
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +197 -3
- package/src/components/machines/agent-status-icon.tsx +31 -0
- package/src/components/machines/machine-detail.tsx +200 -31
- package/src/components/machines/machine-operation-policy.tsx +1 -1
- package/src/components/machines/machine-status.ts +241 -0
- package/src/components/machines-dashboard.tsx +2 -17
- package/src/components/markdown-table-layout.ts +143 -0
- package/src/components/markdown.tsx +466 -129
- package/src/components/message-timeline.tsx +2370 -667
- package/src/components/model-mark.tsx +102 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +371 -0
- package/src/components/model-policy-picker.tsx +252 -429
- package/src/components/new-conversation.tsx +221 -0
- package/src/components/open-geni-chat.tsx +309 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/opper-mark.tsx +18 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +35 -10
- package/src/components/preview-loading.tsx +109 -0
- package/src/components/provider-recovery-notice.tsx +49 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +51 -356
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/rehype-secret-refs.ts +98 -0
- package/src/components/remark-soft-line-breaks.ts +166 -0
- package/src/components/sandbox-files.tsx +91 -15
- package/src/components/sandbox-terminal.tsx +84 -13
- package/src/components/sandbox-workspace.tsx +147 -51
- package/src/components/secret-question-field.tsx +324 -0
- package/src/components/secret-ref-chip.tsx +185 -0
- package/src/components/session-capability-frame.tsx +197 -0
- package/src/components/session-chrome.tsx +842 -251
- 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 +876 -0
- package/src/components/session-list.tsx +257 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +153 -0
- package/src/components/session-status.tsx +26 -17
- package/src/components/session-usage-limit-notice.tsx +174 -0
- 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/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- 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 +27 -2
- package/src/components/workspace-dock.tsx +18 -1
- package/src/composer-messages.ts +150 -0
- package/src/composer-voice-events.ts +12 -0
- 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 +355 -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 +238 -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/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +34 -1
- package/src/hooks/shared-query.ts +721 -0
- package/src/hooks/use-attached-browsers.ts +1 -1
- package/src/hooks/use-auth-runs.ts +0 -27
- package/src/hooks/use-available-models.ts +2 -2
- package/src/hooks/use-browser-frame-stream.ts +19 -2
- package/src/hooks/use-browser-session.ts +680 -205
- package/src/hooks/use-browser-sessions.ts +32 -1
- package/src/hooks/use-client-config-flags.ts +118 -0
- package/src/hooks/use-codex-accounts.ts +247 -47
- package/src/hooks/use-composer.ts +227 -44
- package/src/hooks/use-computer-frame-stream.ts +25 -7
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +409 -95
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +80 -4
- package/src/hooks/use-goal.ts +79 -9
- package/src/hooks/use-last-started-turn-policy.ts +37 -11
- package/src/hooks/use-machines.ts +4 -0
- package/src/hooks/use-new-conversation.ts +374 -0
- package/src/hooks/use-new-session-draft.ts +813 -0
- package/src/hooks/use-realtime-voice-models.ts +46 -0
- package/src/hooks/use-sandbox-files.ts +68 -20
- package/src/hooks/use-session-background-commands.ts +22 -11
- package/src/hooks/use-session-capabilities.ts +3 -2
- package/src/hooks/use-session-conversation.ts +150 -0
- package/src/hooks/use-session-events.ts +531 -335
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session-model-account.ts +174 -0
- package/src/hooks/use-session.ts +30 -2
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-supergrok-accounts.ts +22 -8
- package/src/hooks/use-terminal-stream.ts +153 -27
- package/src/hooks/use-transcription.ts +6 -0
- package/src/hooks/use-turn-queue.ts +2 -1
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-vaults.ts +153 -0
- package/src/hooks/use-video-artifact-playback.ts +1 -1
- package/src/hooks/use-voice-input.ts +127 -19
- 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 +74 -7
- package/src/human-input-model.ts +359 -0
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +262 -16
- package/src/interaction.ts +1 -0
- package/src/lib/clipboard.ts +29 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +205 -10
- package/src/lib/host-theme.ts +529 -0
- package/src/lib/interaction-errors.ts +15 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/notify-observer.ts +15 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/provider-recovery.ts +243 -0
- package/src/lib/scrollbars.ts +30 -0
- package/src/lib/terminal-input-readiness.ts +51 -0
- package/src/lib/transient-retry.ts +99 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-mark-paths.ts +53 -0
- package/src/model-picker-model.ts +330 -0
- package/src/model-policy.ts +299 -74
- package/src/native-previews.ts +100 -0
- package/src/new-session-draft.ts +22 -0
- package/src/notification-text.ts +81 -0
- package/src/older-history.ts +22 -4
- package/src/organization-model.ts +118 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/preview-loading-paint.ts +68 -0
- package/src/provider.tsx +74 -15
- package/src/queue-presentation-model.ts +464 -0
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/embedded-new-voice.tsx +1 -0
- package/src/realtime/embedded-voice.tsx +3 -0
- package/src/realtime/realtime-control.tsx +138 -550
- package/src/realtime/session-realtime.ts +566 -0
- package/src/sandbox-label-model.ts +53 -0
- package/src/scrollbars.ts +3 -0
- package/src/secret-reference-label.ts +43 -0
- package/src/secrets-ui.tsx +59 -0
- package/src/session-agents-model.ts +33 -0
- package/src/session-attention-model.ts +62 -0
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +196 -0
- package/src/session-context.ts +3 -4
- package/src/session-feedback-model.ts +95 -0
- package/src/session-list-model.ts +434 -0
- package/src/session-realtime.ts +18 -0
- package/src/session-status-model.ts +99 -0
- package/src/session-ui.ts +98 -1
- package/src/session.ts +17 -1
- package/src/site-snapshot.ts +74 -0
- package/src/sites-ui.tsx +348 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/testing/session-scenarios.ts +404 -0
- package/src/timeline/activity-rail.tsx +242 -101
- package/src/timeline/agent-identity.tsx +84 -0
- package/src/timeline/agent-row.tsx +231 -0
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +115 -0
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/focus-sequence.ts +44 -0
- package/src/timeline/genie-copy.ts +19 -0
- package/src/timeline/genie-loading.tsx +143 -0
- package/src/timeline/index.ts +30 -2
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/message-sender.tsx +71 -0
- package/src/timeline/notice-presentation.ts +48 -0
- package/src/timeline/parsers.ts +42 -2
- package/src/timeline/patch-apply-command.tsx +135 -0
- package/src/timeline/platform-activity-presentation.ts +166 -0
- package/src/timeline/platform-activity-row.tsx +15 -90
- package/src/timeline/presented-image.ts +63 -0
- package/src/timeline/projection.ts +1742 -76
- package/src/timeline/provider-logo.tsx +53 -0
- package/src/timeline/question-nav-model.ts +28 -0
- package/src/timeline/registry.ts +26 -4
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/retained-loaders.ts +91 -0
- package/src/timeline/rolling-activity.tsx +80 -0
- package/src/timeline/screenshot-lightbox.tsx +228 -5
- package/src/timeline/session-usage-limit-row.tsx +42 -0
- package/src/timeline/shared.tsx +42 -15
- package/src/timeline/startup-dispatch-details.tsx +36 -0
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +19 -7
- package/src/timeline/tool-presentation.ts +1316 -0
- package/src/timeline/tool-renderers.tsx +835 -1138
- package/src/timeline/turn-summary-model.ts +343 -0
- package/src/timeline/turn-summary.tsx +272 -365
- package/src/timeline/types.ts +189 -6
- package/src/timeline/work-presentation.ts +189 -0
- package/src/timeline-model.ts +143 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/session-usage-limit.ts +266 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +70 -0
- package/src/voice-recording-owner.ts +22 -0
- package/styles/compiled.css +2319 -748
- package/styles/connect.css +290 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +309 -9
- package/styles/responsive.css +99 -7
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +134 -66
- package/dist/browser-viewer-MKKFRRRV.js +0 -14
- package/dist/chunk-2DZVYHVO.js +0 -470
- package/dist/chunk-2DZVYHVO.js.map +0 -1
- package/dist/chunk-3AGBGTRT.js.map +0 -1
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-7EAFGICR.js +0 -302
- package/dist/chunk-7EAFGICR.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.js.map +0 -1
- package/dist/chunk-IOLVN74D.js.map +0 -1
- package/dist/chunk-JAQ5K7W6.js.map +0 -1
- package/dist/chunk-JVYQRRC4.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-NEXLLTP4.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-VTOREEXF.js +0 -142
- package/dist/chunk-VTOREEXF.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-X4A66EWZ.js +0 -223
- package/dist/chunk-X4A66EWZ.js.map +0 -1
- package/dist/chunk-XYRDDSXF.js.map +0 -1
- package/dist/chunk-YG4QEQF5.js +0 -9557
- package/dist/chunk-YG4QEQF5.js.map +0 -1
- package/dist/chunk-YVCHAQZY.js.map +0 -1
- package/dist/chunk-ZPBTI3TE.js.map +0 -1
- package/dist/computer-viewer-FWEZISW4.js +0 -16
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-environments.d.ts +0 -41
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
- package/dist/queue-surface-implementation-BSKUWHRI.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-environments.ts +0 -182
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{browser-viewer-MKKFRRRV.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-4EUKJXUO.js.map} +0 -0
package/src/model-policy.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compareModelPickerOrder,
|
|
3
|
+
modelPickerBillingClassFor,
|
|
4
|
+
type ModelPickerBillingClass,
|
|
5
|
+
} from "@opengeni/sdk/model-picker-order";
|
|
6
|
+
import { modelDisplayName } from "@opengeni/sdk/model-display";
|
|
1
7
|
import type { ClientModel, ReasoningEffort, WorkspaceModelCatalogModel } from "@opengeni/sdk";
|
|
2
8
|
|
|
3
|
-
export type PickerBillingClass =
|
|
4
|
-
| "opengeni_credits"
|
|
5
|
-
| "external"
|
|
6
|
-
| "codex_subscription"
|
|
7
|
-
| "supergrok_subscription"
|
|
8
|
-
| "byok";
|
|
9
|
+
export type PickerBillingClass = ModelPickerBillingClass;
|
|
9
10
|
|
|
10
11
|
export type PickerModelRow<TCatalog extends ClientModel = WorkspaceModelCatalogModel> = {
|
|
11
12
|
id: string;
|
|
@@ -16,6 +17,7 @@ export type PickerModelRow<TCatalog extends ClientModel = WorkspaceModelCatalogM
|
|
|
16
17
|
billingClassLabel: string;
|
|
17
18
|
selectable: boolean;
|
|
18
19
|
unavailableReason: string | null;
|
|
20
|
+
fundingHint?: string | undefined;
|
|
19
21
|
provider: string;
|
|
20
22
|
providerLabel: string;
|
|
21
23
|
catalog: TCatalog;
|
|
@@ -23,20 +25,23 @@ export type PickerModelRow<TCatalog extends ClientModel = WorkspaceModelCatalogM
|
|
|
23
25
|
|
|
24
26
|
export type LatencyModeId = "standard" | "priority" | "fast";
|
|
25
27
|
|
|
26
|
-
const BILLING_CLASS_ORDER: PickerBillingClass[] = [
|
|
27
|
-
"opengeni_credits",
|
|
28
|
-
"external",
|
|
29
|
-
"codex_subscription",
|
|
30
|
-
"supergrok_subscription",
|
|
31
|
-
"byok",
|
|
32
|
-
];
|
|
33
|
-
|
|
34
28
|
const BILLING_CLASS_LABELS: Record<PickerBillingClass, string> = {
|
|
35
|
-
opengeni_credits: "
|
|
29
|
+
opengeni_credits: "Models",
|
|
36
30
|
external: "External",
|
|
37
31
|
codex_subscription: "Codex",
|
|
38
32
|
supergrok_subscription: "SuperGrok",
|
|
39
|
-
|
|
33
|
+
claude_subscription: "Claude subscription",
|
|
34
|
+
// Who connected the key (organization or workspace) is a settings fact, not
|
|
35
|
+
// a model choice: both scopes share one label and one picker group.
|
|
36
|
+
byok: "API keys",
|
|
37
|
+
organization_byok: "API keys",
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** Models settings keeps naming who connected the key. */
|
|
41
|
+
const SCOPED_BILLING_CLASS_LABELS: Record<PickerBillingClass, string> = {
|
|
42
|
+
...BILLING_CLASS_LABELS,
|
|
43
|
+
byok: "Workspace providers",
|
|
44
|
+
organization_byok: "Organization providers",
|
|
40
45
|
};
|
|
41
46
|
|
|
42
47
|
const AVAILABILITY_REASON_LABELS: Record<string, string> = {
|
|
@@ -47,42 +52,41 @@ const AVAILABILITY_REASON_LABELS: Record<string, string> = {
|
|
|
47
52
|
provider_unhealthy: "Provider unavailable",
|
|
48
53
|
policy_blocked: "Blocked by workspace policy",
|
|
49
54
|
unsupported: "Unsupported",
|
|
55
|
+
credits_disabled: "Opengeni credits off",
|
|
50
56
|
};
|
|
51
57
|
|
|
52
58
|
export function billingClassForModel(model: ClientModel): PickerBillingClass {
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
if (
|
|
60
|
+
model.provider === "organization-gateway" ||
|
|
61
|
+
model.provider === "organization-openrouter" ||
|
|
62
|
+
model.provider === "organization-opper"
|
|
63
|
+
) {
|
|
64
|
+
return "organization_byok";
|
|
58
65
|
}
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
if (
|
|
67
|
+
model.provider?.startsWith("workspace-openai-") ||
|
|
68
|
+
model.provider?.startsWith("workspace-azure-openai-")
|
|
69
|
+
)
|
|
63
70
|
return "byok";
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
if (model.credentialSource?.kind === "workspace_connection") {
|
|
71
|
+
if (
|
|
72
|
+
model.provider === "workspace-gateway" ||
|
|
73
|
+
model.provider === "workspace-openrouter" ||
|
|
74
|
+
model.provider === "workspace-opper"
|
|
75
|
+
) {
|
|
71
76
|
return "byok";
|
|
72
77
|
}
|
|
73
|
-
|
|
74
|
-
return "codex_subscription";
|
|
75
|
-
}
|
|
76
|
-
if (model.billing?.upstreamPayer === "workspace") {
|
|
77
|
-
return "byok";
|
|
78
|
-
}
|
|
79
|
-
return "opengeni_credits";
|
|
78
|
+
return modelPickerBillingClassFor(model);
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
export function billingClassLabel(billingClass: PickerBillingClass): string {
|
|
83
82
|
return BILLING_CLASS_LABELS[billingClass];
|
|
84
83
|
}
|
|
85
84
|
|
|
85
|
+
/** The group label that names the connection scope, for Models settings only. */
|
|
86
|
+
export function scopedBillingClassLabel(billingClass: PickerBillingClass): string {
|
|
87
|
+
return SCOPED_BILLING_CLASS_LABELS[billingClass];
|
|
88
|
+
}
|
|
89
|
+
|
|
86
90
|
export function availabilityReasonLabel(
|
|
87
91
|
reason: WorkspaceModelCatalogModel["availability"]["reason"],
|
|
88
92
|
): string | null {
|
|
@@ -121,6 +125,30 @@ export function coerceReasoningEffortForModel(
|
|
|
121
125
|
return defaultEffortForModel(model);
|
|
122
126
|
}
|
|
123
127
|
|
|
128
|
+
/** Whether the composer offers (and therefore labels) a reasoning-effort choice. */
|
|
129
|
+
export function modelOffersEffortChoice(model: ClientModel): boolean {
|
|
130
|
+
return (
|
|
131
|
+
effortOptionsForModel(model).length > 1 && model.capabilities?.reasoning.runnable !== false
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The composer model pill at phone width: the catalog's compact name (falling
|
|
137
|
+
* back to the display name) and the effort label when effort is a choice.
|
|
138
|
+
*/
|
|
139
|
+
export function compactModelPill(
|
|
140
|
+
models: readonly ClientModel[],
|
|
141
|
+
modelId: string,
|
|
142
|
+
effort: ReasoningEffort | null | undefined,
|
|
143
|
+
): { name: string; effort: string | null } {
|
|
144
|
+
const row = findPickerRow(projectClientModelRows([...models]), modelId);
|
|
145
|
+
return {
|
|
146
|
+
name: row?.shortLabel ?? row?.label ?? modelDisplayName(modelId),
|
|
147
|
+
effort:
|
|
148
|
+
row && effort && modelOffersEffortChoice(row.catalog) ? labelReasoningEffort(effort) : null,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
124
152
|
export function runnableLatencyModesForModel(model: ClientModel): LatencyModeId[] {
|
|
125
153
|
const modes = model.capabilities?.latencyModes ?? [];
|
|
126
154
|
return modes.filter((mode) => mode.runnable).map((mode) => mode.id);
|
|
@@ -143,39 +171,87 @@ export function labelReasoningEffort(effort: ReasoningEffort): string {
|
|
|
143
171
|
return effort.slice(0, 1).toUpperCase() + effort.slice(1);
|
|
144
172
|
}
|
|
145
173
|
|
|
174
|
+
/** Payment prompts must use cost policy, never the presentation group. */
|
|
175
|
+
export function modelUsesCredits(model: ClientModel | undefined): boolean {
|
|
176
|
+
if (model?.cost !== undefined) return model.cost === "credits";
|
|
177
|
+
return model?.billing?.metering === "opengeni_credits";
|
|
178
|
+
}
|
|
179
|
+
|
|
146
180
|
export function payerSummaryForModel(model: ClientModel): string {
|
|
181
|
+
if (model.cost === "free") {
|
|
182
|
+
return "Free in this deployment";
|
|
183
|
+
}
|
|
184
|
+
if (model.cost === "credits") {
|
|
185
|
+
return "Opengeni credits";
|
|
186
|
+
}
|
|
187
|
+
if (model.cost === "subscription") {
|
|
188
|
+
return model.credentialSource?.kind === "connected_subscription" &&
|
|
189
|
+
model.credentialSource.provider === "claude"
|
|
190
|
+
? "Claude subscription · external billing"
|
|
191
|
+
: model.source === "supergrok"
|
|
192
|
+
? "SuperGrok subscription · external billing"
|
|
193
|
+
: "Codex subscription · external billing";
|
|
194
|
+
}
|
|
195
|
+
if (model.cost === "workspace") {
|
|
196
|
+
return workspaceProviderPayerSummary(model);
|
|
197
|
+
}
|
|
198
|
+
if (model.cost === "organization") {
|
|
199
|
+
return organizationProviderPayerSummary(model);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Older client-config payloads do not carry `cost`; preserve their existing
|
|
203
|
+
// settlement-derived label until every deployment has rolled forward.
|
|
147
204
|
const billing = model.billing;
|
|
148
205
|
if (!billing) {
|
|
149
206
|
return "Route unknown";
|
|
150
207
|
}
|
|
151
208
|
if (billing.metering === "opengeni_credits") {
|
|
152
|
-
return "
|
|
209
|
+
return "Opengeni credits · automatic managed route";
|
|
153
210
|
}
|
|
154
211
|
if (billing.upstreamPayer === "connected_subscription") {
|
|
155
|
-
return model.
|
|
156
|
-
|
|
157
|
-
|
|
212
|
+
return model.credentialSource?.kind === "connected_subscription" &&
|
|
213
|
+
model.credentialSource.provider === "claude"
|
|
214
|
+
? "Claude subscription · external billing"
|
|
215
|
+
: model.source === "supergrok"
|
|
216
|
+
? "SuperGrok subscription · external billing"
|
|
217
|
+
: "Codex subscription · external billing";
|
|
158
218
|
}
|
|
159
219
|
if (billing.upstreamPayer === "workspace") {
|
|
160
|
-
return
|
|
220
|
+
return workspaceProviderPayerSummary(model);
|
|
161
221
|
}
|
|
162
|
-
|
|
222
|
+
if (billing.upstreamPayer === "organization") {
|
|
223
|
+
return organizationProviderPayerSummary(model);
|
|
224
|
+
}
|
|
225
|
+
return billing.upstreamPayer === "deployment"
|
|
226
|
+
? "Opengeni · no model credits"
|
|
227
|
+
: "External provider · no Opengeni credits";
|
|
163
228
|
}
|
|
164
229
|
|
|
165
230
|
export function advancedSourceSummary(model: ClientModel): string | null {
|
|
166
231
|
const source = model.credentialSource;
|
|
167
232
|
if (!source) {
|
|
168
233
|
return model.billing?.metering === "external" && model.billing.upstreamPayer === "deployment"
|
|
169
|
-
? "Deployment
|
|
234
|
+
? "Deployment-provided connection"
|
|
170
235
|
: null;
|
|
171
236
|
}
|
|
172
237
|
if (source.kind === "connected_subscription") {
|
|
173
|
-
return source.provider === "
|
|
174
|
-
? "Connected
|
|
175
|
-
:
|
|
238
|
+
return source.provider === "claude"
|
|
239
|
+
? "Connected Claude subscription"
|
|
240
|
+
: source.provider === "xai"
|
|
241
|
+
? "Connected SuperGrok subscription"
|
|
242
|
+
: "Connected Codex subscription";
|
|
176
243
|
}
|
|
177
244
|
if (source.kind === "workspace_connection") {
|
|
178
|
-
|
|
245
|
+
if (model.provider === "workspace-openrouter") {
|
|
246
|
+
return "Workspace OpenRouter connection";
|
|
247
|
+
}
|
|
248
|
+
if (model.provider === "workspace-opper") {
|
|
249
|
+
return "Workspace Opper connection";
|
|
250
|
+
}
|
|
251
|
+
if (model.provider === "workspace-gateway" || model.source === "workspace_gateway") {
|
|
252
|
+
return "Workspace Vercel AI Gateway";
|
|
253
|
+
}
|
|
254
|
+
return "Workspace provider connection";
|
|
179
255
|
}
|
|
180
256
|
if (source.kind === "deployment") {
|
|
181
257
|
return source.mechanism === "azure_ad_bearer"
|
|
@@ -185,21 +261,98 @@ export function advancedSourceSummary(model: ClientModel): string | null {
|
|
|
185
261
|
return null;
|
|
186
262
|
}
|
|
187
263
|
|
|
264
|
+
function workspaceProviderPayerSummary(model: ClientModel): string {
|
|
265
|
+
if (model.provider === "workspace-anthropic")
|
|
266
|
+
return "Billed to the workspace Anthropic API account";
|
|
267
|
+
if (model.provider === "workspace-claude-subscription")
|
|
268
|
+
return "Uses the workspace Claude subscription · no Opengeni credits";
|
|
269
|
+
if (model.provider === "workspace-openrouter") {
|
|
270
|
+
return "Billed to the workspace OpenRouter account";
|
|
271
|
+
}
|
|
272
|
+
if (model.provider === "workspace-opper") {
|
|
273
|
+
return "Billed to the workspace Opper account";
|
|
274
|
+
}
|
|
275
|
+
if (model.provider === "workspace-gateway" || model.source === "workspace_gateway") {
|
|
276
|
+
return "Billed to the workspace Vercel account";
|
|
277
|
+
}
|
|
278
|
+
return "Billed to the workspace provider account";
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function organizationProviderPayerSummary(model: ClientModel): string {
|
|
282
|
+
if (model.provider === "organization-anthropic")
|
|
283
|
+
return "Billed to the organization Anthropic API account";
|
|
284
|
+
if (model.provider === "organization-claude-subscription")
|
|
285
|
+
return "Uses the connected Claude subscription · no Opengeni credits";
|
|
286
|
+
if (model.provider === "organization-openrouter") {
|
|
287
|
+
return "Billed to the organization OpenRouter account";
|
|
288
|
+
}
|
|
289
|
+
if (model.provider === "organization-opper") {
|
|
290
|
+
return "Billed to the organization Opper account";
|
|
291
|
+
}
|
|
292
|
+
if (model.provider === "organization-gateway") {
|
|
293
|
+
return "Billed to the organization Vercel account";
|
|
294
|
+
}
|
|
295
|
+
return "Billed to the organization provider account";
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* The curated compact label, else a derived one for narrow triggers: the name
|
|
300
|
+
* without trailing access and release-stage qualifiers ("Muse Spark 1.3
|
|
301
|
+
* Contributor Free" → "Muse Spark 1.3"), which the picker's groups and
|
|
302
|
+
* descriptions already carry. Claude names are already family-free
|
|
303
|
+
* ("Opus 5.5") in the shared display name.
|
|
304
|
+
*/
|
|
305
|
+
function compactLabel(catalog: ClientModel): { shortLabel?: string } {
|
|
306
|
+
if (catalog.shortLabel) return { shortLabel: catalog.shortLabel };
|
|
307
|
+
const name = modelDisplayName(catalog);
|
|
308
|
+
const trimmed = withoutTrailingQualifiers(name);
|
|
309
|
+
return trimmed !== name ? { shortLabel: trimmed } : {};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const TRAILING_QUALIFIERS = new Set([
|
|
313
|
+
"free",
|
|
314
|
+
"contributor",
|
|
315
|
+
"preview",
|
|
316
|
+
"beta",
|
|
317
|
+
"experimental",
|
|
318
|
+
"exp",
|
|
319
|
+
"latest",
|
|
320
|
+
]);
|
|
321
|
+
|
|
322
|
+
/** Drops trailing qualifier words ("Free", "Preview", "(free)") while a name remains. */
|
|
323
|
+
function withoutTrailingQualifiers(name: string): string {
|
|
324
|
+
const words = name.trim().split(/\s+/u);
|
|
325
|
+
while (words.length > 1) {
|
|
326
|
+
const last = words
|
|
327
|
+
.at(-1)!
|
|
328
|
+
.replace(/^[([]|[)\]]$/gu, "")
|
|
329
|
+
.toLowerCase();
|
|
330
|
+
if (!TRAILING_QUALIFIERS.has(last)) break;
|
|
331
|
+
words.pop();
|
|
332
|
+
}
|
|
333
|
+
return words.join(" ");
|
|
334
|
+
}
|
|
335
|
+
|
|
188
336
|
export function projectPickerRows(models: WorkspaceModelCatalogModel[]): PickerModelRow[] {
|
|
189
337
|
return models
|
|
190
|
-
.filter((catalog) =>
|
|
191
|
-
const billingClass = billingClassForModel(catalog);
|
|
192
|
-
return billingClass === "opengeni_credits" || catalog.credentialReadiness.status === "ready";
|
|
193
|
-
})
|
|
338
|
+
.filter((catalog) => catalog.credentialReadiness.status === "ready")
|
|
194
339
|
.map((catalog) => {
|
|
195
340
|
const billingClass = billingClassForModel(catalog);
|
|
196
341
|
return {
|
|
197
342
|
id: catalog.id,
|
|
198
|
-
label: catalog
|
|
199
|
-
...(catalog
|
|
343
|
+
label: modelDisplayName(catalog),
|
|
344
|
+
...compactLabel(catalog),
|
|
200
345
|
billingClass,
|
|
201
346
|
billingClassLabel: billingClassLabel(billingClass),
|
|
202
347
|
selectable: catalog.availability.selectable,
|
|
348
|
+
fundingHint:
|
|
349
|
+
catalog.creditFunding === "promotional"
|
|
350
|
+
? "Free credits"
|
|
351
|
+
: catalog.creditFunding === "general"
|
|
352
|
+
? "Uses credits"
|
|
353
|
+
: catalog.creditFunding === "unavailable"
|
|
354
|
+
? "Needs credits"
|
|
355
|
+
: undefined,
|
|
203
356
|
unavailableReason: catalog.availability.selectable
|
|
204
357
|
? null
|
|
205
358
|
: availabilityReasonLabel(catalog.availability.reason),
|
|
@@ -216,8 +369,8 @@ export function projectClientModelRows(models: ClientModel[]): PickerModelRow<Cl
|
|
|
216
369
|
const billingClass = billingClassForModel(catalog);
|
|
217
370
|
return {
|
|
218
371
|
id: catalog.id,
|
|
219
|
-
label: catalog
|
|
220
|
-
...(catalog
|
|
372
|
+
label: modelDisplayName(catalog),
|
|
373
|
+
...compactLabel(catalog),
|
|
221
374
|
billingClass,
|
|
222
375
|
billingClassLabel: billingClassLabel(billingClass),
|
|
223
376
|
selectable: true,
|
|
@@ -232,18 +385,7 @@ export function projectClientModelRows(models: ClientModel[]): PickerModelRow<Cl
|
|
|
232
385
|
export function sortPickerRows<TCatalog extends ClientModel>(
|
|
233
386
|
rows: PickerModelRow<TCatalog>[],
|
|
234
387
|
): PickerModelRow<TCatalog>[] {
|
|
235
|
-
return [...rows].sort(
|
|
236
|
-
const classDelta =
|
|
237
|
-
BILLING_CLASS_ORDER.indexOf(left.billingClass) -
|
|
238
|
-
BILLING_CLASS_ORDER.indexOf(right.billingClass);
|
|
239
|
-
if (classDelta !== 0) {
|
|
240
|
-
return classDelta;
|
|
241
|
-
}
|
|
242
|
-
if (left.selectable !== right.selectable) {
|
|
243
|
-
return left.selectable ? -1 : 1;
|
|
244
|
-
}
|
|
245
|
-
return left.label.localeCompare(right.label);
|
|
246
|
-
});
|
|
388
|
+
return [...rows].sort(compareModelPickerOrder);
|
|
247
389
|
}
|
|
248
390
|
|
|
249
391
|
export function findPickerRow<TCatalog extends ClientModel>(
|
|
@@ -253,11 +395,62 @@ export function findPickerRow<TCatalog extends ClientModel>(
|
|
|
253
395
|
return rows.find((row) => row.id === modelId) ?? null;
|
|
254
396
|
}
|
|
255
397
|
|
|
398
|
+
export type GroupPickerRowsOptions = {
|
|
399
|
+
codexOnly?: boolean;
|
|
400
|
+
/**
|
|
401
|
+
* Default true: organization- and workspace-connected keys share one group
|
|
402
|
+
* and identical copies show once. Models settings passes false.
|
|
403
|
+
*/
|
|
404
|
+
collapseScopes?: boolean | undefined;
|
|
405
|
+
/** Kept visible when it has an identical twin (see below). */
|
|
406
|
+
selectedId?: string | undefined;
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Organization- and workspace-connected API keys are one choice for the person
|
|
411
|
+
* picking a model, so they share one group.
|
|
412
|
+
*/
|
|
413
|
+
function displayGroupFor(billingClass: PickerBillingClass): PickerBillingClass {
|
|
414
|
+
return billingClass === "organization_byok" ? "byok" : billingClass;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* The same model through the same provider kind, whichever scope connected it:
|
|
419
|
+
* `organization-anthropic/claude-opus-5-5` and `workspace-anthropic/claude-opus-5-5`
|
|
420
|
+
* share a key, while OpenRouter and the Anthropic API never do (different
|
|
421
|
+
* accounts and bills).
|
|
422
|
+
*/
|
|
423
|
+
function scopeFreeIdentity(row: PickerModelRow<ClientModel>): string | null {
|
|
424
|
+
const provider = row.provider.replace(/^(?:organization|workspace)-/, "");
|
|
425
|
+
if (provider === row.provider) return null;
|
|
426
|
+
const upstream =
|
|
427
|
+
row.catalog.deployment?.upstreamModelId ??
|
|
428
|
+
(row.id.startsWith(`${row.provider}/`) ? row.id.slice(row.provider.length + 1) : row.id);
|
|
429
|
+
return `${provider}\u0000${upstream}`;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Two rows that are the same model through the same provider kind, connected
|
|
434
|
+
* by the organization and by the workspace, are one choice: show one. Keep the
|
|
435
|
+
* current selection, else a selectable row, else the first in picker order.
|
|
436
|
+
*/
|
|
437
|
+
function prefersTwin<TCatalog extends ClientModel>(
|
|
438
|
+
candidate: PickerModelRow<TCatalog>,
|
|
439
|
+
current: PickerModelRow<TCatalog>,
|
|
440
|
+
selectedId: string | undefined,
|
|
441
|
+
): boolean {
|
|
442
|
+
if (selectedId !== undefined && current.id === selectedId) return false;
|
|
443
|
+
if (selectedId !== undefined && candidate.id === selectedId) return true;
|
|
444
|
+
return candidate.selectable && !current.selectable;
|
|
445
|
+
}
|
|
446
|
+
|
|
256
447
|
export function groupPickerRowsByBillingClass(
|
|
257
448
|
rows: PickerModelRow[],
|
|
449
|
+
options?: GroupPickerRowsOptions,
|
|
258
450
|
): Array<{ billingClass: PickerBillingClass; label: string; rows: PickerModelRow[] }>;
|
|
259
451
|
export function groupPickerRowsByBillingClass<TCatalog extends ClientModel>(
|
|
260
452
|
rows: PickerModelRow<TCatalog>[],
|
|
453
|
+
options?: GroupPickerRowsOptions,
|
|
261
454
|
): Array<{
|
|
262
455
|
billingClass: PickerBillingClass;
|
|
263
456
|
label: string;
|
|
@@ -265,6 +458,7 @@ export function groupPickerRowsByBillingClass<TCatalog extends ClientModel>(
|
|
|
265
458
|
}>;
|
|
266
459
|
export function groupPickerRowsByBillingClass<TCatalog extends ClientModel>(
|
|
267
460
|
rows: PickerModelRow<TCatalog>[],
|
|
461
|
+
options?: GroupPickerRowsOptions,
|
|
268
462
|
): Array<{
|
|
269
463
|
billingClass: PickerBillingClass;
|
|
270
464
|
label: string;
|
|
@@ -277,16 +471,47 @@ export function groupPickerRowsByBillingClass<TCatalog extends ClientModel>(
|
|
|
277
471
|
rows: PickerModelRow<TCatalog>[];
|
|
278
472
|
}> = [];
|
|
279
473
|
for (const row of sorted) {
|
|
280
|
-
const
|
|
474
|
+
const collapse = options?.collapseScopes !== false;
|
|
475
|
+
const billingClass = collapse ? displayGroupFor(row.billingClass) : row.billingClass;
|
|
476
|
+
const existing = groups.find((group) => group.billingClass === billingClass);
|
|
281
477
|
if (existing) {
|
|
282
|
-
|
|
478
|
+
const identity = collapse ? scopeFreeIdentity(row) : null;
|
|
479
|
+
const twin =
|
|
480
|
+
identity === null
|
|
481
|
+
? -1
|
|
482
|
+
: existing.rows.findIndex((candidate) => scopeFreeIdentity(candidate) === identity);
|
|
483
|
+
if (twin < 0) {
|
|
484
|
+
existing.rows.push(row);
|
|
485
|
+
} else if (prefersTwin(row, existing.rows[twin]!, options?.selectedId)) {
|
|
486
|
+
existing.rows[twin] = row;
|
|
487
|
+
}
|
|
283
488
|
continue;
|
|
284
489
|
}
|
|
285
490
|
groups.push({
|
|
286
|
-
billingClass
|
|
287
|
-
label:
|
|
491
|
+
billingClass,
|
|
492
|
+
label:
|
|
493
|
+
billingClass === row.billingClass ? row.billingClassLabel : billingClassLabel(billingClass),
|
|
288
494
|
rows: [row],
|
|
289
495
|
});
|
|
290
496
|
}
|
|
497
|
+
const codexIndex = groups.findIndex((group) => group.billingClass === "codex_subscription");
|
|
498
|
+
const codex = groups[codexIndex];
|
|
499
|
+
const selectableOpenGeni = groups
|
|
500
|
+
.find((group) => group.billingClass === "opengeni_credits")
|
|
501
|
+
?.rows.filter((row) => row.selectable);
|
|
502
|
+
// Presentation only: never change the catalog/default model ordering or selection.
|
|
503
|
+
const onlyFreeOpenGeni =
|
|
504
|
+
selectableOpenGeni !== undefined &&
|
|
505
|
+
selectableOpenGeni.length > 0 &&
|
|
506
|
+
selectableOpenGeni.every((row) => row.catalog.cost === "free");
|
|
507
|
+
if (
|
|
508
|
+
codex &&
|
|
509
|
+
codex.rows.some((row) => row.selectable) &&
|
|
510
|
+
(options?.codexOnly || onlyFreeOpenGeni)
|
|
511
|
+
) {
|
|
512
|
+
groups.splice(codexIndex, 1);
|
|
513
|
+
groups.unshift(codex);
|
|
514
|
+
}
|
|
291
515
|
return groups;
|
|
292
516
|
}
|
|
517
|
+
export { modelDisplayName, modelVendor } from "@opengeni/sdk/model-display";
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM-free building blocks for showing agent previews outside a browser page
|
|
3
|
+
* (React Native web views): the same documents and loading surface the web
|
|
4
|
+
* chat uses, as strings and pure functions.
|
|
5
|
+
*/
|
|
6
|
+
import { PREVIEW_LOADING_COLORS } from "./preview-loading-paint";
|
|
7
|
+
|
|
8
|
+
export { inlineHtmlDocument } from "./components/artifacts/inline-html-document";
|
|
9
|
+
export {
|
|
10
|
+
loadSiteSnapshot,
|
|
11
|
+
type SiteDisplayContent,
|
|
12
|
+
type SiteSnapshotReadClient,
|
|
13
|
+
} from "./site-snapshot";
|
|
14
|
+
export { paintPreviewLoading, PREVIEW_LOADING_COLORS } from "./preview-loading-paint";
|
|
15
|
+
|
|
16
|
+
/** Fence languages the assistant uses for interactive previews. */
|
|
17
|
+
export type InteractivePreviewKind = "html" | "site";
|
|
18
|
+
|
|
19
|
+
export function interactivePreviewKind(language: string): InteractivePreviewKind | null {
|
|
20
|
+
return language === "opengeni-html" ? "html" : language === "opengeni-site" ? "site" : null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** A Site fence body: `{"siteId": "…", "versionId"?: "…"}`; null when malformed. */
|
|
24
|
+
export function parseSiteFence(content: string): { siteId: string; versionId?: string } | null {
|
|
25
|
+
try {
|
|
26
|
+
const value = JSON.parse(content) as { siteId?: unknown; versionId?: unknown };
|
|
27
|
+
const uuid = /^[0-9a-f-]{36}$/i;
|
|
28
|
+
if (!value || typeof value.siteId !== "string" || !uuid.test(value.siteId)) return null;
|
|
29
|
+
if (value.versionId === undefined) return { siteId: value.siteId };
|
|
30
|
+
return typeof value.versionId === "string" && uuid.test(value.versionId)
|
|
31
|
+
? { siteId: value.siteId, versionId: value.versionId }
|
|
32
|
+
: null;
|
|
33
|
+
} catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Script source of `paintPreviewLoading` (kept in lockstep by a test), for
|
|
40
|
+
* documents that run outside this bundle. Release React Native builds compile
|
|
41
|
+
* functions to bytecode, so `Function.prototype.toString` cannot be used.
|
|
42
|
+
*/
|
|
43
|
+
export const PREVIEW_LOADING_PAINT_SCRIPT = `function paintPreviewLoading(context,width,height,time,ink,glowColor){
|
|
44
|
+
context.clearRect(0,0,width,height);
|
|
45
|
+
const cx=width*(0.5+0.13*Math.sin(time*0.21));
|
|
46
|
+
const cy=height*(0.5+0.12*Math.cos(time*0.27));
|
|
47
|
+
const glow=context.createRadialGradient(cx,cy,0,cx,cy,Math.max(width,height)*0.65);
|
|
48
|
+
glow.addColorStop(0,glowColor);glow.addColorStop(1,"transparent");
|
|
49
|
+
context.globalAlpha=0.09;context.fillStyle=glow;context.fillRect(0,0,width,height);
|
|
50
|
+
const rows=Math.ceil(height/18)+7;const cols=Math.ceil(width/18)+7;
|
|
51
|
+
const points=Array.from({length:rows},(_row,r)=>Array.from({length:cols},(_col,c)=>{
|
|
52
|
+
const x=(c-3)*18;const y=(r-3)*18;const dist=Math.hypot((x-cx)*0.8,y-cy);
|
|
53
|
+
const wave=Math.sin(dist*0.032-time*0.95);
|
|
54
|
+
return {x:x+((x-cx)/Math.max(dist,1))*wave*4,y:y+((y-cy)/Math.max(dist,1))*wave*4,l:Math.pow((wave+1)/2,5)};}));
|
|
55
|
+
context.strokeStyle=ink;context.fillStyle=ink;context.lineWidth=0.65;
|
|
56
|
+
points.forEach((row,r)=>row.forEach((p,c)=>{
|
|
57
|
+
context.globalAlpha=0.035+p.l*0.055;context.beginPath();
|
|
58
|
+
if(c+1<cols){context.moveTo(p.x,p.y);context.lineTo(row[c+1].x,row[c+1].y);}
|
|
59
|
+
if(r+1<rows){context.moveTo(p.x,p.y);context.lineTo(points[r+1][c].x,points[r+1][c].y);}
|
|
60
|
+
context.stroke();
|
|
61
|
+
context.globalAlpha=0.15+p.l*0.55;context.beginPath();
|
|
62
|
+
context.arc(p.x,p.y,0.85+p.l*0.65,0,Math.PI*2);context.fill();}));
|
|
63
|
+
context.globalAlpha=1;}`;
|
|
64
|
+
|
|
65
|
+
const escapeHtml = (value: string) =>
|
|
66
|
+
value.replace(
|
|
67
|
+
/[&<>"']/g,
|
|
68
|
+
(char) =>
|
|
69
|
+
({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[char] ?? char,
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* A standalone page for the web's "Preparing preview…" surface: the animated
|
|
74
|
+
* ripple filling the page with a steady label, for a web view while the
|
|
75
|
+
* assistant is still writing the preview. Never contains the unfinished fence.
|
|
76
|
+
*/
|
|
77
|
+
export function previewLoadingDocument(options: {
|
|
78
|
+
scheme: "light" | "dark";
|
|
79
|
+
label?: string;
|
|
80
|
+
labelColor?: string;
|
|
81
|
+
reducedMotion?: boolean;
|
|
82
|
+
}): string {
|
|
83
|
+
const colors = PREVIEW_LOADING_COLORS[options.scheme];
|
|
84
|
+
const label = escapeHtml(options.label ?? "Preparing preview…");
|
|
85
|
+
const labelColor = options.labelColor ?? (options.scheme === "dark" ? "#a1a1a1" : "#6b6b6b");
|
|
86
|
+
return `<!doctype html><html><head><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"><style>
|
|
87
|
+
html,body{margin:0;height:100%;overflow:hidden;background:${colors.background};-webkit-user-select:none;user-select:none}
|
|
88
|
+
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
|
|
89
|
+
span{position:fixed;left:16px;bottom:14px;color:${labelColor};font:400 12px/16px -apple-system,system-ui,sans-serif}
|
|
90
|
+
</style></head><body><canvas aria-hidden="true"></canvas><span role="status">${label}</span><script>
|
|
91
|
+
${PREVIEW_LOADING_PAINT_SCRIPT}
|
|
92
|
+
(()=>{const canvas=document.querySelector("canvas");const context=canvas.getContext("2d");if(!context)return;
|
|
93
|
+
const still=${options.reducedMotion === true};let time=2;let last;
|
|
94
|
+
const draw=()=>{const w=canvas.clientWidth,h=canvas.clientHeight;if(!w||!h)return;const d=Math.min(window.devicePixelRatio||1,2);
|
|
95
|
+
if(canvas.width!==Math.round(w*d)||canvas.height!==Math.round(h*d)){canvas.width=Math.round(w*d);canvas.height=Math.round(h*d);}
|
|
96
|
+
context.setTransform(d,0,0,d,0,0);paintPreviewLoading(context,w,h,time,${JSON.stringify(colors.ink)},${JSON.stringify(colors.glow)});};
|
|
97
|
+
const tick=(stamp)=>{if(!document.hidden){if(last!==undefined)time+=Math.min((stamp-last)/1000,0.05);last=stamp;draw();}else last=undefined;requestAnimationFrame(tick);};
|
|
98
|
+
window.addEventListener("resize",draw);draw();if(!still)requestAnimationFrame(tick);})();
|
|
99
|
+
</script></body></html>`;
|
|
100
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The new-session composer's server-authoritative draft (text, model, options,
|
|
3
|
+
* project, attachments), shared by the web app and native apps so a draft
|
|
4
|
+
* started on one device continues on another.
|
|
5
|
+
*/
|
|
6
|
+
export {
|
|
7
|
+
isNewSessionDraftConflict,
|
|
8
|
+
useNewSessionDraft,
|
|
9
|
+
type AcknowledgeConsumedNewSessionDraftResult,
|
|
10
|
+
type FlushedNewSessionDraft,
|
|
11
|
+
type NewSessionDraftEditable,
|
|
12
|
+
type UseNewSessionDraftOptions,
|
|
13
|
+
type UseNewSessionDraftResult,
|
|
14
|
+
} from "./hooks/use-new-session-draft";
|
|
15
|
+
export {
|
|
16
|
+
isTransientServiceFailure,
|
|
17
|
+
OPENGENI_UPDATING_NOTICE,
|
|
18
|
+
retryTransient,
|
|
19
|
+
TRANSIENT_RECONNECT_INTERVAL_MS,
|
|
20
|
+
TRANSIENT_RETRY_DELAYS_MS,
|
|
21
|
+
type RetryTransientOptions,
|
|
22
|
+
} from "./lib/transient-retry";
|