@opengeni/react 3.1.0 → 3.1.2
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
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from "./human-input-form";
|
|
10
10
|
|
|
11
11
|
export type HumanInputSurfaceProps = {
|
|
12
|
+
loadSkillReview?: HumanInputFormProps["loadSkillReview"];
|
|
12
13
|
requests: SessionHumanInputRequest[];
|
|
13
14
|
onSubmit: (requestId: string, response: SubmitHumanInputResponseRequest) => void | Promise<void>;
|
|
14
15
|
respondingRequestId?: string | null | undefined;
|
|
@@ -17,6 +18,10 @@ export type HumanInputSurfaceProps = {
|
|
|
17
18
|
className?: string | undefined;
|
|
18
19
|
/** Forwarded to the active form. Defaults true. */
|
|
19
20
|
autoFocus?: boolean | undefined;
|
|
21
|
+
/** Forwarded to the active form: yes/no decisions as two buttons. */
|
|
22
|
+
decisionButtons?: boolean | undefined;
|
|
23
|
+
/** Forwarded to the active form: where secret answers may be saved. */
|
|
24
|
+
allowedSaveTo?: HumanInputFormProps["allowedSaveTo"];
|
|
20
25
|
};
|
|
21
26
|
|
|
22
27
|
/**
|
|
@@ -28,11 +33,14 @@ export type HumanInputSurfaceProps = {
|
|
|
28
33
|
export function HumanInputSurface({
|
|
29
34
|
requests,
|
|
30
35
|
onSubmit,
|
|
36
|
+
loadSkillReview,
|
|
31
37
|
respondingRequestId = null,
|
|
32
38
|
error,
|
|
33
39
|
messages,
|
|
34
40
|
className,
|
|
35
41
|
autoFocus = true,
|
|
42
|
+
decisionButtons,
|
|
43
|
+
allowedSaveTo,
|
|
36
44
|
}: HumanInputSurfaceProps) {
|
|
37
45
|
const batchTotalRef = useRef(0);
|
|
38
46
|
|
|
@@ -68,10 +76,13 @@ export function HumanInputSurface({
|
|
|
68
76
|
|
|
69
77
|
const formProps: HumanInputFormProps = {
|
|
70
78
|
request: active,
|
|
79
|
+
loadSkillReview,
|
|
71
80
|
submitting: respondingRequestId !== null,
|
|
72
81
|
error: error ?? null,
|
|
73
82
|
progressLabel,
|
|
74
83
|
autoFocus,
|
|
84
|
+
decisionButtons,
|
|
85
|
+
allowedSaveTo,
|
|
75
86
|
...(messages ? { messages } : {}),
|
|
76
87
|
onSubmit: (response) => onSubmit(active.id, response),
|
|
77
88
|
};
|
|
@@ -50,7 +50,7 @@ export function InteractionInterventionBanner({
|
|
|
50
50
|
type="button"
|
|
51
51
|
onClick={() => onOpen(intervention)}
|
|
52
52
|
disabled={mutating}
|
|
53
|
-
className="h-7 shrink-0 rounded-og-sm border border-og-border bg-og-
|
|
53
|
+
className="h-7 shrink-0 rounded-og-sm border border-og-primary-border bg-og-primary px-2.5 text-og-control font-medium text-og-primary-fg transition hover:bg-og-primary-hover disabled:opacity-50"
|
|
54
54
|
>
|
|
55
55
|
Open
|
|
56
56
|
</button>
|
|
@@ -59,7 +59,7 @@ export function InteractionInterventionBanner({
|
|
|
59
59
|
type="button"
|
|
60
60
|
onClick={() => onResolve(intervention, "completed")}
|
|
61
61
|
disabled={mutating}
|
|
62
|
-
className="inline-flex h-7 shrink-0 items-center gap-1 rounded-og-sm bg-og-
|
|
62
|
+
className="inline-flex h-7 shrink-0 items-center gap-1 rounded-og-sm border border-og-primary-border bg-og-primary text-og-primary-fg px-2.5 text-og-control font-medium transition hover:bg-og-primary-hover disabled:opacity-50"
|
|
63
63
|
>
|
|
64
64
|
{mutating ? (
|
|
65
65
|
<LoaderCircleIcon className="size-3 animate-spin" />
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Fragment, type ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
// Bare http(s) URLs in plain agent-written text (question prompts, help text).
|
|
4
|
+
const URL_PATTERN = /https?:\/\/[^\s<>"'`]+/g;
|
|
5
|
+
// Sentence punctuation that follows a URL is not part of it.
|
|
6
|
+
const TRAILING_PUNCTUATION = /[.,;:!?]+$/;
|
|
7
|
+
|
|
8
|
+
export const LINKIFIED_LINK_CLASS = "font-medium og-link [overflow-wrap:anywhere]";
|
|
9
|
+
|
|
10
|
+
type Segment = { kind: "text"; value: string } | { kind: "link"; value: string };
|
|
11
|
+
|
|
12
|
+
function trimUrl(raw: string): string {
|
|
13
|
+
let url = raw.replace(TRAILING_PUNCTUATION, "");
|
|
14
|
+
// Drop a closing paren that wraps the URL rather than belonging to it.
|
|
15
|
+
while (url.endsWith(")") && countOf(url, "(") < countOf(url, ")")) {
|
|
16
|
+
url = url.slice(0, -1).replace(TRAILING_PUNCTUATION, "");
|
|
17
|
+
}
|
|
18
|
+
return url;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function countOf(value: string, char: string): number {
|
|
22
|
+
let count = 0;
|
|
23
|
+
for (const current of value) if (current === char) count += 1;
|
|
24
|
+
return count;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function isValidUrl(value: string): boolean {
|
|
28
|
+
try {
|
|
29
|
+
return /^https?:$/u.test(new URL(value).protocol);
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Split plain text into text and bare http(s) URL segments. */
|
|
36
|
+
export function linkifySegments(text: string): Segment[] {
|
|
37
|
+
const segments: Segment[] = [];
|
|
38
|
+
let cursor = 0;
|
|
39
|
+
for (const match of text.matchAll(URL_PATTERN)) {
|
|
40
|
+
const start = match.index ?? 0;
|
|
41
|
+
const url = trimUrl(match[0]);
|
|
42
|
+
if (!isValidUrl(url)) continue;
|
|
43
|
+
if (start > cursor) segments.push({ kind: "text", value: text.slice(cursor, start) });
|
|
44
|
+
segments.push({ kind: "link", value: url });
|
|
45
|
+
cursor = start + url.length;
|
|
46
|
+
}
|
|
47
|
+
if (cursor < text.length) segments.push({ kind: "text", value: text.slice(cursor) });
|
|
48
|
+
return segments;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Render plain text with bare http(s) URLs as links that open in a new tab and
|
|
53
|
+
* wrap anywhere, so a long sign-in or approval URL stays clickable and inside
|
|
54
|
+
* its card. Non-string nodes pass through unchanged.
|
|
55
|
+
*/
|
|
56
|
+
export function linkifyText(node: ReactNode): ReactNode {
|
|
57
|
+
if (typeof node !== "string") return node;
|
|
58
|
+
const segments = linkifySegments(node);
|
|
59
|
+
if (!segments.some((segment) => segment.kind === "link")) return node;
|
|
60
|
+
// Segments are contiguous, so each one's text offset is a stable unique key.
|
|
61
|
+
let offset = 0;
|
|
62
|
+
return segments.map((segment) => {
|
|
63
|
+
const key = offset;
|
|
64
|
+
offset += segment.value.length;
|
|
65
|
+
return segment.kind === "link" ? (
|
|
66
|
+
<a
|
|
67
|
+
key={key}
|
|
68
|
+
className={LINKIFIED_LINK_CLASS}
|
|
69
|
+
href={segment.value}
|
|
70
|
+
target="_blank"
|
|
71
|
+
rel="noreferrer noopener"
|
|
72
|
+
>
|
|
73
|
+
{segment.value}
|
|
74
|
+
</a>
|
|
75
|
+
) : (
|
|
76
|
+
<Fragment key={key}>{segment.value}</Fragment>
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
@@ -2,20 +2,20 @@ import {
|
|
|
2
2
|
AlertTriangleIcon,
|
|
3
3
|
ArrowRightIcon,
|
|
4
4
|
CpuIcon,
|
|
5
|
-
CircleCheckIcon,
|
|
6
|
-
DownloadIcon,
|
|
7
5
|
LaptopIcon,
|
|
8
6
|
MonitorIcon,
|
|
9
7
|
MonitorOffIcon,
|
|
10
|
-
LoaderCircleIcon,
|
|
11
8
|
ServerIcon,
|
|
12
9
|
UsersIcon,
|
|
13
10
|
} from "lucide-react";
|
|
14
11
|
import { cn } from "../lib/cn";
|
|
15
12
|
import { formatRelativeTime } from "../lib/format";
|
|
13
|
+
import { machineScopeLabel } from "../sandbox-label-model";
|
|
16
14
|
import type { MachineView, MetricSample } from "../types/machines";
|
|
17
15
|
import { MachineHealthPill } from "./machine-health-pill";
|
|
18
16
|
import { MachineMetrics } from "./machine-metrics";
|
|
17
|
+
import { AgentStatusIcon } from "./machines/agent-status-icon";
|
|
18
|
+
import { describeAgentRuntime, runnerConflict, STATUS_TONE_TEXT } from "./machines/machine-status";
|
|
19
19
|
import { MetricSparkline } from "./machines/metric-sparkline";
|
|
20
20
|
|
|
21
21
|
export type MachineCardProps = {
|
|
@@ -36,10 +36,12 @@ export type MachineCardProps = {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
function KindIcon({ machine }: { machine: MachineView }) {
|
|
39
|
-
if (machine.
|
|
39
|
+
if (machine.kind === "local" || machine.kind === "selfhosted")
|
|
40
|
+
return <LaptopIcon className="size-4 text-og-fg-subtle" aria-hidden />;
|
|
41
|
+
if (machine.kind === "docker" || machine.isSessionGroup)
|
|
40
42
|
return <ServerIcon className="size-4 text-og-fg-subtle" aria-hidden />;
|
|
41
43
|
if (machine.kind === "modal") return <CpuIcon className="size-4 text-og-fg-subtle" aria-hidden />;
|
|
42
|
-
return <
|
|
44
|
+
return <ServerIcon className="size-4 text-og-fg-subtle" aria-hidden />;
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -69,42 +71,10 @@ export function MachineCard({
|
|
|
69
71
|
const cpuPts = (series ?? []).map((s) => ({ t: new Date(s.sampledAt).getTime(), v: s.cpuPct }));
|
|
70
72
|
const openable = Boolean(onOpenDetail);
|
|
71
73
|
const runtime = machine.runtime;
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const canUpdate =
|
|
77
|
-
Boolean(machine.enrollmentId && onUpdateAgent) &&
|
|
78
|
-
!offline &&
|
|
79
|
-
(runtime?.versionState === "outdated" ||
|
|
80
|
-
runtime?.versionState === "update_failed" ||
|
|
81
|
-
dispatchConfirmationStalled);
|
|
82
|
-
const updateLabel = (() => {
|
|
83
|
-
const update = runtime?.update;
|
|
84
|
-
if (!update) return null;
|
|
85
|
-
switch (update.status) {
|
|
86
|
-
case "requested":
|
|
87
|
-
return dispatchConfirmationStalled ? "Agent confirmation delayed" : "Confirming with agent";
|
|
88
|
-
case "accepted":
|
|
89
|
-
return "Update accepted";
|
|
90
|
-
case "waiting_for_idle":
|
|
91
|
-
return "Waiting for current work";
|
|
92
|
-
case "downloading":
|
|
93
|
-
case "verifying":
|
|
94
|
-
case "applying":
|
|
95
|
-
return `${update.status}…`;
|
|
96
|
-
case "restarting":
|
|
97
|
-
return "Restarting agent";
|
|
98
|
-
case "succeeded":
|
|
99
|
-
return `Updated · v${update.targetVersion}`;
|
|
100
|
-
case "failed": {
|
|
101
|
-
const detail = update.errorCode?.replaceAll("_", " ");
|
|
102
|
-
return update.rolledBack
|
|
103
|
-
? `Update rolled back safely${detail ? ` · ${detail}` : ""}`
|
|
104
|
-
: `Update failed${detail ? ` · ${detail}` : ""}`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
})();
|
|
74
|
+
const agent = runtime ? describeAgentRuntime(runtime, clockNow) : null;
|
|
75
|
+
const updateAction =
|
|
76
|
+
agent?.action && machine.enrollmentId && onUpdateAgent && !offline ? agent.action : null;
|
|
77
|
+
const conflict = runnerConflict(machine.connectionAuthority, clockNow);
|
|
108
78
|
|
|
109
79
|
return (
|
|
110
80
|
<div
|
|
@@ -154,13 +124,9 @@ export function MachineCard({
|
|
|
154
124
|
) : null}
|
|
155
125
|
</div>
|
|
156
126
|
<div className="mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-og-xs text-og-fg-subtle">
|
|
157
|
-
<span data-machine-scope={machine.scope}
|
|
158
|
-
{machine.scope === "user" ? "personal" : machine.scope}
|
|
159
|
-
</span>
|
|
127
|
+
<span data-machine-scope={machine.scope}>{machineScopeLabel(machine.scope)}</span>
|
|
160
128
|
<span aria-hidden>·</span>
|
|
161
|
-
<span className="capitalize">
|
|
162
|
-
{machine.isSessionGroup ? "session sandbox" : machine.kind}
|
|
163
|
-
</span>
|
|
129
|
+
<span className="capitalize">{machine.kind}</span>
|
|
164
130
|
<span aria-hidden>·</span>
|
|
165
131
|
<span className="font-og-mono">
|
|
166
132
|
{machine.os}/{machine.arch}
|
|
@@ -196,48 +162,45 @@ export function MachineCard({
|
|
|
196
162
|
</p>
|
|
197
163
|
) : null}
|
|
198
164
|
|
|
199
|
-
{
|
|
165
|
+
{conflict?.active ? (
|
|
200
166
|
<p
|
|
201
167
|
data-runner-conflict
|
|
202
|
-
className="flex items-
|
|
168
|
+
className="flex items-start gap-1.5 rounded-og-md border border-og-status-waiting/30 bg-og-status-waiting/5 px-2.5 py-1.5 text-og-xs text-og-fg-muted"
|
|
203
169
|
>
|
|
204
|
-
<AlertTriangleIcon
|
|
205
|
-
|
|
170
|
+
<AlertTriangleIcon
|
|
171
|
+
className="mt-px size-3.5 shrink-0 text-og-status-waiting"
|
|
172
|
+
aria-hidden
|
|
173
|
+
/>
|
|
174
|
+
<span>
|
|
175
|
+
A second copy of the agent is running on this machine. It's kept out, so work isn't
|
|
176
|
+
affected. Stop the extra copy.
|
|
177
|
+
</span>
|
|
206
178
|
</p>
|
|
207
179
|
) : null}
|
|
208
180
|
|
|
209
|
-
{
|
|
181
|
+
{agent ? (
|
|
210
182
|
<div
|
|
211
183
|
data-agent-runtime
|
|
212
184
|
className="flex items-center justify-between gap-3 rounded-og-md border border-og-border/70 bg-og-surface-2/35 px-2.5 py-2 text-og-xs"
|
|
213
185
|
>
|
|
214
186
|
<div className="min-w-0">
|
|
215
187
|
<div className="flex items-center gap-1.5 text-og-fg-muted">
|
|
216
|
-
{
|
|
217
|
-
|
|
218
|
-
) : updateRunning ? (
|
|
219
|
-
<LoaderCircleIcon className="size-3.5 animate-og-spin text-og-accent" aria-hidden />
|
|
220
|
-
) : (
|
|
221
|
-
<DownloadIcon className="size-3.5" aria-hidden />
|
|
222
|
-
)}
|
|
223
|
-
<span className="truncate">
|
|
224
|
-
Agent{" "}
|
|
225
|
-
{runtime.installedVersion ? `v${runtime.installedVersion}` : "version unknown"}
|
|
226
|
-
</span>
|
|
188
|
+
<AgentStatusIcon tone={agent.tone} />
|
|
189
|
+
<span className="truncate">{agent.title}</span>
|
|
227
190
|
</div>
|
|
228
|
-
<p
|
|
229
|
-
{
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
? `Promoted v${runtime.desiredVersion}`
|
|
234
|
-
: "No promoted version configured")}
|
|
191
|
+
<p
|
|
192
|
+
data-agent-status={agent.tone}
|
|
193
|
+
className={cn("mt-0.5", STATUS_TONE_TEXT[agent.tone])}
|
|
194
|
+
>
|
|
195
|
+
{agent.status}
|
|
235
196
|
</p>
|
|
197
|
+
{agent.note ? <p className="mt-1 text-og-fg-muted">{agent.note}</p> : null}
|
|
236
198
|
</div>
|
|
237
|
-
{
|
|
199
|
+
{updateAction ? (
|
|
238
200
|
<button
|
|
239
201
|
type="button"
|
|
240
202
|
data-update-agent
|
|
203
|
+
data-update-action={updateAction.kind}
|
|
241
204
|
disabled={updatingAgent}
|
|
242
205
|
onClick={(event) => {
|
|
243
206
|
event.stopPropagation();
|
|
@@ -245,13 +208,7 @@ export function MachineCard({
|
|
|
245
208
|
}}
|
|
246
209
|
className="shrink-0 rounded-og-sm border border-og-border px-2 py-1 font-medium text-og-fg-muted transition-colors hover:border-og-border-strong hover:text-og-fg disabled:cursor-not-allowed disabled:opacity-50 pointer-coarse:min-h-11"
|
|
247
210
|
>
|
|
248
|
-
{updatingAgent
|
|
249
|
-
? "Starting…"
|
|
250
|
-
: dispatchConfirmationStalled
|
|
251
|
-
? "Retry delivery"
|
|
252
|
-
: runtime.versionState === "update_failed"
|
|
253
|
-
? "Retry"
|
|
254
|
-
: "Update"}
|
|
211
|
+
{updatingAgent ? "Starting…" : updateAction.label}
|
|
255
212
|
</button>
|
|
256
213
|
) : null}
|
|
257
214
|
</div>
|
|
@@ -23,7 +23,7 @@ export type MachineDockBarProps = {
|
|
|
23
23
|
* chrome (the dock-parity contract: selfhosted == Modal for the surfaces).
|
|
24
24
|
*/
|
|
25
25
|
export function MachineDockBar({ name, kind, state, className }: MachineDockBarProps) {
|
|
26
|
-
const Icon = kind === "selfhosted" ? LaptopIcon : CpuIcon;
|
|
26
|
+
const Icon = kind === "selfhosted" || kind === "local" ? LaptopIcon : CpuIcon;
|
|
27
27
|
const stateBadge = MACHINE_STATE_BADGE_META[state];
|
|
28
28
|
return (
|
|
29
29
|
<div
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { isSessionId } from "../timeline/agent-identity";
|
|
2
|
+
import { namedAgentTitle, type AgentTitleParts } from "../timeline/platform-activity-presentation";
|
|
1
3
|
import type { MachineInputMember } from "../timeline/types";
|
|
2
4
|
|
|
3
5
|
export const MACHINE_INPUT_META: Record<MachineInputMember["kind"], string> = {
|
|
4
6
|
scheduled_occurrence: "Scheduled update",
|
|
5
7
|
goal_continuation: "Goal continued",
|
|
8
|
+
background_command_result: "Command result received",
|
|
9
|
+
session_wait_timeout: "Wait ended",
|
|
6
10
|
agent_message: "Agent update",
|
|
7
11
|
agent_steer_instruction: "Agent direction",
|
|
8
|
-
child_terminal_result: "Agent
|
|
12
|
+
child_terminal_result: "Agent result received",
|
|
9
13
|
media_generation_result: "Video update",
|
|
10
14
|
child_requires_action: "Agent needs input",
|
|
11
15
|
child_requires_action_resolved: "Agent unblocked",
|
|
@@ -17,9 +21,16 @@ export const MACHINE_INPUT_META: Record<MachineInputMember["kind"], string> = {
|
|
|
17
21
|
/**
|
|
18
22
|
* Collapsed landmark label for a coalesced machine-input batch.
|
|
19
23
|
* Same-kind batches get a natural plural; mixed kinds stay short.
|
|
24
|
+
* When every agent update's sender has a known title, the label names them
|
|
25
|
+
* ("Update from Release audit", "3 updates from Audit and Flake · Wait ended").
|
|
20
26
|
*/
|
|
21
|
-
export function machineInputBatchLabel(
|
|
27
|
+
export function machineInputBatchLabel(
|
|
28
|
+
members: readonly MachineInputMember[],
|
|
29
|
+
titleFor?: ((sessionId: string) => string | null) | undefined,
|
|
30
|
+
): string {
|
|
22
31
|
if (members.length === 0) return "Updates";
|
|
32
|
+
const named = titleFor ? namedAgentBatchLabel(members, titleFor) : null;
|
|
33
|
+
if (named) return named;
|
|
23
34
|
const counts = new Map<MachineInputMember["kind"], number>();
|
|
24
35
|
for (const member of members) {
|
|
25
36
|
counts.set(member.kind, (counts.get(member.kind) ?? 0) + 1);
|
|
@@ -28,8 +39,12 @@ export function machineInputBatchLabel(members: readonly MachineInputMember[]):
|
|
|
28
39
|
const kind = members[0]!.kind;
|
|
29
40
|
const n = members.length;
|
|
30
41
|
switch (kind) {
|
|
42
|
+
case "background_command_result":
|
|
43
|
+
return n === 1 ? "Command result received" : `${n} command results received`;
|
|
44
|
+
case "session_wait_timeout":
|
|
45
|
+
return n === 1 ? "Wait ended" : `${n} waits ended`;
|
|
31
46
|
case "child_terminal_result":
|
|
32
|
-
return n === 1 ? "Agent
|
|
47
|
+
return n === 1 ? "Agent result received" : `${n} agent results received`;
|
|
33
48
|
case "goal_continuation":
|
|
34
49
|
return n === 1 ? "Goal continued" : `${n} goal continuations`;
|
|
35
50
|
case "scheduled_occurrence":
|
|
@@ -61,6 +76,41 @@ export function machineInputBatchLabel(members: readonly MachineInputMember[]):
|
|
|
61
76
|
return `${members.length} updates · ${preview}${suffix}`;
|
|
62
77
|
}
|
|
63
78
|
|
|
79
|
+
function namedAgentBatchLabel(
|
|
80
|
+
members: readonly MachineInputMember[],
|
|
81
|
+
titleFor: (sessionId: string) => string | null,
|
|
82
|
+
): string | null {
|
|
83
|
+
const agents = members.filter(isAgentMember);
|
|
84
|
+
if (agents.length === 0) return null;
|
|
85
|
+
const names: string[] = [];
|
|
86
|
+
for (const member of agents) {
|
|
87
|
+
const sessionId = agentMemberSessionId(member);
|
|
88
|
+
const name = sessionId ? titleFor(sessionId) : null;
|
|
89
|
+
if (!name) return null;
|
|
90
|
+
if (!names.includes(name)) names.push(name);
|
|
91
|
+
}
|
|
92
|
+
const others = members.filter((member) => !isAgentMember(member));
|
|
93
|
+
const agentPart =
|
|
94
|
+
agents.length === 1
|
|
95
|
+
? agentMemberTitle(agents[0]!, names[0]!).text
|
|
96
|
+
: `${agents.length} updates from ${
|
|
97
|
+
names.length === 1
|
|
98
|
+
? names[0]
|
|
99
|
+
: names.length === 2
|
|
100
|
+
? `${names[0]} and ${names[1]}`
|
|
101
|
+
: `${names.length} agents`
|
|
102
|
+
}`;
|
|
103
|
+
if (others.length === 0) return agentPart;
|
|
104
|
+
const counts = new Map<MachineInputMember["kind"], number>();
|
|
105
|
+
for (const member of others) counts.set(member.kind, (counts.get(member.kind) ?? 0) + 1);
|
|
106
|
+
const rest = [...counts.entries()]
|
|
107
|
+
.map(([kind, count]) =>
|
|
108
|
+
count === 1 ? MACHINE_INPUT_META[kind] : `${count}× ${MACHINE_INPUT_META[kind]}`,
|
|
109
|
+
)
|
|
110
|
+
.join(", ");
|
|
111
|
+
return `${agentPart} · ${rest}`;
|
|
112
|
+
}
|
|
113
|
+
|
|
64
114
|
/** Strip protocol prefixes and worker/session UUIDs from display summaries. */
|
|
65
115
|
export function cleanMachineInputSummary(summary: string): string {
|
|
66
116
|
return summary
|
|
@@ -99,3 +149,147 @@ export function machineInputSummaryIsUseful(
|
|
|
99
149
|
}
|
|
100
150
|
return true;
|
|
101
151
|
}
|
|
152
|
+
|
|
153
|
+
/* --- agent members ----------------------------------------------------------- */
|
|
154
|
+
|
|
155
|
+
const AGENT_MEMBER_KINDS: ReadonlySet<MachineInputMember["kind"]> = new Set([
|
|
156
|
+
"agent_message",
|
|
157
|
+
"agent_steer_instruction",
|
|
158
|
+
"child_terminal_result",
|
|
159
|
+
"child_requires_action",
|
|
160
|
+
"child_requires_action_resolved",
|
|
161
|
+
"child_paused",
|
|
162
|
+
"child_waiting_capacity",
|
|
163
|
+
"child_progress",
|
|
164
|
+
]);
|
|
165
|
+
|
|
166
|
+
/** Members sent by (or about) another agent session. */
|
|
167
|
+
export function isAgentMember(member: Pick<MachineInputMember, "kind">): boolean {
|
|
168
|
+
return AGENT_MEMBER_KINDS.has(member.kind);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** The agent session a member came from; only typed UUID sources route. */
|
|
172
|
+
export function agentMemberSessionId(
|
|
173
|
+
member: Pick<MachineInputMember, "kind" | "sourceId">,
|
|
174
|
+
): string | null {
|
|
175
|
+
return isAgentMember(member) && isSessionId(member.sourceId) ? member.sourceId : null;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* The row title for an agent member. A child result only means the agent went
|
|
180
|
+
* idle, so it reads "Result from …", never "finished".
|
|
181
|
+
*/
|
|
182
|
+
export function agentMemberTitle(
|
|
183
|
+
member: Pick<MachineInputMember, "kind" | "classification">,
|
|
184
|
+
name: string | null,
|
|
185
|
+
): AgentTitleParts {
|
|
186
|
+
const fallback = MACHINE_INPUT_META[member.kind];
|
|
187
|
+
switch (member.kind) {
|
|
188
|
+
case "agent_message":
|
|
189
|
+
return namedAgentTitle(name, "Update from ", "", fallback);
|
|
190
|
+
case "agent_steer_instruction":
|
|
191
|
+
return namedAgentTitle(name, "Direction from ", "", fallback);
|
|
192
|
+
case "child_terminal_result":
|
|
193
|
+
return member.classification === "failure"
|
|
194
|
+
? namedAgentTitle(name, "", " failed", "Agent failed")
|
|
195
|
+
: namedAgentTitle(name, "Result from ", "", fallback);
|
|
196
|
+
case "child_requires_action":
|
|
197
|
+
return namedAgentTitle(name, "", " needs input", fallback);
|
|
198
|
+
case "child_requires_action_resolved":
|
|
199
|
+
return namedAgentTitle(name, "", " unblocked", fallback);
|
|
200
|
+
case "child_paused":
|
|
201
|
+
return namedAgentTitle(name, "", " paused", fallback);
|
|
202
|
+
case "child_waiting_capacity":
|
|
203
|
+
return namedAgentTitle(name, "", " is waiting for capacity", fallback);
|
|
204
|
+
case "child_progress":
|
|
205
|
+
return namedAgentTitle(name, "Progress from ", "", fallback);
|
|
206
|
+
default:
|
|
207
|
+
return namedAgentTitle(null, "", "", fallback);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function capitalize(text: string): string {
|
|
212
|
+
return text ? text[0]!.toUpperCase() + text.slice(1) : text;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Drop the protocol tag and "Worker session id: …" routing note from a
|
|
217
|
+
* server-written child notice, keeping every other character (and line break)
|
|
218
|
+
* of the agent's own words.
|
|
219
|
+
*/
|
|
220
|
+
function cleanLines(text: string): string {
|
|
221
|
+
return text
|
|
222
|
+
.split("\n")
|
|
223
|
+
.map((line) =>
|
|
224
|
+
line
|
|
225
|
+
.replace(/^\[[A-Z][A-Z _-]*(?:\s+\d+\/\d+)?\]\s*/, "")
|
|
226
|
+
.replace(/\s*\bWorker session id:\s*[0-9a-f]{8}-[0-9a-f-]{27,}\b\.?/gi, "")
|
|
227
|
+
.trim(),
|
|
228
|
+
)
|
|
229
|
+
.filter((line) => line.length > 0)
|
|
230
|
+
.join("\n");
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Human text for an agent member: the agent's own words where the summary
|
|
235
|
+
* carries them, without the model-facing "Worker <id> …" framing. `preview`
|
|
236
|
+
* is the most useful single passage; `body` is everything worth reading.
|
|
237
|
+
*/
|
|
238
|
+
export function agentMemberText(member: Pick<MachineInputMember, "kind" | "summary">): {
|
|
239
|
+
preview: string;
|
|
240
|
+
body: string;
|
|
241
|
+
} {
|
|
242
|
+
const raw = member.summary.trim();
|
|
243
|
+
const same = (text: string) => ({ preview: text.replace(/\s+/g, " "), body: text });
|
|
244
|
+
switch (member.kind) {
|
|
245
|
+
case "child_progress":
|
|
246
|
+
return same(cleanLines(raw.replace(/^Worker \S+ progress:\s*/, "")));
|
|
247
|
+
case "child_requires_action":
|
|
248
|
+
return same(
|
|
249
|
+
cleanLines(
|
|
250
|
+
raw
|
|
251
|
+
.replace(/^Worker \S+ is blocked and needs input(?: \(turn [^)]*\))?\.\s*/, "")
|
|
252
|
+
.replace(/^It asked:\s*/, "")
|
|
253
|
+
.replace(/([?!])\.$/, "$1"),
|
|
254
|
+
),
|
|
255
|
+
);
|
|
256
|
+
case "child_requires_action_resolved":
|
|
257
|
+
return same(capitalize(cleanLines(raw.replace(/^Worker \S+:\s*/, ""))));
|
|
258
|
+
case "child_paused": {
|
|
259
|
+
const match = /^Worker \S+ was paused by (.+?)\.(?:\s*Reason:\s*([\s\S]*))?$/.exec(raw);
|
|
260
|
+
if (!match) return same(cleanLines(raw));
|
|
261
|
+
return same(match[2]?.trim() ? cleanLines(match[2]) : `Paused by ${match[1]}`);
|
|
262
|
+
}
|
|
263
|
+
case "child_waiting_capacity":
|
|
264
|
+
return same(capitalize(cleanLines(raw.replace(/^Worker \S+ is\s+/, ""))));
|
|
265
|
+
case "child_terminal_result": {
|
|
266
|
+
const lines = raw.split("\n").map((line) => line.trim());
|
|
267
|
+
const rest = lines.filter(
|
|
268
|
+
(line) => line.length > 0 && !/^A worker session you spawned has\b/i.test(line),
|
|
269
|
+
);
|
|
270
|
+
const field = (prefix: string) =>
|
|
271
|
+
rest
|
|
272
|
+
.find((line) => line.startsWith(prefix))
|
|
273
|
+
?.slice(prefix.length)
|
|
274
|
+
.trim() || null;
|
|
275
|
+
const goal = field("Worker goal:");
|
|
276
|
+
const evidence = field("Completion evidence:");
|
|
277
|
+
const rationale = field("Pause rationale:");
|
|
278
|
+
const body = cleanLines(
|
|
279
|
+
rest
|
|
280
|
+
.map((line) =>
|
|
281
|
+
line
|
|
282
|
+
.replace(/^Worker goal:\s*/, "Goal: ")
|
|
283
|
+
.replace(/^Completion evidence:\s*/, "Evidence: ")
|
|
284
|
+
.replace(/^Pause rationale:\s*/, "Paused because: "),
|
|
285
|
+
)
|
|
286
|
+
.join("\n"),
|
|
287
|
+
);
|
|
288
|
+
const preview = cleanLines(evidence ?? rationale ?? goal ?? body);
|
|
289
|
+
return { preview: preview.replace(/\s+/g, " "), body };
|
|
290
|
+
}
|
|
291
|
+
default:
|
|
292
|
+
// Agent messages and directions are the sender's own words, verbatim.
|
|
293
|
+
return same(raw);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CircleAlertIcon,
|
|
3
|
+
CircleCheckIcon,
|
|
4
|
+
ClockIcon,
|
|
5
|
+
DownloadIcon,
|
|
6
|
+
LoaderCircleIcon,
|
|
7
|
+
TriangleAlertIcon,
|
|
8
|
+
} from "lucide-react";
|
|
9
|
+
import { cn } from "../../lib/cn";
|
|
10
|
+
import type { StatusTone } from "./machine-status";
|
|
11
|
+
|
|
12
|
+
/** The leading glyph for an agent status line; color follows the shared tone. */
|
|
13
|
+
export function AgentStatusIcon({ tone, className }: { tone: StatusTone; className?: string }) {
|
|
14
|
+
const size = cn("size-3.5 shrink-0", className);
|
|
15
|
+
switch (tone) {
|
|
16
|
+
case "ok":
|
|
17
|
+
return <CircleCheckIcon className={cn(size, "text-og-status-idle")} aria-hidden />;
|
|
18
|
+
case "progress":
|
|
19
|
+
return (
|
|
20
|
+
<LoaderCircleIcon className={cn(size, "animate-og-spin text-og-accent")} aria-hidden />
|
|
21
|
+
);
|
|
22
|
+
case "waiting":
|
|
23
|
+
return <ClockIcon className={cn(size, "text-og-fg-subtle")} aria-hidden />;
|
|
24
|
+
case "attention":
|
|
25
|
+
return <TriangleAlertIcon className={cn(size, "text-og-status-waiting")} aria-hidden />;
|
|
26
|
+
case "failed":
|
|
27
|
+
return <CircleAlertIcon className={cn(size, "text-og-status-failed")} aria-hidden />;
|
|
28
|
+
default:
|
|
29
|
+
return <DownloadIcon className={cn(size, "text-og-fg-subtle")} aria-hidden />;
|
|
30
|
+
}
|
|
31
|
+
}
|