@opengeni/react 3.1.0 → 3.1.3-canary.38890816741001
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 +89 -11
- 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-BO2IWXVK.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-RGALCTWO.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-D3UIAJKY.js → chunk-2SFFYIH3.js} +1179 -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-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-OAM4WAAM.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-XXWH2JLC.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-OVB5WIG5.js +14064 -0
- package/dist/chunk-OVB5WIG5.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-MZ2G2XBA.js → chunk-V5ZUJT2T.js} +205 -45
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-VIUEOHXY.js +394 -0
- package/dist/chunk-VIUEOHXY.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-YJFGAFBD.js → chunk-X5UVUIMF.js} +1892 -1223
- 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/fleet-tile.d.ts +2 -2
- 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 +41 -25
- 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/tip-follow.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 +28 -7
- 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 +22 -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 +2350 -6605
- 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 -1294
- 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/entrance.d.ts +13 -1
- 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 +107 -7
- package/src/accounts.tsx +116 -14
- 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 +189 -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 +9 -18
- 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 +2567 -728
- 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 +256 -412
- 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/tip-follow.ts +52 -0
- package/src/components/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +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 +21 -15
- 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 +276 -47
- 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 +107 -13
- package/src/hooks/use-last-started-turn-policy.ts +46 -14
- 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 +703 -382
- package/src/hooks/use-session-lineage.ts +20 -16
- 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 +53 -21
- 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 +97 -32
- 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 +213 -16
- 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 -501
- 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/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/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 +1746 -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-AEFHUYZK.js +0 -14
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-D3UIAJKY.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HQVCKCLG.js +0 -9458
- package/dist/chunk-HQVCKCLG.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.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-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-MZ2G2XBA.js.map +0 -1
- package/dist/chunk-NEXLLTP4.js.map +0 -1
- package/dist/chunk-OAM4WAAM.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-RGALCTWO.js.map +0 -1
- package/dist/chunk-W6NFJXSA.js +0 -454
- package/dist/chunk-W6NFJXSA.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-XXWH2JLC.js.map +0 -1
- package/dist/chunk-YFKJ7VZH.js +0 -268
- package/dist/chunk-YFKJ7VZH.js.map +0 -1
- package/dist/chunk-YJFGAFBD.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-AEFHUYZK.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-BO2IWXVK.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
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, useContext, useRef } from "react";
|
|
1
|
+
import { createContext, useContext, useRef, type ReactNode } from "react";
|
|
2
2
|
|
|
3
3
|
/* ----------------------------------------------------------------------------
|
|
4
4
|
Entrance animation gating
|
|
@@ -15,8 +15,33 @@ import { createContext, useContext, useRef } from "react";
|
|
|
15
15
|
-------------------------------------------------------------------------- */
|
|
16
16
|
|
|
17
17
|
const EntranceAnimationContext = createContext(true);
|
|
18
|
+
const EntranceAnimationLiveContext = createContext(true);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Freeze the mount-time gate for this subtree while publishing a separate live
|
|
22
|
+
* gate to activity rails that need later appends to animate after a bulk paint.
|
|
23
|
+
* MessageTimeline mounts one provider per durable group, so existing groups do
|
|
24
|
+
* not receive a context invalidation when a prepend toggles bulk mode and new
|
|
25
|
+
* groups still capture the value from the commit that created them.
|
|
26
|
+
*/
|
|
27
|
+
export function EntranceAnimationProvider({
|
|
28
|
+
value,
|
|
29
|
+
liveValue = value,
|
|
30
|
+
children,
|
|
31
|
+
}: {
|
|
32
|
+
value: boolean;
|
|
33
|
+
liveValue?: boolean | undefined;
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
}) {
|
|
36
|
+
const mountedValue = useRef(value).current;
|
|
37
|
+
return (
|
|
38
|
+
<EntranceAnimationContext.Provider value={mountedValue}>
|
|
39
|
+
<EntranceAnimationLiveContext.Provider value={liveValue}>
|
|
40
|
+
{children}
|
|
41
|
+
</EntranceAnimationLiveContext.Provider>
|
|
42
|
+
</EntranceAnimationContext.Provider>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
20
45
|
|
|
21
46
|
/**
|
|
22
47
|
* Live entrance gate from the nearest provider. Prefer
|
|
@@ -25,7 +50,7 @@ export const EntranceAnimationProvider = EntranceAnimationContext.Provider;
|
|
|
25
50
|
* later appends after a bulk window clears.
|
|
26
51
|
*/
|
|
27
52
|
export function useEntranceAnimationLive(): boolean {
|
|
28
|
-
return useContext(
|
|
53
|
+
return useContext(EntranceAnimationLiveContext);
|
|
29
54
|
}
|
|
30
55
|
|
|
31
56
|
/**
|
|
@@ -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…"];
|