@opengeni/react 1.0.1 → 1.0.2-canary.37202341988001
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 +660 -21
- package/dist/accounts.d.ts +64 -0
- package/dist/accounts.js +822 -0
- package/dist/accounts.js.map +1 -0
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +3 -2
- package/dist/artifacts-presentation.js +3 -2
- package/dist/artifacts-spreadsheet.js +2 -2
- package/dist/artifacts.d.ts +4 -1
- package/dist/artifacts.js +518 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-SHYKQRNX.js +16 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-UGBTNB3L.js +11 -0
- package/dist/chat-interactive-block-UGBTNB3L.js.map +1 -0
- package/dist/chunk-26ZNDDLZ.js +453 -0
- package/dist/chunk-26ZNDDLZ.js.map +1 -0
- package/dist/chunk-3CTRFMAK.js +359 -0
- package/dist/chunk-3CTRFMAK.js.map +1 -0
- package/dist/chunk-447JLCBU.js +209 -0
- package/dist/chunk-447JLCBU.js.map +1 -0
- package/dist/chunk-4RVYOY4O.js +379 -0
- package/dist/chunk-4RVYOY4O.js.map +1 -0
- package/dist/chunk-5CVXZA3Y.js +292 -0
- package/dist/chunk-5CVXZA3Y.js.map +1 -0
- package/dist/chunk-5J4FOW6Q.js +108 -0
- package/dist/chunk-5J4FOW6Q.js.map +1 -0
- package/dist/chunk-742CZ3L3.js +481 -0
- package/dist/chunk-742CZ3L3.js.map +1 -0
- package/dist/chunk-A2PI6UMY.js +41 -0
- package/dist/chunk-A2PI6UMY.js.map +1 -0
- package/dist/{chunk-7WCLAEFV.js → chunk-A4UJB2MM.js} +37 -27
- package/dist/chunk-A4UJB2MM.js.map +1 -0
- package/dist/chunk-B3V6TG77.js +41 -0
- package/dist/chunk-B3V6TG77.js.map +1 -0
- package/dist/chunk-BRM6FVZA.js +302 -0
- package/dist/chunk-BRM6FVZA.js.map +1 -0
- package/dist/chunk-C5X5AJXK.js +182 -0
- package/dist/chunk-C5X5AJXK.js.map +1 -0
- package/dist/{chunk-6KLX2RH5.js → chunk-DO544OSV.js} +1075 -79
- package/dist/chunk-DO544OSV.js.map +1 -0
- package/dist/{chunk-R3AZOAB5.js → chunk-DYWBUX5Q.js} +29 -123
- package/dist/chunk-DYWBUX5Q.js.map +1 -0
- package/dist/{chunk-HA46CYQK.js → chunk-EESD3PY3.js} +792 -537
- package/dist/chunk-EESD3PY3.js.map +1 -0
- package/dist/{chunk-5UQPNLIO.js → chunk-EN3YTHKR.js} +4117 -3896
- package/dist/chunk-EN3YTHKR.js.map +1 -0
- package/dist/chunk-ERGYJIBB.js +21 -0
- package/dist/chunk-ERGYJIBB.js.map +1 -0
- package/dist/chunk-FZCP527Y.js +116 -0
- package/dist/chunk-FZCP527Y.js.map +1 -0
- package/dist/chunk-GIMRELBW.js +14 -0
- package/dist/chunk-GIMRELBW.js.map +1 -0
- package/dist/chunk-GYVRFZDY.js +2733 -0
- package/dist/chunk-GYVRFZDY.js.map +1 -0
- package/dist/{chunk-LLOLUHVG.js → chunk-HDJWDK7W.js} +1358 -2746
- package/dist/chunk-HDJWDK7W.js.map +1 -0
- package/dist/chunk-I7IWRQLN.js +1608 -0
- package/dist/chunk-I7IWRQLN.js.map +1 -0
- package/dist/chunk-IT4BJUGF.js +13055 -0
- package/dist/chunk-IT4BJUGF.js.map +1 -0
- package/dist/chunk-IWIDV7SB.js +1 -0
- package/dist/chunk-IWIDV7SB.js.map +1 -0
- package/dist/chunk-J2QWVSQY.js +312 -0
- package/dist/chunk-J2QWVSQY.js.map +1 -0
- package/dist/chunk-J6DBS4T3.js +371 -0
- package/dist/chunk-J6DBS4T3.js.map +1 -0
- package/dist/{chunk-B6WPZSTT.js → chunk-JIQYUGVL.js} +1331 -1163
- package/dist/chunk-JIQYUGVL.js.map +1 -0
- package/dist/chunk-JT4JW7BC.js +54 -0
- package/dist/chunk-JT4JW7BC.js.map +1 -0
- package/dist/chunk-K3HQAKQX.js +24 -0
- package/dist/chunk-K3HQAKQX.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-PNY3JKBJ.js} +309 -74
- package/dist/chunk-PNY3JKBJ.js.map +1 -0
- package/dist/chunk-RHREZ7BO.js +11 -0
- package/dist/chunk-RHREZ7BO.js.map +1 -0
- package/dist/chunk-RLUSC2WA.js +299 -0
- package/dist/chunk-RLUSC2WA.js.map +1 -0
- package/dist/{chunk-IGC6A2ZI.js → chunk-RSI7XYXL.js} +777 -246
- package/dist/chunk-RSI7XYXL.js.map +1 -0
- package/dist/chunk-SCOTPE2I.js +589 -0
- package/dist/chunk-SCOTPE2I.js.map +1 -0
- package/dist/{chunk-C5ZPSSS5.js → chunk-TKOTKRWY.js} +5 -4
- package/dist/{chunk-C5ZPSSS5.js.map → chunk-TKOTKRWY.js.map} +1 -1
- package/dist/chunk-TMYGL6X5.js +742 -0
- package/dist/chunk-TMYGL6X5.js.map +1 -0
- package/dist/chunk-UGLEYEMP.js +33 -0
- package/dist/chunk-UGLEYEMP.js.map +1 -0
- package/dist/chunk-UK4TINKT.js +27 -0
- package/dist/chunk-UK4TINKT.js.map +1 -0
- package/dist/chunk-UTRTG6LH.js +220 -0
- package/dist/chunk-UTRTG6LH.js.map +1 -0
- package/dist/chunk-WEHMPOXK.js +39 -0
- package/dist/chunk-WEHMPOXK.js.map +1 -0
- package/dist/chunk-WGXVEJO5.js +319 -0
- package/dist/chunk-WGXVEJO5.js.map +1 -0
- package/dist/chunk-WRHIZYZF.js +988 -0
- package/dist/chunk-WRHIZYZF.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-WUISZ3WU.js} +223 -115
- package/dist/chunk-WUISZ3WU.js.map +1 -0
- package/dist/chunk-XCHWDJ22.js +107 -0
- package/dist/chunk-XCHWDJ22.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-Y2PRMYLC.js} +11 -6
- package/dist/chunk-Y2PRMYLC.js.map +1 -0
- package/dist/chunk-YBXQDQFX.js +1772 -0
- package/dist/chunk-YBXQDQFX.js.map +1 -0
- package/dist/chunk-YM2DE7BQ.js +3124 -0
- package/dist/chunk-YM2DE7BQ.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-YQEAA6LT.js} +7 -3
- package/dist/chunk-YQEAA6LT.js.map +1 -0
- package/dist/chunk-YV4L3ILF.js +9 -0
- package/dist/chunk-YV4L3ILF.js.map +1 -0
- package/dist/chunk-ZYRGEKWS.js +216 -0
- package/dist/chunk-ZYRGEKWS.js.map +1 -0
- package/dist/client.d.ts +7 -4
- package/dist/clipboard.js +1 -0
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +15 -0
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +27 -0
- package/dist/components/artifacts/artifact-surface.d.ts +3 -1
- package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
- package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
- package/dist/components/artifacts/document-editor.d.ts +4 -2
- package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
- package/dist/components/artifacts/editable-artifact-view.d.ts +46 -0
- package/dist/components/artifacts/editable-document.d.ts +1 -1
- package/dist/components/artifacts/editable-presentation.d.ts +2 -2
- package/dist/components/artifacts/editable-spreadsheet.d.ts +2 -1
- package/dist/components/artifacts/index.d.ts +8 -1
- package/dist/components/artifacts/inline-html-document.d.ts +2 -0
- package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
- package/dist/components/artifacts/presentation-editor.d.ts +6 -2
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +48 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +23 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
- package/dist/components/browser-select-control.d.ts +16 -0
- package/dist/components/browser-viewer.d.ts +10 -1
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +5 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer.d.ts +45 -4
- package/dist/components/computer-viewer.d.ts +4 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/enrollment-consent.d.ts +6 -3
- package/dist/components/file-browser.d.ts +10 -1
- package/dist/components/fleet-tile.d.ts +2 -2
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +21 -2
- package/dist/components/human-input-surface.d.ts +6 -3
- package/dist/components/machine-card.d.ts +4 -1
- package/dist/components/machines/machine-detail.d.ts +4 -1
- package/dist/components/machines/machine-operation-policy.d.ts +11 -0
- package/dist/components/machines-dashboard.d.ts +3 -1
- package/dist/components/markdown-table-layout.d.ts +12 -0
- package/dist/components/markdown.d.ts +47 -3
- package/dist/components/message-timeline.d.ts +72 -9
- package/dist/components/model-mark.d.ts +29 -0
- package/dist/components/model-policy-picker-menu.d.ts +9 -0
- package/dist/components/model-policy-picker.d.ts +62 -13
- package/dist/components/open-geni-chat.d.ts +58 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/pierre-file.d.ts +1 -1
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/sandbox-files.d.ts +13 -2
- package/dist/components/sandbox-workspace.d.ts +43 -3
- package/dist/components/session-capability-frame.d.ts +35 -0
- package/dist/components/session-chrome.d.ts +66 -8
- package/dist/components/session-commands-panel.d.ts +6 -0
- package/dist/components/session-commands.d.ts +6 -0
- package/dist/components/session-connection-request.d.ts +8 -0
- package/dist/components/session-conversation.d.ts +89 -0
- package/dist/components/session-list.d.ts +36 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +21 -0
- package/dist/components/timeline-anchor.d.ts +24 -0
- package/dist/components/timeline-annotation-chrome.d.ts +25 -0
- package/dist/components/timeline-annotation-layout.d.ts +42 -0
- package/dist/components/timeline-annotation-markers.d.ts +8 -0
- package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
- package/dist/components/timeline-annotation-shared.d.ts +31 -0
- package/dist/components/timeline-annotations-dialog.d.ts +3 -2
- package/dist/components/timeline-annotations.d.ts +13 -3
- package/dist/components/timeline-reading-progress.d.ts +11 -0
- package/dist/components/timeline-search.d.ts +34 -0
- package/dist/components/timeline-settlement.d.ts +16 -0
- package/dist/components/tip-follow.d.ts +16 -0
- package/dist/components/usage-limit-notice.d.ts +49 -0
- package/dist/components/usage-member-list.d.ts +91 -0
- package/dist/components/usage-meter.d.ts +73 -0
- package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
- package/dist/components/user-message-body.d.ts +10 -1
- package/dist/components/workspace-dock.d.ts +6 -2
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +15 -9
- package/dist/computer-viewer-6SRGWRUX.js +19 -0
- package/dist/computer-viewer-6SRGWRUX.js.map +1 -0
- package/dist/connect-account-identity.d.ts +8 -0
- package/dist/connect-accounts.d.ts +15 -0
- package/dist/connect-chooser.d.ts +18 -0
- package/dist/connect-panel.d.ts +18 -0
- package/dist/connect-setup.d.ts +16 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2129 -0
- package/dist/connect.js.map +1 -0
- package/dist/connection-catalog.d.ts +38 -0
- package/dist/connection-discovery.d.ts +12 -0
- package/dist/connection-installed.d.ts +17 -0
- package/dist/connection-logo.d.ts +9 -0
- package/dist/connection-service-logo.d.ts +8 -0
- package/dist/connection-service-presentation.d.ts +13 -0
- package/dist/connection-skeleton.d.ts +5 -0
- package/dist/connection-type-picker.d.ts +6 -0
- package/dist/conversation-timeline.d.ts +5 -0
- package/dist/desktop.d.ts +7 -0
- package/dist/desktop.js +26 -0
- package/dist/desktop.js.map +1 -0
- package/dist/device-authorization.d.ts +23 -0
- package/dist/diffs.d.ts +8 -0
- package/dist/diffs.js +14 -0
- package/dist/diffs.js.map +1 -0
- package/dist/discovery-cache.d.ts +5 -0
- package/dist/editor.d.ts +7 -0
- package/dist/editor.js +21 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-session-client.d.ts +23 -0
- package/dist/file-node-visibility.d.ts +15 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-YZ3ZKWMM.js} +2 -1
- package/dist/fleet-decision-row-YZ3ZKWMM.js.map +1 -0
- package/dist/hooks/channel-cache.d.ts +23 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +14 -0
- package/dist/hooks/use-attached-browsers.d.ts +2 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
- package/dist/hooks/use-browser-session.d.ts +12 -1
- package/dist/hooks/use-channels.d.ts +1 -0
- package/dist/hooks/use-codex-accounts.d.ts +25 -7
- package/dist/hooks/use-composer.d.ts +45 -9
- package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
- package/dist/hooks/use-computer-input-posture.d.ts +13 -0
- package/dist/hooks/use-computer-session.d.ts +2 -0
- package/dist/hooks/use-connect.d.ts +22 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +21 -2
- package/dist/hooks/use-machine-chip.d.ts +3 -3
- package/dist/hooks/use-machines.d.ts +19 -1
- package/dist/hooks/use-sandbox-files.d.ts +5 -1
- package/dist/hooks/use-session-background-commands.d.ts +14 -0
- package/dist/hooks/use-session-events.d.ts +30 -8
- package/dist/hooks/use-session-lineage.d.ts +4 -0
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session.d.ts +6 -0
- package/dist/hooks/use-turn-queue.d.ts +12 -0
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +27 -5
- package/dist/human-input.d.ts +3 -1
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +60 -17
- package/dist/index.js +2238 -6201
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +35 -184
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-HTRIS4KJ.js +117 -0
- package/dist/latest-question-HTRIS4KJ.js.map +1 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +36 -2
- package/dist/lib/host-theme.d.ts +70 -0
- package/dist/lib/interaction-errors.d.ts +6 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.d.ts +4 -2
- package/dist/machines.js +14 -4
- package/dist/markdown-table-layout-QXSLK4BY.js +106 -0
- package/dist/markdown-table-layout-QXSLK4BY.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-policy-picker-menu-M54ISBMN.js +14 -0
- package/dist/model-policy-picker-menu-M54ISBMN.js.map +1 -0
- package/dist/model-policy.d.ts +19 -3
- package/dist/model-policy.js +9 -1
- package/dist/older-history.d.ts +30 -0
- package/dist/platform-activity-row-627BFZ46.js +182 -0
- package/dist/platform-activity-row-627BFZ46.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/provider.d.ts +13 -1
- package/dist/{queue-surface-implementation-2KVJTYXH.js → queue-surface-implementation-ZHFI5JBP.js} +131 -44
- package/dist/queue-surface-implementation-ZHFI5JBP.js.map +1 -0
- package/dist/realtime/realtime-control.d.ts +6 -3
- package/dist/realtime.js +133 -74
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-GORZOUUJ.js +20 -0
- package/dist/sandbox-files-GORZOUUJ.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +12 -0
- package/dist/session-ui.d.ts +30 -2
- package/dist/session-ui.js +85 -7
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +30 -19
- package/dist/sites-ui.d.ts +34 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +11 -0
- package/dist/sites.js.map +1 -0
- package/dist/skill-discovery.d.ts +47 -0
- package/dist/terminal.d.ts +8 -0
- package/dist/terminal.js +31 -0
- package/dist/terminal.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +10 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/genie-loading.d.ts +34 -0
- package/dist/timeline/index.d.ts +6 -2
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/platform-activity-row.d.ts +14 -0
- package/dist/timeline/presented-image.d.ts +6 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/registry.d.ts +2 -0
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +16 -1
- package/dist/timeline/shared.d.ts +8 -3
- package/dist/timeline/startup-preference.d.ts +3 -0
- package/dist/timeline/startup-timings.d.ts +4 -0
- package/dist/timeline/tool-display-name.d.ts +2 -1
- package/dist/timeline/turn-summary.d.ts +34 -3
- package/dist/timeline/types.d.ts +147 -7
- package/dist/timeline-annotation-markers-GNDHTGBD.js +165 -0
- package/dist/timeline-annotation-markers-GNDHTGBD.js.map +1 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js +241 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js.map +1 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js +273 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js.map +1 -0
- package/dist/types/machines.d.ts +2 -2
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +13 -0
- package/dist/usage.js +1074 -0
- package/dist/usage.js.map +1 -0
- package/package.json +44 -4
- package/src/accounts.tsx +1072 -0
- package/src/approvals.ts +8 -1
- package/src/artifacts.ts +42 -0
- package/src/assets/README.md +8 -0
- package/src/assets/gmail.ico +0 -0
- package/src/assets/outlook.ico +0 -0
- package/src/capability-catalog-row.tsx +94 -0
- package/src/capability-logo-fallback.ts +22 -0
- package/src/client.ts +22 -13
- package/src/commands/registry.ts +18 -15
- package/src/commands/types.ts +2 -0
- package/src/components/anthropic-mark.tsx +10 -0
- package/src/components/approval-surface.tsx +171 -37
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +185 -0
- package/src/components/artifacts/artifact-surface.tsx +39 -19
- package/src/components/artifacts/chat-interactive-block.tsx +260 -0
- package/src/components/artifacts/deferred-chat-media.tsx +67 -0
- package/src/components/artifacts/document-editor.tsx +141 -16
- package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
- package/src/components/artifacts/editable-artifact-view.tsx +187 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
- package/src/components/artifacts/editable-document.tsx +37 -36
- package/src/components/artifacts/editable-presentation.tsx +36 -18
- package/src/components/artifacts/editable-spreadsheet.tsx +5 -2
- package/src/components/artifacts/index.ts +44 -0
- package/src/components/artifacts/inline-html-document.ts +24 -0
- package/src/components/artifacts/latest-task-runner.ts +49 -0
- package/src/components/artifacts/presentation-editor.tsx +323 -67
- package/src/components/artifacts/published-html-artifact-frame.tsx +338 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +376 -0
- package/src/components/artifacts/site-view.tsx +116 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +12 -13
- package/src/components/artifacts/visualization-assets/base.css +1015 -0
- package/src/components/artifacts/visualization-assets/helpers.html +349 -0
- package/src/components/artifacts/visualization-assets.gen.ts +3 -0
- package/src/components/browser-select-control.tsx +312 -0
- package/src/components/browser-viewer.tsx +1054 -314
- package/src/components/chat-composer.tsx +131 -85
- package/src/components/child-session-link.tsx +27 -0
- package/src/components/claude-mark.tsx +10 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +7 -5
- package/src/components/composer.tsx +376 -49
- package/src/components/computer-viewer.tsx +1041 -329
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +65 -7
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +158 -34
- package/src/components/fleet-tile.tsx +8 -16
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +33 -0
- package/src/components/human-input-form.tsx +455 -114
- package/src/components/human-input-surface.tsx +18 -7
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/machine-card.tsx +119 -4
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +23 -2
- package/src/components/machines/machine-detail.tsx +52 -2
- package/src/components/machines/machine-operation-policy.tsx +179 -0
- package/src/components/machines-dashboard.tsx +8 -17
- package/src/components/markdown-table-layout.ts +132 -0
- package/src/components/markdown.tsx +473 -44
- package/src/components/message-timeline.tsx +2754 -665
- package/src/components/model-mark.tsx +90 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +424 -0
- package/src/components/model-policy-picker.tsx +337 -381
- package/src/components/open-geni-chat.tsx +338 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +36 -11
- package/src/components/preview-loading.tsx +154 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +132 -42
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/sandbox-files.tsx +267 -35
- package/src/components/sandbox-terminal.tsx +48 -11
- package/src/components/sandbox-workspace.tsx +337 -135
- package/src/components/session-capability-frame.tsx +192 -0
- package/src/components/session-chrome.tsx +1027 -328
- package/src/components/session-commands-panel.tsx +126 -0
- package/src/components/session-commands.tsx +18 -0
- package/src/components/session-connection-request.tsx +97 -0
- package/src/components/session-conversation.tsx +526 -0
- package/src/components/session-list.tsx +250 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +92 -0
- package/src/components/session-status.tsx +1 -1
- package/src/components/timeline-anchor.tsx +119 -0
- package/src/components/timeline-annotation-chrome.tsx +196 -0
- package/src/components/timeline-annotation-layout.ts +268 -0
- package/src/components/timeline-annotation-markers.tsx +185 -0
- package/src/components/timeline-annotation-reveal-context.ts +9 -0
- package/src/components/timeline-annotation-selection.tsx +106 -54
- package/src/components/timeline-annotation-shared.ts +245 -0
- package/src/components/timeline-annotations-dialog.tsx +185 -128
- package/src/components/timeline-annotations.tsx +189 -45
- package/src/components/timeline-reading-progress.ts +80 -0
- package/src/components/timeline-search.tsx +168 -0
- package/src/components/timeline-settlement.ts +60 -0
- package/src/components/tip-follow.ts +70 -7
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +194 -49
- package/src/components/workspace-dock.tsx +141 -175
- package/src/composer.ts +6 -1
- package/src/connect-account-identity.tsx +34 -0
- package/src/connect-accounts.tsx +233 -0
- package/src/connect-chooser.tsx +336 -0
- package/src/connect-panel.tsx +99 -0
- package/src/connect-setup.tsx +307 -0
- package/src/connect.ts +60 -0
- package/src/connection-assets.d.ts +4 -0
- package/src/connection-catalog.tsx +162 -0
- package/src/connection-discovery.tsx +235 -0
- package/src/connection-installed.tsx +51 -0
- package/src/connection-logo.tsx +37 -0
- package/src/connection-service-logo.tsx +55 -0
- package/src/connection-service-presentation.ts +46 -0
- package/src/connection-skeleton.tsx +16 -0
- package/src/connection-type-picker.tsx +36 -0
- package/src/conversation-timeline.ts +92 -0
- package/src/desktop.ts +24 -0
- package/src/device-authorization.tsx +98 -0
- package/src/diffs.ts +16 -0
- package/src/discovery-cache.ts +42 -0
- package/src/editor.ts +13 -0
- package/src/embedded-session-client.ts +104 -0
- package/src/file-node-visibility.ts +66 -0
- package/src/hooks/channel-cache.ts +104 -0
- package/src/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +239 -0
- package/src/hooks/use-attached-browsers.ts +5 -1
- package/src/hooks/use-available-models.ts +20 -14
- package/src/hooks/use-browser-frame-stream.ts +25 -3
- package/src/hooks/use-browser-session.ts +271 -71
- package/src/hooks/use-browser-sessions.ts +7 -1
- package/src/hooks/use-channels.ts +32 -10
- package/src/hooks/use-codex-accounts.ts +78 -21
- package/src/hooks/use-composer.ts +1034 -320
- package/src/hooks/use-computer-frame-stream.ts +39 -16
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +110 -32
- package/src/hooks/use-computer-sessions.ts +8 -1
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +118 -10
- package/src/hooks/use-goal.ts +36 -9
- package/src/hooks/use-human-input.ts +31 -4
- package/src/hooks/use-last-started-turn-policy.ts +15 -13
- package/src/hooks/use-machine-chip.ts +23 -6
- package/src/hooks/use-machines.ts +104 -6
- package/src/hooks/use-sandbox-files.ts +253 -150
- package/src/hooks/use-sandbox-git.ts +58 -29
- package/src/hooks/use-session-background-commands.ts +67 -0
- package/src/hooks/use-session-capabilities.ts +21 -2
- package/src/hooks/use-session-events.ts +759 -433
- package/src/hooks/use-session-lineage.ts +28 -6
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session.ts +75 -16
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-turn-queue.ts +113 -13
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-video-artifact-playback.ts +1 -1
- package/src/hooks/use-voice-input.ts +12 -1
- package/src/hooks/use-workspace-capture.ts +3 -2
- package/src/hooks/use-workspace-edit.ts +23 -5
- package/src/hooks/use-workspace-sessions.ts +99 -11
- package/src/human-input.ts +12 -1
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +157 -12
- package/src/interaction.ts +1 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +150 -14
- package/src/lib/host-theme.ts +511 -0
- package/src/lib/interaction-errors.ts +33 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/machines.ts +9 -1
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-policy.ts +223 -69
- package/src/older-history.ts +87 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/provider.tsx +55 -14
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/realtime-control.tsx +133 -46
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +83 -0
- package/src/session-context.ts +4 -3
- package/src/session-ui.ts +66 -2
- package/src/session.ts +18 -1
- package/src/sites-ui.tsx +402 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/timeline/activity-rail.tsx +171 -80
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +42 -0
- package/src/timeline/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/genie-loading.tsx +136 -0
- package/src/timeline/index.ts +11 -0
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/parsers.ts +2 -2
- package/src/timeline/platform-activity-row.tsx +216 -0
- package/src/timeline/presented-image.ts +49 -0
- package/src/timeline/projection.ts +1609 -84
- package/src/timeline/registry.ts +15 -3
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/rolling-activity.tsx +92 -0
- package/src/timeline/screenshot-lightbox.tsx +115 -17
- package/src/timeline/shared.tsx +47 -15
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +8 -6
- package/src/timeline/tool-renderers.tsx +497 -128
- package/src/timeline/turn-summary.tsx +218 -44
- package/src/timeline/types.ts +192 -7
- package/src/types/machines.ts +10 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +50 -0
- package/styles/compiled.css +2098 -757
- package/styles/connect.css +284 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +201 -9
- package/styles/responsive.css +27 -1
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +135 -65
- package/dist/chunk-5UQPNLIO.js.map +0 -1
- package/dist/chunk-6KLX2RH5.js.map +0 -1
- package/dist/chunk-7WCLAEFV.js.map +0 -1
- package/dist/chunk-B6WPZSTT.js.map +0 -1
- package/dist/chunk-FK6VG4LL.js +0 -90
- package/dist/chunk-FK6VG4LL.js.map +0 -1
- package/dist/chunk-HA46CYQK.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-IGC6A2ZI.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-LLOLUHVG.js.map +0 -1
- package/dist/chunk-MKPIAGVL.js +0 -465
- package/dist/chunk-MKPIAGVL.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-R3AZOAB5.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-XBZWOM2K.js +0 -218
- package/dist/chunk-XBZWOM2K.js.map +0 -1
- package/dist/chunk-Y7OEDUJ5.js +0 -8810
- package/dist/chunk-Y7OEDUJ5.js.map +0 -1
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/interactive-workbench-viewers-TOHBXJEE.js +0 -15
- package/dist/queue-surface-implementation-2KVJTYXH.js.map +0 -1
- package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
- package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{interactive-workbench-viewers-TOHBXJEE.js.map → browser-viewer-SHYKQRNX.js.map} +0 -0
package/dist/diffs.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerPierreDiffs
|
|
3
|
+
} from "./chunk-A2PI6UMY.js";
|
|
4
|
+
|
|
5
|
+
// src/diffs.ts
|
|
6
|
+
function enablePierreDiffs() {
|
|
7
|
+
registerPierreDiffs(loadPierreDiffsModule);
|
|
8
|
+
}
|
|
9
|
+
var loadPierreDiffsModule = () => import("@pierre/diffs/react");
|
|
10
|
+
export {
|
|
11
|
+
enablePierreDiffs,
|
|
12
|
+
registerPierreDiffs
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=diffs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/diffs.ts"],"sourcesContent":["import { registerPierreDiffs } from \"./lib/pierre-diffs-loader\";\n\nexport { registerPierreDiffs, type PierreDiffsLoader } from \"./lib/pierre-diffs-loader\";\n\n/**\n * Enable Shiki-highlighted diffs and file views from the optional\n * `@pierre/diffs` peer. Call once at startup, only when the host installs it.\n * This is the only module in the package that names the peer, so hosts that\n * skip it build without `@pierre/diffs` and render plain-text diffs.\n */\nexport function enablePierreDiffs(): void {\n registerPierreDiffs(loadPierreDiffsModule);\n}\n\n// One stable loader identity, so repeated enable calls are no-ops.\nconst loadPierreDiffsModule = () => import(\"@pierre/diffs/react\");\n"],"mappings":";;;;;AAUO,SAAS,oBAA0B;AACxC,sBAAoB,qBAAqB;AAC3C;AAGA,IAAM,wBAAwB,MAAM,OAAO,qBAAqB;","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Short-lived presentation data only. Never cache installation or authorization state. */
|
|
2
|
+
export declare function createDiscoveryCache<T>(ttlMs?: number, capacity?: number): {
|
|
3
|
+
peek(client: object, key: string): T | undefined;
|
|
4
|
+
read(client: object, key: string, fetch: () => Promise<T>): Promise<T>;
|
|
5
|
+
};
|
package/dist/editor.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CodeEditorLanguages } from "./lib/workbench-peers.js";
|
|
2
|
+
export { CodeEditor, languageForPath } from "./components/code-editor.js";
|
|
3
|
+
export type { CodeEditorProps } from "./components/code-editor.js";
|
|
4
|
+
export { registerCodeEditor } from "./lib/workbench-peers.js";
|
|
5
|
+
export type { CodeEditorLanguage, CodeEditorLanguages } from "./lib/workbench-peers.js";
|
|
6
|
+
/** Only name installed grammar peers in host-supplied language loaders. */
|
|
7
|
+
export declare function enableCodeEditor(languages?: CodeEditorLanguages): void;
|
package/dist/editor.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CodeEditor,
|
|
3
|
+
languageForPath
|
|
4
|
+
} from "./chunk-4RVYOY4O.js";
|
|
5
|
+
import {
|
|
6
|
+
registerCodeEditor
|
|
7
|
+
} from "./chunk-JT4JW7BC.js";
|
|
8
|
+
import "./chunk-22KP6LR5.js";
|
|
9
|
+
|
|
10
|
+
// src/editor.ts
|
|
11
|
+
var loadEditor = async () => ({ module: await import("@uiw/react-codemirror") });
|
|
12
|
+
function enableCodeEditor(languages) {
|
|
13
|
+
registerCodeEditor(languages ? async () => ({ ...await loadEditor(), languages }) : loadEditor);
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
CodeEditor,
|
|
17
|
+
enableCodeEditor,
|
|
18
|
+
languageForPath,
|
|
19
|
+
registerCodeEditor
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/editor.ts"],"sourcesContent":["import { registerCodeEditor, type CodeEditorLanguages } from \"./lib/workbench-peers\";\n\nexport { CodeEditor, languageForPath } from \"./components/code-editor\";\nexport type { CodeEditorProps } from \"./components/code-editor\";\nexport { registerCodeEditor } from \"./lib/workbench-peers\";\nexport type { CodeEditorLanguage, CodeEditorLanguages } from \"./lib/workbench-peers\";\n\nconst loadEditor = async () => ({ module: await import(\"@uiw/react-codemirror\") });\n\n/** Only name installed grammar peers in host-supplied language loaders. */\nexport function enableCodeEditor(languages?: CodeEditorLanguages): void {\n registerCodeEditor(languages ? async () => ({ ...(await loadEditor()), languages }) : loadEditor);\n}\n"],"mappings":";;;;;;;;;;AAOA,IAAM,aAAa,aAAa,EAAE,QAAQ,MAAM,OAAO,uBAAuB,EAAE;AAGzE,SAAS,iBAAiB,WAAuC;AACtE,qBAAmB,YAAY,aAAa,EAAE,GAAI,MAAM,WAAW,GAAI,UAAU,KAAK,UAAU;AAClG;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ComposerDraft } from "@opengeni/sdk";
|
|
2
|
+
import type { EmbeddedSessionClientLike } from "./client.js";
|
|
3
|
+
export type ComposerDraftMapContext = {
|
|
4
|
+
operation: "read" | "save" | "submit";
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
};
|
|
8
|
+
export type CreateEmbeddedSessionClientOptions = {
|
|
9
|
+
/**
|
|
10
|
+
* Explicit host-owned method replacements. Methods inherited from `base`
|
|
11
|
+
* retain `base` as their receiver; overrides retain this object as theirs.
|
|
12
|
+
*/
|
|
13
|
+
overrides?: Partial<EmbeddedSessionClientLike> | undefined;
|
|
14
|
+
/** Presentation/policy projection for every draft entering the React layer. */
|
|
15
|
+
mapComposerDraft?: ((draft: ComposerDraft, context: ComposerDraftMapContext) => ComposerDraft) | undefined;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Build the exact client required by `@opengeni/react/session` from a full SDK
|
|
19
|
+
* client or host proxy. The constructor binds every delegated method once,
|
|
20
|
+
* supports a host-owned atomic composer-submit override, and fails at creation
|
|
21
|
+
* time instead of waiting for a missing method to be exercised by a hook.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createEmbeddedSessionClient(base: EmbeddedSessionClientLike, options?: CreateEmbeddedSessionClientOptions): EmbeddedSessionClientLike;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FileTreeNode } from "./hooks/use-sandbox-files.js";
|
|
2
|
+
export type FileNodeVisibilityContext = {
|
|
3
|
+
depth: number;
|
|
4
|
+
parent: FileTreeNode | null;
|
|
5
|
+
};
|
|
6
|
+
/** Presentation-only predicate. It never changes filesystem authorization. */
|
|
7
|
+
export type FileNodeVisibilityPredicate = (node: FileTreeNode, context: FileNodeVisibilityContext) => boolean;
|
|
8
|
+
export type FilePathVisibility = "visible" | "hidden" | "unknown";
|
|
9
|
+
/**
|
|
10
|
+
* Filter an authoritative tree without promoting children of a hidden parent.
|
|
11
|
+
* Undefined children stay undefined so lazy-loading semantics are preserved.
|
|
12
|
+
*/
|
|
13
|
+
export declare function visibleFileTree(nodes: FileTreeNode[], predicate?: FileNodeVisibilityPredicate, parent?: FileTreeNode | null, depth?: number): FileTreeNode[];
|
|
14
|
+
/** Resolve only what the currently loaded tree can prove. */
|
|
15
|
+
export declare function filePathVisibility(nodes: FileTreeNode[], path: string, predicate?: FileNodeVisibilityPredicate, parent?: FileTreeNode | null, depth?: number): FilePathVisibility;
|
|
@@ -23,6 +23,7 @@ var FLEET_ACTUAL_REASON_LABEL = {
|
|
|
23
23
|
rotation: "Rotated for capacity",
|
|
24
24
|
active: "Used the active subscription",
|
|
25
25
|
all_capped: "All observed subscriptions were capped",
|
|
26
|
+
allocator_disabled: "The policy-selected subscription was disabled for new allocations",
|
|
26
27
|
none: "No production candidate was selected"
|
|
27
28
|
};
|
|
28
29
|
var FLEET_SHADOW_REASON_LABEL = {
|
|
@@ -348,4 +349,4 @@ function formatFleetScore(value) {
|
|
|
348
349
|
export {
|
|
349
350
|
FleetDecisionRow as default
|
|
350
351
|
};
|
|
351
|
-
//# sourceMappingURL=fleet-decision-row-
|
|
352
|
+
//# sourceMappingURL=fleet-decision-row-YZ3ZKWMM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline/fleet-decision-row.tsx"],"sourcesContent":["import type { FleetDecisionItem } from \"./types\";\n\ntype RowJsx = typeof import(\"react/jsx-runtime\").jsx;\ntype RowJsxs = typeof import(\"react/jsx-runtime\").jsxs;\n\nfunction GaugeMark({ className, j, s }: { className: string; j: RowJsx; s: RowJsxs }) {\n return s(\"svg\", {\n \"aria-hidden\": \"true\",\n className,\n fill: \"none\",\n height: \"24\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"2\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n children: [\n j(\"path\", { d: \"m 12 14 4-4\" }, \"needle\"),\n j(\"path\", { d: \"M3.34 19a10 10 0 1 1 17.32 0\" }, \"arc\"),\n ],\n });\n}\n\nconst FLEET_ACTUAL_REASON_LABEL: Record<FleetDecisionItem[\"actualReason\"], string> = {\n lease_reused: \"Reused the fenced lease\",\n pin: \"Kept the session pin\",\n rotation: \"Rotated for capacity\",\n active: \"Used the active subscription\",\n all_capped: \"All observed subscriptions were capped\",\n allocator_disabled: \"The policy-selected subscription was disabled for new allocations\",\n none: \"No production candidate was selected\",\n};\n\nconst FLEET_SHADOW_REASON_LABEL: Record<FleetDecisionItem[\"shadowReason\"], string> = {\n fenced_in_flight: \"Kept the fenced in-flight assignment\",\n fenced_candidate_missing: \"The fenced assignment was missing from the snapshot\",\n admission_paced: \"Admission would have been paced\",\n no_eligible_candidate: \"No candidate passed the policy checks\",\n overlay_isolated_empty: \"Explicit isolation left no eligible candidate\",\n best_score: \"Selected the lowest-pressure candidate\",\n affinity_best: \"Session affinity was already best\",\n hysteresis_hold: \"Hysteresis avoided a low-value switch\",\n};\n\nconst FLEET_COMPARISON_LABEL: Record<FleetDecisionItem[\"comparison\"], string> = {\n match: \"Production and shadow matched\",\n different_candidate: \"Shadow preferred another candidate\",\n different_outcome: \"Production and shadow outcomes differed\",\n not_comparable_truncated: \"Comparison limited by bounded candidate data\",\n};\n\nconst FLEET_ADMISSION_REASON_LABEL: Record<FleetDecisionItem[\"admissionReason\"], string> = {\n fenced_in_flight: \"In-flight assignment was fenced\",\n pacing_disabled: \"Admission pacing was disabled\",\n capacity_unknown: \"Capacity was unknown, so work remained admissible\",\n capacity_available: \"Observed capacity was available\",\n work_conserving_borrow: \"Idle capacity was borrowed for standard work\",\n manager_priority: \"Standard work was paced for queued manager demand\",\n standard_starvation_bound: \"The standard-work starvation bound was reached\",\n capacity_saturated: \"Observed dynamic capacity was saturated\",\n emergency_fuse: \"The emergency fuse blocked new work\",\n};\n\nconst FLEET_REJECTION_LABEL: Record<\n Exclude<FleetDecisionItem[\"scores\"][number][\"rejectionReason\"], null>,\n string\n> = {\n allocator_disabled: \"Allocator disabled\",\n unavailable: \"Unavailable\",\n cooling: \"Cooling down\",\n quota_ceiling: \"Quota ceiling reached\",\n overlay_isolation: \"Outside explicit isolation\",\n};\n\nconst FLEET_CONFIDENCE_LABEL: Record<FleetDecisionItem[\"confidence\"], string> = {\n unknown: \"Unknown confidence\",\n low: \"Low confidence\",\n medium: \"Medium confidence\",\n high: \"High confidence\",\n};\n\nexport default function FleetDecisionRow({\n item,\n d: ActivityDisclosure,\n b: BodyNote,\n j,\n s,\n}: {\n item: FleetDecisionItem;\n d: typeof import(\"./shared\").ActivityDisclosure;\n b: typeof import(\"./shared\").BodyNote;\n j: RowJsx;\n s: RowJsxs;\n}) {\n const scoreRowsHidden = item.scoreRowsTruncatedCount > 0;\n const scores =\n item.scores.length > 0\n ? j(\n \"div\",\n {\n className: \"min-w-0\",\n children: [\n j(\n \"h4\",\n {\n className: \"text-og-sm font-medium text-og-fg\",\n children: \"Bounded candidate scores\",\n },\n \"heading\",\n ),\n j(\n \"p\",\n {\n className: \"mt-0.5 text-og-xs leading-5 text-og-fg-subtle\",\n children:\n \"Lower scores rank first. Candidate aliases are temporary and local to this event.\",\n },\n \"description\",\n ),\n j(\n \"ul\",\n {\n className: \"mt-2 flex min-w-0 flex-col gap-1.5\",\n \"aria-label\": \"Candidate scores\",\n children: item.scores.map((score) =>\n s(\n \"li\",\n {\n className:\n \"flex min-w-0 flex-col gap-1 rounded-og-sm bg-og-surface-1 px-2.5 py-2 text-og-sm sm:flex-row sm:items-center sm:gap-3\",\n children: [\n j(\n \"span\",\n {\n className: \"font-og-mono text-og-fg\",\n children: score.candidateKey,\n },\n \"candidate\",\n ),\n j(\n \"span\",\n {\n className: \"min-w-0 text-og-fg-muted sm:flex-1\",\n children: score.eligible\n ? \"Eligible\"\n : score.rejectionReason\n ? FLEET_REJECTION_LABEL[score.rejectionReason]\n : \"Unavailable\",\n },\n \"eligibility\",\n ),\n s(\n \"span\",\n {\n className: \"font-og-mono text-og-fg-subtle\",\n children: [\n \"score \",\n formatFleetScore(score.total),\n \" ·\",\n \" \",\n FLEET_CONFIDENCE_LABEL[score.confidence],\n ],\n },\n \"score\",\n ),\n ],\n },\n score.candidateKey,\n ),\n ),\n },\n \"rows\",\n ),\n ],\n },\n \"score-list\",\n )\n : null;\n const truncated =\n item.truncatedCandidateCount > 0\n ? j(\n BodyNote,\n {\n tone: \"muted\",\n children: [\n item.truncatedCandidateCount,\n \" additional \",\n item.truncatedCandidateCount === 1 ? \"candidate was\" : \"candidates were\",\n \" excluded from this bounded replay record.\",\n ],\n },\n \"truncated\",\n )\n : null;\n const hidden = scoreRowsHidden\n ? j(\n BodyNote,\n {\n tone: \"muted\",\n children: [\n item.scoreRowsTruncatedCount,\n \" additional \",\n item.scoreRowsTruncatedCount === 1 ? \"score row was\" : \"score rows were\",\n \" hidden by this view’s safety limit.\",\n ],\n },\n \"hidden\",\n )\n : null;\n return j(ActivityDisclosure, {\n icon: j(GaugeMark, { className: \"size-3.5\", j, s }),\n iconTone: \"muted\",\n title: \"Fleet policy shadow\",\n preview: FLEET_COMPARISON_LABEL[item.comparison],\n chip: {\n tone: \"muted\",\n text:\n item.comparison === \"match\"\n ? \"matched\"\n : item.comparison === \"not_comparable_truncated\"\n ? \"limited\"\n : \"different\",\n },\n children: s(\"section\", {\n \"aria-label\": \"Fleet policy shadow details\",\n className: \"flex min-w-0 flex-col gap-3\",\n children: [\n j(\n BodyNote,\n {\n tone: \"muted\",\n children:\n \"Shadow observation only — it did not change the subscription serving this turn.\",\n },\n \"observation\",\n ),\n j(\n \"dl\",\n {\n className: \"grid min-w-0 grid-cols-1 gap-x-5 gap-y-3 sm:grid-cols-2\",\n children: [\n j(\n FleetDetail,\n {\n term: \"Production\",\n value: fleetOutcomeLabel(item.actualOutcome, item.actualCandidateKey),\n note: FLEET_ACTUAL_REASON_LABEL[item.actualReason],\n j,\n s,\n },\n \"production\",\n ),\n j(\n FleetDetail,\n {\n term: \"Shadow policy\",\n value: fleetOutcomeLabel(item.shadowOutcome, item.shadowCandidateKey),\n note: FLEET_SHADOW_REASON_LABEL[item.shadowReason],\n j,\n s,\n },\n \"shadow\",\n ),\n j(\n FleetDetail,\n {\n term: \"Comparison\",\n value: FLEET_COMPARISON_LABEL[item.comparison],\n j,\n s,\n },\n \"comparison\",\n ),\n j(\n FleetDetail,\n {\n term: \"Decision confidence\",\n value: FLEET_CONFIDENCE_LABEL[item.confidence],\n j,\n s,\n },\n \"confidence\",\n ),\n j(\n FleetDetail,\n {\n term: \"Admission\",\n value:\n item.admissionOutcome === \"admit\"\n ? \"Would admit new work\"\n : \"Would pace new work\",\n note: FLEET_ADMISSION_REASON_LABEL[item.admissionReason],\n j,\n s,\n },\n \"admission\",\n ),\n j(\n FleetDetail,\n {\n term: \"Observed candidates\",\n value: `${item.candidateCount} in the bounded replay`,\n j,\n s,\n },\n \"candidate-count\",\n ),\n j(\n FleetDetail,\n {\n term: \"Idle-capacity borrowing\",\n value: item.borrowedIdleCapacity ? \"Borrowed for standard work\" : \"Not borrowed\",\n j,\n s,\n },\n \"idle-capacity\",\n ),\n j(\n FleetDetail,\n {\n term: \"Named-policy borrowing\",\n value: item.borrowedOverlayCapacity\n ? \"Borrowed outside the preferred group\"\n : \"Not borrowed\",\n j,\n s,\n },\n \"named-policy\",\n ),\n j(\n FleetDetail,\n {\n term: \"Stranded capacity\",\n value:\n item.strandedEligibleCount === 0\n ? \"None\"\n : `${item.strandedEligibleCount} eligible ${item.strandedEligibleCount === 1 ? \"candidate\" : \"candidates\"}`,\n note:\n item.strandedEligibleCount > 0\n ? \"Capacity excluded by explicit isolation; existing fenced turns are unchanged.\"\n : undefined,\n j,\n s,\n },\n \"stranded-capacity\",\n ),\n ],\n },\n \"details\",\n ),\n scores,\n truncated,\n hidden,\n ],\n }),\n });\n}\n\nfunction FleetDetail({\n term,\n value,\n note,\n j,\n s,\n}: {\n term: string;\n value: string;\n note?: string | undefined;\n j: RowJsx;\n s: RowJsxs;\n}) {\n return j(\"div\", {\n className: \"min-w-0\",\n children: [\n j(\n \"dt\",\n {\n className: \"text-og-xs font-medium uppercase tracking-wide text-og-fg-subtle\",\n children: term,\n },\n \"term\",\n ),\n s(\n \"dd\",\n {\n className: \"mt-0.5 break-words text-og-sm text-og-fg-muted\",\n children: [\n j(\"span\", { className: \"text-og-fg\", children: value }, \"value\"),\n note\n ? j(\"span\", { className: \"mt-0.5 block leading-5\", children: note }, \"note\")\n : null,\n ],\n },\n \"description\",\n ),\n ],\n });\n}\n\nfunction fleetOutcomeLabel(\n outcome: FleetDecisionItem[\"actualOutcome\"] | FleetDecisionItem[\"shadowOutcome\"],\n candidateKey: string | null,\n): string {\n if (outcome === \"selected\" && candidateKey) return `Selected ${candidateKey}`;\n if (outcome === \"waiting\") return \"Waiting for capacity\";\n if (outcome === \"paced\") return \"Paced before placement\";\n return \"No candidate selected\";\n}\n\nfunction formatFleetScore(value: number): string {\n return new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 2 }).format(value);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Channel } from "@opengeni/sdk";
|
|
2
|
+
import type { SessionClientLike } from "../client.js";
|
|
3
|
+
export type ChannelCacheSnapshot = Readonly<{
|
|
4
|
+
channels: readonly Channel[];
|
|
5
|
+
ready: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
export type ChannelCacheStore = Readonly<{
|
|
8
|
+
getSnapshot: () => ChannelCacheSnapshot;
|
|
9
|
+
subscribe: (listener: () => void) => () => void;
|
|
10
|
+
beginLoad: () => number;
|
|
11
|
+
acceptLoad: (ticket: number, channels: readonly Channel[]) => void;
|
|
12
|
+
publishCreated: (channel: Channel) => void;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* One client/workspace cache shared by every useChannels consumer.
|
|
16
|
+
*
|
|
17
|
+
* List reads are ticketed so an older request cannot erase a newer result.
|
|
18
|
+
* A successful create remains layered over the latest server snapshot until a
|
|
19
|
+
* list request that started after that success reconciles it. Requests already
|
|
20
|
+
* in flight cannot make the project disappear between create and session start.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createChannelCacheStore(): ChannelCacheStore;
|
|
23
|
+
export declare function channelCacheFor(client: SessionClientLike, workspaceId: string): ChannelCacheStore;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type SessionEvent, type SessionTurn } from "@opengeni/sdk";
|
|
2
|
+
import type { EmbeddedSessionClientLike } from "../client.js";
|
|
3
|
+
export type LatestQuestionOptions = {
|
|
4
|
+
/** Check navigation.isCurrent() after awaits and immediately before UI effects. */
|
|
5
|
+
onQueuedQuestion?: (turn: SessionTurn, navigation: {
|
|
6
|
+
isCurrent: () => boolean;
|
|
7
|
+
}) => void | Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
/** Include every canonical execution fallback, not just turn.started. Derive
|
|
10
|
+
* this optional navigation index only when the user requests Latest question. */
|
|
11
|
+
export declare const TIMELINE_TURN_ANCHOR_EVENT_TYPES: ("agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.selection.changed" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "instruction.confirmation.recovered" | "knowledge.confirmation.recovered" | "knowledge.source.failed" | "knowledge.source.prepared" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.agent.updated" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.model_settings.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.dispatch.expired" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "usage.exhausted" | "usage.period_reset" | "usage.threshold_reached" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded")[];
|
|
12
|
+
/** Resolve an optional navigation destination without owning the hook's window
|
|
13
|
+
* or React state. The caller guards errors and applies only a current result. */
|
|
14
|
+
export declare function resolveLatestQuestion({ client, workspaceId, sessionId, isCurrent, resumeSequence, options, }: {
|
|
15
|
+
client: EmbeddedSessionClientLike;
|
|
16
|
+
workspaceId: string;
|
|
17
|
+
sessionId: string;
|
|
18
|
+
isCurrent: () => boolean;
|
|
19
|
+
resumeSequence: (events: readonly SessionEvent[]) => number;
|
|
20
|
+
options?: LatestQuestionOptions | undefined;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
questionSequence: number;
|
|
23
|
+
anchor: number;
|
|
24
|
+
events: SessionEvent[];
|
|
25
|
+
} | null>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MachinesResponse } from "../types/machines.js";
|
|
2
|
+
export declare const EMPTY_MACHINES: MachinesResponse;
|
|
3
|
+
export type SharedMachinesSnapshot = {
|
|
4
|
+
data: MachinesResponse | null;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
error: Error | null;
|
|
7
|
+
};
|
|
8
|
+
export declare function refreshSharedMachinesList(shareKey: string): Promise<void>;
|
|
9
|
+
export declare function useSharedMachinesList(shareKey: string, load: (signal?: AbortSignal) => Promise<MachinesResponse>, options?: {
|
|
10
|
+
pollIntervalMs?: number | undefined;
|
|
11
|
+
enabled?: boolean | undefined;
|
|
12
|
+
}): SharedMachinesSnapshot & {
|
|
13
|
+
refresh: () => Promise<void>;
|
|
14
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AttachedBrowserDevice } from "@opengeni/sdk/interaction";
|
|
1
|
+
import type { AttachedBrowserBridge, AttachedBrowserDevice } from "@opengeni/sdk/interaction";
|
|
2
2
|
import type { EmbeddedBrowserInteractionClientLike } from "../client.js";
|
|
3
3
|
import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
|
|
4
4
|
export type UseAttachedBrowsersOptions = EmbeddedBrowserInteractionClientOverride & {
|
|
@@ -8,6 +8,7 @@ export type UseAttachedBrowsersOptions = EmbeddedBrowserInteractionClientOverrid
|
|
|
8
8
|
};
|
|
9
9
|
export type UseAttachedBrowsersResult = {
|
|
10
10
|
revision: number;
|
|
11
|
+
bridges: AttachedBrowserBridge[];
|
|
11
12
|
devices: AttachedBrowserDevice[];
|
|
12
13
|
loading: boolean;
|
|
13
14
|
refreshing: boolean;
|
|
@@ -15,7 +15,7 @@ export type UseBrowserFrameStreamOptions = EmbeddedBrowserInteractionClientOverr
|
|
|
15
15
|
export type UseBrowserFrameStreamResult = {
|
|
16
16
|
state: BrowserFrameConnectionState;
|
|
17
17
|
frame: BrowserFrame | null;
|
|
18
|
-
attachment: Pick<BrowserSessionAttachment, "browserSessionId" | "controllerGeneration" | "targetId" | "expiresAt"> | null;
|
|
18
|
+
attachment: Pick<BrowserSessionAttachment, "browserSessionId" | "controllerGeneration" | "targetId" | "expiresAt" | "fencedInputBatches" | "focusedInputObservations"> | null;
|
|
19
19
|
error: Error | null;
|
|
20
20
|
reconnect: () => void;
|
|
21
21
|
};
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { BrowserAction, BrowserActionBatch, BrowserActionReceipt, BrowserClipboard, BrowserDiagnosticBatch, BrowserDiagnosticsOptions, BrowserFrame, BrowserObservation, BrowserSession, BrowserTarget } from "@opengeni/sdk/interaction";
|
|
2
2
|
import { type EmbeddedBrowserInteractionClientOverride } from "../session-context.js";
|
|
3
|
+
/** Immutable input fence; queued actions never need the encoded screenshot. */
|
|
4
|
+
export type BrowserFrameInputFence = Pick<BrowserFrame, "browserSessionId" | "controllerGeneration" | "targetId" | "targetGeneration" | "documentGeneration" | "frameId">;
|
|
5
|
+
export type BrowserInputFailure = Pick<BrowserActionReceipt, "operationId" | "error"> & {
|
|
6
|
+
state: Exclude<BrowserActionReceipt["state"], "completed">;
|
|
7
|
+
};
|
|
3
8
|
export type UseBrowserSessionOptions = EmbeddedBrowserInteractionClientOverride & {
|
|
4
9
|
browserSessionId: string | null;
|
|
5
10
|
enabled?: boolean | undefined;
|
|
6
11
|
pollIntervalMs?: number | undefined;
|
|
12
|
+
/** Keep session/tab inventory current without repeatedly fetching the full
|
|
13
|
+
* accessibility tree while a live frame is available or the viewer is hidden. */
|
|
14
|
+
semanticObservationEnabled?: boolean | undefined;
|
|
7
15
|
};
|
|
8
16
|
export type UseBrowserSessionResult = {
|
|
9
17
|
session: BrowserSession | null;
|
|
@@ -13,14 +21,17 @@ export type UseBrowserSessionResult = {
|
|
|
13
21
|
loading: boolean;
|
|
14
22
|
mutating: boolean;
|
|
15
23
|
error: Error | null;
|
|
24
|
+
inputFailure: BrowserInputFailure | null;
|
|
16
25
|
refresh: () => Promise<void>;
|
|
26
|
+
observeForInput: () => Promise<BrowserObservation>;
|
|
27
|
+
actFromObservation: (action: BrowserAction, observation: BrowserObservation) => Promise<BrowserActionReceipt>;
|
|
17
28
|
selectTarget: (targetId: string) => Promise<BrowserTarget>;
|
|
18
29
|
openTarget: (url?: string) => Promise<BrowserTarget>;
|
|
19
30
|
closeTarget: (targetId: string) => Promise<void>;
|
|
20
31
|
act: (action: BrowserAction | BrowserActionBatch, operationId?: string) => Promise<BrowserActionReceipt>;
|
|
21
32
|
/** Dispatch input against the exact image a human saw. Stale images fail at
|
|
22
33
|
* the controller fence instead of targeting a newer page. */
|
|
23
|
-
actFromFrame: (action: BrowserAction | BrowserActionBatch, frame:
|
|
34
|
+
actFromFrame: (action: BrowserAction | BrowserActionBatch, frame: BrowserFrameInputFence, operationId?: string, observationMode?: "none" | "input") => Promise<BrowserActionReceipt>;
|
|
24
35
|
readClipboard: () => Promise<BrowserClipboard>;
|
|
25
36
|
diagnostics: (options?: BrowserDiagnosticsOptions) => Promise<BrowserDiagnosticBatch>;
|
|
26
37
|
};
|
|
@@ -11,6 +11,7 @@ export type UseChannelsResult = {
|
|
|
11
11
|
refresh: () => Promise<void>;
|
|
12
12
|
create: (request: CreateChannelRequest) => Promise<Channel | null>;
|
|
13
13
|
update: (channelId: string, request: UpdateChannelRequest) => Promise<Channel | null>;
|
|
14
|
+
reorder: (channelIds: string[]) => Promise<Channel[] | null>;
|
|
14
15
|
remove: (channelId: string) => Promise<boolean>;
|
|
15
16
|
/** Re-file a session into a channel; null moves it back to the inbox. */
|
|
16
17
|
moveSession: (sessionId: string, channelId: string | null) => Promise<Session | null>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CodexAccount, CodexAccountsResponse, CodexRotationSettings, SessionEvent } from "@opengeni/sdk";
|
|
1
|
+
import type { CodexAccount, CodexAccountsResponse, CodexRotationSettings, CodexUsageMap, SessionCodexAccountsResponse, SessionEvent } from "@opengeni/sdk";
|
|
2
2
|
import { type ClientOverride } from "../provider.js";
|
|
3
3
|
import { type SessionEventFeedOptions } from "./internal.js";
|
|
4
4
|
/** Events that change which Codex account a session runs on (or just ran). */
|
|
@@ -7,21 +7,29 @@ export declare function isCodexAccountEvent(event: Pick<SessionEvent, "type">):
|
|
|
7
7
|
* The structural slice of the SDK client the Codex-accounts surface needs. Method
|
|
8
8
|
* NAMES + SIGNATURES match `OpenGeniClient` so the real client satisfies it
|
|
9
9
|
* directly; declared structurally (not a hard Pick) so a test/Geni client can
|
|
10
|
-
* stand in. `
|
|
10
|
+
* stand in. `listSessionCodexAccounts` reads the accepted selection and choices
|
|
11
|
+
* atomically; `pinSessionCodexAccount`
|
|
11
12
|
* is the optional mutation (absent ⇒ the indicator hides the switch affordance).
|
|
12
13
|
*/
|
|
13
14
|
export type CodexAccountsClientLike = {
|
|
14
15
|
listCodexAccounts: (workspaceId: string) => Promise<CodexAccountsResponse>;
|
|
16
|
+
/** Required for session-scoped use; never fall back to another pool. */
|
|
17
|
+
listSessionCodexAccounts?: (workspaceId: string, sessionId: string) => Promise<SessionCodexAccountsResponse>;
|
|
15
18
|
getSession?: (workspaceId: string, sessionId: string) => Promise<{
|
|
16
19
|
codexPinnedCredentialId?: string | null;
|
|
17
20
|
codexLastCredentialId?: string | null;
|
|
21
|
+
codexCurrentSelection?: {
|
|
22
|
+
credentialId: string | null;
|
|
23
|
+
waiting: boolean;
|
|
24
|
+
} | null;
|
|
18
25
|
}>;
|
|
19
26
|
pinSessionCodexAccount?: (workspaceId: string, sessionId: string, target: string) => Promise<{
|
|
20
27
|
pinned: string;
|
|
28
|
+
appliedTo?: "waiting_turn" | "next_turn";
|
|
21
29
|
}>;
|
|
22
30
|
/** Optional (absent ⇒ the card hides live refresh): batched live /wham/usage refresh. */
|
|
23
31
|
refreshCodexUsage?: (workspaceId: string) => Promise<{
|
|
24
|
-
usage:
|
|
32
|
+
usage: CodexUsageMap;
|
|
25
33
|
}>;
|
|
26
34
|
};
|
|
27
35
|
export type UseCodexAccountsOptions = ClientOverride & SessionEventFeedOptions & {
|
|
@@ -33,16 +41,24 @@ export type UseCodexAccountsOptions = ClientOverride & SessionEventFeedOptions &
|
|
|
33
41
|
};
|
|
34
42
|
export type UseCodexAccountsResult = {
|
|
35
43
|
accounts: CodexAccount[];
|
|
36
|
-
/** The
|
|
44
|
+
/** The ACTIVE account for the retry pool, or current workspace pool for new work. */
|
|
37
45
|
activeAccountId: string | null;
|
|
38
46
|
/** The session's PINNED account (null ⇒ following workspace active). */
|
|
39
47
|
pinnedAccountId: string | null;
|
|
40
|
-
/**
|
|
48
|
+
/** Current preference only; automatic allocation can choose another account. */
|
|
41
49
|
effectiveAccountId: string | null;
|
|
50
|
+
currentSelection: {
|
|
51
|
+
credentialId: string | null;
|
|
52
|
+
waiting: boolean;
|
|
53
|
+
} | null;
|
|
54
|
+
/** The accepted account can differ from the choices for the next turn. */
|
|
55
|
+
currentAccount: CodexAccount | null;
|
|
56
|
+
switchAppliedTo: "waiting_turn" | "next_turn" | null;
|
|
42
57
|
/** The account the session's last turn ACTUALLY ran on (the "Running on:" source). */
|
|
43
58
|
lastAccountId: string | null;
|
|
44
59
|
settings: CodexRotationSettings;
|
|
45
60
|
loading: boolean;
|
|
61
|
+
error: Error | null;
|
|
46
62
|
refresh: () => Promise<void>;
|
|
47
63
|
/**
|
|
48
64
|
* Trigger a LIVE batched /wham/usage refresh across all accounts, then re-read
|
|
@@ -50,6 +66,8 @@ export type UseCodexAccountsResult = {
|
|
|
50
66
|
* No-op (resolves false) when the client can't refresh usage.
|
|
51
67
|
*/
|
|
52
68
|
refreshUsage: () => Promise<boolean>;
|
|
69
|
+
/** Live provider readings override stale cached labels after refreshUsage. */
|
|
70
|
+
liveUsage: CodexUsageMap;
|
|
53
71
|
/** True while a live usage refresh is in flight (drives the bar skeleton). */
|
|
54
72
|
refreshingUsage: boolean;
|
|
55
73
|
/** Pin (or unpin via "auto") the session's account; returns true on success. */
|
|
@@ -60,8 +78,8 @@ export type UseCodexAccountsResult = {
|
|
|
60
78
|
mutationError: Error | null;
|
|
61
79
|
};
|
|
62
80
|
/**
|
|
63
|
-
* The workspace's Codex accounts
|
|
64
|
-
*
|
|
81
|
+
* The workspace's Codex accounts, or session-authorized retry/next-turn choices
|
|
82
|
+
* and accepted current account. Composed like
|
|
65
83
|
* `useMachines`: slow polling (the realtime work is done by the
|
|
66
84
|
* `codex.account.switched` event trigger) + a `pin` mutation.
|
|
67
85
|
* Dual-consumer safe via the structural `CodexAccountsClientLike` surface.
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import { type ComposerDraft, type DraftTimelineAnnotation, type EffectiveControlResumeOption, type EffectiveSessionControl, type ResourceRef, type SendMessageInput, type SessionEvent } from "@opengeni/sdk";
|
|
1
|
+
import { type ComposerDraft, type DraftTimelineAnnotation, type EffectiveControlResumeOption, type EffectiveSessionControl, type LatencyMode, type ReasoningEffort, type ResourceRef, type SendMessageInput, type SessionEvent } from "@opengeni/sdk";
|
|
2
2
|
import { type EmbeddedSessionClientOverride } from "../session-context.js";
|
|
3
3
|
import { type SessionEventFeedOptions } from "./internal.js";
|
|
4
|
-
export type
|
|
4
|
+
export type ComposerPolicy = {
|
|
5
|
+
model: string;
|
|
6
|
+
reasoningEffort: ReasoningEffort;
|
|
7
|
+
latencyMode: LatencyMode;
|
|
8
|
+
};
|
|
9
|
+
export type ComposerSendExtras = Omit<SendMessageInput, "text" | "clientEventId" | "annotations" | "model" | "reasoningEffort" | "latencyMode">;
|
|
5
10
|
export type UseComposerOptions = EmbeddedSessionClientOverride & SessionEventFeedOptions & {
|
|
6
11
|
/** Called synchronously after an ordinary Send is accepted by the local UI. */
|
|
7
12
|
onSubmitted?: ((text: string, input: SendMessageInput) => void) | undefined;
|
|
8
13
|
/** Called with the exact accepted wire input after a successful send. */
|
|
9
14
|
onSent?: ((text: string, input: SendMessageInput) => void) | undefined;
|
|
15
|
+
/** Called with the exact wire input after a delivery failure. */
|
|
16
|
+
onDeliveryError?: ((error: Error, input: SendMessageInput, delivery: "send" | "steer") => void) | undefined;
|
|
10
17
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* surrounding UI state (attachment pickers, model selectors, ...).
|
|
18
|
+
* Non-policy message fields merged into every send. Durable policy belongs
|
|
19
|
+
* to this composer draft; attachments and credentials may remain host-owned.
|
|
14
20
|
*/
|
|
15
21
|
sendExtras?: ComposerSendExtras | (() => ComposerSendExtras) | undefined;
|
|
16
22
|
/**
|
|
@@ -21,19 +27,30 @@ export type UseComposerOptions = EmbeddedSessionClientOverride & SessionEventFee
|
|
|
21
27
|
sendBlocked?: (() => boolean) | undefined;
|
|
22
28
|
/** Latest server-derived workstream control; bound into Send/Steer OCC. */
|
|
23
29
|
effectiveControl?: EffectiveSessionControl | null | undefined;
|
|
24
|
-
/**
|
|
25
|
-
|
|
30
|
+
/** Immediate user-visible destination for an ordinary Send before admission replies. */
|
|
31
|
+
sendDestination?: (() => "chat" | "queue") | undefined;
|
|
26
32
|
/** Disable remote composer-draft reads and writes for embedded hosts. */
|
|
27
33
|
draftPersistence?: "durable" | "disabled" | undefined;
|
|
34
|
+
/** Required explicit authority when durable draft persistence is disabled. */
|
|
35
|
+
initialPolicy?: ComposerPolicy | undefined;
|
|
28
36
|
};
|
|
29
37
|
export type ComposerOptimisticMessage = {
|
|
30
38
|
clientEventId: string;
|
|
39
|
+
delivery: "send" | "steer";
|
|
40
|
+
destination: "chat" | "queue";
|
|
31
41
|
text: string;
|
|
32
42
|
annotations: DraftTimelineAnnotation[];
|
|
33
43
|
resources: ResourceRef[];
|
|
34
44
|
occurredAt: string;
|
|
35
45
|
state: "sending" | "queued" | "failed";
|
|
46
|
+
turnId?: string | null | undefined;
|
|
47
|
+
triggerEventId?: string | null | undefined;
|
|
48
|
+
appliedQueueVersion?: number | null | undefined;
|
|
36
49
|
error?: string | undefined;
|
|
50
|
+
/** Bounded support reference retained independently of display copy across remounts. */
|
|
51
|
+
correlationId?: string | undefined;
|
|
52
|
+
/** False for a definitive refusal that requires changing payment or allowance settings. */
|
|
53
|
+
retryable?: boolean | undefined;
|
|
37
54
|
outcomeUnknown?: boolean | undefined;
|
|
38
55
|
};
|
|
39
56
|
export type ComposerState = {
|
|
@@ -46,6 +63,8 @@ export type ComposerState = {
|
|
|
46
63
|
/** Newly captured annotation the review surface should focus. */
|
|
47
64
|
annotationReviewTargetId?: string | null | undefined;
|
|
48
65
|
clearAnnotationReviewTarget?: (() => void) | undefined;
|
|
66
|
+
/** Focus an annotation, or the first incomplete note when omitted. */
|
|
67
|
+
requestAnnotationReview?: ((id?: string) => void) | undefined;
|
|
49
68
|
/** Read the current draft synchronously before a destructive replacement. */
|
|
50
69
|
hasDraftContent: () => boolean;
|
|
51
70
|
/** Append the draft behind prompts already visible in the queue. */
|
|
@@ -53,6 +72,8 @@ export type ComposerState = {
|
|
|
53
72
|
/** Locally acknowledged ordinary sends awaiting durable timeline reconciliation. */
|
|
54
73
|
optimisticMessages?: ComposerOptimisticMessage[] | undefined;
|
|
55
74
|
retryOptimisticMessage?: ((clientEventId: string) => void) | undefined;
|
|
75
|
+
/** Move a definitively refused message into an empty composer without resending it. */
|
|
76
|
+
restoreOptimisticMessage?: ((clientEventId: string) => void) | undefined;
|
|
56
77
|
removeOptimisticMessage?: ((clientEventId: string) => void) | undefined;
|
|
57
78
|
/** Supersede current direction with the draft. */
|
|
58
79
|
steer: (text?: string) => Promise<boolean>;
|
|
@@ -68,11 +89,18 @@ export type ComposerState = {
|
|
|
68
89
|
resume: (reason?: string) => Promise<void>;
|
|
69
90
|
resumeScope: (option: EffectiveControlResumeOption) => Promise<void>;
|
|
70
91
|
resuming: boolean;
|
|
92
|
+
/** Mutation-confirmed control while the streamed queue projection catches up. */
|
|
93
|
+
effectiveControl?: EffectiveSessionControl | null | undefined;
|
|
71
94
|
draft: ComposerDraft | null;
|
|
72
95
|
draftRevision: number;
|
|
73
96
|
draftLoading: boolean;
|
|
74
97
|
draftSaving: boolean;
|
|
75
98
|
draftConflict: Error | null;
|
|
99
|
+
/** Exact policy owned by this actor/session composer. Null while hydrating. */
|
|
100
|
+
policy?: ComposerPolicy | null | undefined;
|
|
101
|
+
setModel?: ((model: string) => void) | undefined;
|
|
102
|
+
setReasoningEffort?: ((effort: ReasoningEffort) => void) | undefined;
|
|
103
|
+
setLatencyMode?: ((mode: LatencyMode) => void) | undefined;
|
|
76
104
|
/** Whether this controller owns a durable server-side draft. */
|
|
77
105
|
draftPersistence?: "durable" | "disabled" | undefined;
|
|
78
106
|
/** Apply an atomic queue Edit checkout without a second read. */
|
|
@@ -84,14 +112,22 @@ export type ComposerState = {
|
|
|
84
112
|
error: Error | null;
|
|
85
113
|
clearError: () => void;
|
|
86
114
|
};
|
|
115
|
+
export type ComposerControllerState = ComposerState & {
|
|
116
|
+
policy: ComposerPolicy | null;
|
|
117
|
+
setModel: (model: string) => void;
|
|
118
|
+
setReasoningEffort: (effort: ReasoningEffort) => void;
|
|
119
|
+
setLatencyMode: (mode: LatencyMode) => void;
|
|
120
|
+
};
|
|
87
121
|
export type ComposerSteeringState = {
|
|
88
|
-
phase: "submitting" | "accepted";
|
|
122
|
+
phase: "submitting" | "accepted" | "failed";
|
|
89
123
|
text: string;
|
|
90
124
|
clientEventId: string | null;
|
|
91
125
|
triggerEventId: string | null;
|
|
92
126
|
turnId: string | null;
|
|
93
127
|
/** True only when the accepted Steer durably interrupted a live attempt. */
|
|
94
128
|
stoppingPreviousAttempt?: boolean | undefined;
|
|
129
|
+
error?: string | undefined;
|
|
130
|
+
outcomeUnknown?: boolean | undefined;
|
|
95
131
|
};
|
|
96
132
|
/**
|
|
97
133
|
* Draft + send + Pause/Resume state for the chat composer — the only
|
|
@@ -99,7 +135,7 @@ export type ComposerSteeringState = {
|
|
|
99
135
|
* more hostile than losing a typed message); each send carries a generated
|
|
100
136
|
* `clientEventId` so retries stay idempotent server-side.
|
|
101
137
|
*/
|
|
102
|
-
export declare function useComposer(sessionId: string | null | undefined, options?: UseComposerOptions):
|
|
138
|
+
export declare function useComposer(sessionId: string | null | undefined, options?: UseComposerOptions): ComposerControllerState;
|
|
103
139
|
/** Events that can atomically replace or clear this subject's durable draft. */
|
|
104
140
|
export declare function isComposerDraftEvent(event: Pick<SessionEvent, "type">): boolean;
|
|
105
141
|
/**
|
|
@@ -15,7 +15,7 @@ export type UseComputerFrameStreamOptions = EmbeddedComputerInteractionClientOve
|
|
|
15
15
|
export type UseComputerFrameStreamResult = {
|
|
16
16
|
state: ComputerFrameConnectionState;
|
|
17
17
|
frame: ComputerFrame | null;
|
|
18
|
-
attachment: Pick<ComputerSessionAttachment, "computerSessionId" | "controllerGeneration" | "targetId" | "stream" | "expiresAt"> | null;
|
|
18
|
+
attachment: Pick<ComputerSessionAttachment, "computerSessionId" | "controllerGeneration" | "targetId" | "inputAllowed" | "stream" | "expiresAt"> | null;
|
|
19
19
|
error: Error | null;
|
|
20
20
|
reconnect: () => void;
|
|
21
21
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type EmbeddedComputerInteractionClientOverride } from "../session-context.js";
|
|
2
|
+
/** Semantic-only targets need caller authority without opening a pixel stream.
|
|
3
|
+
* A source change synchronously discards the previous posture. */
|
|
4
|
+
export declare function useComputerInputPosture(options: EmbeddedComputerInteractionClientOverride & {
|
|
5
|
+
computerSessionId: string | null;
|
|
6
|
+
controllerGeneration: string | null;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
}): {
|
|
9
|
+
inputAllowed: boolean | null;
|
|
10
|
+
pending: boolean;
|
|
11
|
+
error: Error | null;
|
|
12
|
+
refresh: () => void;
|
|
13
|
+
};
|
|
@@ -13,6 +13,8 @@ export type UseComputerSessionResult = {
|
|
|
13
13
|
loading: boolean;
|
|
14
14
|
mutating: boolean;
|
|
15
15
|
error: Error | null;
|
|
16
|
+
/** Control service loss, independent of target accessibility inspection and media. */
|
|
17
|
+
controlError: Error | null;
|
|
16
18
|
refresh: () => Promise<void>;
|
|
17
19
|
readClipboard: () => Promise<ComputerClipboard>;
|
|
18
20
|
/** Changes only this viewer's target cursor; it never takes ownership or
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ConnectController } from "@opengeni/connect";
|
|
2
|
+
/** Internal consumers import the hook directly so setup surfaces stay lazy. */
|
|
3
|
+
export declare function useConnect(controller: ConnectController): {
|
|
4
|
+
attempt: import("@opengeni/connect").ConnectAttempt | null;
|
|
5
|
+
busy: boolean;
|
|
6
|
+
error: Error | null;
|
|
7
|
+
begin: (input: {
|
|
8
|
+
providerId: string;
|
|
9
|
+
ownership: import("@opengeni/connect").ConnectOwnership;
|
|
10
|
+
returnUrl: string;
|
|
11
|
+
idempotencyKey: string;
|
|
12
|
+
reconnectAccountId?: string;
|
|
13
|
+
installationTarget?: import("@opengeni/connect").ConnectInstallationTarget;
|
|
14
|
+
}) => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
15
|
+
recover: (attemptId: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
16
|
+
refresh: () => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
17
|
+
waitForAction: (options?: {
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}) => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
20
|
+
advance: (action: import("@opengeni/connect").ConnectAdvance, idempotencyKey: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
21
|
+
cancel: (idempotencyKey: string) => Promise<import("@opengeni/connect").ConnectAttempt>;
|
|
22
|
+
};
|
|
@@ -9,7 +9,7 @@ export type UseDesktopStreamOptions = {
|
|
|
9
9
|
/** Read-only by default (v1 ruling H). interactive only when cap.mode allows. */
|
|
10
10
|
interactive?: boolean | undefined;
|
|
11
11
|
scaleViewport?: boolean | undefined;
|
|
12
|
-
/** Custom RFB factory
|
|
12
|
+
/** Custom RFB factory. Otherwise call enableDesktopViewer() on the desktop subpath. */
|
|
13
13
|
rfbFactory?: DesktopRfbFactory | undefined;
|
|
14
14
|
/** Additional WebSocket protocols for an authenticated placement proxy. */
|
|
15
15
|
webSocketProtocols?: string[] | undefined;
|