zidane-ui 9.1.1 → 9.1.4
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 +2 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/server-transcript-members.d.ts +1 -1
- package/dist/adapters/server-transcript-members.js +19 -1
- package/dist/app/ModalProvider.d.ts +3 -1
- package/dist/app/ModalProvider.js +15 -9
- package/dist/approvals/headless/index.js +1 -1
- package/dist/chat/HostTranscript.d.ts +3 -1
- package/dist/chat/HostTranscript.js +5 -3
- package/dist/chat/Transcript.js +1 -1
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/index.js +1 -1
- package/dist/chat/composer/use-composer-stores.js +1 -1
- package/dist/chat/headless/block-runs.d.ts +57 -0
- package/dist/chat/headless/block-runs.js +123 -0
- package/dist/chat/headless/composer/index.js +2 -2
- package/dist/chat/headless/fixture-transcript.d.ts +6 -1
- package/dist/chat/headless/fixture-transcript.js +49 -0
- package/dist/chat/headless/host.d.ts +3 -0
- package/dist/chat/headless/index.d.ts +2 -1
- package/dist/chat/headless/index.js +11 -10
- package/dist/chat/headless/labels.d.ts +42 -0
- package/dist/chat/headless/labels.js +42 -0
- package/dist/chat/headless/session-list.d.ts +27 -0
- package/dist/chat/headless/sidebar/labels.d.ts +27 -0
- package/dist/chat/headless/streams/index.js +1 -1
- package/dist/chat/headless/streams/live-events.js +2 -1
- package/dist/chat/headless/streams/session-streams.js +2 -2
- package/dist/chat/headless/streams/store.js +2 -2
- package/dist/chat/headless/transcript/batch.d.ts +21 -1
- package/dist/chat/headless/transcript/batch.js +55 -10
- package/dist/chat/headless/transcript/collapse.js +18 -3
- package/dist/chat/headless/transcript/fold.js +26 -10
- package/dist/chat/headless/transcript/index.js +1 -1
- package/dist/chat/headless/transcript/rows.d.ts +7 -1
- package/dist/chat/index.d.ts +6 -1
- package/dist/chat/index.js +7 -2
- package/dist/chat/testing/contract.d.ts +6 -1
- package/dist/chat/testing/contract.js +30 -3
- package/dist/chat/transcript/AnsiText.d.ts +27 -0
- package/dist/chat/transcript/AnsiText.js +73 -0
- package/dist/chat/transcript/CodemodeScript.d.ts +33 -0
- package/dist/chat/transcript/CodemodeScript.js +212 -0
- package/dist/chat/transcript/LiveOutput.d.ts +21 -0
- package/dist/chat/transcript/LiveOutput.js +42 -0
- package/dist/chat/transcript/TranscriptRow.js +19 -2
- package/dist/chat/transcript/actions.d.ts +6 -0
- package/dist/chat/transcript/index.d.ts +6 -1
- package/dist/chat/transcript/index.js +6 -1
- package/dist/chat/transcript/markdown.js +9 -0
- package/dist/chat/transcript/renderers.d.ts +7 -0
- package/dist/chat/transcript/script-input.d.ts +17 -0
- package/dist/chat/transcript/script-input.js +16 -0
- package/dist/chat/transcript/shell-block-scope.d.ts +29 -0
- package/dist/chat/transcript/shell-block-scope.js +18 -0
- package/dist/chat/transcript/shell-block.d.ts +27 -0
- package/dist/chat/transcript/shell-block.js +306 -0
- package/dist/chat/transcript/tool-parts.d.ts +18 -6
- package/dist/chat/transcript/tool-parts.js +15 -5
- package/dist/chat/transcript/tool-payload.js +6 -3
- package/dist/chat/transcript/tool-row.js +155 -96
- package/dist/chat/transcript/user-bash.js +3 -2
- package/dist/code/HighlightedCode.js +3 -69
- package/dist/code/highlight-lines.d.ts +24 -0
- package/dist/code/highlight-lines.js +41 -0
- package/dist/code/use-highlighted-html.d.ts +5 -0
- package/dist/code/use-highlighted-html.js +75 -0
- package/dist/core.css +6 -2
- package/dist/dist/{index-CGbOWa7y.d.ts → index-WlE93Q6d.d.ts} +101 -3
- package/dist/extensions/ExtensionSettingsSidebar.js +19 -3
- package/dist/extensions/kit.d.ts +1 -1
- package/dist/git/BranchMenu.d.ts +1 -7
- package/dist/git/BranchMenu.js +17 -40
- package/dist/git/headless/labels.d.ts +0 -2
- package/dist/git/headless/labels.js +0 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/onboarding/demos/index.js +1 -1
- package/dist/onboarding/index.js +5 -5
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ConnectorsStep.js +1 -1
- package/dist/onboarding/steps/ExtensionsStep.js +1 -1
- package/dist/onboarding/steps/ReadyStep.js +2 -2
- package/dist/onboarding/steps/SkillsStep.js +1 -1
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/session/headless/index.js +1 -1
- package/dist/settings/SettingsShell.d.ts +3 -1
- package/dist/settings/SettingsShell.js +15 -8
- package/dist/settings/headless/catalog.js +5 -0
- package/dist/settings/headless/layout.js +2 -1
- package/dist/settings/headless/registry.d.ts +2 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/sections/environments/EnvironmentsSection.js +1 -1
- package/dist/settings/sections/extensions/ExtensionsSection.js +2 -2
- package/dist/settings/sections/models/ModelRows.js +2 -2
- package/dist/settings/sections/models/model-test.js +1 -1
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/styles.css +291 -2
- package/dist/terminal/TerminalProvider.d.ts +3 -1
- package/dist/terminal/TerminalProvider.js +5 -1
- package/dist/terminal/headless/store.d.ts +10 -0
- package/dist/terminal/headless/store.js +16 -0
- package/dist/terminal/index.d.ts +2 -2
- package/dist/terminal/index.js +2 -2
- package/dist/theme/runtime-icons.d.ts +50 -0
- package/dist/theme/runtime-icons.js +95 -0
- package/package.json +3 -6
- package/src/styles/primitives.css +5 -2
- package/src/styles/transcript.css +281 -0
- package/src/adapters/browser-appearance-host.ts +0 -51
- package/src/adapters/browser-keybindings-host.ts +0 -48
- package/src/adapters/browser-workspace-host.ts +0 -92
- package/src/adapters/closable-client.ts +0 -34
- package/src/adapters/extension-modules.ts +0 -360
- package/src/adapters/index.ts +0 -35
- package/src/adapters/live-events.ts +0 -6
- package/src/adapters/live.ts +0 -270
- package/src/adapters/run-host.ts +0 -238
- package/src/adapters/server-approvals-host.ts +0 -102
- package/src/adapters/server-client.ts +0 -15
- package/src/adapters/server-composer-host.ts +0 -459
- package/src/adapters/server-extensions-host.ts +0 -979
- package/src/adapters/server-files-host.ts +0 -287
- package/src/adapters/server-git-host.ts +0 -289
- package/src/adapters/server-host.ts +0 -489
- package/src/adapters/server-machines-host.ts +0 -283
- package/src/adapters/server-oauth-flow.ts +0 -133
- package/src/adapters/server-onboarding-host.ts +0 -363
- package/src/adapters/server-palette-host.ts +0 -134
- package/src/adapters/server-session-host.ts +0 -241
- package/src/adapters/server-settings-accounts.ts +0 -212
- package/src/adapters/server-settings-host.ts +0 -120
- package/src/adapters/server-settings-models.ts +0 -46
- package/src/adapters/server-settings-performance.ts +0 -58
- package/src/adapters/server-settings-sections.ts +0 -222
- package/src/adapters/server-sidebar-host.ts +0 -59
- package/src/adapters/server-terminal-host.ts +0 -124
- package/src/adapters/server-transcript-members.ts +0 -131
- package/src/adapters/sse-host.ts +0 -264
- package/src/adapters/sse-parser.ts +0 -82
- package/src/adapters/sse-protocol.ts +0 -118
- package/src/adapters/stream-pacer.ts +0 -122
- package/src/adapters/worker-host.ts +0 -192
- package/src/adapters/worker-protocol.ts +0 -97
- package/src/app/AppHostProvider.tsx +0 -135
- package/src/app/ModalProvider.tsx +0 -731
- package/src/app/headless/app-host.ts +0 -61
- package/src/app/headless/index.ts +0 -6
- package/src/app/headless/resource.ts +0 -444
- package/src/app/index.ts +0 -9
- package/src/app/testing/index.ts +0 -90
- package/src/app/useConfirm.tsx +0 -65
- package/src/app/useResource.ts +0 -30
- package/src/appearance/AppearanceProvider.tsx +0 -383
- package/src/appearance/apply.ts +0 -69
- package/src/appearance/headless/fixture-host.ts +0 -111
- package/src/appearance/headless/fonts.ts +0 -224
- package/src/appearance/headless/host.ts +0 -65
- package/src/appearance/headless/index.ts +0 -12
- package/src/appearance/headless/prefs.ts +0 -252
- package/src/appearance/headless/storage.ts +0 -127
- package/src/appearance/headless/zoom-commands.ts +0 -21
- package/src/appearance/index.ts +0 -11
- package/src/appearance/testing/contract.ts +0 -210
- package/src/appearance/testing/index.ts +0 -6
- package/src/approvals/ApprovalBar.tsx +0 -234
- package/src/approvals/ApprovalConcern.tsx +0 -33
- package/src/approvals/ApprovalShell.tsx +0 -69
- package/src/approvals/ApprovalsProvider.tsx +0 -110
- package/src/approvals/FileEditApproval.tsx +0 -310
- package/src/approvals/HunkPreviews.tsx +0 -225
- package/src/approvals/SafelistPanel.tsx +0 -149
- package/src/approvals/headless/fixture-host.ts +0 -73
- package/src/approvals/headless/fixtures.ts +0 -86
- package/src/approvals/headless/heads.ts +0 -81
- package/src/approvals/headless/host.ts +0 -80
- package/src/approvals/headless/index.ts +0 -12
- package/src/approvals/headless/labels.ts +0 -67
- package/src/approvals/headless/pending.ts +0 -91
- package/src/approvals/headless/preview.ts +0 -94
- package/src/approvals/headless/safelist.ts +0 -63
- package/src/approvals/index.ts +0 -13
- package/src/approvals/key-scope.ts +0 -33
- package/src/approvals/testing/contract.ts +0 -230
- package/src/approvals/testing/index.ts +0 -7
- package/src/brands/marks.ts +0 -298
- package/src/chat/ChatProvider.tsx +0 -60
- package/src/chat/DaemonOrb.tsx +0 -107
- package/src/chat/HostBadge.tsx +0 -71
- package/src/chat/HostStatusDot.tsx +0 -53
- package/src/chat/HostTranscript.tsx +0 -101
- package/src/chat/PdfPreview.tsx +0 -65
- package/src/chat/RunEstimateChip.tsx +0 -168
- package/src/chat/SessionFilterMenu.tsx +0 -397
- package/src/chat/SessionGroupHeader.tsx +0 -177
- package/src/chat/SessionHostHeader.tsx +0 -66
- package/src/chat/SessionList.tsx +0 -413
- package/src/chat/SessionListRow.tsx +0 -296
- package/src/chat/SessionStreamsProvider.tsx +0 -253
- package/src/chat/StatusDot.tsx +0 -128
- package/src/chat/TextPreview.tsx +0 -121
- package/src/chat/Throbber.tsx +0 -270
- package/src/chat/Transcript.tsx +0 -523
- package/src/chat/composer/AgentPicker.tsx +0 -155
- package/src/chat/composer/AgentPickerDialog.tsx +0 -99
- package/src/chat/composer/ApprovalDock.tsx +0 -64
- package/src/chat/composer/ArchivedBanner.tsx +0 -44
- package/src/chat/composer/AttachmentTiles.tsx +0 -211
- package/src/chat/composer/Composer.tsx +0 -500
- package/src/chat/composer/ComposerBadges.tsx +0 -339
- package/src/chat/composer/ComposerControls.tsx +0 -243
- package/src/chat/composer/ComposerEditor.tsx +0 -101
- package/src/chat/composer/ComposerHostProvider.tsx +0 -46
- package/src/chat/composer/ComposerShell.tsx +0 -129
- package/src/chat/composer/ContextBreakdown.tsx +0 -382
- package/src/chat/composer/ContextOrb.tsx +0 -176
- package/src/chat/composer/ConversationBadges.tsx +0 -168
- package/src/chat/composer/DockCard.tsx +0 -126
- package/src/chat/composer/EffortPickerDialog.tsx +0 -184
- package/src/chat/composer/HostComposer.tsx +0 -135
- package/src/chat/composer/HostContextOrb.tsx +0 -94
- package/src/chat/composer/HostModelChainList.tsx +0 -102
- package/src/chat/composer/HostPicker.tsx +0 -97
- package/src/chat/composer/HostPickers.tsx +0 -320
- package/src/chat/composer/ImageModelList.tsx +0 -151
- package/src/chat/composer/ModelChainList.tsx +0 -442
- package/src/chat/composer/ModelChainParts.tsx +0 -247
- package/src/chat/composer/ModelChainRow.tsx +0 -191
- package/src/chat/composer/ModelChainRows.tsx +0 -223
- package/src/chat/composer/ModelChainTooltip.tsx +0 -121
- package/src/chat/composer/ModelFacts.tsx +0 -204
- package/src/chat/composer/ModelOptionsPicker.tsx +0 -257
- package/src/chat/composer/ModelPicker.tsx +0 -513
- package/src/chat/composer/ModelPickerDialog.tsx +0 -99
- package/src/chat/composer/ModelProviderPills.tsx +0 -141
- package/src/chat/composer/PickerPill.tsx +0 -41
- package/src/chat/composer/ProjectMenu.tsx +0 -187
- package/src/chat/composer/PromptHistoryProvider.tsx +0 -214
- package/src/chat/composer/RetryPill.tsx +0 -47
- package/src/chat/composer/RunStatusChip.tsx +0 -150
- package/src/chat/composer/ScopeToggle.tsx +0 -94
- package/src/chat/composer/SelectTurnHint.tsx +0 -40
- package/src/chat/composer/SendButton.tsx +0 -89
- package/src/chat/composer/ServerScopeToggle.tsx +0 -188
- package/src/chat/composer/attachment-ingest.ts +0 -413
- package/src/chat/composer/attachments.tsx +0 -176
- package/src/chat/composer/badge-order.ts +0 -65
- package/src/chat/composer/composer-bus.ts +0 -317
- package/src/chat/composer/index.ts +0 -63
- package/src/chat/composer/load-composer-editor.ts +0 -25
- package/src/chat/composer/model-catalog.ts +0 -424
- package/src/chat/composer/model-list-layout.ts +0 -118
- package/src/chat/composer/prompt-history-nav.ts +0 -60
- package/src/chat/composer/scope-side.ts +0 -7
- package/src/chat/composer/suggestion-extension.ts +0 -113
- package/src/chat/composer/suggestions.tsx +0 -115
- package/src/chat/composer/use-agent-profiles.ts +0 -97
- package/src/chat/composer/use-cache-hints.ts +0 -93
- package/src/chat/composer/use-composer-stores.ts +0 -140
- package/src/chat/composer/use-draft-target.ts +0 -317
- package/src/chat/composer/use-new-session-defaults.ts +0 -201
- package/src/chat/composer/use-provider-ready-poll.ts +0 -35
- package/src/chat/composer/use-run-meter.ts +0 -140
- package/src/chat/composer/use-send-prompt.ts +0 -188
- package/src/chat/composer/use-session-meters.ts +0 -109
- package/src/chat/composer/use-sustained-work.ts +0 -74
- package/src/chat/composer/useAttachmentIngest.ts +0 -116
- package/src/chat/composer/useModelListSpy.ts +0 -19
- package/src/chat/headless/badge-refs.ts +0 -76
- package/src/chat/headless/chip-labels.ts +0 -40
- package/src/chat/headless/chip-settle.ts +0 -53
- package/src/chat/headless/chip-views.ts +0 -215
- package/src/chat/headless/composer/attachment-dedupe.ts +0 -50
- package/src/chat/headless/composer/commands.ts +0 -16
- package/src/chat/headless/composer/composer-sources.ts +0 -150
- package/src/chat/headless/composer/conversation-badges.ts +0 -227
- package/src/chat/headless/composer/draft-sync.ts +0 -199
- package/src/chat/headless/composer/editor-markdown.ts +0 -137
- package/src/chat/headless/composer/ghost-autocomplete.ts +0 -381
- package/src/chat/headless/composer/host-chrome.ts +0 -197
- package/src/chat/headless/composer/host.ts +0 -250
- package/src/chat/headless/composer/index.ts +0 -17
- package/src/chat/headless/composer/labels-chrome.ts +0 -83
- package/src/chat/headless/composer/labels-editor.ts +0 -44
- package/src/chat/headless/composer/labels.ts +0 -18
- package/src/chat/headless/composer/live-cost.ts +0 -67
- package/src/chat/headless/composer/model-knobs.ts +0 -179
- package/src/chat/headless/composer/model-names.ts +0 -145
- package/src/chat/headless/composer/model-picker-prefs.ts +0 -90
- package/src/chat/headless/composer/models.ts +0 -86
- package/src/chat/headless/composer/new-session-defaults.ts +0 -68
- package/src/chat/headless/composer/prompt-suggestions.ts +0 -72
- package/src/chat/headless/composer/remember-model-pick.ts +0 -132
- package/src/chat/headless/composer/run-meter.ts +0 -228
- package/src/chat/headless/composer-modes.ts +0 -170
- package/src/chat/headless/draft-scope.ts +0 -136
- package/src/chat/headless/draft-target.ts +0 -87
- package/src/chat/headless/extension-sources.ts +0 -64
- package/src/chat/headless/file-chip.ts +0 -175
- package/src/chat/headless/fixture-host.ts +0 -294
- package/src/chat/headless/fixture-transcript.ts +0 -125
- package/src/chat/headless/fixtures/demo-transcript-all-kinds.ts +0 -233
- package/src/chat/headless/fixtures/demo-transcript.ts +0 -244
- package/src/chat/headless/host.ts +0 -264
- package/src/chat/headless/hosts.ts +0 -55
- package/src/chat/headless/index.ts +0 -31
- package/src/chat/headless/labels.ts +0 -373
- package/src/chat/headless/markdown-chunks.ts +0 -134
- package/src/chat/headless/path-resolver.ts +0 -178
- package/src/chat/headless/prompt-origin.ts +0 -90
- package/src/chat/headless/reference-store.ts +0 -285
- package/src/chat/headless/send-flow.ts +0 -347
- package/src/chat/headless/session-list.ts +0 -400
- package/src/chat/headless/sidebar/activity.ts +0 -179
- package/src/chat/headless/sidebar/badges.ts +0 -190
- package/src/chat/headless/sidebar/compaction.ts +0 -98
- package/src/chat/headless/sidebar/directory.ts +0 -1046
- package/src/chat/headless/sidebar/dot-state.ts +0 -36
- package/src/chat/headless/sidebar/environment.ts +0 -70
- package/src/chat/headless/sidebar/estimates.ts +0 -146
- package/src/chat/headless/sidebar/host.ts +0 -41
- package/src/chat/headless/sidebar/index.ts +0 -18
- package/src/chat/headless/sidebar/labels.ts +0 -161
- package/src/chat/headless/sidebar/notifications.ts +0 -61
- package/src/chat/headless/sidebar/pinned-projects.ts +0 -51
- package/src/chat/headless/sidebar/pinned-sessions.ts +0 -27
- package/src/chat/headless/sidebar/project-icons.ts +0 -116
- package/src/chat/headless/sidebar/query.ts +0 -621
- package/src/chat/headless/sidebar/rows.ts +0 -427
- package/src/chat/headless/sidebar/types.ts +0 -96
- package/src/chat/headless/sidebar/view.ts +0 -367
- package/src/chat/headless/site-icons.ts +0 -51
- package/src/chat/headless/smooth-stream.ts +0 -76
- package/src/chat/headless/store.ts +0 -62
- package/src/chat/headless/streams/actions.ts +0 -85
- package/src/chat/headless/streams/index.ts +0 -25
- package/src/chat/headless/streams/live-events.ts +0 -124
- package/src/chat/headless/streams/merge.ts +0 -60
- package/src/chat/headless/streams/pacer.ts +0 -189
- package/src/chat/headless/streams/prompt-previews.ts +0 -64
- package/src/chat/headless/streams/scheduler.ts +0 -36
- package/src/chat/headless/streams/selectors.ts +0 -76
- package/src/chat/headless/streams/session-streams.ts +0 -407
- package/src/chat/headless/streams/store.ts +0 -1107
- package/src/chat/headless/streams/transcript.ts +0 -41
- package/src/chat/headless/streams/types.ts +0 -84
- package/src/chat/headless/transcript/batch.ts +0 -429
- package/src/chat/headless/transcript/collapse.ts +0 -789
- package/src/chat/headless/transcript/fold-actions.ts +0 -269
- package/src/chat/headless/transcript/fold-attachments.ts +0 -78
- package/src/chat/headless/transcript/fold.ts +0 -382
- package/src/chat/headless/transcript/index.ts +0 -41
- package/src/chat/headless/transcript/nesting.ts +0 -73
- package/src/chat/headless/transcript/pairing.ts +0 -124
- package/src/chat/headless/transcript/rows.ts +0 -377
- package/src/chat/headless/transcript/run-failures.ts +0 -72
- package/src/chat/headless/transcript/select-stops.ts +0 -151
- package/src/chat/headless/transcript/tool-media.ts +0 -42
- package/src/chat/headless/transcript-host.ts +0 -180
- package/src/chat/headless/transcript-labels.ts +0 -12
- package/src/chat/headless/turn-labels.ts +0 -28
- package/src/chat/headless/turn-prompt.ts +0 -32
- package/src/chat/index.ts +0 -31
- package/src/chat/interactions/HostInteractions.tsx +0 -76
- package/src/chat/interactions/InboxPanel.tsx +0 -226
- package/src/chat/interactions/InteractionCard.tsx +0 -111
- package/src/chat/interactions/PlanCard.tsx +0 -186
- package/src/chat/interactions/QuestionField.tsx +0 -336
- package/src/chat/interactions/QuestionForm.tsx +0 -283
- package/src/chat/interactions/card-ui.tsx +0 -86
- package/src/chat/interactions/hooks.ts +0 -49
- package/src/chat/interactions/index.ts +0 -8
- package/src/chat/provider-color.ts +0 -71
- package/src/chat/rich-composer/MentionList.tsx +0 -238
- package/src/chat/rich-composer/RichComposer.tsx +0 -1071
- package/src/chat/rich-composer/badge-decorations.ts +0 -157
- package/src/chat/rich-composer/composer-controls.tsx +0 -102
- package/src/chat/rich-composer/composer-extensions.ts +0 -388
- package/src/chat/rich-composer/composer-keys.ts +0 -416
- package/src/chat/rich-composer/ghost-plugin.ts +0 -89
- package/src/chat/rich-composer/index.ts +0 -3
- package/src/chat/rich-composer/mention-popover.ts +0 -336
- package/src/chat/rich-composer/slash-completion.ts +0 -143
- package/src/chat/rich-composer/use-composer-bus.ts +0 -57
- package/src/chat/rich-composer/use-composer-editor.ts +0 -216
- package/src/chat/rich-composer/use-composer-sources.ts +0 -90
- package/src/chat/rich-composer/use-draft-mirror.ts +0 -398
- package/src/chat/rich-composer/use-editor-handover.ts +0 -45
- package/src/chat/rich-composer/use-extension-composer.ts +0 -80
- package/src/chat/rich-composer/use-ghost-lifecycle.ts +0 -265
- package/src/chat/rich-composer/use-prompt-ghost.ts +0 -90
- package/src/chat/rich-composer/use-staged-attachments.ts +0 -65
- package/src/chat/sidebar/MainSessionRow.tsx +0 -102
- package/src/chat/sidebar/ProjectIcon.tsx +0 -399
- package/src/chat/sidebar/RowChips.tsx +0 -98
- package/src/chat/sidebar/SessionSidebar.tsx +0 -1039
- package/src/chat/sidebar/SidebarDecoration.tsx +0 -93
- package/src/chat/sidebar/SidebarFilterMenu.tsx +0 -270
- package/src/chat/sidebar/SidebarFooter.tsx +0 -244
- package/src/chat/sidebar/SidebarFrame.tsx +0 -154
- package/src/chat/sidebar/SidebarGroupHeader.tsx +0 -263
- package/src/chat/sidebar/SidebarHostProvider.tsx +0 -51
- package/src/chat/sidebar/SidebarRowView.tsx +0 -151
- package/src/chat/sidebar/SidebarSearchRow.tsx +0 -66
- package/src/chat/sidebar/SidebarSessionRow.tsx +0 -317
- package/src/chat/sidebar/SidebarToggleButton.tsx +0 -48
- package/src/chat/sidebar/SpaceSwitcher.tsx +0 -341
- package/src/chat/sidebar/SpacesSection.tsx +0 -259
- package/src/chat/sidebar/collapsed.ts +0 -61
- package/src/chat/sidebar/index.ts +0 -109
- package/src/chat/sidebar/session-menu.ts +0 -441
- package/src/chat/sidebar/sidebar-focus-hold.ts +0 -56
- package/src/chat/sidebar/sidebar-live.tsx +0 -666
- package/src/chat/sidebar/use-main-session.ts +0 -32
- package/src/chat/sidebar/useAgentNames.ts +0 -12
- package/src/chat/sidebar/useCompactionProgress.ts +0 -24
- package/src/chat/sidebar/usePinnedProjects.ts +0 -36
- package/src/chat/sidebar/useSaveViewAsSpace.ts +0 -42
- package/src/chat/sidebar/useSessionActivity.ts +0 -24
- package/src/chat/sidebar/useSessionBadges.ts +0 -26
- package/src/chat/sidebar/useSessionDirectoryView.ts +0 -128
- package/src/chat/sidebar/useSessionSearch.ts +0 -94
- package/src/chat/sidebar/useSidebarKeyboardNav.ts +0 -167
- package/src/chat/sidebar/useSidebarLabels.ts +0 -10
- package/src/chat/testing/composer.contract.ts +0 -508
- package/src/chat/testing/contract.ts +0 -634
- package/src/chat/testing/fixture-composer-chrome.ts +0 -159
- package/src/chat/testing/fixture-composer-host.ts +0 -147
- package/src/chat/testing/fixture-sidebar-host.ts +0 -99
- package/src/chat/testing/index.ts +0 -12
- package/src/chat/testing/sidebar.contract.ts +0 -196
- package/src/chat/transcript/BadgeMenu.tsx +0 -241
- package/src/chat/transcript/CardMarkdown.tsx +0 -102
- package/src/chat/transcript/ChipCard.tsx +0 -187
- package/src/chat/transcript/ChipCards.tsx +0 -100
- package/src/chat/transcript/DiffLines.tsx +0 -122
- package/src/chat/transcript/EarlierHistory.tsx +0 -136
- package/src/chat/transcript/EditDiffBlock.tsx +0 -176
- package/src/chat/transcript/FileChip.tsx +0 -361
- package/src/chat/transcript/ImageGenerationBlock.tsx +0 -239
- package/src/chat/transcript/InlineChipText.tsx +0 -57
- package/src/chat/transcript/InteractionToolBody.tsx +0 -211
- package/src/chat/transcript/LazyRow.tsx +0 -311
- package/src/chat/transcript/MermaidDiagram.tsx +0 -484
- package/src/chat/transcript/PromptEcho.tsx +0 -171
- package/src/chat/transcript/PromptOriginLabel.tsx +0 -44
- package/src/chat/transcript/ProseMarkdown.tsx +0 -168
- package/src/chat/transcript/ReferenceText.tsx +0 -198
- package/src/chat/transcript/SelectCursor.tsx +0 -118
- package/src/chat/transcript/SelectTurnHint.tsx +0 -81
- package/src/chat/transcript/SelectTurnProvider.tsx +0 -150
- package/src/chat/transcript/SubagentBlock.tsx +0 -224
- package/src/chat/transcript/TranscriptRow.tsx +0 -362
- package/src/chat/transcript/TranscriptSearch.tsx +0 -171
- package/src/chat/transcript/TurnMenu.tsx +0 -217
- package/src/chat/transcript/actions.tsx +0 -77
- package/src/chat/transcript/badges.tsx +0 -155
- package/src/chat/transcript/chip-details.ts +0 -169
- package/src/chat/transcript/chip-resolve.ts +0 -56
- package/src/chat/transcript/extension-renderers.tsx +0 -148
- package/src/chat/transcript/fold-attachments.tsx +0 -221
- package/src/chat/transcript/fold-status.tsx +0 -112
- package/src/chat/transcript/fold-worker.tsx +0 -160
- package/src/chat/transcript/fold.tsx +0 -522
- package/src/chat/transcript/frame.tsx +0 -326
- package/src/chat/transcript/index.ts +0 -66
- package/src/chat/transcript/markdown-cache.ts +0 -84
- package/src/chat/transcript/markdown-context.ts +0 -52
- package/src/chat/transcript/markdown.tsx +0 -351
- package/src/chat/transcript/messages.tsx +0 -169
- package/src/chat/transcript/notices.tsx +0 -508
- package/src/chat/transcript/prompt-lines.tsx +0 -55
- package/src/chat/transcript/prompt.tsx +0 -258
- package/src/chat/transcript/prose.tsx +0 -171
- package/src/chat/transcript/recent-map.ts +0 -32
- package/src/chat/transcript/references.ts +0 -108
- package/src/chat/transcript/remark-references.ts +0 -157
- package/src/chat/transcript/remark-refs.ts +0 -176
- package/src/chat/transcript/renderer-slots.tsx +0 -35
- package/src/chat/transcript/renderers.tsx +0 -251
- package/src/chat/transcript/row-estimate.ts +0 -158
- package/src/chat/transcript/run-rows.tsx +0 -291
- package/src/chat/transcript/site-icons.ts +0 -27
- package/src/chat/transcript/thumbnails.ts +0 -146
- package/src/chat/transcript/tool-batch.tsx +0 -102
- package/src/chat/transcript/tool-details.tsx +0 -31
- package/src/chat/transcript/tool-media.tsx +0 -132
- package/src/chat/transcript/tool-parts.tsx +0 -358
- package/src/chat/transcript/tool-payload.tsx +0 -76
- package/src/chat/transcript/tool-row.tsx +0 -496
- package/src/chat/transcript/turn-commands.ts +0 -101
- package/src/chat/transcript/use-transcript-rows.ts +0 -195
- package/src/chat/transcript/useComposerSearch.ts +0 -106
- package/src/chat/transcript/useSelectTurnKeys.ts +0 -204
- package/src/chat/transcript/useSettledReveal.ts +0 -57
- package/src/chat/transcript/useStickToBottom.ts +0 -600
- package/src/chat/transcript/useTranscriptFind.ts +0 -70
- package/src/chat/transcript/useTranscriptFindKey.ts +0 -52
- package/src/chat/transcript/useTranscriptScroll.ts +0 -163
- package/src/chat/transcript/useTranscriptSearch.tsx +0 -382
- package/src/chat/transcript/useTranscriptSelectionCopy.ts +0 -63
- package/src/chat/transcript/useWheelHoverPause.ts +0 -79
- package/src/chat/transcript/user-bash.tsx +0 -134
- package/src/chat/transcript-options.ts +0 -51
- package/src/chat/useChatLabels.ts +0 -14
- package/src/code/CodeHighlightProvider.tsx +0 -87
- package/src/code/HighlightedCode.tsx +0 -156
- package/src/code/code-themes.ts +0 -187
- package/src/code/editor/CodeCompletion.tsx +0 -719
- package/src/code/editor/CodeEditor.tsx +0 -480
- package/src/code/editor/CodeHover.tsx +0 -429
- package/src/code/editor/DiagnosticAnnotation.tsx +0 -73
- package/src/code/editor/DiagnosticsChip.tsx +0 -85
- package/src/code/editor/DiffView.tsx +0 -197
- package/src/code/editor/EditorColumn.tsx +0 -256
- package/src/code/editor/FileIcon.tsx +0 -89
- package/src/code/editor/FileTabPill.tsx +0 -101
- package/src/code/editor/FileTree.tsx +0 -414
- package/src/code/editor/FileView.tsx +0 -462
- package/src/code/editor/HighlightWorkers.tsx +0 -84
- package/src/code/editor/LanguageEditor.tsx +0 -210
- package/src/code/editor/_vendor/tree-icon-colors.ts +0 -72
- package/src/code/editor/diagnostics.ts +0 -140
- package/src/code/editor/edit-session.ts +0 -32
- package/src/code/editor/environment.tsx +0 -88
- package/src/code/editor/find/FindBar.tsx +0 -126
- package/src/code/editor/find/find-highlight.ts +0 -138
- package/src/code/editor/find/find-model.ts +0 -123
- package/src/code/editor/find/settle-scroll.ts +0 -77
- package/src/code/editor/find/useFind.ts +0 -203
- package/src/code/editor/fs-adapter.ts +0 -37
- package/src/code/editor/index.ts +0 -36
- package/src/code/editor/language.ts +0 -31
- package/src/code/editor/patch-parse.ts +0 -176
- package/src/code/editor/patch-parse.worker.ts +0 -12
- package/src/code/editor/pierre-theme.ts +0 -155
- package/src/code/editor/prime-diff.ts +0 -37
- package/src/code/editor/reveal.ts +0 -58
- package/src/code/editor/scroll-reach.ts +0 -28
- package/src/code/editor/useCodeDocument.ts +0 -226
- package/src/code/editor/useDefinition.ts +0 -159
- package/src/code/editor/useDetachCleanup.ts +0 -36
- package/src/code/editor/useFileDocument.ts +0 -87
- package/src/code/editor/useRevealLine.ts +0 -92
- package/src/code/editor/word-at.ts +0 -145
- package/src/code/highlight.worker.ts +0 -16
- package/src/code/highlighter.ts +0 -181
- package/src/code/highlights.ts +0 -51
- package/src/code/mermaid-lexer.ts +0 -331
- package/src/code/shiki-theme.ts +0 -46
- package/src/components/BrandMark.tsx +0 -118
- package/src/components/Breadcrumb.tsx +0 -105
- package/src/components/BrowserChrome.tsx +0 -189
- package/src/components/BrowserSignIn.tsx +0 -210
- package/src/components/ChoiceCards.tsx +0 -170
- package/src/components/CodeFrame.tsx +0 -225
- package/src/components/ConfirmDialog.tsx +0 -119
- package/src/components/CopyButton.tsx +0 -85
- package/src/components/EditableTitle.tsx +0 -199
- package/src/components/ErrorBoundary.tsx +0 -208
- package/src/components/Form.tsx +0 -593
- package/src/components/Highlighted.tsx +0 -68
- package/src/components/HowItWorks.tsx +0 -123
- package/src/components/IconButton.tsx +0 -101
- package/src/components/IconToggle.tsx +0 -71
- package/src/components/Keycap.tsx +0 -334
- package/src/components/Lightbox.tsx +0 -257
- package/src/components/LoadError.tsx +0 -45
- package/src/components/MediaNav.tsx +0 -85
- package/src/components/Menu.tsx +0 -435
- package/src/components/Overlay.tsx +0 -327
- package/src/components/PanelEmpty.tsx +0 -80
- package/src/components/PanelRows.tsx +0 -107
- package/src/components/PreviewWindow.tsx +0 -53
- package/src/components/ReorderTabs.tsx +0 -103
- package/src/components/RowActionsMenu.tsx +0 -383
- package/src/components/SegmentSpinner.tsx +0 -88
- package/src/components/Segmented.tsx +0 -126
- package/src/components/StepFrame.tsx +0 -151
- package/src/components/Stepper.tsx +0 -157
- package/src/components/Surface.tsx +0 -191
- package/src/components/SwatchPicker.tsx +0 -147
- package/src/components/SwitchGlyph.tsx +0 -56
- package/src/components/TabPill.tsx +0 -188
- package/src/components/ThemeThumb.tsx +0 -52
- package/src/components/ToggleCard.tsx +0 -120
- package/src/components/Tooltip.tsx +0 -288
- package/src/components/ZoomableImage.tsx +0 -322
- package/src/components/button.ts +0 -120
- package/src/components/floating/FloatingSurface.tsx +0 -158
- package/src/components/floating/HoverCard.tsx +0 -143
- package/src/components/floating/Popover.tsx +0 -166
- package/src/components/floating/useAnchoredPosition.ts +0 -186
- package/src/components/floating/usePopover.ts +0 -158
- package/src/components/image-clipboard.ts +0 -70
- package/src/components/keyboard-layout.ts +0 -115
- package/src/components/palette/PaletteList.tsx +0 -432
- package/src/components/palette/PalettePanel.tsx +0 -338
- package/src/components/palette/palette-layout.ts +0 -86
- package/src/components/report-error.ts +0 -142
- package/src/components/zoom.ts +0 -133
- package/src/extensions/ExtensionComponent.tsx +0 -167
- package/src/extensions/ExtensionDialogHost.tsx +0 -445
- package/src/extensions/ExtensionRenderer.tsx +0 -100
- package/src/extensions/ExtensionScreen.tsx +0 -122
- package/src/extensions/ExtensionSettingsPage.tsx +0 -112
- package/src/extensions/ExtensionSettingsPages.tsx +0 -44
- package/src/extensions/ExtensionSettingsSidebar.tsx +0 -373
- package/src/extensions/ExtensionSlot.tsx +0 -213
- package/src/extensions/ExtensionWebview.tsx +0 -104
- package/src/extensions/ExtensionsProvider.tsx +0 -124
- package/src/extensions/SettingsWireForm.tsx +0 -182
- package/src/extensions/headless/dialog-queue.ts +0 -92
- package/src/extensions/headless/effect-channel.ts +0 -50
- package/src/extensions/headless/effect-router.ts +0 -107
- package/src/extensions/headless/fixture-host.ts +0 -381
- package/src/extensions/headless/host.ts +0 -398
- package/src/extensions/headless/index.ts +0 -17
- package/src/extensions/headless/labels.ts +0 -64
- package/src/extensions/headless/links.ts +0 -56
- package/src/extensions/headless/select.ts +0 -249
- package/src/extensions/headless/webview-bridge.ts +0 -127
- package/src/extensions/headless/wire.ts +0 -175
- package/src/extensions/hooks.ts +0 -209
- package/src/extensions/index.ts +0 -25
- package/src/extensions/kit.ts +0 -79
- package/src/extensions/links.tsx +0 -165
- package/src/extensions/testing/contract.ts +0 -382
- package/src/extensions/testing/index.ts +0 -6
- package/src/extensions/useExtensionsLabels.ts +0 -14
- package/src/files/CodeViewer.tsx +0 -289
- package/src/files/DiffFileViewer.tsx +0 -143
- package/src/files/DiffsTab.tsx +0 -581
- package/src/files/EditorColumn.tsx +0 -453
- package/src/files/EditorEnvironmentRoot.tsx +0 -63
- package/src/files/FilesDiagnosticsChip.tsx +0 -32
- package/src/files/FilesProvider.tsx +0 -58
- package/src/files/FilesTab.tsx +0 -441
- package/src/files/MediaDiff.tsx +0 -61
- package/src/files/MediaView.tsx +0 -170
- package/src/files/ReviewDraft.tsx +0 -88
- package/src/files/ReviewableDiff.tsx +0 -72
- package/src/files/SearchPanel.tsx +0 -325
- package/src/files/TreeColumn.tsx +0 -229
- package/src/files/code-excerpt.ts +0 -265
- package/src/files/code-menu.ts +0 -53
- package/src/files/drafts-store.ts +0 -192
- package/src/files/file-actions.ts +0 -152
- package/src/files/headless/editor-prefs.ts +0 -230
- package/src/files/headless/entries.ts +0 -172
- package/src/files/headless/fixture-host.ts +0 -260
- package/src/files/headless/host.ts +0 -387
- package/src/files/headless/index.ts +0 -14
- package/src/files/headless/labels.ts +0 -123
- package/src/files/headless/lsp-edits.ts +0 -58
- package/src/files/headless/media.ts +0 -57
- package/src/files/headless/name-match.ts +0 -38
- package/src/files/headless/search.ts +0 -23
- package/src/files/headless/view.ts +0 -114
- package/src/files/headless/workspace-diff.ts +0 -82
- package/src/files/index.ts +0 -25
- package/src/files/lazy-tabs.tsx +0 -41
- package/src/files/session-patch.ts +0 -45
- package/src/files/tab-hooks.ts +0 -37
- package/src/files/testing/contract.ts +0 -279
- package/src/files/testing/demo.ts +0 -36
- package/src/files/testing/index.ts +0 -7
- package/src/files/useCodeReview.tsx +0 -177
- package/src/files/useDiagnostics.ts +0 -59
- package/src/files/useDiagnosticsRun.ts +0 -86
- package/src/files/useEntryActions.ts +0 -280
- package/src/files/useFilesDiagnostics.ts +0 -51
- package/src/files/useFilesLabels.ts +0 -14
- package/src/files/useFolderChanges.ts +0 -38
- package/src/files/useLsp.ts +0 -181
- package/src/files/useOpenFiles.ts +0 -402
- package/src/files/useWorkspace.ts +0 -148
- package/src/files/working-tree-diff.ts +0 -142
- package/src/git/BranchMenu.tsx +0 -988
- package/src/git/GitBar.tsx +0 -297
- package/src/git/GitProvider.tsx +0 -50
- package/src/git/ImportRepoDialog.tsx +0 -390
- package/src/git/MoveSessionDialog.tsx +0 -396
- package/src/git/RemoteFolderPicker.tsx +0 -475
- package/src/git/SyncChip.tsx +0 -275
- package/src/git/WherePicker.tsx +0 -358
- package/src/git/headless/environment.ts +0 -132
- package/src/git/headless/host.ts +0 -353
- package/src/git/headless/index.ts +0 -14
- package/src/git/headless/labels.ts +0 -230
- package/src/git/headless/move.ts +0 -101
- package/src/git/headless/remote-clone.ts +0 -44
- package/src/git/headless/status-reads.ts +0 -77
- package/src/git/headless/switcher.ts +0 -215
- package/src/git/headless/sync.ts +0 -71
- package/src/git/index.ts +0 -17
- package/src/git/testing/contract.ts +0 -551
- package/src/git/testing/index.ts +0 -537
- package/src/git/useEnvironmentChoices.ts +0 -50
- package/src/git/useGitBar.ts +0 -180
- package/src/hooks/keyed-store.ts +0 -65
- package/src/hooks/useDisplayPath.tsx +0 -93
- package/src/hooks/useHydrated.ts +0 -16
- package/src/hooks/useMinuteTick.ts +0 -49
- package/src/hooks/useNearViewport.ts +0 -111
- package/src/hooks/usePersistedState.ts +0 -98
- package/src/hooks/useResizeDrag.ts +0 -240
- package/src/hooks/useTabDrag.ts +0 -88
- package/src/index.ts +0 -119
- package/src/keybindings/KeyCommands.tsx +0 -123
- package/src/keybindings/KeyHint.tsx +0 -78
- package/src/keybindings/KeybindingsProvider.tsx +0 -231
- package/src/keybindings/headless/catalog.ts +0 -360
- package/src/keybindings/headless/commands.ts +0 -77
- package/src/keybindings/headless/fixture-host.ts +0 -51
- package/src/keybindings/headless/host.ts +0 -29
- package/src/keybindings/headless/index.ts +0 -13
- package/src/keybindings/headless/key-scope.ts +0 -91
- package/src/keybindings/headless/labels.ts +0 -14
- package/src/keybindings/headless/overrides.ts +0 -64
- package/src/keybindings/index.ts +0 -15
- package/src/keybindings/load-once.ts +0 -11
- package/src/keybindings/match.ts +0 -48
- package/src/keybindings/press.ts +0 -80
- package/src/keybindings/testing/contract.ts +0 -139
- package/src/keybindings/testing/index.ts +0 -6
- package/src/keybindings/useHelpKey.ts +0 -35
- package/src/keybindings/useKeybindingsLabels.ts +0 -14
- package/src/labels.tsx +0 -175
- package/src/machines/AddServerForm.tsx +0 -151
- package/src/machines/Banners.tsx +0 -172
- package/src/machines/DaemonMenu.tsx +0 -413
- package/src/machines/HostCapabilities.tsx +0 -245
- package/src/machines/HostSignIn.tsx +0 -63
- package/src/machines/HostSyncPanel.tsx +0 -275
- package/src/machines/HostsSection.tsx +0 -312
- package/src/machines/MachinesProvider.tsx +0 -164
- package/src/machines/ServerCard.tsx +0 -347
- package/src/machines/ServerMachinesPanel.tsx +0 -547
- package/src/machines/ServerUpdatePanel.tsx +0 -160
- package/src/machines/SyncAccounts.tsx +0 -148
- package/src/machines/SyncMarker.tsx +0 -87
- package/src/machines/SyncOutcomeBadge.tsx +0 -84
- package/src/machines/TokensPanel.tsx +0 -249
- package/src/machines/headless/fixture-host.ts +0 -519
- package/src/machines/headless/fixtures.ts +0 -164
- package/src/machines/headless/host.ts +0 -381
- package/src/machines/headless/index.ts +0 -13
- package/src/machines/headless/labels.ts +0 -364
- package/src/machines/headless/messages.ts +0 -209
- package/src/machines/headless/presence.ts +0 -110
- package/src/machines/headless/settings-focus.ts +0 -25
- package/src/machines/headless/stores.ts +0 -137
- package/src/machines/headless/sync.ts +0 -207
- package/src/machines/index.ts +0 -29
- package/src/machines/settings-section.tsx +0 -37
- package/src/machines/testing/contract.ts +0 -617
- package/src/machines/testing/index.ts +0 -7
- package/src/machines/testing/sync.contract.ts +0 -260
- package/src/motion/SwapIcon.tsx +0 -29
- package/src/motion/collapse.ts +0 -21
- package/src/motion/grow.tsx +0 -86
- package/src/motion/layout-animating.ts +0 -50
- package/src/motion/presence.ts +0 -191
- package/src/motion/provider.tsx +0 -63
- package/src/motion/reduced.ts +0 -36
- package/src/motion/roll.tsx +0 -131
- package/src/motion/shimmer.ts +0 -15
- package/src/motion/size.tsx +0 -192
- package/src/motion/springs.ts +0 -413
- package/src/motion/swap.tsx +0 -216
- package/src/motion/title-text.tsx +0 -74
- package/src/onboarding/ConnectProviderCard.tsx +0 -49
- package/src/onboarding/OnboardingFlow.tsx +0 -176
- package/src/onboarding/OnboardingProvider.tsx +0 -209
- package/src/onboarding/OnboardingStepFrame.tsx +0 -80
- package/src/onboarding/conversation.tsx +0 -196
- package/src/onboarding/demos/autonomy.tsx +0 -154
- package/src/onboarding/demos/extensions.tsx +0 -183
- package/src/onboarding/demos/features.tsx +0 -488
- package/src/onboarding/demos/how-it-works.tsx +0 -698
- package/src/onboarding/demos/index.ts +0 -11
- package/src/onboarding/demos/parts.tsx +0 -133
- package/src/onboarding/demos/tour.tsx +0 -217
- package/src/onboarding/headless/controller.ts +0 -110
- package/src/onboarding/headless/fixture-host.ts +0 -269
- package/src/onboarding/headless/fixtures.ts +0 -486
- package/src/onboarding/headless/host.ts +0 -176
- package/src/onboarding/headless/index.ts +0 -8
- package/src/onboarding/headless/labels.ts +0 -282
- package/src/onboarding/index.ts +0 -21
- package/src/onboarding/marks.tsx +0 -107
- package/src/onboarding/preview-attachments.ts +0 -39
- package/src/onboarding/skills/SkillSourceBrowser.tsx +0 -128
- package/src/onboarding/skills/parts.tsx +0 -464
- package/src/onboarding/sources/SourceBrowser.tsx +0 -400
- package/src/onboarding/steps/AutonomyStep.tsx +0 -128
- package/src/onboarding/steps/ConnectStep.tsx +0 -104
- package/src/onboarding/steps/ConnectorsStep.tsx +0 -222
- package/src/onboarding/steps/ConversationStep.tsx +0 -132
- package/src/onboarding/steps/ExtensionsStep.tsx +0 -113
- package/src/onboarding/steps/FeatureExample.tsx +0 -46
- package/src/onboarding/steps/FeaturesStep.tsx +0 -88
- package/src/onboarding/steps/ImportStep.tsx +0 -156
- package/src/onboarding/steps/LookStep.tsx +0 -276
- package/src/onboarding/steps/ReadyStep.tsx +0 -278
- package/src/onboarding/steps/SkillsStep.tsx +0 -45
- package/src/onboarding/steps/StepSection.tsx +0 -63
- package/src/onboarding/steps/Tradeoff.tsx +0 -45
- package/src/onboarding/steps/WelcomeStep.tsx +0 -147
- package/src/onboarding/steps/connect/KeyForm.tsx +0 -112
- package/src/onboarding/steps/connect/ProviderPanel.tsx +0 -149
- package/src/onboarding/steps/connect/ProviderReady.tsx +0 -171
- package/src/onboarding/steps/connect/ready-text.ts +0 -17
- package/src/onboarding/steps/index.ts +0 -12
- package/src/onboarding/steps/tasks.tsx +0 -84
- package/src/onboarding/testing/contract.ts +0 -472
- package/src/onboarding/testing/index.ts +0 -7
- package/src/onboarding/tutorials.tsx +0 -45
- package/src/onboarding/useSignIn.ts +0 -58
- package/src/palette/CommandPalette.tsx +0 -59
- package/src/palette/PaletteDialog.tsx +0 -186
- package/src/palette/PaletteProvider.tsx +0 -149
- package/src/palette/PaletteRows.tsx +0 -208
- package/src/palette/app-sources.ts +0 -62
- package/src/palette/headless/app-sources.ts +0 -515
- package/src/palette/headless/gather.ts +0 -50
- package/src/palette/headless/host.ts +0 -129
- package/src/palette/headless/index.ts +0 -15
- package/src/palette/headless/labels.ts +0 -124
- package/src/palette/headless/rank-protocol.ts +0 -23
- package/src/palette/headless/recents.ts +0 -35
- package/src/palette/headless/session-sources.ts +0 -218
- package/src/palette/headless/sources.ts +0 -313
- package/src/palette/headless/store.ts +0 -105
- package/src/palette/index.ts +0 -17
- package/src/palette/rank.worker.ts +0 -30
- package/src/palette/setup.ts +0 -19
- package/src/palette/testing/contract.ts +0 -250
- package/src/palette/testing/index.ts +0 -152
- package/src/palette/useConversationSearch.ts +0 -115
- package/src/palette/usePaletteController.ts +0 -229
- package/src/palette/useRankedItems.ts +0 -122
- package/src/path.ts +0 -199
- package/src/server/demo-tools.ts +0 -34
- package/src/server/environment.ts +0 -118
- package/src/server/index.ts +0 -7
- package/src/server/scripted-provider.ts +0 -174
- package/src/server/sse-handler.ts +0 -457
- package/src/server/testing/index.ts +0 -7
- package/src/session/ArtifactRowChips.tsx +0 -260
- package/src/session/ArtifactsPanel.tsx +0 -426
- package/src/session/DiffFileTree.tsx +0 -173
- package/src/session/PanelAttention.tsx +0 -131
- package/src/session/ProjectHome.tsx +0 -733
- package/src/session/ProviderUsageProvider.tsx +0 -113
- package/src/session/QueueTab.tsx +0 -669
- package/src/session/RunningWorkDialog.tsx +0 -178
- package/src/session/SessionCacheFacts.tsx +0 -190
- package/src/session/SessionDetailsDialog.tsx +0 -627
- package/src/session/SessionHeader.tsx +0 -242
- package/src/session/SessionProvider.tsx +0 -98
- package/src/session/SessionShell.tsx +0 -77
- package/src/session/SideChat.tsx +0 -320
- package/src/session/TodoList.tsx +0 -123
- package/src/session/TodosPanel.tsx +0 -279
- package/src/session/TurnDetailsDialog.tsx +0 -299
- package/src/session/UsagePanel.tsx +0 -358
- package/src/session/WelcomeScreen.tsx +0 -88
- package/src/session/headless/artifacts.ts +0 -101
- package/src/session/headless/diff-tree.ts +0 -167
- package/src/session/headless/fixture-host.ts +0 -362
- package/src/session/headless/home-layout.ts +0 -276
- package/src/session/headless/host.ts +0 -263
- package/src/session/headless/index.ts +0 -23
- package/src/session/headless/keyed.ts +0 -72
- package/src/session/headless/labels.ts +0 -337
- package/src/session/headless/queue-attachments.ts +0 -73
- package/src/session/headless/queue.ts +0 -122
- package/src/session/headless/running-work.ts +0 -85
- package/src/session/headless/session-actions.ts +0 -198
- package/src/session/headless/session-diffs.ts +0 -136
- package/src/session/headless/side.ts +0 -63
- package/src/session/headless/todos.ts +0 -62
- package/src/session/headless/usage-format.ts +0 -19
- package/src/session/headless/usage.ts +0 -407
- package/src/session/index.ts +0 -31
- package/src/session/modal-shell.tsx +0 -24
- package/src/session/testing/contract.ts +0 -588
- package/src/session/testing/demo.ts +0 -224
- package/src/session/testing/index.ts +0 -7
- package/src/session/useSessionLabels.ts +0 -14
- package/src/session/useUsageSummary.ts +0 -82
- package/src/settings/SettingsHeadingText.tsx +0 -54
- package/src/settings/SettingsHostSwitcher.tsx +0 -93
- package/src/settings/SettingsNav.tsx +0 -198
- package/src/settings/SettingsProvider.tsx +0 -127
- package/src/settings/SettingsRowsPage.tsx +0 -218
- package/src/settings/SettingsShell.tsx +0 -337
- package/src/settings/SettingsTutorial.tsx +0 -55
- package/src/settings/headless/catalog.ts +0 -570
- package/src/settings/headless/claude-import.ts +0 -61
- package/src/settings/headless/enabled.ts +0 -44
- package/src/settings/headless/fixture-accounts.ts +0 -260
- package/src/settings/headless/fixture-host.ts +0 -162
- package/src/settings/headless/fixture-models.ts +0 -51
- package/src/settings/headless/fixture-performance.ts +0 -350
- package/src/settings/headless/fixture-sections.ts +0 -391
- package/src/settings/headless/host.ts +0 -127
- package/src/settings/headless/index.ts +0 -22
- package/src/settings/headless/labels.ts +0 -63
- package/src/settings/headless/layout-sections.ts +0 -41
- package/src/settings/headless/layout.ts +0 -732
- package/src/settings/headless/mcp.ts +0 -319
- package/src/settings/headless/models.ts +0 -51
- package/src/settings/headless/page-counts.ts +0 -40
- package/src/settings/headless/performance.ts +0 -524
- package/src/settings/headless/providers.ts +0 -117
- package/src/settings/headless/registry.ts +0 -62
- package/src/settings/headless/resource.ts +0 -75
- package/src/settings/headless/search.ts +0 -142
- package/src/settings/headless/sections-host.ts +0 -340
- package/src/settings/index.ts +0 -32
- package/src/settings/rows.tsx +0 -152
- package/src/settings/section.tsx +0 -165
- package/src/settings/sections/appearance/AppearanceSection.tsx +0 -667
- package/src/settings/sections/appearance/labels.ts +0 -77
- package/src/settings/sections/claude-import/ClaudeImportDialog.tsx +0 -258
- package/src/settings/sections/claude-import/labels.ts +0 -42
- package/src/settings/sections/claude-import/use-claude-import-available.ts +0 -35
- package/src/settings/sections/descriptors.tsx +0 -261
- package/src/settings/sections/editor/EditorSection.tsx +0 -521
- package/src/settings/sections/editor/labels.ts +0 -84
- package/src/settings/sections/enabled-list/EnabledListSection.tsx +0 -112
- package/src/settings/sections/enabled-list/labels.ts +0 -37
- package/src/settings/sections/environments/EnvironmentsSection.tsx +0 -549
- package/src/settings/sections/environments/labels.ts +0 -31
- package/src/settings/sections/extensions/ChangeOriginDialog.tsx +0 -218
- package/src/settings/sections/extensions/CreateExtensionDialog.tsx +0 -210
- package/src/settings/sections/extensions/ExtensionConfigRows.tsx +0 -508
- package/src/settings/sections/extensions/ExtensionOptionsSection.tsx +0 -356
- package/src/settings/sections/extensions/ExtensionPicksBar.tsx +0 -112
- package/src/settings/sections/extensions/ExtensionSourceBrowser.tsx +0 -244
- package/src/settings/sections/extensions/ExtensionsSection.tsx +0 -665
- package/src/settings/sections/extensions/create-labels.ts +0 -31
- package/src/settings/sections/extensions/labels.ts +0 -64
- package/src/settings/sections/extensions/options-labels.ts +0 -34
- package/src/settings/sections/host-catalog/HostCatalogSection.tsx +0 -457
- package/src/settings/sections/host-catalog/labels.ts +0 -44
- package/src/settings/sections/index.ts +0 -60
- package/src/settings/sections/instructions/InstructionsSection.tsx +0 -385
- package/src/settings/sections/instructions/labels.ts +0 -33
- package/src/settings/sections/keybindings/KeybindingsSection.tsx +0 -124
- package/src/settings/sections/keybindings/labels.ts +0 -72
- package/src/settings/sections/keybindings/rows.ts +0 -103
- package/src/settings/sections/logs/LogsSection.tsx +0 -153
- package/src/settings/sections/logs/labels.ts +0 -20
- package/src/settings/sections/mcp/McpAddForm.tsx +0 -245
- package/src/settings/sections/mcp/McpSection.tsx +0 -358
- package/src/settings/sections/mcp/McpServerRow.tsx +0 -404
- package/src/settings/sections/mcp/labels.ts +0 -193
- package/src/settings/sections/models/AgentDefaults.tsx +0 -365
- package/src/settings/sections/models/ModelListPicker.tsx +0 -265
- package/src/settings/sections/models/ModelPickField.tsx +0 -220
- package/src/settings/sections/models/ModelRows.tsx +0 -381
- package/src/settings/sections/models/SpacesDefaultsSection.tsx +0 -102
- package/src/settings/sections/models/labels.ts +0 -119
- package/src/settings/sections/models/model-test.tsx +0 -125
- package/src/settings/sections/performance/PerfSparkline.tsx +0 -64
- package/src/settings/sections/performance/PerformanceHud.tsx +0 -110
- package/src/settings/sections/performance/PerformanceSection.tsx +0 -770
- package/src/settings/sections/performance/labels.ts +0 -114
- package/src/settings/sections/performance/use-perf-monitor.ts +0 -26
- package/src/settings/sections/plugins/PluginsSection.tsx +0 -151
- package/src/settings/sections/plugins/labels.ts +0 -23
- package/src/settings/sections/providers/CredentialSources.tsx +0 -237
- package/src/settings/sections/providers/ProvidersSection.tsx +0 -389
- package/src/settings/sections/providers/ServerProvidersSection.tsx +0 -244
- package/src/settings/sections/providers/ServerSignIn.tsx +0 -137
- package/src/settings/sections/providers/labels.ts +0 -160
- package/src/settings/sections/shared/catalog.tsx +0 -265
- package/src/settings/sections/shared/labels.ts +0 -31
- package/src/settings/sections/skills/SkillList.tsx +0 -494
- package/src/settings/sections/skills/SkillsSection.tsx +0 -249
- package/src/settings/sections/skills/labels.ts +0 -54
- package/src/settings/sections/use-section-labels.ts +0 -10
- package/src/settings/testing/accounts-demo.ts +0 -110
- package/src/settings/testing/accounts.contract.ts +0 -319
- package/src/settings/testing/claude-import.contract.ts +0 -93
- package/src/settings/testing/contract.ts +0 -192
- package/src/settings/testing/extension-options.contract.ts +0 -163
- package/src/settings/testing/index.ts +0 -11
- package/src/settings/testing/models.contract.ts +0 -135
- package/src/settings/testing/performance.contract.ts +0 -219
- package/src/settings/testing/sections.contract.ts +0 -306
- package/src/terminal/HostTerminalSurface.tsx +0 -917
- package/src/terminal/TerminalDrawer.tsx +0 -228
- package/src/terminal/TerminalPanel.tsx +0 -740
- package/src/terminal/TerminalProvider.tsx +0 -201
- package/src/terminal/TerminalSurface.tsx +0 -262
- package/src/terminal/box-glyphs.ts +0 -333
- package/src/terminal/ghostty.ts +0 -116
- package/src/terminal/grid-size.ts +0 -46
- package/src/terminal/headless/fixture-host.ts +0 -250
- package/src/terminal/headless/host.ts +0 -99
- package/src/terminal/headless/index.ts +0 -11
- package/src/terminal/headless/labels.ts +0 -69
- package/src/terminal/headless/layout.ts +0 -57
- package/src/terminal/headless/links.ts +0 -227
- package/src/terminal/headless/order.ts +0 -28
- package/src/terminal/headless/output-cursor.ts +0 -66
- package/src/terminal/headless/recent.ts +0 -20
- package/src/terminal/headless/replay.ts +0 -45
- package/src/terminal/headless/scope.ts +0 -60
- package/src/terminal/headless/store.ts +0 -637
- package/src/terminal/index.ts +0 -40
- package/src/terminal/keys.ts +0 -34
- package/src/terminal/testing/contract.ts +0 -274
- package/src/terminal/testing/demo.ts +0 -40
- package/src/terminal/testing/index.ts +0 -7
- package/src/terminal/theme.ts +0 -110
- package/src/terminal/useTerminalLabels.ts +0 -14
- package/src/theme/accents.ts +0 -46
- package/src/theme/color.ts +0 -450
- package/src/theme/css-vars.ts +0 -187
- package/src/theme/derive.ts +0 -700
- package/src/theme/from-theme.ts +0 -52
- package/src/theme/stylesheet.ts +0 -55
- package/src/theme/themes.ts +0 -767
- package/src/theme/without-transitions.ts +0 -18
- package/src/uno.ts +0 -167
- package/src/workspace/LayoutBudget.tsx +0 -143
- package/src/workspace/PanelContentView.tsx +0 -523
- package/src/workspace/PanelCorner.tsx +0 -111
- package/src/workspace/PanelGroups.tsx +0 -264
- package/src/workspace/PanelHome.tsx +0 -71
- package/src/workspace/PanelItems.tsx +0 -368
- package/src/workspace/PanelStrip.tsx +0 -316
- package/src/workspace/SidePanel.tsx +0 -240
- package/src/workspace/TabParking.tsx +0 -120
- package/src/workspace/WorkspaceProvider.tsx +0 -558
- package/src/workspace/dnd/engine.ts +0 -371
- package/src/workspace/dnd/hooks.ts +0 -72
- package/src/workspace/dnd/index.ts +0 -57
- package/src/workspace/dnd/parking.tsx +0 -181
- package/src/workspace/extension-tabs.tsx +0 -174
- package/src/workspace/frame-motion.ts +0 -160
- package/src/workspace/headless/contents.ts +0 -125
- package/src/workspace/headless/host.ts +0 -129
- package/src/workspace/headless/index.ts +0 -33
- package/src/workspace/headless/labels.ts +0 -44
- package/src/workspace/headless/layout-memory.ts +0 -649
- package/src/workspace/headless/layouts.ts +0 -224
- package/src/workspace/headless/open-target.ts +0 -125
- package/src/workspace/headless/ops.ts +0 -163
- package/src/workspace/headless/panel-focus.ts +0 -58
- package/src/workspace/headless/panel-tree.ts +0 -259
- package/src/workspace/headless/resolve.ts +0 -146
- package/src/workspace/headless/reveal-at.ts +0 -27
- package/src/workspace/headless/strip-drop.ts +0 -81
- package/src/workspace/headless/tree.ts +0 -480
- package/src/workspace/headless/view.ts +0 -164
- package/src/workspace/index.ts +0 -23
- package/src/workspace/panel-group-keys.ts +0 -36
- package/src/workspace/panel-visibility.ts +0 -28
- package/src/workspace/tab-scopes.ts +0 -245
- package/src/workspace/testing/contract.ts +0 -282
- package/src/workspace/testing/index.ts +0 -140
- package/src/workspace/use-split-drag.ts +0 -73
- package/src/workspace/useScopeLayout.ts +0 -26
- package/src/workspace/useViewport.ts +0 -22
- package/src/workspace/useWorkspaceLabels.ts +0 -14
- package/src/workspace/workspace-key-commands.ts +0 -108
- /package/dist/dist/{types-bDQagoiL.d.ts → types-2HrgolQz.d.ts} +0 -0
|
@@ -1,637 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The terminals, outside React: the drawer and the panel tab show the same
|
|
3
|
-
* terminals, and output must not go through React state.
|
|
4
|
-
*
|
|
5
|
-
* - `scopes`: per scope key (`terminalScopeKey`), the host's state and
|
|
6
|
-
* which terminal is active. Loaded with `host.state`, then kept current
|
|
7
|
-
* by the host's `sessionChanged` / `projectChanged` signals.
|
|
8
|
-
* - `views`: the live views per terminal. Output and reset signals go
|
|
9
|
-
* straight to them; each keeps its own cursor and acks.
|
|
10
|
-
* - On a relink (a daemon restarted, a connection came back) every scope
|
|
11
|
-
* reloads, and once connected every live view attaches again.
|
|
12
|
-
*
|
|
13
|
-
* Agent terminals arrive through `sessionChanged`; they never take focus.
|
|
14
|
-
* When one starts while no placement shows the session's terminals, the
|
|
15
|
-
* session gets a badge the drawer toggle shows. Agents never see project
|
|
16
|
-
* terminals.
|
|
17
|
-
*
|
|
18
|
-
* A draft's terminals move into the session created from it (`adoptDraft`),
|
|
19
|
-
* or back to the project (`releaseDraft`).
|
|
20
|
-
*
|
|
21
|
-
* `reveal` shows one terminal on request (a "Show terminal" action): it
|
|
22
|
-
* takes the active slot, the placement it was revealed in takes focus
|
|
23
|
-
* (`focus`), and a placement opening for it starts no shell of the user's
|
|
24
|
-
* while it stays the one shown.
|
|
25
|
-
*/
|
|
26
|
-
import type { TerminalHost, TerminalInfo, TerminalSessionState, TerminalTarget } from './host';
|
|
27
|
-
import { createMemoryTerminalLayouts, type TerminalLayout, type TerminalLayouts } from './layout';
|
|
28
|
-
import { scopeOfTerminalKey, terminalProjectKey, terminalScopeKey, type TerminalScope } from './scope';
|
|
29
|
-
|
|
30
|
-
/** What a view does with the signals of the terminal it shows. */
|
|
31
|
-
export interface TerminalViewSink {
|
|
32
|
-
/** Live output from `offset`. */
|
|
33
|
-
output(offset: number, data: string): void;
|
|
34
|
-
/** The view's content is replaced with the history up to `offset`. */
|
|
35
|
-
reset(offset: number, data: string): void;
|
|
36
|
-
/** The link came back: attach again from scratch. */
|
|
37
|
-
reattach(): void;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** Where a scope's terminals show: the drawer under the chat, or the side panel's Terminal tab. */
|
|
41
|
-
export type TerminalPlacement = 'drawer' | 'panel';
|
|
42
|
-
|
|
43
|
-
/** A terminal revealed on request, for the placement it was revealed in to focus once (`takeFocus`). */
|
|
44
|
-
export interface TerminalFocusRequest {
|
|
45
|
-
/** The terminal. */
|
|
46
|
-
terminalId: string;
|
|
47
|
-
/** The placement that focuses it. */
|
|
48
|
-
placement: TerminalPlacement;
|
|
49
|
-
/** Increases with every request. */
|
|
50
|
-
seq: number;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** One scope's terminals as the components read them. */
|
|
54
|
-
export interface ScopeTerminals {
|
|
55
|
-
/** Null until the first `state` answers. */
|
|
56
|
-
state: TerminalSessionState | null;
|
|
57
|
-
/** The last failed call (open, restart, …), shown until the next success. */
|
|
58
|
-
error: string | null;
|
|
59
|
-
/** The active terminal. */
|
|
60
|
-
activeId: string | null;
|
|
61
|
-
/** Agent terminals that started while nothing showed terminals (sessions only). */
|
|
62
|
-
unseenAgent: number;
|
|
63
|
-
/** A revealed terminal waiting for its placement to focus it. */
|
|
64
|
-
focus: TerminalFocusRequest | null;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/** A grid size in cells. */
|
|
68
|
-
export interface TerminalGrid {
|
|
69
|
-
/** Columns. */
|
|
70
|
-
cols: number;
|
|
71
|
-
/** Rows. */
|
|
72
|
-
rows: number;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const EMPTY: ScopeTerminals = { state: null, error: null, activeId: null, unseenAgent: 0, focus: null };
|
|
76
|
-
|
|
77
|
-
const LOCAL_ENVIRONMENT = { kind: 'local', remote: false } as const;
|
|
78
|
-
|
|
79
|
-
const errorText = (err: unknown): string => (err instanceof Error ? err.message : String(err));
|
|
80
|
-
|
|
81
|
-
type ScopeRef = TerminalScope | string;
|
|
82
|
-
const keyOf = (scope: ScopeRef): string => (typeof scope === 'string' ? scope : terminalScopeKey(scope));
|
|
83
|
-
|
|
84
|
-
/** The terminal store: every scope's terminals, the live views, the layouts. */
|
|
85
|
-
export class TerminalStore {
|
|
86
|
-
/** The host the store reads and acts through. */
|
|
87
|
-
readonly host: TerminalHost;
|
|
88
|
-
/** Where the per-scope layouts live: the host's, else in memory. */
|
|
89
|
-
readonly layouts: TerminalLayouts;
|
|
90
|
-
private scopes = new Map<string, ScopeTerminals>();
|
|
91
|
-
/** The scope behind each key, to reload it (a relink, a list from an unknown scope). */
|
|
92
|
-
private known = new Map<string, TerminalScope>();
|
|
93
|
-
private views = new Map<string, Set<TerminalViewSink>>();
|
|
94
|
-
private placements = new Map<string, number>();
|
|
95
|
-
/** Scopes whose Terminal panel tab is on screen (its body registers while visible). */
|
|
96
|
-
private panelShown = new Set<string>();
|
|
97
|
-
/** The terminal revealed per scope: no shell is auto-opened over it while it is the one shown. */
|
|
98
|
-
private revealed = new Map<string, string>();
|
|
99
|
-
/** Scopes whose drawer the user opened (the toggle), until the drawer's next auto-open uses it up. */
|
|
100
|
-
private drawerOpened = new Set<string>();
|
|
101
|
-
private focusSeq = 0;
|
|
102
|
-
private loading = new Map<string, Promise<void>>();
|
|
103
|
-
private opening = new Set<string>();
|
|
104
|
-
private listeners = new Set<() => void>();
|
|
105
|
-
private wired = false;
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* @param host - The terminal host.
|
|
109
|
-
*/
|
|
110
|
-
constructor(host: TerminalHost) {
|
|
111
|
-
this.host = host;
|
|
112
|
-
this.layouts = host.layouts ?? createMemoryTerminalLayouts();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Registers a listener called after any scope changed. Returns its unsubscribe.
|
|
117
|
-
*
|
|
118
|
-
* @param listener - Called after each change.
|
|
119
|
-
*/
|
|
120
|
-
subscribe = (listener: () => void): (() => void) => {
|
|
121
|
-
this.wire();
|
|
122
|
-
this.listeners.add(listener);
|
|
123
|
-
return () => {
|
|
124
|
-
this.listeners.delete(listener);
|
|
125
|
-
};
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
private emit() {
|
|
129
|
-
for (const l of this.listeners) l();
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* A scope's terminals (by its scope or key).
|
|
134
|
-
*
|
|
135
|
-
* @param scope - The scope or its key; `null` reads as none.
|
|
136
|
-
*/
|
|
137
|
-
get = (scope: ScopeRef | null): ScopeTerminals => {
|
|
138
|
-
if (!scope) return EMPTY;
|
|
139
|
-
return this.scopes.get(keyOf(scope)) ?? EMPTY;
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* The terminal with this id, in whichever scope holds it.
|
|
144
|
-
*
|
|
145
|
-
* @param terminalId - The terminal.
|
|
146
|
-
*/
|
|
147
|
-
terminal(terminalId: string): TerminalInfo | null {
|
|
148
|
-
for (const s of this.scopes.values()) {
|
|
149
|
-
const t = s.state?.terminals.find((x) => x.id === terminalId);
|
|
150
|
-
if (t) return t;
|
|
151
|
-
}
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
private remember(scope: TerminalScope): string {
|
|
156
|
-
const key = terminalScopeKey(scope);
|
|
157
|
-
this.known.set(key, scope);
|
|
158
|
-
return key;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/** The scope to reload a key with: the one last seen, else what the key itself says. */
|
|
162
|
-
private scopeFor(key: string): TerminalScope {
|
|
163
|
-
return this.known.get(key) ?? scopeOfTerminalKey(key);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private patch(key: string, patch: Partial<ScopeTerminals>) {
|
|
167
|
-
const prev = this.scopes.get(key) ?? EMPTY;
|
|
168
|
-
const next = { ...prev, ...patch };
|
|
169
|
-
if (next.state && (!next.activeId || !next.state.terminals.some((t) => t.id === next.activeId))) {
|
|
170
|
-
const list = next.state.terminals;
|
|
171
|
-
next.activeId = list.find((t) => t.owner === 'user')?.id ?? list[0]?.id ?? null;
|
|
172
|
-
}
|
|
173
|
-
this.scopes.set(key, next);
|
|
174
|
-
this.emit();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
private wire() {
|
|
178
|
-
if (this.wired) return;
|
|
179
|
-
this.wired = true;
|
|
180
|
-
this.host.listen({
|
|
181
|
-
sessionChanged: (sessionId, terminals) => this.onChanged(sessionId, terminals),
|
|
182
|
-
projectChanged: (signal) => this.onProjectChanged(signal),
|
|
183
|
-
output: (s) => this.dispatch(s.terminalId, 'output', s.offset, s.data),
|
|
184
|
-
reset: (s) => this.dispatch(s.terminalId, 'reset', s.offset, s.data),
|
|
185
|
-
relink: (connected) => this.onRelink(connected),
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
private dispatch(terminalId: string, kind: 'output' | 'reset', offset: number, data: string) {
|
|
190
|
-
const views = this.views.get(terminalId);
|
|
191
|
-
if (!views) return;
|
|
192
|
-
for (const v of views) v[kind](offset, data);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
private onRelink(connected: boolean) {
|
|
196
|
-
for (const key of this.scopes.keys()) void this.refresh(this.scopeFor(key));
|
|
197
|
-
if (connected) for (const set of this.views.values()) for (const v of set) v.reattach();
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
private onChanged(sessionId: string, terminals: TerminalInfo[]) {
|
|
201
|
-
const key = sessionId;
|
|
202
|
-
const prev = this.scopes.get(key) ?? EMPTY;
|
|
203
|
-
const known = new Set(prev.state?.terminals.map((t) => t.id) ?? []);
|
|
204
|
-
const startedByAgent = prev.state ? terminals.filter((t) => t.owner === 'agent' && !known.has(t.id)).length : 0;
|
|
205
|
-
const state: TerminalSessionState = prev.state
|
|
206
|
-
? { ...prev.state, available: true, terminals }
|
|
207
|
-
: { available: true, environment: LOCAL_ENVIRONMENT, terminals };
|
|
208
|
-
const unseen = (this.placements.get(key) ?? 0) > 0 ? 0 : prev.unseenAgent + startedByAgent;
|
|
209
|
-
this.patch(key, { state, unseenAgent: unseen });
|
|
210
|
-
// First news of this session: the environment comes with the full state.
|
|
211
|
-
if (!prev.state) void this.refresh(this.scopeFor(key));
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/** A project's or a draft's full list: the host machine's, no agent terminals to badge. */
|
|
215
|
-
private onProjectChanged(signal: { root: string; draftId?: string; terminals: TerminalInfo[] }) {
|
|
216
|
-
const key = terminalProjectKey(signal);
|
|
217
|
-
if (!this.known.has(key)) {
|
|
218
|
-
this.known.set(key, {
|
|
219
|
-
root: signal.root,
|
|
220
|
-
cwd: signal.root,
|
|
221
|
-
...(signal.draftId ? { draft: signal.draftId } : {}),
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
const prev = this.scopes.get(key) ?? EMPTY;
|
|
225
|
-
const state: TerminalSessionState = prev.state
|
|
226
|
-
? { ...prev.state, available: true, terminals: signal.terminals }
|
|
227
|
-
: { available: true, environment: LOCAL_ENVIRONMENT, terminals: signal.terminals };
|
|
228
|
-
this.patch(key, { state });
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Loads the scope's state once (callers mount per scope).
|
|
233
|
-
*
|
|
234
|
-
* @param scope - The scope.
|
|
235
|
-
*/
|
|
236
|
-
ensure(scope: TerminalScope): Promise<void> {
|
|
237
|
-
this.wire();
|
|
238
|
-
const key = this.remember(scope);
|
|
239
|
-
if (this.scopes.get(key)?.state) return Promise.resolve();
|
|
240
|
-
return this.refresh(scope);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Forgets a scope whose session was deleted. One a view still shows is kept, and stays after the view goes
|
|
245
|
-
* (one entry per such scope); a later signal for the scope starts it afresh.
|
|
246
|
-
*
|
|
247
|
-
* @param scope - The scope or its key.
|
|
248
|
-
*/
|
|
249
|
-
forget(scope: ScopeRef): void {
|
|
250
|
-
const key = keyOf(scope);
|
|
251
|
-
if (this.placements.has(key) || this.panelShown.has(key)) return;
|
|
252
|
-
const had = this.scopes.delete(key);
|
|
253
|
-
this.known.delete(key);
|
|
254
|
-
this.revealed.delete(key);
|
|
255
|
-
this.drawerOpened.delete(key);
|
|
256
|
-
if (had) this.emit();
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Reads the scope's state again (one read in flight per scope).
|
|
261
|
-
*
|
|
262
|
-
* @param scope - The scope.
|
|
263
|
-
*/
|
|
264
|
-
refresh(scope: TerminalScope): Promise<void> {
|
|
265
|
-
const key = this.remember(scope);
|
|
266
|
-
const inFlight = this.loading.get(key);
|
|
267
|
-
if (inFlight) return inFlight;
|
|
268
|
-
const run = this.host
|
|
269
|
-
.state(scope)
|
|
270
|
-
.then(
|
|
271
|
-
(state) => this.patch(key, { state }),
|
|
272
|
-
(err: unknown) =>
|
|
273
|
-
this.patch(key, {
|
|
274
|
-
state: { available: false, reason: errorText(err), environment: LOCAL_ENVIRONMENT, terminals: [] },
|
|
275
|
-
}),
|
|
276
|
-
)
|
|
277
|
-
.finally(() => this.loading.delete(key));
|
|
278
|
-
this.loading.set(key, run);
|
|
279
|
-
return run;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Makes `terminalId` the scope's active terminal.
|
|
284
|
-
*
|
|
285
|
-
* @param scope - The scope or its key.
|
|
286
|
-
* @param terminalId - The terminal.
|
|
287
|
-
*/
|
|
288
|
-
setActive(scope: ScopeRef, terminalId: string): void {
|
|
289
|
-
const key = keyOf(scope);
|
|
290
|
-
if (this.get(key).activeId === terminalId) return;
|
|
291
|
-
this.patch(key, { activeId: terminalId });
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/** The grid the scope's terminal area last measured: new terminals start at it. */
|
|
295
|
-
private fitted = new Map<string, TerminalGrid>();
|
|
296
|
-
/**
|
|
297
|
-
* Remembers the grid the scope's terminal area fits: new terminals start at it.
|
|
298
|
-
*
|
|
299
|
-
* @param scope - The scope.
|
|
300
|
-
* @param size - The grid, or `null` (not laid out: keeps the last one).
|
|
301
|
-
*/
|
|
302
|
-
setFittedSize(scope: TerminalScope, size: TerminalGrid | null): void {
|
|
303
|
-
if (size) this.fitted.set(terminalScopeKey(scope), size);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Opens a terminal for the user when a placement is opened on a scope with
|
|
308
|
-
* none of theirs (none at all, or only the agent's). The drawer opens one
|
|
309
|
-
* only when the user opened it (`toggleDrawer`). A drawer open because the
|
|
310
|
-
* scope copied its project's layout, or left open before a relaunch, starts
|
|
311
|
-
* no shell: otherwise every session visited would keep one. Skipped while
|
|
312
|
-
* another open is in flight (the keybinding opens the drawer and a terminal
|
|
313
|
-
* at once).
|
|
314
|
-
*
|
|
315
|
-
* @param scope - The scope.
|
|
316
|
-
* @param placement - The placement that opened.
|
|
317
|
-
* @param measure - Measures the grid the area fits, once the state is in.
|
|
318
|
-
*/
|
|
319
|
-
async autoOpen(
|
|
320
|
-
scope: TerminalScope,
|
|
321
|
-
placement: TerminalPlacement,
|
|
322
|
-
measure?: () => TerminalGrid | null,
|
|
323
|
-
): Promise<void> {
|
|
324
|
-
await this.ensure(scope);
|
|
325
|
-
const key = terminalScopeKey(scope);
|
|
326
|
-
const s = this.get(key);
|
|
327
|
-
if (!s.state?.available || this.opening.has(key)) return;
|
|
328
|
-
if (placement === 'drawer' && !this.drawerOpened.delete(key)) return;
|
|
329
|
-
if (s.state.terminals.some((t) => t.owner === 'user')) return;
|
|
330
|
-
// The user asked to see one terminal (`reveal`), not to get a new one.
|
|
331
|
-
const revealed = this.revealed.get(key);
|
|
332
|
-
if (revealed && revealed === s.activeId && s.state.terminals.some((t) => t.id === revealed)) return;
|
|
333
|
-
// Measured now, after the state load laid the area out.
|
|
334
|
-
await this.open(scope, undefined, measure?.() ?? undefined);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Opens a terminal and makes it active. Resolves `null` when it failed (see `error`).
|
|
339
|
-
*
|
|
340
|
-
* @param scope - The scope.
|
|
341
|
-
* @param target - A session's terminal: in its environment or on the user's machine. Ignored without a session.
|
|
342
|
-
* @param size - The first grid. Default: the last one fitted, else 80×24.
|
|
343
|
-
*/
|
|
344
|
-
async open(scope: TerminalScope, target?: TerminalTarget, size?: TerminalGrid): Promise<TerminalInfo | null> {
|
|
345
|
-
const key = this.remember(scope);
|
|
346
|
-
size ??= this.fitted.get(key) ?? { cols: 80, rows: 24 };
|
|
347
|
-
this.opening.add(key);
|
|
348
|
-
try {
|
|
349
|
-
const info = await this.host.open(scope, {
|
|
350
|
-
...(scope.session && target ? { target } : {}),
|
|
351
|
-
cols: size.cols,
|
|
352
|
-
rows: size.rows,
|
|
353
|
-
});
|
|
354
|
-
const s = this.get(key);
|
|
355
|
-
const terminals = s.state?.terminals.some((t) => t.id === info.id)
|
|
356
|
-
? s.state.terminals
|
|
357
|
-
: [...(s.state?.terminals ?? []), info];
|
|
358
|
-
this.patch(key, {
|
|
359
|
-
activeId: info.id,
|
|
360
|
-
error: null,
|
|
361
|
-
...(s.state ? { state: { ...s.state, terminals } } : {}),
|
|
362
|
-
});
|
|
363
|
-
return info;
|
|
364
|
-
} catch (err) {
|
|
365
|
-
this.patch(key, { error: errorText(err) });
|
|
366
|
-
return null;
|
|
367
|
-
} finally {
|
|
368
|
-
this.opening.delete(key);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
private async act(scope: ScopeRef, run: (() => Promise<unknown>) | undefined) {
|
|
373
|
-
if (!run) return;
|
|
374
|
-
const key = keyOf(scope);
|
|
375
|
-
try {
|
|
376
|
-
await run();
|
|
377
|
-
if (this.get(key).error) this.patch(key, { error: null });
|
|
378
|
-
} catch (err) {
|
|
379
|
-
this.patch(key, { error: errorText(err) });
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* Closes a terminal.
|
|
385
|
-
*
|
|
386
|
-
* @param scope - The scope or its key (where an error shows).
|
|
387
|
-
* @param terminalId - The terminal.
|
|
388
|
-
*/
|
|
389
|
-
close = (scope: ScopeRef, terminalId: string): Promise<void> => this.act(scope, () => this.host.close(terminalId));
|
|
390
|
-
/**
|
|
391
|
-
* Restarts a terminal's process.
|
|
392
|
-
*
|
|
393
|
-
* @param scope - The scope or its key (where an error shows).
|
|
394
|
-
* @param terminalId - The terminal.
|
|
395
|
-
*/
|
|
396
|
-
restart = (scope: ScopeRef, terminalId: string): Promise<void> =>
|
|
397
|
-
this.act(scope, this.host.restart && (() => this.host.restart!(terminalId)));
|
|
398
|
-
/**
|
|
399
|
-
* Hides a terminal from the agent, or shows it again.
|
|
400
|
-
*
|
|
401
|
-
* @param scope - The scope or its key (where an error shows).
|
|
402
|
-
* @param terminalId - The terminal.
|
|
403
|
-
* @param hidden - Hide it.
|
|
404
|
-
*/
|
|
405
|
-
setHidden = (scope: ScopeRef, terminalId: string, hidden: boolean): Promise<void> =>
|
|
406
|
-
this.act(scope, this.host.setHidden && (() => this.host.setHidden!(terminalId, hidden)));
|
|
407
|
-
/**
|
|
408
|
-
* Clears the scope's error.
|
|
409
|
-
*
|
|
410
|
-
* @param scope - The scope or its key.
|
|
411
|
-
*/
|
|
412
|
-
dismissError = (scope: ScopeRef): void => this.patch(keyOf(scope), { error: null });
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Hands the draft's terminals to the session created from it. Shown in the
|
|
416
|
-
* session at once (the host's lists follow); a failed hand-over (or a host
|
|
417
|
-
* that cannot hand over) gives them back to the project, never leaving them
|
|
418
|
-
* tied to a draft nobody shows.
|
|
419
|
-
*
|
|
420
|
-
* @param draft - The draft's scope.
|
|
421
|
-
* @param session - The session's scope.
|
|
422
|
-
*/
|
|
423
|
-
async adoptDraft(draft: TerminalScope, session: TerminalScope): Promise<void> {
|
|
424
|
-
const draftId = draft.draft;
|
|
425
|
-
if (!draftId) return;
|
|
426
|
-
const sessionId = session.session;
|
|
427
|
-
if (!sessionId || !this.host.adoptDraft) return this.releaseDraft(draftId);
|
|
428
|
-
let adopted: string[];
|
|
429
|
-
try {
|
|
430
|
-
({ adopted } = await this.host.adoptDraft(draftId, sessionId));
|
|
431
|
-
} catch {
|
|
432
|
-
return this.releaseDraft(draftId);
|
|
433
|
-
}
|
|
434
|
-
this.moveAdopted(terminalScopeKey(draft), this.remember(session), sessionId, new Set(adopted));
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
/** The adopted terminals leave the draft's list for the session's, with the active one and the fitted grid. */
|
|
438
|
-
private moveAdopted(from: string, to: string, sessionId: string, adopted: ReadonlySet<string>) {
|
|
439
|
-
const source = this.get(from);
|
|
440
|
-
const moved = (source.state?.terminals ?? [])
|
|
441
|
-
.filter((t) => adopted.has(t.id))
|
|
442
|
-
.map(({ scope: _scope, ...t }) => ({ ...t, sessionId }));
|
|
443
|
-
const fitted = this.fitted.get(from);
|
|
444
|
-
if (fitted && !this.fitted.has(to)) this.fitted.set(to, fitted);
|
|
445
|
-
if (moved.length === 0) return;
|
|
446
|
-
if (source.state) {
|
|
447
|
-
this.patch(from, {
|
|
448
|
-
state: { ...source.state, terminals: source.state.terminals.filter((t) => !adopted.has(t.id)) },
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
const target = this.get(to);
|
|
452
|
-
const ids = new Set(target.state?.terminals.map((t) => t.id) ?? []);
|
|
453
|
-
const terminals = [...(target.state?.terminals ?? []), ...moved.filter((t) => !ids.has(t.id))];
|
|
454
|
-
const activeId = source.activeId && adopted.has(source.activeId) ? source.activeId : target.activeId;
|
|
455
|
-
this.patch(to, {
|
|
456
|
-
activeId,
|
|
457
|
-
state: target.state
|
|
458
|
-
? { ...target.state, terminals }
|
|
459
|
-
: { available: true, environment: LOCAL_ENVIRONMENT, terminals },
|
|
460
|
-
});
|
|
461
|
-
// Not loaded yet: the session's own state (environment, remote) still comes from the host.
|
|
462
|
-
if (!target.state) void this.refresh(this.scopeFor(to));
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
/**
|
|
466
|
-
* Gives the draft's terminals back to the project (a discarded draft). Never rejects.
|
|
467
|
-
*
|
|
468
|
-
* @param draftId - The draft.
|
|
469
|
-
*/
|
|
470
|
-
async releaseDraft(draftId: string): Promise<void> {
|
|
471
|
-
try {
|
|
472
|
-
await this.host.releaseDraft?.(draftId);
|
|
473
|
-
} catch {
|
|
474
|
-
// Best effort: the host releases a page's drafts when it goes away.
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
/**
|
|
479
|
-
* Registers a live view of `terminalId`; returns its unregister.
|
|
480
|
-
*
|
|
481
|
-
* @param terminalId - The terminal it shows.
|
|
482
|
-
* @param view - What it does with the terminal's signals.
|
|
483
|
-
*/
|
|
484
|
-
addView(terminalId: string, view: TerminalViewSink): () => void {
|
|
485
|
-
this.wire();
|
|
486
|
-
let set = this.views.get(terminalId);
|
|
487
|
-
if (!set) this.views.set(terminalId, (set = new Set()));
|
|
488
|
-
set.add(view);
|
|
489
|
-
return () => {
|
|
490
|
-
set.delete(view);
|
|
491
|
-
if (set.size === 0 && this.views.get(terminalId) === set) this.views.delete(terminalId);
|
|
492
|
-
};
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
/**
|
|
496
|
-
* A placement (drawer, panel tab) is showing the scope's terminals; clears the badge. Returns its unregister.
|
|
497
|
-
*
|
|
498
|
-
* @param scope - The scope or its key.
|
|
499
|
-
*/
|
|
500
|
-
showPlacement(scope: ScopeRef): () => void {
|
|
501
|
-
const key = keyOf(scope);
|
|
502
|
-
this.placements.set(key, (this.placements.get(key) ?? 0) + 1);
|
|
503
|
-
if (this.get(key).unseenAgent) this.patch(key, { unseenAgent: 0 });
|
|
504
|
-
return () => {
|
|
505
|
-
const n = (this.placements.get(key) ?? 1) - 1;
|
|
506
|
-
if (n > 0) {
|
|
507
|
-
this.placements.set(key, n);
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
this.placements.delete(key);
|
|
511
|
-
// Nothing shows the revealed terminal anymore: the next placement opens as usual.
|
|
512
|
-
this.revealed.delete(key);
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* The side panel's Terminal tab shows the scope's terminals, on screen; returns its unregister.
|
|
518
|
-
*
|
|
519
|
-
* @param scope - The scope or its key.
|
|
520
|
-
*/
|
|
521
|
-
showPanel(scope: ScopeRef): () => void {
|
|
522
|
-
const key = keyOf(scope);
|
|
523
|
-
this.panelShown.add(key);
|
|
524
|
-
return () => {
|
|
525
|
-
this.panelShown.delete(key);
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* Whether the side panel's Terminal tab is on screen for the scope.
|
|
531
|
-
*
|
|
532
|
-
* @param scope - The scope or its key.
|
|
533
|
-
*/
|
|
534
|
-
panelOnScreen(scope: ScopeRef): boolean {
|
|
535
|
-
return this.panelShown.has(keyOf(scope));
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
/**
|
|
539
|
-
* Makes `terminalId` the active terminal, focused by `placement`, with no
|
|
540
|
-
* shell auto-opened over it (`revealTerminal` picks the placement).
|
|
541
|
-
*
|
|
542
|
-
* @param scope - The scope or its key.
|
|
543
|
-
* @param terminalId - The terminal.
|
|
544
|
-
* @param placement - The placement that focuses it.
|
|
545
|
-
*/
|
|
546
|
-
reveal(scope: ScopeRef, terminalId: string, placement: TerminalPlacement): void {
|
|
547
|
-
const key = keyOf(scope);
|
|
548
|
-
this.revealed.set(key, terminalId);
|
|
549
|
-
this.focusSeq += 1;
|
|
550
|
-
this.patch(key, { activeId: terminalId, focus: { terminalId, placement, seq: this.focusSeq } });
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* The placement took focus request `seq`: drop it (a newer request stays).
|
|
555
|
-
*
|
|
556
|
-
* @param scope - The scope or its key.
|
|
557
|
-
* @param seq - The request taken.
|
|
558
|
-
*/
|
|
559
|
-
takeFocus(scope: ScopeRef, seq: number): void {
|
|
560
|
-
const key = keyOf(scope);
|
|
561
|
-
if (this.get(key).focus?.seq === seq) this.patch(key, { focus: null });
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* The scope's layout (drawer, order, agent filter).
|
|
566
|
-
*
|
|
567
|
-
* @param scope - The scope.
|
|
568
|
-
*/
|
|
569
|
-
layout(scope: TerminalScope): TerminalLayout {
|
|
570
|
-
return this.layouts.get(scope);
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
/**
|
|
574
|
-
* Changes the scope's layout.
|
|
575
|
-
*
|
|
576
|
-
* @param scope - The scope.
|
|
577
|
-
* @param patch - The fields to change.
|
|
578
|
-
*/
|
|
579
|
-
updateLayout(scope: TerminalScope, patch: Partial<TerminalLayout>): void {
|
|
580
|
-
this.layouts.update(scope, patch);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
/**
|
|
584
|
-
* Shows or hides the scope's drawer.
|
|
585
|
-
*
|
|
586
|
-
* @param scope - The scope.
|
|
587
|
-
*/
|
|
588
|
-
toggleDrawer(scope: TerminalScope): void {
|
|
589
|
-
const open = !this.layouts.get(scope).terminalOpen;
|
|
590
|
-
if (open) this.drawerOpened.add(terminalScopeKey(scope));
|
|
591
|
-
else this.drawerOpened.delete(terminalScopeKey(scope));
|
|
592
|
-
this.layouts.update(scope, { terminalOpen: open });
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/**
|
|
596
|
-
* Opens the drawer and a new terminal in it.
|
|
597
|
-
*
|
|
598
|
-
* @param scope - The scope.
|
|
599
|
-
*/
|
|
600
|
-
openInDrawer(scope: TerminalScope): void {
|
|
601
|
-
this.layouts.update(scope, { terminalOpen: true });
|
|
602
|
-
void this.open(scope);
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
/**
|
|
606
|
-
* Shows one of the scope's terminals, focused: in the side panel's Terminal
|
|
607
|
-
* tab when it is on screen, else in the drawer, opened for it. Opening the
|
|
608
|
-
* drawer this way starts no shell of the user's, and the strip shows the
|
|
609
|
-
* agent's terminals again when it hid the one revealed.
|
|
610
|
-
*
|
|
611
|
-
* @param scope - The scope.
|
|
612
|
-
* @param terminalId - The terminal.
|
|
613
|
-
*/
|
|
614
|
-
revealTerminal(scope: TerminalScope, terminalId: string): void {
|
|
615
|
-
const layout = this.layouts.get(scope);
|
|
616
|
-
const placement = this.panelOnScreen(scope) ? 'panel' : 'drawer';
|
|
617
|
-
const hidden = layout.terminalHideAgent && this.terminal(terminalId)?.owner === 'agent';
|
|
618
|
-
// The reveal first: the drawer mounting from the layout change must find it (no shell auto-opened).
|
|
619
|
-
this.reveal(scope, terminalId, placement);
|
|
620
|
-
if (hidden || (placement === 'drawer' && !layout.terminalOpen)) {
|
|
621
|
-
this.layouts.update(scope, {
|
|
622
|
-
...(hidden ? { terminalHideAgent: false } : {}),
|
|
623
|
-
...(placement === 'drawer' ? { terminalOpen: true } : {}),
|
|
624
|
-
});
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
/**
|
|
630
|
-
* Creates the {@link TerminalStore} over a host. An app creates one per page
|
|
631
|
-
* and hands it to `TerminalProvider` (code outside React reads it too).
|
|
632
|
-
*
|
|
633
|
-
* @param host - The terminal host.
|
|
634
|
-
*/
|
|
635
|
-
export function createTerminalStore(host: TerminalHost): TerminalStore {
|
|
636
|
-
return new TerminalStore(host);
|
|
637
|
-
}
|
package/src/terminal/index.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `zidane-ui/terminal`: the terminal surface (ghostty-web, loaded on first use),
|
|
3
|
-
* its key encoding and its theme from the `--zg-*` tokens. The app connects it
|
|
4
|
-
* to a pty through a `TerminalAdapter`.
|
|
5
|
-
*
|
|
6
|
-
* The terminal area over a `TerminalHost` (`zidane-ui/terminal/headless`):
|
|
7
|
-
* `TerminalProvider`, the drawer under the chat (`TerminalDrawer`) and its
|
|
8
|
-
* header toggle (`TerminalToggle`), the side panel's Terminal tab
|
|
9
|
-
* (`TerminalPanelTab`), the panel both show (`TerminalPanel`) and one
|
|
10
|
-
* view of a host's terminal (`HostTerminalSurface`).
|
|
11
|
-
*/
|
|
12
|
-
export * from './ghostty';
|
|
13
|
-
export * from './keys';
|
|
14
|
-
export * from './TerminalSurface';
|
|
15
|
-
export * from './theme';
|
|
16
|
-
export { HostTerminalSurface, type HostTerminalSurfaceProps } from './HostTerminalSurface';
|
|
17
|
-
export {
|
|
18
|
-
TERMINAL_HEIGHT,
|
|
19
|
-
TerminalDrawer,
|
|
20
|
-
TerminalPanelTab,
|
|
21
|
-
TerminalToggle,
|
|
22
|
-
type TerminalDrawerProps,
|
|
23
|
-
type TerminalPanelTabProps,
|
|
24
|
-
type TerminalToggleProps,
|
|
25
|
-
} from './TerminalDrawer';
|
|
26
|
-
export { TerminalPanel, terminalTitle, type TerminalPanelProps } from './TerminalPanel';
|
|
27
|
-
export {
|
|
28
|
-
TerminalProvider,
|
|
29
|
-
useScopeTerminals,
|
|
30
|
-
useTerminalActions,
|
|
31
|
-
useTerminalLayout,
|
|
32
|
-
useTerminalStore,
|
|
33
|
-
useTerminalsEnabled,
|
|
34
|
-
type TerminalAppActions,
|
|
35
|
-
type TerminalExcerpt,
|
|
36
|
-
type TerminalProviderProps,
|
|
37
|
-
type TerminalTabHandlers,
|
|
38
|
-
type TerminalWaiting,
|
|
39
|
-
} from './TerminalProvider';
|
|
40
|
-
export { useTerminalLabels } from './useTerminalLabels';
|