zidane-ui 9.1.1 → 9.1.3
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 +12 -11
- 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/index.js +1 -1
- 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/index.js +1 -1
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ExtensionsStep.js +1 -1
- package/dist/onboarding/steps/ReadyStep.js +1 -1
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/session/headless/index.js +2 -2
- 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 +1 -1
- package/dist/settings/sections/models/model-test.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,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The extensions' side panels in the workspace, from the extensions host
|
|
3
|
-
* (`ExtensionsHost`) when there is one, with no app code:
|
|
4
|
-
*
|
|
5
|
-
* - `useWithExtensionTabs` adds to the app's catalog the extensions' side
|
|
6
|
-
* panels (`Panel` items with the `side` surface) and webview panels
|
|
7
|
-
* (`Webview` items with `placement: 'panel'`) it doesn't list already, as
|
|
8
|
-
* tabs the kit draws (`WorkspaceTab.extension`). An app that lists them
|
|
9
|
-
* itself (from its workspace host's `panels`) keeps drawing them.
|
|
10
|
-
* - `ExtensionTabBody` draws such a tab: a webview under the host's origin
|
|
11
|
-
* policy, or a panel's content (`invoke('panel.load')`, reloaded after
|
|
12
|
-
* each action and each time the host says the panel changed) painted by
|
|
13
|
-
* `PanelContentView`. A row that stands for a session opens it through
|
|
14
|
-
* the app's `navigate` effect handler (`useExtensionEffects`).
|
|
15
|
-
* - `ExtensionPanelComponent` puts the component a panel names (from its
|
|
16
|
-
* `ui.tsx`) over whatever draws the tab, its declarative content as the
|
|
17
|
-
* fallback.
|
|
18
|
-
*/
|
|
19
|
-
import { useCallback, useEffect, useMemo, useState, type ReactNode } from 'react';
|
|
20
|
-
import type { PanelContent } from 'zidane/chat/pure';
|
|
21
|
-
|
|
22
|
-
import { extensionsErrorOf } from '../extensions/headless/host';
|
|
23
|
-
import { ExtensionComponent } from '../extensions/ExtensionComponent';
|
|
24
|
-
import { useExtensionEffectRouter, useExtensionItems, useExtensionsHost } from '../extensions/ExtensionsProvider';
|
|
25
|
-
import { useExtensionsLabels } from '../extensions/useExtensionsLabels';
|
|
26
|
-
import { ExtensionWebview } from '../extensions/ExtensionWebview';
|
|
27
|
-
import type { WorkspaceTab } from './headless/view';
|
|
28
|
-
import { PanelContentView } from './PanelContentView';
|
|
29
|
-
import { useWorkspaceView } from './WorkspaceProvider';
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* `tabs` with the extensions' side and webview panels it doesn't list, after it. The same array while
|
|
33
|
-
* nothing is added.
|
|
34
|
-
*
|
|
35
|
-
* @param tabs - The app's catalog.
|
|
36
|
-
*/
|
|
37
|
-
export function useWithExtensionTabs(tabs: readonly WorkspaceTab[]): readonly WorkspaceTab[] {
|
|
38
|
-
const panels = useExtensionItems('panel');
|
|
39
|
-
const webviews = useExtensionItems('webview');
|
|
40
|
-
return useMemo(() => {
|
|
41
|
-
const listed = new Set(tabs.map((t) => t.id));
|
|
42
|
-
const added: WorkspaceTab[] = [];
|
|
43
|
-
for (const { item } of panels) {
|
|
44
|
-
if (!item.surfaces.includes('side') || listed.has(item.id)) continue;
|
|
45
|
-
listed.add(item.id);
|
|
46
|
-
added.push({
|
|
47
|
-
id: item.id,
|
|
48
|
-
label: item.label,
|
|
49
|
-
...(item.icon ? { icon: item.icon } : {}),
|
|
50
|
-
builtin: true,
|
|
51
|
-
extension: 'panel',
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
for (const { item } of webviews) {
|
|
55
|
-
if (item.placement !== 'panel' || listed.has(item.id)) continue;
|
|
56
|
-
listed.add(item.id);
|
|
57
|
-
added.push({
|
|
58
|
-
id: item.id,
|
|
59
|
-
label: item.title,
|
|
60
|
-
icon: { gui: 'i-ph-browser' },
|
|
61
|
-
builtin: true,
|
|
62
|
-
extension: 'webview',
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return added.length === 0 ? tabs : [...tabs, ...added];
|
|
66
|
-
}, [tabs, panels, webviews]);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** Props for {@link ExtensionPanelComponent}. */
|
|
70
|
-
interface ExtensionPanelComponentProps {
|
|
71
|
-
/** The tab's id: a panel's full id. */
|
|
72
|
-
id: string;
|
|
73
|
-
/** What draws the tab without the component. */
|
|
74
|
-
children: ReactNode;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* The component a panel names drawn over `children` (its fallback); `children` alone otherwise.
|
|
79
|
-
*
|
|
80
|
-
* @param props - The panel id and what draws it otherwise.
|
|
81
|
-
*/
|
|
82
|
-
export function ExtensionPanelComponent({ id, children }: ExtensionPanelComponentProps) {
|
|
83
|
-
const entry = useExtensionItems('panel').find((e) => e.item.id === id && e.item.component);
|
|
84
|
-
if (!entry?.item.component) return <>{children}</>;
|
|
85
|
-
return (
|
|
86
|
-
<ExtensionComponent
|
|
87
|
-
extension={entry.extension}
|
|
88
|
-
component={entry.item.component}
|
|
89
|
-
props={{ panelId: id }}
|
|
90
|
-
fallback={children}
|
|
91
|
-
/>
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** Props for {@link ExtensionTabBody}. */
|
|
96
|
-
interface ExtensionTabBodyProps {
|
|
97
|
-
/** The tab the kit draws. */
|
|
98
|
-
tab: WorkspaceTab;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* The body of a tab the kit added (`WorkspaceTab.extension`). A panel loads in the workspace's folder.
|
|
103
|
-
*
|
|
104
|
-
* @param props - The tab.
|
|
105
|
-
*/
|
|
106
|
-
export function ExtensionTabBody({ tab }: ExtensionTabBodyProps) {
|
|
107
|
-
const { cwd } = useWorkspaceView();
|
|
108
|
-
if (tab.extension === 'webview') return <ExtensionWebview id={tab.id} className="h-full" />;
|
|
109
|
-
return (
|
|
110
|
-
<ExtensionPanelComponent id={tab.id}>
|
|
111
|
-
<ExtensionPanelContent panelId={tab.id} cwd={cwd ?? ''} />
|
|
112
|
-
</ExtensionPanelComponent>
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function ExtensionPanelContent({ panelId, cwd }: { panelId: string; cwd: string }) {
|
|
117
|
-
const host = useExtensionsHost();
|
|
118
|
-
const invoke = host?.invoke;
|
|
119
|
-
const router = useExtensionEffectRouter();
|
|
120
|
-
const labels = useExtensionsLabels();
|
|
121
|
-
const [state, setState] = useState<{ content: PanelContent | null; loading: boolean; error: string | null }>({
|
|
122
|
-
content: null,
|
|
123
|
-
loading: true,
|
|
124
|
-
error: null,
|
|
125
|
-
});
|
|
126
|
-
const [version, setVersion] = useState(0);
|
|
127
|
-
useEffect(() => {
|
|
128
|
-
if (!invoke) return undefined;
|
|
129
|
-
let live = true;
|
|
130
|
-
// eslint-disable-next-line react-hooks/set-state-in-effect -- the content lands when the extension answers
|
|
131
|
-
setState((prev) => ({ ...prev, loading: true }));
|
|
132
|
-
invoke('panel.load', { panelId, cwd }).then(
|
|
133
|
-
(content) => {
|
|
134
|
-
if (live) setState({ content, loading: false, error: null });
|
|
135
|
-
},
|
|
136
|
-
(err: unknown) => {
|
|
137
|
-
if (live)
|
|
138
|
-
setState((prev) => ({ ...prev, loading: false, error: labels.extensionError(extensionsErrorOf(err)) }));
|
|
139
|
-
},
|
|
140
|
-
);
|
|
141
|
-
return () => {
|
|
142
|
-
live = false;
|
|
143
|
-
};
|
|
144
|
-
}, [invoke, panelId, cwd, version, labels]);
|
|
145
|
-
// A live panel that would load something new loads again (the content stays up meanwhile).
|
|
146
|
-
useEffect(
|
|
147
|
-
() => host?.panelChanged?.((change) => change.panelId === panelId && setVersion((v) => v + 1)),
|
|
148
|
-
[host, panelId],
|
|
149
|
-
);
|
|
150
|
-
const onOpenSession = useMemo(
|
|
151
|
-
() =>
|
|
152
|
-
router ? (sessionId: string) => void router.apply({ kind: 'navigate', to: { session: sessionId } }) : undefined,
|
|
153
|
-
[router],
|
|
154
|
-
);
|
|
155
|
-
const onAction = useCallback(
|
|
156
|
-
(actionId: string, payload?: unknown) => {
|
|
157
|
-
if (!invoke) return;
|
|
158
|
-
void invoke('panel.action', { panelId, actionId, ...(payload !== undefined ? { payload } : {}), cwd }).then(
|
|
159
|
-
() => setVersion((v) => v + 1),
|
|
160
|
-
() => undefined,
|
|
161
|
-
);
|
|
162
|
-
},
|
|
163
|
-
[invoke, panelId, cwd],
|
|
164
|
-
);
|
|
165
|
-
return (
|
|
166
|
-
<PanelContentView
|
|
167
|
-
content={state.content}
|
|
168
|
-
loading={invoke ? state.loading : false}
|
|
169
|
-
error={state.error}
|
|
170
|
-
onAction={onAction}
|
|
171
|
-
{...(onOpenSession ? { onOpenSession } : {})}
|
|
172
|
-
/>
|
|
173
|
-
);
|
|
174
|
-
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Group frames that move without reflowing. When the tree reshapes, every
|
|
3
|
-
* frame takes its final box at once, so its content lays out once, at its
|
|
4
|
-
* final size; only paint and composite properties then carry it from where
|
|
5
|
-
* it was: a frame that grew is unclipped from its old box, a new one
|
|
6
|
-
* unfolds from the line it split off at, one that only moved slides. A frame that
|
|
7
|
-
* shrank snaps (its neighbour's reveal covers the room it gave up). No
|
|
8
|
-
* React state, no layout per frame.
|
|
9
|
-
*
|
|
10
|
-
* The dev browser's page is a native view drawn over its slot: it can't be
|
|
11
|
-
* clipped or slid, so the frame showing it snaps, and followers re-measure
|
|
12
|
-
* once (`pulseLayout`: a frame that moved without resizing fires no
|
|
13
|
-
* ResizeObserver).
|
|
14
|
-
*/
|
|
15
|
-
import { useCallback, useLayoutEffect, useRef, type RefObject } from 'react';
|
|
16
|
-
|
|
17
|
-
import { pulseLayout } from '../motion/layout-animating';
|
|
18
|
-
import { readPanelMs } from '../motion/presence';
|
|
19
|
-
import type { Box } from './headless/tree';
|
|
20
|
-
|
|
21
|
-
export type FrameMotion =
|
|
22
|
-
| { kind: 'none' }
|
|
23
|
-
/** `from`: the `clip-path` it starts at. */
|
|
24
|
-
| { kind: 'reveal'; from: string }
|
|
25
|
-
/** `from`: the `transform` it starts at. */
|
|
26
|
-
| { kind: 'translate'; from: string };
|
|
27
|
-
|
|
28
|
-
const NONE: FrameMotion = { kind: 'none' };
|
|
29
|
-
const EPS = 1e-4;
|
|
30
|
-
const near = (a: number, b: number) => Math.abs(a - b) < EPS;
|
|
31
|
-
const pct = (n: number) => `${Math.round(n * 1e5) / 1e3}%`;
|
|
32
|
-
const sameBox = (a: Box, b: Box) => near(a.x, b.x) && near(a.y, b.y) && near(a.w, b.w) && near(a.h, b.h);
|
|
33
|
-
const contains = (outer: Box, inner: Box) =>
|
|
34
|
-
inner.x > outer.x - EPS &&
|
|
35
|
-
inner.y > outer.y - EPS &&
|
|
36
|
-
inner.x + inner.w < outer.x + outer.w + EPS &&
|
|
37
|
-
inner.y + inner.h < outer.y + outer.h + EPS;
|
|
38
|
-
/** `clip-path` showing only `part` of `box` (both in the same unit square; insets are fractions of `box`). */
|
|
39
|
-
const insetOf = (box: Box, part: Box) =>
|
|
40
|
-
`inset(${pct((part.y - box.y) / box.h)} ${pct((box.x + box.w - part.x - part.w) / box.w)} ${pct(
|
|
41
|
-
(box.y + box.h - part.y - part.h) / box.h,
|
|
42
|
-
)} ${pct((part.x - box.x) / box.w)})`;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* The zero-wide (or -high) strip of `next` on the line it split off from
|
|
46
|
-
* `source` at: it opens from there, as a collapse closes back onto it.
|
|
47
|
-
*/
|
|
48
|
-
function splitEdge(next: Box, source: Box): Box | null {
|
|
49
|
-
if (next.x > source.x + EPS && near(next.x + next.w, source.x + source.w)) return { ...next, w: 0 };
|
|
50
|
-
if (next.w < source.w - EPS && near(next.x, source.x)) return { ...next, x: next.x + next.w, w: 0 };
|
|
51
|
-
if (next.y > source.y + EPS && near(next.y + next.h, source.y + source.h)) return { ...next, h: 0 };
|
|
52
|
-
if (next.h < source.h - EPS && near(next.y, source.y)) return { ...next, y: next.y + next.h, h: 0 };
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* How a frame gets from `prev` to `next` (unit-square boxes). A new frame
|
|
58
|
-
* (no `prev`) unfolds from the line it split off `source` at, the box of
|
|
59
|
-
* the group it was split from as it was before.
|
|
60
|
-
*/
|
|
61
|
-
export function frameMotion(prev: Box | undefined, next: Box, source?: Box): FrameMotion {
|
|
62
|
-
if (!prev) {
|
|
63
|
-
const edge = source && splitEdge(next, source);
|
|
64
|
-
return edge ? { kind: 'reveal', from: insetOf(next, edge) } : NONE;
|
|
65
|
-
}
|
|
66
|
-
if (sameBox(prev, next)) return NONE;
|
|
67
|
-
if (near(prev.w, next.w) && near(prev.h, next.h)) {
|
|
68
|
-
return {
|
|
69
|
-
kind: 'translate',
|
|
70
|
-
from: `translate(${pct((prev.x - next.x) / next.w)}, ${pct((prev.y - next.y) / next.h)})`,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
return contains(next, prev) ? { kind: 'reveal', from: insetOf(next, prev) } : NONE;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const motionOn = () => {
|
|
77
|
-
const v = document.documentElement.dataset.motion;
|
|
78
|
-
return v !== 'off' && v !== 'reduced';
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Animates the frames under `areaRef` (`[data-panel-group]`) whenever
|
|
83
|
-
* `boxes` changes within one `scope` (another conversation's groups just
|
|
84
|
-
* appear). `snap` lists the frames that must not animate. Returns `sync`:
|
|
85
|
-
* a divider drag paints boxes itself and reports each one, so its commit
|
|
86
|
-
* is not animated again.
|
|
87
|
-
*/
|
|
88
|
-
export function useFrameMotion(
|
|
89
|
-
areaRef: RefObject<HTMLElement | null>,
|
|
90
|
-
boxes: ReadonlyMap<string, Box>,
|
|
91
|
-
scope: string,
|
|
92
|
-
snap: ReadonlySet<string>,
|
|
93
|
-
): (painted: ReadonlyMap<string, Box>) => void {
|
|
94
|
-
const last = useRef<{ scope: string; boxes: ReadonlyMap<string, Box> } | null>(null);
|
|
95
|
-
const running = useRef(new Map<string, Animation>());
|
|
96
|
-
const stop = useCallback(() => {
|
|
97
|
-
for (const a of running.current.values()) a.cancel();
|
|
98
|
-
running.current.clear();
|
|
99
|
-
}, []);
|
|
100
|
-
|
|
101
|
-
useLayoutEffect(() => {
|
|
102
|
-
const prev = last.current;
|
|
103
|
-
last.current = { scope, boxes };
|
|
104
|
-
const area = areaRef.current;
|
|
105
|
-
if (!prev || !area) return;
|
|
106
|
-
if (prev.scope !== scope) {
|
|
107
|
-
stop();
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const moved = [...boxes].some(([id, box]) => {
|
|
111
|
-
const was = prev.boxes.get(id);
|
|
112
|
-
return !was || !sameBox(was, box);
|
|
113
|
-
});
|
|
114
|
-
if (!moved) return;
|
|
115
|
-
pulseLayout();
|
|
116
|
-
const ms = readPanelMs();
|
|
117
|
-
if (!motionOn() || ms <= 0) return;
|
|
118
|
-
const easing = getComputedStyle(document.documentElement).getPropertyValue('--zg-panel-ease').trim() || 'ease-out';
|
|
119
|
-
const sources = [...prev.boxes.values()];
|
|
120
|
-
const frames = new Map(
|
|
121
|
-
[...area.querySelectorAll<HTMLElement>(':scope > [data-panel-group]')].map((el) => [el.dataset.panelGroup, el]),
|
|
122
|
-
);
|
|
123
|
-
for (const [id, box] of boxes) {
|
|
124
|
-
const was = prev.boxes.get(id);
|
|
125
|
-
// Unmoved: one still on its way keeps going.
|
|
126
|
-
if (was && sameBox(was, box)) continue;
|
|
127
|
-
running.current.get(id)?.cancel();
|
|
128
|
-
running.current.delete(id);
|
|
129
|
-
if (snap.has(id)) continue;
|
|
130
|
-
const motion = frameMotion(was, box, was ? undefined : sources.find((s) => contains(s, box)));
|
|
131
|
-
if (motion.kind === 'none') continue;
|
|
132
|
-
const el = frames.get(id);
|
|
133
|
-
if (!el) continue;
|
|
134
|
-
const prop = motion.kind === 'reveal' ? 'clipPath' : 'transform';
|
|
135
|
-
const end = motion.kind === 'reveal' ? 'inset(0)' : 'none';
|
|
136
|
-
// Above its neighbours while it moves (a slide crosses them); dropped with the animation.
|
|
137
|
-
const animation = el.animate(
|
|
138
|
-
[
|
|
139
|
-
{ [prop]: motion.from, zIndex: 1 },
|
|
140
|
-
{ [prop]: end, zIndex: 1 },
|
|
141
|
-
],
|
|
142
|
-
{ duration: ms, easing },
|
|
143
|
-
);
|
|
144
|
-
running.current.set(id, animation);
|
|
145
|
-
animation.addEventListener('finish', () => {
|
|
146
|
-
if (running.current.get(id) === animation) running.current.delete(id);
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}, [areaRef, boxes, scope, snap, stop]);
|
|
150
|
-
|
|
151
|
-
useLayoutEffect(() => stop, [stop]);
|
|
152
|
-
|
|
153
|
-
return useCallback(
|
|
154
|
-
(painted) => {
|
|
155
|
-
stop();
|
|
156
|
-
if (last.current) last.current = { ...last.current, boxes: painted };
|
|
157
|
-
},
|
|
158
|
-
[stop],
|
|
159
|
-
);
|
|
160
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extension panel content, cached per BINDING (a folder plus the session or
|
|
3
|
-
* none, `bindingKey`): a load always lands in the binding it was made for,
|
|
4
|
-
* whichever is shown when it resolves, and switching back to a conversation
|
|
5
|
-
* shows its panels (and their badges) at once while the visible one reloads.
|
|
6
|
-
* The latest load per (binding, panel) wins: an older one resolving late is
|
|
7
|
-
* dropped. React-free; `WorkspaceProvider` drives it.
|
|
8
|
-
*/
|
|
9
|
-
import type { PanelContent } from 'zidane/chat/pure';
|
|
10
|
-
|
|
11
|
-
import type { PanelContentEntry } from './view';
|
|
12
|
-
|
|
13
|
-
/** Every binding's entries, by panel id. Replaced (never mutated) on each change. */
|
|
14
|
-
export type PanelContentCache = Readonly<Record<string, Readonly<Record<string, PanelContentEntry>>>>;
|
|
15
|
-
|
|
16
|
-
/** A panel with nothing loaded. */
|
|
17
|
-
export const EMPTY_CONTENT_ENTRY: PanelContentEntry = { content: null, loading: false, pending: false, error: null };
|
|
18
|
-
const NO_ENTRIES: Readonly<Record<string, PanelContentEntry>> = {};
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The binding a panel's content belongs to: the folder it loads against, and the session (or none).
|
|
22
|
-
*
|
|
23
|
-
* @param cwd - The folder.
|
|
24
|
-
* @param sessionId - The session, or null.
|
|
25
|
-
*/
|
|
26
|
-
export function bindingKey(cwd: string, sessionId: string | null): string {
|
|
27
|
-
return `${cwd}\u0000${sessionId ?? ''}`;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Whether `binding` is one of `cwd`'s.
|
|
32
|
-
*
|
|
33
|
-
* @param binding - A {@link bindingKey}.
|
|
34
|
-
* @param cwd - The folder.
|
|
35
|
-
*/
|
|
36
|
-
export function bindingInFolder(binding: string, cwd: string): boolean {
|
|
37
|
-
return binding.startsWith(`${cwd}\u0000`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** The content cache's store. */
|
|
41
|
-
export interface PanelContents {
|
|
42
|
-
/** The cache now. */
|
|
43
|
-
get(): PanelContentCache;
|
|
44
|
-
/** Called after each change. Returns the unsubscribe. */
|
|
45
|
-
subscribe(onChange: () => void): () => void;
|
|
46
|
-
/** Starts a load of `id` in `binding`: flags it loading. Returns the load's token for {@link PanelContents.settle}. */
|
|
47
|
-
begin(binding: string, id: string): number;
|
|
48
|
-
/** Lands a load's result, unless a newer load of the same panel in the same binding started since. */
|
|
49
|
-
settle(binding: string, id: string, token: number, result: { content: PanelContent } | { error: string }): void;
|
|
50
|
-
/** Sets or clears an entry's error. */
|
|
51
|
-
setError(binding: string, id: string, error: string | null): void;
|
|
52
|
-
/** Flags an entry pending (it reloads when shown). */
|
|
53
|
-
markPending(binding: string, id: string): void;
|
|
54
|
-
/**
|
|
55
|
-
* `panelId` changed in `cwd`: every binding of that folder that loaded it
|
|
56
|
-
* flags it pending, except `skip` (the binding that reloads it now).
|
|
57
|
-
*/
|
|
58
|
-
markChanged(cwd: string, panelId: string, skip?: string | null): void;
|
|
59
|
-
/** Keeps only `bindings` (the most recently shown); the others reload when shown again. */
|
|
60
|
-
keep(bindings: readonly string[]): void;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/** Creates an empty {@link PanelContents}. */
|
|
64
|
-
export function createPanelContents(): PanelContents {
|
|
65
|
-
let cache: PanelContentCache = {};
|
|
66
|
-
const generation = new Map<string, number>();
|
|
67
|
-
const listeners = new Set<() => void>();
|
|
68
|
-
const set = (next: PanelContentCache) => {
|
|
69
|
-
if (next === cache) return;
|
|
70
|
-
cache = next;
|
|
71
|
-
for (const listener of [...listeners]) listener();
|
|
72
|
-
};
|
|
73
|
-
const patch = (at: string, id: string, update: (entry: PanelContentEntry) => PanelContentEntry) => {
|
|
74
|
-
const entries = cache[at] ?? NO_ENTRIES;
|
|
75
|
-
set({ ...cache, [at]: { ...entries, [id]: update(entries[id] ?? EMPTY_CONTENT_ENTRY) } });
|
|
76
|
-
};
|
|
77
|
-
const slot = (at: string, id: string) => `${at}\u0001${id}`;
|
|
78
|
-
return {
|
|
79
|
-
get: () => cache,
|
|
80
|
-
subscribe(onChange) {
|
|
81
|
-
listeners.add(onChange);
|
|
82
|
-
return () => listeners.delete(onChange);
|
|
83
|
-
},
|
|
84
|
-
begin(at, id) {
|
|
85
|
-
const token = (generation.get(slot(at, id)) ?? 0) + 1;
|
|
86
|
-
generation.set(slot(at, id), token);
|
|
87
|
-
patch(at, id, (entry) => ({ ...entry, loading: true, pending: false }));
|
|
88
|
-
return token;
|
|
89
|
-
},
|
|
90
|
-
settle(at, id, token, result) {
|
|
91
|
-
if (generation.get(slot(at, id)) !== token) return;
|
|
92
|
-
if ('content' in result)
|
|
93
|
-
patch(at, id, () => ({ content: result.content, loading: false, pending: false, error: null }));
|
|
94
|
-
else patch(at, id, (entry) => ({ ...entry, loading: false, error: result.error }));
|
|
95
|
-
},
|
|
96
|
-
setError(at, id, error) {
|
|
97
|
-
patch(at, id, (entry) => ({ ...entry, error }));
|
|
98
|
-
},
|
|
99
|
-
markPending(at, id) {
|
|
100
|
-
patch(at, id, (entry) => ({ ...entry, pending: true }));
|
|
101
|
-
},
|
|
102
|
-
markChanged(cwd, panelId, skip) {
|
|
103
|
-
let next: Record<string, Readonly<Record<string, PanelContentEntry>>> | null = null;
|
|
104
|
-
for (const [at, entries] of Object.entries(cache)) {
|
|
105
|
-
if (!bindingInFolder(at, cwd) || at === skip) continue;
|
|
106
|
-
const entry = entries[panelId];
|
|
107
|
-
// Not loaded yet in that binding: it loads fresh when needed anyway.
|
|
108
|
-
if (!entry || entry.pending) continue;
|
|
109
|
-
next ??= { ...cache };
|
|
110
|
-
next[at] = { ...entries, [panelId]: { ...entry, pending: true } };
|
|
111
|
-
}
|
|
112
|
-
if (next) set(next);
|
|
113
|
-
},
|
|
114
|
-
keep(bindings) {
|
|
115
|
-
const stale = Object.keys(cache).filter((b) => !bindings.includes(b));
|
|
116
|
-
if (stale.length === 0) return;
|
|
117
|
-
const next = { ...cache };
|
|
118
|
-
for (const b of stale) {
|
|
119
|
-
delete next[b];
|
|
120
|
-
for (const key of generation.keys()) if (key.startsWith(`${b}\u0001`)) generation.delete(key);
|
|
121
|
-
}
|
|
122
|
-
set(next);
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The workspace's host: where the side panel's layout document is kept, and
|
|
3
|
-
* the extension panels an app offers. An app implements it once (over IPC,
|
|
4
|
-
* over browser storage, in memory) and hands it to `WorkspaceProvider` (or
|
|
5
|
-
* `AppHost.workspace`).
|
|
6
|
-
*
|
|
7
|
-
* Every member is optional: without `layouts` the layout lasts as long as the
|
|
8
|
-
* page (`createMemoryLayouts`); without `panels` the strip shows only the
|
|
9
|
-
* app's own tabs.
|
|
10
|
-
*
|
|
11
|
-
* The desktop app implements it over IPC (`gui/…/hosts/electron-workspace-host.ts`),
|
|
12
|
-
* `zidane-ui/adapters` in browser storage (`createBrowserWorkspaceHost`), and
|
|
13
|
-
* `zidane-ui/workspace/testing` in memory. All three run
|
|
14
|
-
* `zidane-ui/workspace/testing/contract`.
|
|
15
|
-
*/
|
|
16
|
-
import type {
|
|
17
|
-
ExtensionPanelScope,
|
|
18
|
-
PanelContent,
|
|
19
|
-
PanelHomeLayout,
|
|
20
|
-
PanelIcon,
|
|
21
|
-
PanelLoadContextInput,
|
|
22
|
-
PanelSurface,
|
|
23
|
-
} from 'zidane/chat/pure';
|
|
24
|
-
|
|
25
|
-
import type { PanelTree } from './panel-tree';
|
|
26
|
-
|
|
27
|
-
export type { PanelContent, PanelLoadContextInput };
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* What a layout belongs to: a session, a folder, a draft. The kit only reads
|
|
31
|
-
* `key`; an app adds what its host needs to find the record (the desktop
|
|
32
|
-
* app's scope carries the folder whose template a new session copies).
|
|
33
|
-
*/
|
|
34
|
-
export interface WorkspaceScope {
|
|
35
|
-
/** Identifies the layout: two scopes with the same key share one. */
|
|
36
|
-
readonly key: string;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** One scope's side panel, as stored. */
|
|
40
|
-
export interface WorkspaceLayout {
|
|
41
|
-
/** The panel is open. */
|
|
42
|
-
open: boolean;
|
|
43
|
-
/** The tab groups, the focused one and the ids still to hand out. */
|
|
44
|
-
tree: PanelTree;
|
|
45
|
-
/** The width the user dragged the panel to (px); `null` until dragged. */
|
|
46
|
-
width: number | null;
|
|
47
|
-
/** Dragged past the chat's usual floor: the panel's share of the room beside the sidebar (`resolveLayout`). */
|
|
48
|
-
share: number | null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** The layouts of every scope, read synchronously so a scope switch shows its layout in the same render. */
|
|
52
|
-
export interface WorkspaceLayouts<S extends WorkspaceScope = WorkspaceScope> {
|
|
53
|
-
/** The scope's layout as stored now. The same object while it is unchanged. */
|
|
54
|
-
get(scope: S): WorkspaceLayout;
|
|
55
|
-
/**
|
|
56
|
-
* Applies `change` to the layout stored now (read-modify-write, so a stale
|
|
57
|
-
* copy is never written back over another window's change). A change that
|
|
58
|
-
* changes nothing writes nothing.
|
|
59
|
-
*/
|
|
60
|
-
update(scope: S, change: (stored: WorkspaceLayout) => Partial<WorkspaceLayout>): void;
|
|
61
|
-
/** Called after any layout changed, here or in another window. Returns the unsubscribe. */
|
|
62
|
-
subscribe(onChange: () => void): () => void;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** One extension panel an app offers in a folder. */
|
|
66
|
-
export interface WorkspacePanelSummary {
|
|
67
|
-
/** The panel's id: its tab id in the strip. */
|
|
68
|
-
id: string;
|
|
69
|
-
/** The tab label. */
|
|
70
|
-
label: string;
|
|
71
|
-
/** The extension that registered it. */
|
|
72
|
-
owner: string;
|
|
73
|
-
/** The tab icon. */
|
|
74
|
-
icon?: PanelIcon;
|
|
75
|
-
/** Where its side tab shows: with a session, on a folder alone, or both. */
|
|
76
|
-
scope: ExtensionPanelScope;
|
|
77
|
-
/** The surfaces it shows on: side tab, project-home block. Absent: the side panel only. */
|
|
78
|
-
surfaces?: readonly PanelSurface[];
|
|
79
|
-
/** Its default place on the project home. */
|
|
80
|
-
home?: PanelHomeLayout;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/** Why an extension panel call failed, for the panel to word through its labels. */
|
|
84
|
-
export type WorkspaceHostError =
|
|
85
|
-
/** The host cannot do it (no longer available, not offered on this connection). */
|
|
86
|
-
| { code: 'unavailable' }
|
|
87
|
-
/** It ran and failed; `message` is the extension's own words. */
|
|
88
|
-
| { code: 'failed'; message: string };
|
|
89
|
-
|
|
90
|
-
/** What running a panel action answered. */
|
|
91
|
-
export type WorkspacePanelActionResult = { ok: true } | { ok: false; error: WorkspaceHostError };
|
|
92
|
-
|
|
93
|
-
/** A panel's content changed in a folder. */
|
|
94
|
-
export interface WorkspacePanelChange {
|
|
95
|
-
/** The folder it changed in. */
|
|
96
|
-
cwd: string;
|
|
97
|
-
/** The panel. */
|
|
98
|
-
panelId: string;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** Extension-contributed panels: their catalog per folder, their content and their actions. */
|
|
102
|
-
export interface WorkspacePanels {
|
|
103
|
-
/** The extension panels offered in `cwd`. */
|
|
104
|
-
list(cwd: string): Promise<readonly WorkspacePanelSummary[]>;
|
|
105
|
-
/** One panel's content for `ctx` (the session it shows beside, what it was opened on). Rejects when it fails. */
|
|
106
|
-
load(cwd: string, panelId: string, ctx: PanelLoadContextInput): Promise<PanelContent>;
|
|
107
|
-
/** Runs a panel's action. */
|
|
108
|
-
action(
|
|
109
|
-
cwd: string,
|
|
110
|
-
panelId: string,
|
|
111
|
-
actionId: string,
|
|
112
|
-
payload: unknown,
|
|
113
|
-
ctx: PanelLoadContextInput,
|
|
114
|
-
): Promise<WorkspacePanelActionResult>;
|
|
115
|
-
/** Keeps the panel's own live updates on while it is shown. Returns the stop. */
|
|
116
|
-
watch?(cwd: string, panelId: string): () => void;
|
|
117
|
-
/** Called when a panel's content changed. Returns the unsubscribe. */
|
|
118
|
-
subscribe?(onChange: (change: WorkspacePanelChange) => void): () => void;
|
|
119
|
-
/** Called when the catalog may have changed (an extension loaded or left). Returns the unsubscribe. */
|
|
120
|
-
subscribeCatalog?(onChange: () => void): () => void;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/** Where the workspace keeps its layouts and finds extension panels. Leave a member out and what needs it falls back. */
|
|
124
|
-
export interface WorkspaceHost<S extends WorkspaceScope = WorkspaceScope> {
|
|
125
|
-
/** Persistent layouts. Absent: layouts last as long as the page. */
|
|
126
|
-
layouts?: WorkspaceLayouts<S>;
|
|
127
|
-
/** Extension panels. Absent: only the app's own tabs. */
|
|
128
|
-
panels?: WorkspacePanels;
|
|
129
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `zidane-ui/workspace/headless`: the side panel's React-free half. The
|
|
3
|
-
* `WorkspaceHost` an app implements, the layout document (`PanelTree`: tab
|
|
4
|
-
* groups, the focused one, the id counter) and its operations, the group
|
|
5
|
-
* tree's readers, the view as shown, the panel actions over a layout store,
|
|
6
|
-
* the layout stores (memory, browser storage), the per-scope layout memory
|
|
7
|
-
* (`createLayoutMemory`: panel, Files tab, terminal drawer), the extension content cache,
|
|
8
|
-
* the horizontal budget (`resolveLayout`) and the labels.
|
|
9
|
-
*/
|
|
10
|
-
export * from './host';
|
|
11
|
-
export * from './panel-tree';
|
|
12
|
-
export {
|
|
13
|
-
findGroup,
|
|
14
|
-
groupsOf,
|
|
15
|
-
parseTree,
|
|
16
|
-
treeTabs,
|
|
17
|
-
type DropZone,
|
|
18
|
-
type PanelGroup,
|
|
19
|
-
type PanelNode,
|
|
20
|
-
type PanelSplit,
|
|
21
|
-
type SplitDir,
|
|
22
|
-
type SplitSide,
|
|
23
|
-
} from './tree';
|
|
24
|
-
export * from './view';
|
|
25
|
-
export * from './ops';
|
|
26
|
-
export * from './layouts';
|
|
27
|
-
export * from './layout-memory';
|
|
28
|
-
export * from './contents';
|
|
29
|
-
export * from './resolve';
|
|
30
|
-
export * from './labels';
|
|
31
|
-
export * from './open-target';
|
|
32
|
-
export * from './reveal-at';
|
|
33
|
-
export * from './panel-focus';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The workspace's strings (the desktop app's wording). One flat dictionary
|
|
3
|
-
* an app overrides with `<LabelsProvider>` or the `labels` prop of
|
|
4
|
-
* `WorkspaceProvider`. Keys you leave out keep the default English label.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/** The default English strings of the side panel. Override any of them through `WorkspaceProvider`. */
|
|
8
|
-
export const DEFAULT_WORKSPACE_LABELS = {
|
|
9
|
-
// The panel
|
|
10
|
-
panelRegion: 'Side panel',
|
|
11
|
-
panelShow: 'Show panel',
|
|
12
|
-
panelShowWaiting: (count: number) => `Show panel (${count} waiting)`,
|
|
13
|
-
panelClose: 'Close panel',
|
|
14
|
-
panelPopOut: 'Side panels in new window',
|
|
15
|
-
panelToggle: (open: boolean) => (open ? 'Hide side panel' : 'Show side panel'),
|
|
16
|
-
panelToggleCount: (count: number) => `Show side panel, ${count} artifacts`,
|
|
17
|
-
panelHomeLabel: 'Open a panel',
|
|
18
|
-
panelExpand: (expanded: boolean) => (expanded ? 'Exit full screen panels' : 'Full screen panels'),
|
|
19
|
-
// The strips
|
|
20
|
-
panelTabs: 'Panels',
|
|
21
|
-
panelGroupTabs: (index: number) => `Panels, group ${index}`,
|
|
22
|
-
panelAdd: 'Add panel',
|
|
23
|
-
panelCloseTab: (label: string) => `Close ${label} tab`,
|
|
24
|
-
panelTabInUse: 'in use by the agent',
|
|
25
|
-
panelTabUpdated: 'updated',
|
|
26
|
-
// The dividers
|
|
27
|
-
panelResizeGroups: 'Resize panel groups',
|
|
28
|
-
// Extension panels
|
|
29
|
-
panelUnavailable: 'This panel is not available here.',
|
|
30
|
-
panelContentNone: 'Nothing to show',
|
|
31
|
-
panelContentEmpty: 'Nothing yet',
|
|
32
|
-
panelHeatmapLabel: 'Activity heatmap',
|
|
33
|
-
panelChartLabel: 'Chart',
|
|
34
|
-
panelHeatmapDay: (day: string) => {
|
|
35
|
-
const [y, m, d] = day.split('-').map(Number);
|
|
36
|
-
return new Date(y!, m! - 1, d!).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });
|
|
37
|
-
},
|
|
38
|
-
panelRowExpand: 'Expand',
|
|
39
|
-
panelRowCollapse: 'Collapse',
|
|
40
|
-
panelRowShowMore: 'Show more',
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/** The shape of the workspace label dictionary. Some values are functions that build a string. */
|
|
44
|
-
export type WorkspaceLabels = typeof DEFAULT_WORKSPACE_LABELS;
|