@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
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { ArrowUpRightIcon, ChevronRightIcon } from "lucide-react";
|
|
2
|
+
import { useContext, useState, type ReactNode } from "react";
|
|
3
|
+
import { cn } from "../lib/cn";
|
|
4
|
+
import { useForcedDefaultOpen } from "./disclosure-context";
|
|
5
|
+
import type { AgentTitleParts } from "./platform-activity-presentation";
|
|
6
|
+
import { ActivityDisclosure, CompactActivityContext } from "./shared";
|
|
7
|
+
|
|
8
|
+
/* ----------------------------------------------------------------------------
|
|
9
|
+
Agent row
|
|
10
|
+
|
|
11
|
+
One row for everything that crosses between agents: spawning one, messaging
|
|
12
|
+
one, and every update one sends back. It names the agent, previews what was
|
|
13
|
+
said, opens the full text in place, and deep-links to the agent's session.
|
|
14
|
+
It reuses the rail's row geometry (chevron, icon, title) so it reads as a
|
|
15
|
+
sibling of tool rows, and spends color only on failure.
|
|
16
|
+
-------------------------------------------------------------------------- */
|
|
17
|
+
|
|
18
|
+
export type AgentRowProps = {
|
|
19
|
+
icon: ReactNode;
|
|
20
|
+
title: AgentTitleParts;
|
|
21
|
+
/** Quiet secondary text shown while collapsed. */
|
|
22
|
+
preview?: string | null | undefined;
|
|
23
|
+
/** Two lines suit inbound messages; spawns and messages use one. */
|
|
24
|
+
previewLines?: 1 | 2 | undefined;
|
|
25
|
+
/** Short trailing note after the title, e.g. "+2 earlier". */
|
|
26
|
+
meta?: string | null | undefined;
|
|
27
|
+
/** The agent session the row deep-links to. */
|
|
28
|
+
sessionId?: string | null | undefined;
|
|
29
|
+
onOpenSession?: ((sessionId: string) => void) | undefined;
|
|
30
|
+
running?: boolean | undefined;
|
|
31
|
+
failed?: boolean | undefined;
|
|
32
|
+
cancelled?: boolean | undefined;
|
|
33
|
+
/** Expanded body; the row is static when absent. */
|
|
34
|
+
children?: ReactNode | undefined;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export function AgentRow({
|
|
38
|
+
icon,
|
|
39
|
+
title,
|
|
40
|
+
preview,
|
|
41
|
+
previewLines = 1,
|
|
42
|
+
meta,
|
|
43
|
+
sessionId,
|
|
44
|
+
onOpenSession,
|
|
45
|
+
running,
|
|
46
|
+
failed,
|
|
47
|
+
cancelled,
|
|
48
|
+
children,
|
|
49
|
+
}: AgentRowProps) {
|
|
50
|
+
const compact = useContext(CompactActivityContext);
|
|
51
|
+
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
52
|
+
const [open, setOpen] = useState(forcedDefaultOpen ?? false);
|
|
53
|
+
if (compact) {
|
|
54
|
+
return (
|
|
55
|
+
<ActivityDisclosure
|
|
56
|
+
icon={icon}
|
|
57
|
+
title={title.text}
|
|
58
|
+
preview={preview ?? undefined}
|
|
59
|
+
running={running}
|
|
60
|
+
failed={failed}
|
|
61
|
+
cancelled={cancelled}
|
|
62
|
+
/>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
const hasBody = children != null;
|
|
66
|
+
const canOpen = Boolean(sessionId && onOpenSession);
|
|
67
|
+
const openLabel = title.name ? `Open ${title.name}` : "Open agent session";
|
|
68
|
+
const status = failed ? "failed" : cancelled ? "cancelled" : running ? "running" : undefined;
|
|
69
|
+
|
|
70
|
+
const inner = (
|
|
71
|
+
<>
|
|
72
|
+
{hasBody ? (
|
|
73
|
+
<ChevronRightIcon
|
|
74
|
+
aria-hidden
|
|
75
|
+
className="mt-[3px] size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/agent:rotate-90"
|
|
76
|
+
/>
|
|
77
|
+
) : (
|
|
78
|
+
<span className="size-3.5 shrink-0" aria-hidden />
|
|
79
|
+
)}
|
|
80
|
+
<span
|
|
81
|
+
aria-hidden
|
|
82
|
+
className={cn(
|
|
83
|
+
"mt-[3px] shrink-0 [&_svg]:size-3.5",
|
|
84
|
+
failed ? "text-og-status-failed" : "text-og-fg-subtle",
|
|
85
|
+
)}
|
|
86
|
+
>
|
|
87
|
+
{icon}
|
|
88
|
+
</span>
|
|
89
|
+
<span className="min-w-0 flex-1">
|
|
90
|
+
<span className="flex min-w-0 items-baseline gap-2">
|
|
91
|
+
<span
|
|
92
|
+
className={cn(
|
|
93
|
+
"min-w-0 truncate text-og-base leading-5",
|
|
94
|
+
running && "og-shimmer-text",
|
|
95
|
+
failed && "text-og-status-failed",
|
|
96
|
+
)}
|
|
97
|
+
>
|
|
98
|
+
{title.name ? (
|
|
99
|
+
<>
|
|
100
|
+
{title.before ? <span className="text-og-fg-muted">{title.before}</span> : null}
|
|
101
|
+
<span className={cn("font-medium", failed ? undefined : "text-og-fg")}>
|
|
102
|
+
{title.name}
|
|
103
|
+
</span>
|
|
104
|
+
{title.after ? <span className="text-og-fg-muted">{title.after}</span> : null}
|
|
105
|
+
</>
|
|
106
|
+
) : (
|
|
107
|
+
<span className={cn("font-medium", failed ? undefined : "text-og-fg")}>
|
|
108
|
+
{title.text}
|
|
109
|
+
</span>
|
|
110
|
+
)}
|
|
111
|
+
</span>
|
|
112
|
+
{meta ? (
|
|
113
|
+
<span className="shrink-0 text-og-xs text-og-fg-subtle tabular-nums">{meta}</span>
|
|
114
|
+
) : null}
|
|
115
|
+
</span>
|
|
116
|
+
{preview && !open ? (
|
|
117
|
+
<span
|
|
118
|
+
data-og-agent-preview=""
|
|
119
|
+
className={cn(
|
|
120
|
+
"mt-0.5 block text-og-sm leading-5 text-og-fg-muted",
|
|
121
|
+
previewLines === 2 ? "line-clamp-2 break-words" : "truncate",
|
|
122
|
+
)}
|
|
123
|
+
>
|
|
124
|
+
{preview}
|
|
125
|
+
</span>
|
|
126
|
+
) : null}
|
|
127
|
+
</span>
|
|
128
|
+
{failed ? (
|
|
129
|
+
<span className="inline-flex shrink-0 items-center gap-1.5 self-center font-og-mono text-og-xs leading-none text-og-status-failed">
|
|
130
|
+
<span className="size-1.5 rounded-full bg-og-status-failed" />
|
|
131
|
+
failed
|
|
132
|
+
</span>
|
|
133
|
+
) : cancelled ? (
|
|
134
|
+
<span className="og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle">
|
|
135
|
+
interrupted
|
|
136
|
+
</span>
|
|
137
|
+
) : null}
|
|
138
|
+
{canOpen && sessionId && onOpenSession ? (
|
|
139
|
+
<button
|
|
140
|
+
type="button"
|
|
141
|
+
aria-label={openLabel}
|
|
142
|
+
title={openLabel}
|
|
143
|
+
onClick={(event) => {
|
|
144
|
+
event.stopPropagation();
|
|
145
|
+
onOpenSession(sessionId);
|
|
146
|
+
}}
|
|
147
|
+
onKeyDown={(event) => event.stopPropagation()}
|
|
148
|
+
className={cn(
|
|
149
|
+
"-my-0.5 inline-grid size-6 shrink-0 place-items-center rounded-og-sm text-og-fg-subtle",
|
|
150
|
+
"outline-hidden transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent",
|
|
151
|
+
"pointer-coarse:size-10",
|
|
152
|
+
)}
|
|
153
|
+
>
|
|
154
|
+
<ArrowUpRightIcon aria-hidden className="size-3.5" />
|
|
155
|
+
</button>
|
|
156
|
+
) : null}
|
|
157
|
+
</>
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
const rowClass = cn(
|
|
161
|
+
"group/agent flex w-full min-w-0 items-start gap-2 rounded-og-sm px-1.5 py-1.5 text-left",
|
|
162
|
+
"pointer-coarse:min-h-11 pointer-coarse:py-2.5",
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
if (!hasBody) {
|
|
166
|
+
return (
|
|
167
|
+
<div data-og-agent-row="" data-status={status} className={rowClass}>
|
|
168
|
+
{inner}
|
|
169
|
+
</div>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// A div with button semantics (like ActivityDisclosure) so the open-session
|
|
174
|
+
// button can live inside the row without nesting native buttons.
|
|
175
|
+
return (
|
|
176
|
+
<div data-og-agent-row="" data-status={status}>
|
|
177
|
+
<div
|
|
178
|
+
role="button"
|
|
179
|
+
tabIndex={0}
|
|
180
|
+
aria-expanded={open}
|
|
181
|
+
data-state={open ? "open" : "closed"}
|
|
182
|
+
onClick={() => setOpen((previous) => !previous)}
|
|
183
|
+
onKeyDown={(event) => {
|
|
184
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
185
|
+
event.preventDefault();
|
|
186
|
+
setOpen((previous) => !previous);
|
|
187
|
+
}
|
|
188
|
+
}}
|
|
189
|
+
className={cn(
|
|
190
|
+
rowClass,
|
|
191
|
+
"cursor-pointer outline-hidden transition-colors duration-150 hover:bg-og-surface-1",
|
|
192
|
+
"focus-visible:ring-2 focus-visible:ring-og-accent",
|
|
193
|
+
)}
|
|
194
|
+
>
|
|
195
|
+
{inner}
|
|
196
|
+
</div>
|
|
197
|
+
{open ? (
|
|
198
|
+
<div className="mb-2 ml-[2.125rem] mr-1.5 mt-0.5 flex flex-col gap-2 border-l border-og-border pl-4 text-og-sm leading-6 text-og-fg animate-og-expand">
|
|
199
|
+
{children}
|
|
200
|
+
</div>
|
|
201
|
+
) : null}
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** Plain multi-line text for an expanded agent row. */
|
|
207
|
+
export function AgentRowText({ children }: { children: string }) {
|
|
208
|
+
return <p className="whitespace-pre-wrap break-words">{children}</p>;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** A labelled section inside an expanded agent row (Brief, Report, Evidence). */
|
|
212
|
+
export function AgentRowSection({
|
|
213
|
+
label,
|
|
214
|
+
children,
|
|
215
|
+
muted,
|
|
216
|
+
}: {
|
|
217
|
+
label: string;
|
|
218
|
+
children: string;
|
|
219
|
+
muted?: boolean | undefined;
|
|
220
|
+
}) {
|
|
221
|
+
return (
|
|
222
|
+
<div className="min-w-0">
|
|
223
|
+
<p className="text-og-xs font-medium text-og-fg-subtle">{label}</p>
|
|
224
|
+
<p
|
|
225
|
+
className={cn("whitespace-pre-wrap break-words", muted ? "text-og-fg-muted" : "text-og-fg")}
|
|
226
|
+
>
|
|
227
|
+
{children}
|
|
228
|
+
</p>
|
|
229
|
+
</div>
|
|
230
|
+
);
|
|
231
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { AllowanceExhaustedRefusal } from "@opengeni/sdk";
|
|
2
|
+
import { GaugeIcon } from "lucide-react";
|
|
3
|
+
import { createContext, useContext, useMemo, type ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
import { cn } from "../lib/cn";
|
|
6
|
+
import {
|
|
7
|
+
allowanceLabels,
|
|
8
|
+
allowanceResetSentence,
|
|
9
|
+
formatAllowanceInstant,
|
|
10
|
+
type AllowanceLabels,
|
|
11
|
+
} from "../usage/allowance-copy";
|
|
12
|
+
import { useEntranceAnimation } from "./entrance";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Replace the built-in "usage limit reached" row. Return `undefined` to keep
|
|
16
|
+
* the default for this refusal (for example, only customize member limits).
|
|
17
|
+
*/
|
|
18
|
+
export type RenderAllowanceExhausted = (
|
|
19
|
+
refusal: AllowanceExhaustedRefusal,
|
|
20
|
+
context: { labels: AllowanceLabels; defaultRow: ReactNode },
|
|
21
|
+
) => ReactNode | undefined;
|
|
22
|
+
|
|
23
|
+
type AllowancePresentation = {
|
|
24
|
+
render: RenderAllowanceExhausted | undefined;
|
|
25
|
+
labels: AllowanceLabels;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const AllowancePresentationContext = createContext<AllowancePresentation>({
|
|
29
|
+
render: undefined,
|
|
30
|
+
labels: allowanceLabels(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export function AllowancePresentationProvider({
|
|
34
|
+
render,
|
|
35
|
+
labels,
|
|
36
|
+
children,
|
|
37
|
+
}: {
|
|
38
|
+
render: RenderAllowanceExhausted | undefined;
|
|
39
|
+
labels: Partial<AllowanceLabels> | undefined;
|
|
40
|
+
children: ReactNode;
|
|
41
|
+
}) {
|
|
42
|
+
const value = useMemo(() => ({ render, labels: allowanceLabels(labels) }), [render, labels]);
|
|
43
|
+
return (
|
|
44
|
+
<AllowancePresentationContext.Provider value={value}>
|
|
45
|
+
{children}
|
|
46
|
+
</AllowancePresentationContext.Provider>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A usage ceiling stopped further work. Calm by design: nothing failed, the
|
|
52
|
+
* conversation is kept, and the row says who can raise the limit and when it
|
|
53
|
+
* resets. Never the server's prose or a member identifier.
|
|
54
|
+
*/
|
|
55
|
+
export function AllowanceExhaustedRow({ refusal }: { refusal: AllowanceExhaustedRefusal }) {
|
|
56
|
+
const { render, labels } = useContext(AllowancePresentationContext);
|
|
57
|
+
const enter = useEntranceAnimation();
|
|
58
|
+
const workspace = refusal.scope === "workspace";
|
|
59
|
+
const defaultRow = (
|
|
60
|
+
<div
|
|
61
|
+
className={cn(
|
|
62
|
+
enter && "animate-og-enter",
|
|
63
|
+
"flex items-start gap-2.5 rounded-og-md border border-og-status-waiting/35 bg-og-status-waiting/8 px-3.5 py-2.5 text-og-menu text-og-fg",
|
|
64
|
+
)}
|
|
65
|
+
role="status"
|
|
66
|
+
data-og-allowance-exhausted={refusal.scope}
|
|
67
|
+
>
|
|
68
|
+
<GaugeIcon aria-hidden className="mt-0.5 size-4 shrink-0 text-og-status-waiting" />
|
|
69
|
+
<div className="min-w-0 flex-1">
|
|
70
|
+
<p className="font-medium">
|
|
71
|
+
{workspace ? labels.workspaceLimitReachedTitle : labels.memberLimitReachedTitle}
|
|
72
|
+
</p>
|
|
73
|
+
<p className="mt-0.5 text-og-fg-muted">
|
|
74
|
+
{workspace ? labels.workspaceRemedy : labels.memberRemedy}{" "}
|
|
75
|
+
<span
|
|
76
|
+
title={refusal.resetsAt ? formatAllowanceInstant(refusal.resetsAt) : undefined}
|
|
77
|
+
className="whitespace-nowrap"
|
|
78
|
+
>
|
|
79
|
+
{allowanceResetSentence(labels, refusal.resetsAt)}
|
|
80
|
+
</span>
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
return <>{render?.(refusal, { labels, defaultRow }) ?? defaultRow}</>;
|
|
86
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { ContextCompactionItem } from "./types";
|
|
2
|
+
|
|
3
|
+
/** Headline for a compaction that could not produce a checkpoint. */
|
|
4
|
+
export const COMPACTION_FAILURE_TITLE = "Couldn’t compact conversation history";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Headline for a compaction cut short by its own attempt's cancellation (for
|
|
8
|
+
* example a worker restarting during a deploy). Not a failure: the recovered
|
|
9
|
+
* attempt checks again and compacts if the history still needs it.
|
|
10
|
+
*/
|
|
11
|
+
export const COMPACTION_INTERRUPTED_TITLE = "Compaction interrupted";
|
|
12
|
+
|
|
13
|
+
/** Headline for a settled `skipped` compaction landmark. */
|
|
14
|
+
export function compactionSkipTitle(reason: string | null): string {
|
|
15
|
+
return reason === "interrupted" ? COMPACTION_INTERRUPTED_TITLE : COMPACTION_FAILURE_TITLE;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Why a definitive provider rejection repeats; shown behind Details. */
|
|
19
|
+
export const COMPACTION_REJECTION_NOTE =
|
|
20
|
+
"The provider rejects this request the same way until the conversation changes.";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Subtitle for a settled compaction landmark. Kept short: a definitive provider
|
|
24
|
+
* rejection withholds the generic retry promise, names the one recovery step,
|
|
25
|
+
* and moves its identifiers behind Details ({@link compactionFailureDetails}).
|
|
26
|
+
*/
|
|
27
|
+
export function compactionSkipSubtitle(
|
|
28
|
+
reason: string | null,
|
|
29
|
+
providerRejection: ContextCompactionItem["providerRejection"] = null,
|
|
30
|
+
): string {
|
|
31
|
+
switch (reason) {
|
|
32
|
+
case "no_history":
|
|
33
|
+
return "No active history to compact";
|
|
34
|
+
case "replacement_not_smaller":
|
|
35
|
+
return "Checkpoint would not reduce memory size";
|
|
36
|
+
case "replacement_exceeds_model_budget":
|
|
37
|
+
return "Checkpoint exceeds this model's context budget. Chat history is unchanged.";
|
|
38
|
+
case "replacement_unchanged":
|
|
39
|
+
return "Checkpoint made no progress";
|
|
40
|
+
case "interrupted":
|
|
41
|
+
return "It will retry if still needed. Chat history is unchanged.";
|
|
42
|
+
case "summarization_failed":
|
|
43
|
+
return providerRejection
|
|
44
|
+
? "Chat history is unchanged. If your next message fails too, start a new session."
|
|
45
|
+
: "Request it again to retry. Chat history is unchanged.";
|
|
46
|
+
default:
|
|
47
|
+
return "Compaction was not needed. Chat history is unchanged.";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export type CompactionFailureDetails = {
|
|
52
|
+
/** One plain sentence on why it failed, when known. */
|
|
53
|
+
note: string | null;
|
|
54
|
+
/** Provider identifiers or the recorded error text, in display order. */
|
|
55
|
+
facts: Array<{ label: string; value: string }>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Technical diagnostics for a failed compaction landmark, or null when it has
|
|
60
|
+
* none: a definitive provider rejection lists its content-free identifiers;
|
|
61
|
+
* any other failure shows the turn's recorded error text. Presentation only.
|
|
62
|
+
*/
|
|
63
|
+
export function compactionFailureDetails(
|
|
64
|
+
item: Pick<ContextCompactionItem, "phase" | "skipReason" | "providerRejection" | "failureDetail">,
|
|
65
|
+
): CompactionFailureDetails | null {
|
|
66
|
+
if (item.phase !== "skipped" || item.skipReason !== "summarization_failed") return null;
|
|
67
|
+
const rejection = item.providerRejection;
|
|
68
|
+
if (!rejection) {
|
|
69
|
+
const recorded = item.failureDetail?.trim();
|
|
70
|
+
return recorded ? { note: null, facts: [{ label: "Error", value: recorded }] } : null;
|
|
71
|
+
}
|
|
72
|
+
const facts = [
|
|
73
|
+
{
|
|
74
|
+
label: "Response",
|
|
75
|
+
value: [`HTTP ${rejection.httpStatus}`, rejection.type, rejection.code]
|
|
76
|
+
.filter((part): part is string => Boolean(part))
|
|
77
|
+
.join(" · "),
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
if (rejection.param) facts.push({ label: "Parameter", value: rejection.param });
|
|
81
|
+
if (rejection.requestId) facts.push({ label: "Request ID", value: rejection.requestId });
|
|
82
|
+
return { note: COMPACTION_REJECTION_NOTE, facts };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const COMPACTION_TURN_FAILURE_PREFIX = "compaction summarization failed:";
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Short chip copy for a turn's failure reason. A compaction failure records the
|
|
89
|
+
* raw provider text after a fixed prefix; the chip names the outcome instead
|
|
90
|
+
* and keeps the recorded text as `detail` (a hover title). Every other reason
|
|
91
|
+
* passes through unchanged.
|
|
92
|
+
*/
|
|
93
|
+
export function presentTurnFailureText(
|
|
94
|
+
failureText: string | null | undefined,
|
|
95
|
+
): { summary: string; detail?: string } | null {
|
|
96
|
+
const text = failureText?.trim();
|
|
97
|
+
if (!text) return null;
|
|
98
|
+
if (text.toLowerCase().startsWith(COMPACTION_TURN_FAILURE_PREFIX)) {
|
|
99
|
+
return { summary: COMPACTION_FAILURE_TITLE, detail: text };
|
|
100
|
+
}
|
|
101
|
+
return { summary: text };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** `HTTP 400 invalid_request_error, param input[3].encrypted_content`; identifiers only. */
|
|
105
|
+
export function describeCompactionProviderRejection(
|
|
106
|
+
rejection: NonNullable<ContextCompactionItem["providerRejection"]>,
|
|
107
|
+
): string {
|
|
108
|
+
const parts = [
|
|
109
|
+
`HTTP ${rejection.httpStatus}${rejection.type ? ` ${rejection.type}` : ""}${
|
|
110
|
+
rejection.code ? ` ${rejection.code}` : ""
|
|
111
|
+
}`,
|
|
112
|
+
];
|
|
113
|
+
if (rejection.param) parts.push(`param ${rejection.param}`);
|
|
114
|
+
return parts.join(", ");
|
|
115
|
+
}
|
|
@@ -8,6 +8,7 @@ const FLEET_ACTUAL_REASONS = [
|
|
|
8
8
|
"rotation",
|
|
9
9
|
"active",
|
|
10
10
|
"all_capped",
|
|
11
|
+
"allocator_disabled",
|
|
11
12
|
"none",
|
|
12
13
|
] as const;
|
|
13
14
|
const FLEET_SHADOW_OUTCOMES = ["selected", "paced", "none"] as const;
|
|
@@ -334,7 +335,7 @@ function fleetDecisionSemanticsAreConsistent(input: {
|
|
|
334
335
|
input.actualOutcome === "selected"
|
|
335
336
|
? ["lease_reused", "pin", "rotation", "active"].includes(input.actualReason)
|
|
336
337
|
: input.actualOutcome === "waiting"
|
|
337
|
-
? input.actualReason
|
|
338
|
+
? ["all_capped", "allocator_disabled"].includes(input.actualReason)
|
|
338
339
|
: input.actualReason === "none";
|
|
339
340
|
const shadowConsistent =
|
|
340
341
|
input.shadowOutcome === "selected"
|
|
@@ -28,6 +28,7 @@ const FLEET_ACTUAL_REASON_LABEL: Record<FleetDecisionItem["actualReason"], strin
|
|
|
28
28
|
rotation: "Rotated for capacity",
|
|
29
29
|
active: "Used the active subscription",
|
|
30
30
|
all_capped: "All observed subscriptions were capped",
|
|
31
|
+
allocator_disabled: "The policy-selected subscription was disabled for new allocations",
|
|
31
32
|
none: "No production candidate was selected",
|
|
32
33
|
};
|
|
33
34
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { TimelineGroup, TimelineItem } from "./types";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Landing on a moment in a session: an inbox item or a phone notification
|
|
5
|
+
* points at the durable event that raised it, and the timeline opens on the
|
|
6
|
+
* row that holds that moment. Events that render no row of their own (an
|
|
7
|
+
* agent's notification, a goal change) land on the nearest row before them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
function itemSequences(item: TimelineItem): number[] {
|
|
11
|
+
const sources =
|
|
12
|
+
item.sourceEvents ??
|
|
13
|
+
("annotationSource" in item && item.annotationSource ? [item.annotationSource] : []);
|
|
14
|
+
return sources.map((source) => source.sequence);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Every durable event sequence a group renders, nested work included. */
|
|
18
|
+
export function timelineGroupSequences(group: TimelineGroup): number[] {
|
|
19
|
+
if (group.kind === "item") return itemSequences(group.item);
|
|
20
|
+
if (group.kind === "turn") return group.groups.flatMap(timelineGroupSequences);
|
|
21
|
+
return [
|
|
22
|
+
...group.items.flatMap((item) => itemSequences(item)),
|
|
23
|
+
...(group.work?.details.flatMap(timelineGroupSequences) ?? []),
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The index of the group to land on for `sequence`: the group that holds it,
|
|
29
|
+
* else the last group that starts before it. -1 when every loaded group is
|
|
30
|
+
* later (the moment is in older history) or nothing is loaded.
|
|
31
|
+
*/
|
|
32
|
+
export function timelineGroupIndexAtSequence(
|
|
33
|
+
groups: readonly TimelineGroup[],
|
|
34
|
+
sequence: number,
|
|
35
|
+
): number {
|
|
36
|
+
let landing = -1;
|
|
37
|
+
for (let index = 0; index < groups.length; index += 1) {
|
|
38
|
+
const sequences = timelineGroupSequences(groups[index]!);
|
|
39
|
+
if (sequences.length === 0) continue;
|
|
40
|
+
if (sequences.includes(sequence)) return index;
|
|
41
|
+
if (Math.min(...sequences) <= sequence) landing = index;
|
|
42
|
+
}
|
|
43
|
+
return landing;
|
|
44
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Decorative loading copy shared by every renderer of the preparing state. */
|
|
2
|
+
export const GENIE_PREPARING_PHRASES: readonly string[] = [
|
|
3
|
+
"Polishing the lamp…",
|
|
4
|
+
"Consulting the carpet…",
|
|
5
|
+
"Untangling wishes…",
|
|
6
|
+
"Summoning a little cleverness…",
|
|
7
|
+
"Checking the fine print on infinity…",
|
|
8
|
+
"Warming up the abracadabra…",
|
|
9
|
+
"Rearranging the stars…",
|
|
10
|
+
"Negotiating with the lamp…",
|
|
11
|
+
"Dusting off a thousand years…",
|
|
12
|
+
"Wishful thinking…",
|
|
13
|
+
"Decanting a little magic…",
|
|
14
|
+
"Finding the good stardust…",
|
|
15
|
+
"Fluffing the magic carpet…",
|
|
16
|
+
"Putting a wish into motion…",
|
|
17
|
+
"A little hocus. A little pocus…",
|
|
18
|
+
];
|
|
19
|
+
export const GENIE_WAITING_PHRASES: readonly string[] = ["Waiting for a response…"];
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { ThinkingOrb } from "thinking-orbs";
|
|
2
|
+
import { useThemeType } from "../lib/use-theme-type";
|
|
3
|
+
import { GENIE_PREPARING_PHRASES, GENIE_WAITING_PHRASES } from "./genie-copy";
|
|
4
|
+
import { createContext, useContext, useEffect, useState, type ReactNode } from "react";
|
|
5
|
+
|
|
6
|
+
export type GenieLoadingRenderProps = {
|
|
7
|
+
startedAt: string;
|
|
8
|
+
phase: "preparing" | "waiting";
|
|
9
|
+
detailsOpen: boolean;
|
|
10
|
+
onShowDetails: () => void;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type GenieLoadingOptions = {
|
|
14
|
+
/** Replace the visual while preserving SDK loading visibility and transitions. */
|
|
15
|
+
render?: (props: GenieLoadingRenderProps) => ReactNode;
|
|
16
|
+
phrases?: readonly string[];
|
|
17
|
+
/** Native copy overrides. Omitted messages retain the default English copy. */
|
|
18
|
+
messages?: {
|
|
19
|
+
status?: string;
|
|
20
|
+
slowStatus?: string;
|
|
21
|
+
slowText?: string;
|
|
22
|
+
showDetails?: string;
|
|
23
|
+
hideDetails?: string;
|
|
24
|
+
};
|
|
25
|
+
/** Public adapter options; the renderer dependency's declarations stay private. */
|
|
26
|
+
orb?: {
|
|
27
|
+
state?:
|
|
28
|
+
| "working"
|
|
29
|
+
| "searching"
|
|
30
|
+
| "solving"
|
|
31
|
+
| "listening"
|
|
32
|
+
| "connecting"
|
|
33
|
+
| "weaving"
|
|
34
|
+
| "composing"
|
|
35
|
+
| "breathing"
|
|
36
|
+
| "shaping";
|
|
37
|
+
size?: 64 | 20;
|
|
38
|
+
speed?: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const GenieLoadingOptionsContext = createContext<GenieLoadingOptions | undefined>(undefined);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Neutral defaults for conversations embedded in another product
|
|
45
|
+
* (`SessionConversation`, `OpenGeniChat`), which should not carry Opengeni's
|
|
46
|
+
* own playful copy. The Opengeni app keeps the defaults above.
|
|
47
|
+
*/
|
|
48
|
+
export const EMBEDDED_GENIE_LOADING = {
|
|
49
|
+
phrases: ["Thinking…"],
|
|
50
|
+
messages: { showDetails: "Show details" },
|
|
51
|
+
} as const satisfies GenieLoadingOptions;
|
|
52
|
+
|
|
53
|
+
/** Decorative copy never substitutes for a failure or claims measurable progress. */
|
|
54
|
+
export function GenieLoading({
|
|
55
|
+
startedAt,
|
|
56
|
+
phase = "preparing",
|
|
57
|
+
onShowDetails,
|
|
58
|
+
detailsOpen = false,
|
|
59
|
+
notice,
|
|
60
|
+
}: {
|
|
61
|
+
startedAt: string;
|
|
62
|
+
phase?: GenieLoadingRenderProps["phase"];
|
|
63
|
+
onShowDetails: () => void;
|
|
64
|
+
detailsOpen?: boolean;
|
|
65
|
+
/** An actionable startup problem takes precedence over decorative copy. */
|
|
66
|
+
notice?: string | undefined;
|
|
67
|
+
}) {
|
|
68
|
+
const options = useContext(GenieLoadingOptionsContext);
|
|
69
|
+
const waiting = phase === "waiting";
|
|
70
|
+
const phrases = options?.phrases?.length
|
|
71
|
+
? options.phrases
|
|
72
|
+
: waiting
|
|
73
|
+
? GENIE_WAITING_PHRASES
|
|
74
|
+
: GENIE_PREPARING_PHRASES;
|
|
75
|
+
const theme = useThemeType(undefined);
|
|
76
|
+
const [phrase, setPhrase] = useState(0);
|
|
77
|
+
const [showDetails, setShowDetails] = useState(false);
|
|
78
|
+
const [slow, setSlow] = useState(false);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
const update = () => {
|
|
81
|
+
setShowDetails(Date.now() - Date.parse(startedAt) >= 30_000);
|
|
82
|
+
setSlow(Date.now() - Date.parse(startedAt) >= 60_000);
|
|
83
|
+
if (!document.hidden) setPhrase(Math.floor(Math.random() * phrases.length));
|
|
84
|
+
};
|
|
85
|
+
update();
|
|
86
|
+
const timer = window.setInterval(update, 5_000);
|
|
87
|
+
return () => window.clearInterval(timer);
|
|
88
|
+
}, [startedAt, phrases]);
|
|
89
|
+
if (options?.render && !notice)
|
|
90
|
+
return options.render({ startedAt, phase, detailsOpen, onShowDetails });
|
|
91
|
+
return (
|
|
92
|
+
<div className="og-genie-loading">
|
|
93
|
+
<div
|
|
94
|
+
className="og-genie-orb"
|
|
95
|
+
aria-hidden="true"
|
|
96
|
+
style={{
|
|
97
|
+
width: options?.orb?.size ?? 64,
|
|
98
|
+
height: options?.orb?.size ?? 64,
|
|
99
|
+
flexBasis: options?.orb?.size ?? 64,
|
|
100
|
+
}}
|
|
101
|
+
>
|
|
102
|
+
<ThinkingOrb state="searching" size={64} theme={theme} speed={0.8} {...options?.orb} />
|
|
103
|
+
</div>
|
|
104
|
+
<div className="og-genie-copy">
|
|
105
|
+
<span className="sr-only" role="status">
|
|
106
|
+
{notice ??
|
|
107
|
+
(slow
|
|
108
|
+
? (options?.messages?.slowStatus ??
|
|
109
|
+
(waiting
|
|
110
|
+
? "Waiting for a response. Taking longer than usual."
|
|
111
|
+
: "Preparing your task. Taking longer than usual."))
|
|
112
|
+
: (options?.messages?.status ??
|
|
113
|
+
(waiting ? "Waiting for a response." : "Preparing your task.")))}
|
|
114
|
+
</span>
|
|
115
|
+
<span
|
|
116
|
+
key={notice ?? (slow ? "slow" : phrase)}
|
|
117
|
+
className="og-genie-phrase"
|
|
118
|
+
style={notice ? { animation: "none" } : undefined}
|
|
119
|
+
aria-hidden="true"
|
|
120
|
+
>
|
|
121
|
+
{notice ??
|
|
122
|
+
(slow
|
|
123
|
+
? (options?.messages?.slowText ??
|
|
124
|
+
(waiting ? "Still waiting for a response…" : "A little longer than usual…"))
|
|
125
|
+
: phrases[phrase % phrases.length])}
|
|
126
|
+
</span>
|
|
127
|
+
{showDetails || detailsOpen || notice ? (
|
|
128
|
+
<button
|
|
129
|
+
type="button"
|
|
130
|
+
className="og-genie-details"
|
|
131
|
+
aria-expanded={detailsOpen}
|
|
132
|
+
onClick={onShowDetails}
|
|
133
|
+
>
|
|
134
|
+
{detailsOpen
|
|
135
|
+
? (options?.messages?.hideDetails ?? "Hide details")
|
|
136
|
+
: (options?.messages?.showDetails ?? (waiting ? "Show details" : "Behind the magic"))}
|
|
137
|
+
<span aria-hidden="true"> ↗</span>
|
|
138
|
+
</button>
|
|
139
|
+
) : null}
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
);
|
|
143
|
+
}
|