zidane-ui 9.0.4 → 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 +3 -1
- package/dist/adapters/extension-modules.d.ts +147 -0
- package/dist/adapters/extension-modules.js +244 -0
- package/dist/adapters/index.d.ts +3 -1
- package/dist/adapters/index.js +3 -1
- package/dist/adapters/live.d.ts +6 -0
- package/dist/adapters/live.js +33 -3
- package/dist/adapters/server-composer-host.js +20 -37
- package/dist/adapters/server-extensions-host.d.ts +113 -0
- package/dist/adapters/server-extensions-host.js +829 -0
- package/dist/adapters/server-host.js +28 -6
- package/dist/adapters/server-machines-host.js +1 -1
- package/dist/adapters/server-settings-host.js +1 -1
- package/dist/adapters/server-settings-sections.js +36 -13
- package/dist/adapters/server-transcript-members.d.ts +1 -1
- package/dist/adapters/server-transcript-members.js +19 -1
- package/dist/app/AppHostProvider.d.ts +4 -1
- package/dist/app/AppHostProvider.js +11 -4
- package/dist/app/ModalProvider.d.ts +9 -3
- package/dist/app/ModalProvider.js +45 -25
- package/dist/app/headless/app-host.d.ts +3 -0
- package/dist/appearance/AppearanceProvider.d.ts +11 -4
- package/dist/appearance/AppearanceProvider.js +18 -6
- package/dist/appearance/headless/index.js +1 -1
- package/dist/appearance/headless/prefs.d.ts +2 -2
- package/dist/appearance/index.d.ts +1 -1
- package/dist/approvals/ApprovalBar.js +7 -1
- package/dist/approvals/FileEditApproval.js +7 -3
- package/dist/approvals/headless/index.js +2 -2
- package/dist/approvals/headless/labels.js +3 -3
- package/dist/chat/HostBadge.js +1 -1
- package/dist/chat/HostStatusDot.js +1 -1
- package/dist/chat/HostTranscript.d.ts +3 -1
- package/dist/chat/HostTranscript.js +5 -3
- package/dist/chat/RunEstimateChip.d.ts +53 -0
- package/dist/chat/RunEstimateChip.js +116 -0
- package/dist/chat/SessionFilterMenu.d.ts +77 -5
- package/dist/chat/SessionFilterMenu.js +86 -4
- package/dist/chat/SessionGroupHeader.d.ts +6 -2
- package/dist/chat/SessionGroupHeader.js +35 -3
- package/dist/chat/SessionHostHeader.js +1 -1
- package/dist/chat/SessionList.js +1 -1
- package/dist/chat/SessionListRow.d.ts +8 -1
- package/dist/chat/SessionListRow.js +5 -4
- package/dist/chat/Throbber.js +0 -3
- package/dist/chat/Transcript.d.ts +1 -1
- package/dist/chat/Transcript.js +112 -57
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/ConversationBadges.js +18 -11
- package/dist/chat/composer/HostPicker.js +1 -1
- package/dist/chat/composer/ProjectMenu.d.ts +8 -1
- package/dist/chat/composer/ProjectMenu.js +11 -8
- package/dist/chat/composer/RetryPill.js +1 -1
- package/dist/chat/composer/SelectTurnHint.d.ts +19 -0
- package/dist/chat/composer/SelectTurnHint.js +28 -0
- package/dist/chat/composer/ServerScopeToggle.js +4 -1
- package/dist/chat/composer/composer-bus.d.ts +8 -1
- package/dist/chat/composer/composer-bus.js +10 -1
- package/dist/chat/composer/index.d.ts +4 -4
- package/dist/chat/composer/index.js +3 -3
- package/dist/chat/composer/use-composer-stores.js +1 -1
- package/dist/chat/composer/use-draft-target.d.ts +19 -1
- package/dist/chat/composer/use-draft-target.js +14 -1
- package/dist/chat/composer/use-run-meter.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/chip-labels.d.ts +1 -0
- package/dist/chat/headless/chip-labels.js +1 -0
- package/dist/chat/headless/composer/conversation-badges.d.ts +8 -6
- package/dist/chat/headless/composer/conversation-badges.js +26 -24
- package/dist/chat/headless/composer/host-chrome.d.ts +2 -27
- package/dist/chat/headless/composer/host.d.ts +1 -3
- package/dist/chat/headless/composer/index.d.ts +3 -4
- package/dist/chat/headless/composer/index.js +5 -6
- package/dist/chat/headless/composer/labels-chrome.d.ts +1 -1
- package/dist/chat/headless/composer/labels-chrome.js +1 -1
- package/dist/chat/headless/extension-sources.d.ts +17 -0
- package/dist/chat/headless/extension-sources.js +52 -0
- 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 +8 -0
- package/dist/chat/headless/hosts.d.ts +2 -0
- package/dist/chat/headless/index.d.ts +10 -8
- package/dist/chat/headless/index.js +21 -18
- package/dist/chat/headless/labels.d.ts +79 -1
- package/dist/chat/headless/labels.js +80 -3
- package/dist/chat/headless/session-list.d.ts +65 -2
- package/dist/chat/headless/session-list.js +10 -2
- package/dist/chat/headless/sidebar/badges.d.ts +2 -0
- package/dist/chat/headless/sidebar/badges.js +20 -1
- package/dist/chat/headless/sidebar/directory.d.ts +46 -6
- package/dist/chat/headless/sidebar/directory.js +198 -22
- package/dist/chat/headless/sidebar/estimates.d.ts +55 -0
- package/dist/chat/headless/sidebar/estimates.js +91 -0
- package/dist/chat/headless/sidebar/index.d.ts +6 -4
- package/dist/chat/headless/sidebar/index.js +6 -3
- package/dist/chat/headless/sidebar/labels.d.ts +71 -1
- package/dist/chat/headless/sidebar/labels.js +17 -0
- package/dist/chat/headless/sidebar/query.d.ts +276 -0
- package/dist/chat/headless/sidebar/query.js +450 -0
- package/dist/chat/headless/sidebar/rows.d.ts +104 -13
- package/dist/chat/headless/sidebar/rows.js +189 -5
- package/dist/chat/headless/sidebar/types.d.ts +37 -4
- package/dist/chat/headless/sidebar/types.js +8 -0
- package/dist/chat/headless/sidebar/view.d.ts +25 -1
- package/dist/chat/headless/sidebar/view.js +56 -3
- package/dist/chat/headless/streams/live-events.js +2 -1
- package/dist/chat/headless/streams/session-streams.js +6 -0
- 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 +22 -3
- package/dist/chat/headless/transcript/fold-attachments.js +1 -1
- package/dist/chat/headless/transcript/fold.js +26 -10
- package/dist/chat/headless/transcript/rows.d.ts +15 -1
- package/dist/chat/headless/transcript-labels.d.ts +1 -0
- package/dist/chat/index.d.ts +14 -6
- package/dist/chat/index.js +40 -32
- package/dist/chat/rich-composer/RichComposer.js +32 -1
- package/dist/chat/rich-composer/badge-decorations.js +1 -1
- package/dist/chat/rich-composer/use-extension-composer.d.ts +32 -0
- package/dist/chat/rich-composer/use-extension-composer.js +46 -0
- package/dist/chat/sidebar/MainSessionRow.js +1 -1
- package/dist/chat/sidebar/ProjectIcon.d.ts +25 -6
- package/dist/chat/sidebar/ProjectIcon.js +79 -34
- package/dist/chat/sidebar/SessionSidebar.d.ts +34 -1
- package/dist/chat/sidebar/SessionSidebar.js +161 -25
- package/dist/chat/sidebar/SidebarDecoration.d.ts +38 -0
- package/dist/chat/sidebar/SidebarDecoration.js +61 -0
- package/dist/chat/sidebar/SidebarFilterMenu.d.ts +15 -2
- package/dist/chat/sidebar/SidebarFilterMenu.js +226 -8
- package/dist/chat/sidebar/SidebarFooter.d.ts +3 -1
- package/dist/chat/sidebar/SidebarFooter.js +17 -4
- package/dist/chat/sidebar/SidebarGroupHeader.d.ts +17 -4
- package/dist/chat/sidebar/SidebarGroupHeader.js +23 -4
- package/dist/chat/sidebar/SidebarRowView.d.ts +30 -0
- package/dist/chat/sidebar/SidebarRowView.js +117 -0
- package/dist/chat/sidebar/SidebarSessionRow.d.ts +4 -1
- package/dist/chat/sidebar/SidebarSessionRow.js +22 -4
- package/dist/chat/sidebar/SpaceSwitcher.d.ts +12 -5
- package/dist/chat/sidebar/SpaceSwitcher.js +142 -49
- package/dist/chat/sidebar/SpacesSection.js +4 -2
- package/dist/chat/sidebar/collapsed.d.ts +24 -0
- package/dist/chat/sidebar/collapsed.js +44 -0
- package/dist/chat/sidebar/index.d.ts +8 -4
- package/dist/chat/sidebar/index.js +6 -2
- package/dist/chat/sidebar/session-menu.d.ts +2 -0
- package/dist/chat/sidebar/session-menu.js +8 -2
- package/dist/chat/sidebar/sidebar-live.d.ts +12 -1
- package/dist/chat/sidebar/sidebar-live.js +57 -17
- package/dist/chat/sidebar/useAgentNames.d.ts +8 -0
- package/dist/chat/sidebar/useAgentNames.js +13 -0
- package/dist/chat/sidebar/useSaveViewAsSpace.d.ts +13 -0
- package/dist/chat/sidebar/useSaveViewAsSpace.js +44 -0
- package/dist/chat/sidebar/useSessionDirectoryView.d.ts +4 -1
- package/dist/chat/sidebar/useSessionDirectoryView.js +46 -12
- package/dist/chat/sidebar/useSidebarKeyboardNav.js +3 -1
- package/dist/chat/testing/composer.contract.d.ts +2 -6
- package/dist/chat/testing/composer.contract.js +2 -31
- package/dist/chat/testing/contract.d.ts +6 -1
- package/dist/chat/testing/contract.js +30 -3
- package/dist/chat/testing/fixture-composer-chrome.d.ts +2 -6
- package/dist/chat/testing/fixture-composer-chrome.js +1 -17
- package/dist/chat/transcript/AnsiText.d.ts +27 -0
- package/dist/chat/transcript/AnsiText.js +73 -0
- package/dist/chat/transcript/BadgeMenu.d.ts +2 -0
- package/dist/chat/transcript/BadgeMenu.js +22 -6
- package/dist/chat/transcript/CardMarkdown.js +17 -5
- package/dist/chat/transcript/ChipCard.js +6 -0
- package/dist/chat/transcript/ChipCards.js +2 -2
- package/dist/chat/transcript/CodemodeScript.d.ts +33 -0
- package/dist/chat/transcript/CodemodeScript.js +212 -0
- package/dist/chat/transcript/EditDiffBlock.js +4 -1
- package/dist/chat/transcript/FileChip.js +20 -7
- package/dist/chat/transcript/InlineChipText.js +1 -1
- package/dist/chat/transcript/InteractionToolBody.js +32 -13
- package/dist/chat/transcript/LiveOutput.d.ts +21 -0
- package/dist/chat/transcript/LiveOutput.js +42 -0
- package/dist/chat/transcript/MermaidDiagram.d.ts +22 -0
- package/dist/chat/transcript/MermaidDiagram.js +410 -0
- package/dist/chat/transcript/PromptEcho.js +5 -5
- package/dist/chat/transcript/ProseMarkdown.js +9 -6
- package/dist/chat/transcript/ReferenceText.js +7 -2
- package/dist/chat/transcript/SelectTurnHint.js +1 -1
- package/dist/chat/transcript/SubagentBlock.d.ts +4 -2
- package/dist/chat/transcript/SubagentBlock.js +5 -2
- package/dist/chat/transcript/TranscriptRow.js +28 -6
- package/dist/chat/transcript/TranscriptSearch.js +1 -1
- package/dist/chat/transcript/actions.d.ts +6 -0
- package/dist/chat/transcript/badges.js +5 -2
- package/dist/chat/transcript/extension-renderers.d.ts +36 -0
- package/dist/chat/transcript/extension-renderers.js +133 -0
- package/dist/chat/transcript/fold-worker.js +2 -2
- package/dist/chat/transcript/fold.js +6 -4
- package/dist/chat/transcript/index.d.ts +8 -2
- package/dist/chat/transcript/index.js +35 -29
- package/dist/chat/transcript/markdown-cache.js +16 -7
- package/dist/chat/transcript/markdown.d.ts +15 -1
- package/dist/chat/transcript/markdown.js +71 -6
- package/dist/chat/transcript/messages.js +3 -2
- package/dist/chat/transcript/notices.js +1 -1
- package/dist/chat/transcript/prompt.js +1 -1
- package/dist/chat/transcript/prose.js +1 -1
- package/dist/chat/transcript/recent-map.d.ts +20 -0
- package/dist/chat/transcript/recent-map.js +22 -0
- package/dist/chat/transcript/references.js +7 -3
- package/dist/chat/transcript/renderers.d.ts +11 -1
- package/dist/chat/transcript/renderers.js +14 -4
- 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-batch.js +4 -9
- package/dist/chat/transcript/tool-details.js +7 -67
- 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.d.ts +21 -0
- package/dist/chat/transcript/tool-payload.js +80 -0
- package/dist/chat/transcript/tool-row.js +158 -96
- package/dist/chat/transcript/useTranscriptScroll.js +3 -2
- package/dist/chat/transcript/user-bash.js +3 -2
- package/dist/chat/transcript-options.d.ts +15 -0
- package/dist/chat/transcript-options.js +40 -0
- package/dist/code/CodeHighlightProvider.d.ts +3 -3
- package/dist/code/CodeHighlightProvider.js +4 -4
- package/dist/code/HighlightedCode.d.ts +7 -2
- package/dist/code/HighlightedCode.js +7 -71
- package/dist/code/code-themes.d.ts +13 -6
- package/dist/code/code-themes.js +385 -13
- package/dist/code/editor/CodeHover.d.ts +5 -4
- package/dist/code/editor/CodeHover.js +20 -16
- package/dist/code/editor/HighlightWorkers.js +2 -2
- package/dist/code/editor/edit-session.js +1 -0
- package/dist/code/editor/environment.d.ts +1 -1
- package/dist/code/editor/environment.js +1 -1
- package/dist/code/editor/index.d.ts +2 -2
- package/dist/code/editor/index.js +2 -2
- package/dist/code/editor/pierre-theme.d.ts +5 -5
- package/dist/code/editor/pierre-theme.js +6 -5
- package/dist/code/highlight-lines.d.ts +24 -0
- package/dist/code/highlight-lines.js +41 -0
- package/dist/code/highlight.worker.js +2 -14
- package/dist/code/highlighter.d.ts +24 -9
- package/dist/code/highlighter.js +1 -4
- package/dist/code/highlights.d.ts +12 -0
- package/dist/code/highlights.js +47 -0
- package/dist/code/mermaid-lexer.d.ts +26 -0
- package/dist/code/mermaid-lexer.js +303 -0
- package/dist/code/shiki-theme.d.ts +6 -6
- package/dist/code/shiki-theme.js +3 -3
- package/dist/code/use-highlighted-html.d.ts +5 -0
- package/dist/code/use-highlighted-html.js +75 -0
- package/dist/components/BrandMark.d.ts +6 -4
- package/dist/components/BrandMark.js +5 -2
- package/dist/components/CodeFrame.d.ts +5 -0
- package/dist/components/CodeFrame.js +27 -23
- package/dist/components/Form.js +1 -1
- package/dist/core.css +82 -11
- package/dist/dist/{index-Cx7GDZlz.d.ts → index-WlE93Q6d.d.ts} +255 -51
- package/dist/extensions/ExtensionComponent.d.ts +62 -0
- package/dist/extensions/ExtensionComponent.js +120 -0
- package/dist/extensions/ExtensionDialogHost.d.ts +31 -0
- package/dist/extensions/ExtensionDialogHost.js +439 -0
- package/dist/extensions/ExtensionRenderer.d.ts +30 -0
- package/dist/extensions/ExtensionRenderer.js +78 -0
- package/dist/extensions/ExtensionScreen.d.ts +24 -0
- package/dist/extensions/ExtensionScreen.js +120 -0
- package/dist/extensions/ExtensionSettingsPage.d.ts +19 -0
- package/dist/extensions/ExtensionSettingsPage.js +116 -0
- package/dist/extensions/ExtensionSettingsPages.d.ts +17 -0
- package/dist/extensions/ExtensionSettingsPages.js +33 -0
- package/dist/extensions/ExtensionSettingsSidebar.d.ts +63 -0
- package/dist/extensions/ExtensionSettingsSidebar.js +360 -0
- package/dist/extensions/ExtensionSlot.d.ts +44 -0
- package/dist/extensions/ExtensionSlot.js +161 -0
- package/dist/extensions/ExtensionWebview.d.ts +32 -0
- package/dist/extensions/ExtensionWebview.js +80 -0
- package/dist/extensions/ExtensionsProvider.d.ts +42 -0
- package/dist/extensions/ExtensionsProvider.js +104 -0
- package/dist/extensions/SettingsWireForm.d.ts +44 -0
- package/dist/extensions/SettingsWireForm.js +104 -0
- package/dist/extensions/headless/dialog-queue.d.ts +27 -0
- package/dist/extensions/headless/dialog-queue.js +68 -0
- package/dist/extensions/headless/effect-channel.d.ts +15 -0
- package/dist/extensions/headless/effect-channel.js +33 -0
- package/dist/extensions/headless/effect-router.d.ts +34 -0
- package/dist/extensions/headless/effect-router.js +50 -0
- package/dist/extensions/headless/fixture-host.d.ts +110 -0
- package/dist/extensions/headless/fixture-host.js +258 -0
- package/dist/extensions/headless/host.d.ts +433 -0
- package/dist/extensions/headless/host.js +27 -0
- package/dist/extensions/headless/index.d.ts +10 -0
- package/dist/extensions/headless/index.js +10 -0
- package/dist/extensions/headless/labels.d.ts +45 -0
- package/dist/extensions/headless/labels.js +49 -0
- package/dist/extensions/headless/links.d.ts +30 -0
- package/dist/extensions/headless/links.js +34 -0
- package/dist/extensions/headless/select.d.ts +120 -0
- package/dist/extensions/headless/select.js +191 -0
- package/dist/extensions/headless/webview-bridge.d.ts +71 -0
- package/dist/extensions/headless/webview-bridge.js +78 -0
- package/dist/extensions/headless/wire.d.ts +113 -0
- package/dist/extensions/headless/wire.js +38 -0
- package/dist/extensions/hooks.d.ts +88 -0
- package/dist/extensions/hooks.js +151 -0
- package/dist/extensions/index.d.ts +15 -0
- package/dist/extensions/index.js +15 -0
- package/dist/extensions/kit.d.ts +19 -0
- package/dist/extensions/kit.js +19 -0
- package/dist/extensions/links.d.ts +79 -0
- package/dist/extensions/links.js +94 -0
- package/dist/extensions/testing/contract.d.ts +80 -0
- package/dist/extensions/testing/contract.js +407 -0
- package/dist/extensions/testing/index.d.ts +2 -0
- package/dist/extensions/testing/index.js +1 -0
- package/dist/extensions/useExtensionsLabels.d.ts +6 -0
- package/dist/extensions/useExtensionsLabels.js +18 -0
- package/dist/files/DiffsTab.js +7 -19
- package/dist/files/EditorColumn.js +1 -1
- package/dist/files/EditorEnvironmentRoot.d.ts +15 -0
- package/dist/files/EditorEnvironmentRoot.js +55 -0
- package/dist/files/MediaDiff.js +1 -1
- package/dist/files/drafts-store.d.ts +10 -0
- package/dist/files/drafts-store.js +30 -1
- package/dist/files/headless/lsp-edits.d.ts +4 -1
- package/dist/files/headless/lsp-edits.js +14 -2
- package/dist/files/index.d.ts +2 -1
- package/dist/files/index.js +2 -1
- package/dist/files/session-patch.d.ts +11 -0
- package/dist/files/session-patch.js +44 -0
- package/dist/files/useEntryActions.js +1 -1
- package/dist/files/useLsp.js +5 -2
- package/dist/files/useOpenFiles.js +1 -1
- package/dist/git/BranchMenu.d.ts +1 -5
- package/dist/git/BranchMenu.js +23 -39
- package/dist/git/GitBar.d.ts +1 -1
- package/dist/git/GitBar.js +7 -1
- package/dist/git/ImportRepoDialog.d.ts +3 -1
- package/dist/git/ImportRepoDialog.js +8 -6
- package/dist/git/MoveSessionDialog.js +3 -1
- package/dist/git/headless/labels.d.ts +0 -2
- package/dist/git/headless/labels.js +0 -2
- package/dist/hooks/useDisplayPath.d.ts +40 -0
- package/dist/hooks/useDisplayPath.js +75 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +4 -2
- package/dist/keybindings/KeyCommands.js +1 -1
- package/dist/keybindings/KeybindingsProvider.js +1 -1
- package/dist/keybindings/headless/index.js +2 -2
- package/dist/keybindings/headless/overrides.js +1 -1
- package/dist/keybindings/index.d.ts +2 -1
- package/dist/keybindings/index.js +2 -1
- package/dist/keybindings/press.d.ts +27 -0
- package/dist/keybindings/press.js +67 -0
- package/dist/machines/Banners.js +1 -1
- package/dist/machines/HostSyncPanel.js +1 -1
- package/dist/machines/HostsSection.js +1 -1
- package/dist/machines/SyncOutcomeBadge.js +1 -1
- package/dist/machines/headless/index.js +1 -1
- package/dist/machines/headless/labels.d.ts +1 -0
- package/dist/machines/headless/labels.js +1 -0
- package/dist/machines/headless/messages.d.ts +2 -1
- package/dist/machines/headless/messages.js +4 -3
- package/dist/machines/settings-section.d.ts +1 -1
- package/dist/onboarding/conversation.js +21 -3
- package/dist/onboarding/demos/features.d.ts +5 -1
- package/dist/onboarding/demos/features.js +80 -1
- package/dist/onboarding/headless/fixture-host.d.ts +2 -2
- package/dist/onboarding/headless/host.d.ts +2 -2
- package/dist/onboarding/headless/labels.d.ts +2 -0
- package/dist/onboarding/headless/labels.js +2 -0
- package/dist/onboarding/index.d.ts +4 -2
- package/dist/onboarding/index.js +3 -2
- package/dist/onboarding/marks.d.ts +29 -7
- package/dist/onboarding/marks.js +38 -12
- package/dist/onboarding/skills/SkillSourceBrowser.js +56 -247
- package/dist/onboarding/skills/parts.d.ts +31 -4
- package/dist/onboarding/skills/parts.js +8 -11
- package/dist/onboarding/sources/SourceBrowser.d.ts +87 -0
- package/dist/onboarding/sources/SourceBrowser.js +292 -0
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ConnectorsStep.js +3 -3
- package/dist/onboarding/steps/ConversationStep.js +2 -1
- package/dist/onboarding/steps/ExtensionsStep.js +2 -2
- package/dist/onboarding/steps/ReadyStep.js +2 -2
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/palette/app-sources.js +1 -1
- package/dist/path.d.ts +24 -2
- package/dist/path.js +34 -2
- package/dist/session/ArtifactRowChips.js +11 -2
- package/dist/session/ArtifactsPanel.d.ts +2 -0
- package/dist/session/ArtifactsPanel.js +67 -27
- package/dist/session/ProjectHome.d.ts +82 -0
- package/dist/session/ProjectHome.js +518 -0
- package/dist/session/ProviderUsageProvider.d.ts +3 -1
- package/dist/session/ProviderUsageProvider.js +5 -2
- package/dist/session/QueueTab.js +1 -1
- package/dist/session/SessionCacheFacts.js +1 -1
- package/dist/session/SessionDetailsDialog.d.ts +1 -1
- package/dist/session/SessionDetailsDialog.js +5 -2
- package/dist/session/SessionHeader.d.ts +3 -1
- package/dist/session/SessionHeader.js +7 -1
- package/dist/session/SideChat.js +2 -2
- package/dist/session/TodosPanel.js +4 -1
- package/dist/session/UsagePanel.js +139 -17
- package/dist/session/WelcomeScreen.d.ts +1 -1
- package/dist/session/WelcomeScreen.js +46 -502
- package/dist/session/headless/fixture-host.js +43 -1
- package/dist/session/headless/home-layout.d.ts +137 -0
- package/dist/session/headless/home-layout.js +235 -0
- package/dist/session/headless/host.d.ts +3 -1
- package/dist/session/headless/index.d.ts +4 -3
- package/dist/session/headless/index.js +4 -3
- package/dist/session/headless/labels.d.ts +33 -36
- package/dist/session/headless/labels.js +48 -47
- package/dist/session/headless/usage-format.d.ts +2 -92
- package/dist/session/headless/usage-format.js +2 -181
- package/dist/session/headless/usage.d.ts +15 -2
- package/dist/session/headless/usage.js +15 -1
- package/dist/session/index.d.ts +3 -1
- package/dist/session/index.js +4 -2
- package/dist/session/modal-shell.d.ts +8 -0
- package/dist/session/modal-shell.js +18 -0
- package/dist/session/testing/contract.d.ts +1 -1
- package/dist/session/testing/contract.js +16 -0
- package/dist/session/testing/demo.js +28 -4
- package/dist/settings/SettingsNav.d.ts +3 -2
- package/dist/settings/SettingsNav.js +86 -13
- package/dist/settings/SettingsRowsPage.d.ts +2 -2
- package/dist/settings/SettingsShell.d.ts +3 -1
- package/dist/settings/SettingsShell.js +16 -9
- package/dist/settings/headless/catalog.js +20 -0
- package/dist/settings/headless/fixture-sections.d.ts +10 -1
- package/dist/settings/headless/fixture-sections.js +88 -3
- package/dist/settings/headless/host.d.ts +2 -0
- package/dist/settings/headless/index.d.ts +4 -4
- package/dist/settings/headless/index.js +1 -1
- package/dist/settings/headless/layout.d.ts +8 -4
- package/dist/settings/headless/layout.js +22 -16
- package/dist/settings/headless/registry.d.ts +14 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/headless/sections-host.d.ts +36 -3
- package/dist/settings/index.d.ts +5 -3
- package/dist/settings/index.js +8 -6
- package/dist/settings/sections/appearance/AppearanceSection.js +4 -4
- package/dist/settings/sections/claude-import/ClaudeImportDialog.js +1 -1
- package/dist/settings/sections/editor/EditorSection.js +1 -1
- package/dist/settings/sections/environments/EnvironmentsSection.js +1 -1
- package/dist/settings/sections/extensions/ChangeOriginDialog.d.ts +48 -0
- package/dist/settings/sections/extensions/ChangeOriginDialog.js +181 -0
- package/dist/settings/sections/extensions/CreateExtensionDialog.js +5 -2
- package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +76 -0
- package/dist/settings/sections/extensions/ExtensionConfigRows.js +349 -0
- package/dist/settings/sections/extensions/ExtensionOptionsSection.d.ts +1 -4
- package/dist/settings/sections/extensions/ExtensionOptionsSection.js +23 -286
- package/dist/settings/sections/extensions/ExtensionPicksBar.d.ts +46 -0
- package/dist/settings/sections/extensions/ExtensionPicksBar.js +102 -0
- package/dist/settings/sections/extensions/ExtensionSourceBrowser.d.ts +50 -0
- package/dist/settings/sections/extensions/ExtensionSourceBrowser.js +164 -0
- package/dist/settings/sections/extensions/ExtensionsSection.d.ts +6 -2
- package/dist/settings/sections/extensions/ExtensionsSection.js +233 -42
- package/dist/settings/sections/extensions/labels.d.ts +26 -5
- package/dist/settings/sections/extensions/labels.js +28 -3
- package/dist/settings/sections/extensions/options-labels.d.ts +2 -0
- package/dist/settings/sections/extensions/options-labels.js +2 -0
- package/dist/settings/sections/host-catalog/HostCatalogSection.js +104 -30
- package/dist/settings/sections/host-catalog/labels.js +4 -2
- package/dist/settings/sections/index.d.ts +5 -3
- package/dist/settings/sections/index.js +8 -6
- package/dist/settings/sections/instructions/InstructionsSection.js +7 -4
- package/dist/settings/sections/mcp/McpSection.js +1 -1
- package/dist/settings/sections/mcp/McpServerRow.js +3 -2
- package/dist/settings/sections/models/AgentDefaults.js +1 -1
- package/dist/settings/sections/models/ModelPickField.js +1 -1
- package/dist/settings/sections/models/ModelRows.js +3 -3
- package/dist/settings/sections/plugins/PluginsSection.js +3 -1
- package/dist/settings/sections/providers/ProvidersSection.js +3 -3
- package/dist/settings/sections/providers/ServerProvidersSection.js +2 -2
- package/dist/settings/sections/providers/ServerSignIn.js +3 -3
- package/dist/settings/sections/shared/catalog.d.ts +6 -1
- package/dist/settings/sections/shared/catalog.js +28 -22
- package/dist/settings/sections/skills/SkillList.js +2 -2
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/styles.css +526 -21
- package/dist/terminal/HostTerminalSurface.js +18 -8
- package/dist/terminal/TerminalProvider.d.ts +3 -1
- package/dist/terminal/TerminalProvider.js +5 -1
- package/dist/terminal/headless/store.d.ts +17 -0
- package/dist/terminal/headless/store.js +31 -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/dist/workspace/PanelContentView.d.ts +33 -4
- package/dist/workspace/PanelContentView.js +192 -58
- package/dist/workspace/PanelCorner.d.ts +35 -0
- package/dist/workspace/PanelCorner.js +68 -0
- package/dist/workspace/PanelGroups.d.ts +7 -2
- package/dist/workspace/PanelGroups.js +7 -3
- package/dist/workspace/PanelHome.d.ts +19 -0
- package/dist/workspace/PanelHome.js +74 -0
- package/dist/workspace/PanelItems.d.ts +28 -0
- package/dist/workspace/PanelItems.js +330 -0
- package/dist/workspace/PanelStrip.d.ts +5 -1
- package/dist/workspace/PanelStrip.js +6 -4
- package/dist/workspace/SidePanel.d.ts +9 -3
- package/dist/workspace/SidePanel.js +47 -10
- package/dist/workspace/TabParking.d.ts +2 -0
- package/dist/workspace/TabParking.js +8 -2
- package/dist/workspace/WorkspaceProvider.d.ts +1 -1
- package/dist/workspace/WorkspaceProvider.js +10 -6
- package/dist/workspace/extension-tabs.d.ts +36 -0
- package/dist/workspace/extension-tabs.js +175 -0
- package/dist/workspace/headless/host.d.ts +6 -2
- package/dist/workspace/headless/index.js +1 -1
- package/dist/workspace/headless/labels.d.ts +7 -0
- package/dist/workspace/headless/labels.js +14 -0
- package/dist/workspace/headless/view.d.ts +5 -0
- package/dist/workspace/index.d.ts +3 -2
- package/dist/workspace/index.js +3 -2
- package/package.json +37 -9
- package/src/styles/components.css +24 -8
- package/src/styles/motion.css +35 -0
- package/src/styles/primitives.css +5 -2
- package/src/styles/rich-composer.css +7 -2
- package/src/styles/sidebar.css +24 -0
- package/src/styles/transcript.css +329 -0
- package/src/styles/workspace.css +58 -0
- package/dist/chat/composer/use-hud.d.ts +0 -16
- package/dist/chat/composer/use-hud.js +0 -36
- package/dist/chat/headless/composer/hud.d.ts +0 -25
- package/dist/chat/headless/composer/hud.js +0 -66
- 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/index.ts +0 -32
- package/src/adapters/live-events.ts +0 -6
- package/src/adapters/live.ts +0 -230
- 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 -474
- 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 -459
- 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 -184
- 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 -122
- package/src/app/ModalProvider.tsx +0 -711
- package/src/app/headless/app-host.ts +0 -58
- 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 -359
- 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 -227
- 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 -305
- 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/SessionFilterMenu.tsx +0 -237
- package/src/chat/SessionGroupHeader.tsx +0 -136
- package/src/chat/SessionHostHeader.tsx +0 -66
- package/src/chat/SessionList.tsx +0 -413
- package/src/chat/SessionListRow.tsx +0 -279
- 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 -277
- package/src/chat/Transcript.tsx +0 -461
- 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 -159
- 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 -170
- 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/SendButton.tsx +0 -89
- package/src/chat/composer/ServerScopeToggle.tsx +0 -179
- 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 -307
- 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 -284
- package/src/chat/composer/use-hud.ts +0 -38
- 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 -39
- 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 -222
- 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 -227
- package/src/chat/headless/composer/host.ts +0 -253
- package/src/chat/headless/composer/hud.ts +0 -101
- package/src/chat/headless/composer/index.ts +0 -18
- 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/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 -259
- package/src/chat/headless/hosts.ts +0 -53
- package/src/chat/headless/index.ts +0 -31
- package/src/chat/headless/labels.ts +0 -331
- 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 -390
- package/src/chat/headless/sidebar/activity.ts +0 -179
- package/src/chat/headless/sidebar/badges.ts +0 -163
- package/src/chat/headless/sidebar/compaction.ts +0 -98
- package/src/chat/headless/sidebar/directory.ts +0 -819
- package/src/chat/headless/sidebar/dot-state.ts +0 -36
- package/src/chat/headless/sidebar/environment.ts +0 -70
- package/src/chat/headless/sidebar/host.ts +0 -41
- package/src/chat/headless/sidebar/index.ts +0 -16
- package/src/chat/headless/sidebar/labels.ts +0 -140
- 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/rows.ts +0 -229
- package/src/chat/headless/sidebar/types.ts +0 -61
- package/src/chat/headless/sidebar/view.ts +0 -296
- 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 -394
- 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 -780
- 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 -367
- 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 -29
- 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 -1036
- 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-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 -336
- package/src/chat/sidebar/RowChips.tsx +0 -98
- package/src/chat/sidebar/SessionSidebar.tsx +0 -805
- package/src/chat/sidebar/SidebarFilterMenu.tsx +0 -41
- package/src/chat/sidebar/SidebarFooter.tsx +0 -234
- package/src/chat/sidebar/SidebarFrame.tsx +0 -154
- package/src/chat/sidebar/SidebarGroupHeader.tsx +0 -231
- package/src/chat/sidebar/SidebarHostProvider.tsx +0 -51
- package/src/chat/sidebar/SidebarSearchRow.tsx +0 -66
- package/src/chat/sidebar/SidebarSessionRow.tsx +0 -293
- package/src/chat/sidebar/SidebarToggleButton.tsx +0 -48
- package/src/chat/sidebar/SpaceSwitcher.tsx +0 -232
- package/src/chat/sidebar/SpacesSection.tsx +0 -256
- package/src/chat/sidebar/index.ts +0 -92
- package/src/chat/sidebar/session-menu.ts +0 -437
- package/src/chat/sidebar/sidebar-focus-hold.ts +0 -56
- package/src/chat/sidebar/sidebar-live.tsx +0 -605
- package/src/chat/sidebar/use-main-session.ts +0 -32
- package/src/chat/sidebar/useCompactionProgress.ts +0 -24
- package/src/chat/sidebar/usePinnedProjects.ts +0 -36
- package/src/chat/sidebar/useSessionActivity.ts +0 -24
- package/src/chat/sidebar/useSessionBadges.ts +0 -26
- package/src/chat/sidebar/useSessionDirectoryView.ts +0 -86
- package/src/chat/sidebar/useSessionSearch.ts +0 -94
- package/src/chat/sidebar/useSidebarKeyboardNav.ts +0 -165
- package/src/chat/sidebar/useSidebarLabels.ts +0 -10
- package/src/chat/testing/composer.contract.ts +0 -532
- package/src/chat/testing/contract.ts +0 -634
- package/src/chat/testing/fixture-composer-chrome.ts +0 -178
- 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 -223
- package/src/chat/transcript/CardMarkdown.tsx +0 -92
- package/src/chat/transcript/ChipCard.tsx +0 -176
- 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 -171
- package/src/chat/transcript/FileChip.tsx +0 -350
- package/src/chat/transcript/ImageGenerationBlock.tsx +0 -239
- package/src/chat/transcript/InlineChipText.tsx +0 -57
- package/src/chat/transcript/InteractionToolBody.tsx +0 -193
- package/src/chat/transcript/LazyRow.tsx +0 -311
- package/src/chat/transcript/PromptEcho.tsx +0 -171
- package/src/chat/transcript/PromptOriginLabel.tsx +0 -44
- package/src/chat/transcript/ProseMarkdown.tsx +0 -165
- package/src/chat/transcript/ReferenceText.tsx +0 -193
- 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 -218
- package/src/chat/transcript/TranscriptRow.tsx +0 -356
- 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 -152
- package/src/chat/transcript/chip-details.ts +0 -169
- package/src/chat/transcript/chip-resolve.ts +0 -56
- 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 -520
- package/src/chat/transcript/frame.tsx +0 -326
- package/src/chat/transcript/index.ts +0 -65
- package/src/chat/transcript/markdown-cache.ts +0 -70
- package/src/chat/transcript/markdown-context.ts +0 -52
- package/src/chat/transcript/markdown.tsx +0 -282
- package/src/chat/transcript/messages.tsx +0 -168
- 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/references.ts +0 -104
- 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 -241
- 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 -111
- package/src/chat/transcript/tool-details.tsx +0 -77
- package/src/chat/transcript/tool-media.tsx +0 -132
- package/src/chat/transcript/tool-parts.tsx +0 -358
- package/src/chat/transcript/tool-row.tsx +0 -489
- 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 -162
- 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/useChatLabels.ts +0 -14
- package/src/code/CodeHighlightProvider.tsx +0 -87
- package/src/code/HighlightedCode.tsx +0 -150
- package/src/code/code-themes.ts +0 -34
- package/src/code/editor/CodeCompletion.tsx +0 -719
- package/src/code/editor/CodeEditor.tsx +0 -480
- package/src/code/editor/CodeHover.tsx +0 -428
- 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 -28
- 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 -154
- 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 -19
- package/src/code/highlighter.ts +0 -185
- package/src/code/shiki-theme.ts +0 -47
- package/src/components/BrandMark.tsx +0 -107
- 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 -209
- 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 -589
- 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/files/CodeViewer.tsx +0 -289
- package/src/files/DiffFileViewer.tsx +0 -143
- package/src/files/DiffsTab.tsx +0 -590
- package/src/files/EditorColumn.tsx +0 -453
- 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 -159
- 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 -40
- 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 -24
- package/src/files/lazy-tabs.tsx +0 -41
- 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 -178
- 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 -981
- package/src/git/GitBar.tsx +0 -286
- package/src/git/GitProvider.tsx +0 -50
- package/src/git/ImportRepoDialog.tsx +0 -381
- package/src/git/MoveSessionDialog.tsx +0 -394
- 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/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 -118
- 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 -14
- package/src/keybindings/load-once.ts +0 -11
- package/src/keybindings/match.ts +0 -48
- 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 -356
- package/src/machines/headless/messages.ts +0 -197
- 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 -179
- package/src/onboarding/demos/autonomy.tsx +0 -154
- package/src/onboarding/demos/extensions.tsx +0 -183
- package/src/onboarding/demos/features.tsx +0 -447
- 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 -280
- package/src/onboarding/index.ts +0 -20
- package/src/onboarding/marks.tsx +0 -69
- package/src/onboarding/preview-attachments.ts +0 -39
- package/src/onboarding/skills/SkillSourceBrowser.tsx +0 -336
- package/src/onboarding/skills/parts.tsx +0 -440
- package/src/onboarding/steps/AutonomyStep.tsx +0 -128
- package/src/onboarding/steps/ConnectStep.tsx +0 -104
- package/src/onboarding/steps/ConnectorsStep.tsx +0 -226
- package/src/onboarding/steps/ConversationStep.tsx +0 -131
- 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 -165
- 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 -251
- package/src/session/ArtifactsPanel.tsx +0 -381
- package/src/session/DiffFileTree.tsx +0 -173
- package/src/session/PanelAttention.tsx +0 -131
- package/src/session/ProviderUsageProvider.tsx +0 -106
- 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 -621
- package/src/session/SessionHeader.tsx +0 -237
- package/src/session/SessionProvider.tsx +0 -98
- package/src/session/SessionShell.tsx +0 -77
- package/src/session/SideChat.tsx +0 -316
- package/src/session/TodoList.tsx +0 -123
- package/src/session/TodosPanel.tsx +0 -278
- package/src/session/TurnDetailsDialog.tsx +0 -299
- package/src/session/UsagePanel.tsx +0 -222
- package/src/session/WelcomeScreen.tsx +0 -578
- 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 -331
- package/src/session/headless/host.ts +0 -255
- package/src/session/headless/index.ts +0 -22
- package/src/session/headless/keyed.ts +0 -72
- package/src/session/headless/labels.ts +0 -321
- 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 -280
- package/src/session/headless/usage.ts +0 -380
- package/src/session/index.ts +0 -29
- package/src/session/testing/contract.ts +0 -579
- package/src/session/testing/demo.ts +0 -209
- 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 -116
- package/src/settings/SettingsProvider.tsx +0 -127
- package/src/settings/SettingsRowsPage.tsx +0 -217
- package/src/settings/SettingsShell.tsx +0 -336
- package/src/settings/SettingsTutorial.tsx +0 -55
- package/src/settings/headless/catalog.ts +0 -553
- 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 -323
- package/src/settings/headless/host.ts +0 -125
- 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 -723
- 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 -52
- package/src/settings/headless/resource.ts +0 -75
- package/src/settings/headless/search.ts +0 -142
- package/src/settings/headless/sections-host.ts +0 -307
- 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/CreateExtensionDialog.tsx +0 -206
- package/src/settings/sections/extensions/ExtensionOptionsSection.tsx +0 -743
- package/src/settings/sections/extensions/ExtensionsSection.tsx +0 -480
- package/src/settings/sections/extensions/create-labels.ts +0 -31
- package/src/settings/sections/extensions/labels.ts +0 -38
- package/src/settings/sections/extensions/options-labels.ts +0 -31
- package/src/settings/sections/host-catalog/HostCatalogSection.tsx +0 -374
- package/src/settings/sections/host-catalog/labels.ts +0 -40
- package/src/settings/sections/index.ts +0 -58
- package/src/settings/sections/instructions/InstructionsSection.tsx +0 -381
- 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 -403
- 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 -148
- 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 -136
- package/src/settings/sections/providers/labels.ts +0 -160
- package/src/settings/sections/shared/catalog.tsx +0 -246
- 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 -911
- 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 -621
- 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 -335
- package/src/workspace/PanelGroups.tsx +0 -249
- package/src/workspace/PanelStrip.tsx +0 -307
- package/src/workspace/SidePanel.tsx +0 -192
- package/src/workspace/TabParking.tsx +0 -111
- package/src/workspace/WorkspaceProvider.tsx +0 -554
- 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/frame-motion.ts +0 -160
- package/src/workspace/headless/contents.ts +0 -125
- package/src/workspace/headless/host.ts +0 -118
- package/src/workspace/headless/index.ts +0 -33
- package/src/workspace/headless/labels.ts +0 -34
- 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 -159
- package/src/workspace/index.ts +0 -22
- 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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isFocusedComposer } from "../composer/composer-bus.js";
|
|
2
|
+
import { useExtensionEffects } from "../../extensions/hooks.js";
|
|
3
|
+
//#region src/chat/rich-composer/use-extension-composer.ts
|
|
4
|
+
let attachSeq = 0;
|
|
5
|
+
/**
|
|
6
|
+
* The attachment an extension's file becomes, or `null` for a path (a browser can't read it).
|
|
7
|
+
*
|
|
8
|
+
* @param file - The file `ctx.composer.attach` sent.
|
|
9
|
+
*/
|
|
10
|
+
function extensionFileAttachment(file) {
|
|
11
|
+
if (!("data" in file)) return null;
|
|
12
|
+
const padding = file.data.endsWith("==") ? 2 : file.data.endsWith("=") ? 1 : 0;
|
|
13
|
+
return {
|
|
14
|
+
id: `ext-att-${++attachSeq}`,
|
|
15
|
+
name: file.name,
|
|
16
|
+
mediaType: file.mimeType,
|
|
17
|
+
size: Math.max(0, Math.floor(file.data.length * 3 / 4) - padding),
|
|
18
|
+
dataUrl: `data:${file.mimeType};base64,${file.data}`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Applies the extensions' composer edits meant for this composer.
|
|
23
|
+
*
|
|
24
|
+
* @param target - The composer: its session, scope, and what it does with each edit.
|
|
25
|
+
*/
|
|
26
|
+
function useExtensionComposerEffects(target) {
|
|
27
|
+
useExtensionEffects((effect) => {
|
|
28
|
+
if (effect.kind !== "composer") return false;
|
|
29
|
+
const op = effect.op;
|
|
30
|
+
if (op.op === "insert") return target.insert(op.text);
|
|
31
|
+
if (op.op === "setText") return target.setText(op.text);
|
|
32
|
+
let staged = 0;
|
|
33
|
+
for (const file of op.files) {
|
|
34
|
+
const attachment = extensionFileAttachment(file);
|
|
35
|
+
if (!attachment) continue;
|
|
36
|
+
target.attach(attachment);
|
|
37
|
+
staged++;
|
|
38
|
+
}
|
|
39
|
+
return staged > 0;
|
|
40
|
+
}, {
|
|
41
|
+
accepts: (effect) => effect.kind === "composer" && target.enabled && (effect.sessionId !== void 0 ? effect.sessionId === target.sessionId : isFocusedComposer(target.scopeKey)),
|
|
42
|
+
priority: 10
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { extensionFileAttachment, useExtensionComposerEffects };
|
|
@@ -16,7 +16,7 @@ function MainSessionRowInner({ sessionId, isActive, icon, onAssignIcon, onSelect
|
|
|
16
16
|
const labels = useSidebarLabels();
|
|
17
17
|
const handleSelect = useCallback(() => onSelect(sessionId), [sessionId, onSelect]);
|
|
18
18
|
return /* @__PURE__ */ jsx("li", {
|
|
19
|
-
className: ["zg-session-row group relative rounded-zg-md", className].filter(Boolean).join(" "),
|
|
19
|
+
className: ["zg-session-row zg-press-host group relative rounded-zg-md", className].filter(Boolean).join(" "),
|
|
20
20
|
style,
|
|
21
21
|
"data-session-id": sessionId,
|
|
22
22
|
"data-active": isActive ? "true" : void 0,
|
|
@@ -1,15 +1,34 @@
|
|
|
1
1
|
import { ProjectIcon, ProjectIconMap } from "../headless/sidebar/project-icons.js";
|
|
2
2
|
import { CSSProperties } from "react";
|
|
3
3
|
//#region src/chat/sidebar/ProjectIcon.d.ts
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* the in-session assignment).
|
|
8
|
-
*/
|
|
4
|
+
/** Forget the shared map (tests: a fresh read from storage). */
|
|
5
|
+
declare function resetProjectIconsForTests(): void;
|
|
6
|
+
/** Icon map + setter, shared by every caller on the page. */
|
|
9
7
|
declare function useProjectIcons(): {
|
|
10
8
|
icons: ProjectIconMap;
|
|
11
9
|
setIcon: (fullPath: string, icon: ProjectIcon | null) => void;
|
|
12
10
|
};
|
|
11
|
+
/** Props of {@link ProjectIconGlyph}. */
|
|
12
|
+
interface ProjectIconGlyphProps {
|
|
13
|
+
/** The icon assigned to the folder, if any. */
|
|
14
|
+
icon?: ProjectIcon;
|
|
15
|
+
/** No icon assigned: a git branch for a repository, else a folder. */
|
|
16
|
+
isGitRepo?: boolean;
|
|
17
|
+
/** Default glyph class when nothing is assigned; overrides the folder / git-branch choice. */
|
|
18
|
+
defaultGlyph?: string;
|
|
19
|
+
/** `sm`: the sidebar's 18px slot. `lg`: a heading's 28px slot (the project home). */
|
|
20
|
+
size?: 'sm' | 'lg';
|
|
21
|
+
/** Extra classes on the slot. */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Inline styles on the slot. */
|
|
24
|
+
style?: CSSProperties;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A project's icon, display only: the same picked icon or default glyph its sidebar header shows.
|
|
28
|
+
*
|
|
29
|
+
* @param props - The {@link ProjectIconGlyphProps}.
|
|
30
|
+
*/
|
|
31
|
+
declare function ProjectIconGlyph({ icon, isGitRepo, defaultGlyph, size, className, style }: ProjectIconGlyphProps): import("react").JSX.Element;
|
|
13
32
|
/** Props of {@link ProjectIconButton}. */
|
|
14
33
|
interface ProjectIconButtonProps {
|
|
15
34
|
/**
|
|
@@ -68,4 +87,4 @@ interface IconPickerProps {
|
|
|
68
87
|
*/
|
|
69
88
|
declare function IconPicker({ hasIcon, onPick, resetLabel }: IconPickerProps): import("react").JSX.Element;
|
|
70
89
|
//#endregion
|
|
71
|
-
export { ICON_PICKER_WIDTH, IconPicker, IconPickerProps, ProjectIconButton, ProjectIconButtonProps, useProjectIcons };
|
|
90
|
+
export { ICON_PICKER_WIDTH, IconPicker, IconPickerProps, ProjectIconButton, ProjectIconButtonProps, ProjectIconGlyph, ProjectIconGlyphProps, resetProjectIconsForTests, useProjectIcons };
|
|
@@ -5,7 +5,7 @@ import { readPersisted, writePersisted } from "../../hooks/usePersistedState.js"
|
|
|
5
5
|
import { COMMON_EMOJI, PROJECT_ICONS_KEY, firstGrapheme, parseProjectIcons } from "../headless/sidebar/project-icons.js";
|
|
6
6
|
import { useSidebarLabels } from "./useSidebarLabels.js";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import {
|
|
8
|
+
import { useRef, useState, useSyncExternalStore } from "react";
|
|
9
9
|
//#region src/chat/sidebar/ProjectIcon.tsx
|
|
10
10
|
/**
|
|
11
11
|
* Per-project custom icons for the sidebar's grouped view.
|
|
@@ -22,31 +22,87 @@ import { useCallback, useRef, useState } from "react";
|
|
|
22
22
|
* basename, but two projects sharing a basename must not share an icon.
|
|
23
23
|
* Reads are guarded with try/catch + per-entry shape validation, same
|
|
24
24
|
* defensive pattern as the sidebar view map (`headless/sidebar/view.ts`).
|
|
25
|
+
* One map per page, shared by every `useProjectIcons`: a pick in the
|
|
26
|
+
* sidebar shows at once wherever the project's icon is drawn (the project
|
|
27
|
+
* home's header, `ProjectIconGlyph`).
|
|
25
28
|
*
|
|
26
29
|
* **Popover.** The shared floating surface under the trigger
|
|
27
30
|
* (`usePopover`: outside press and Esc close, Esc never reaches App).
|
|
28
31
|
*/
|
|
29
32
|
const loadProjectIcons = () => readPersisted("zg-sidebar-project-icons", parseProjectIcons) ?? {};
|
|
33
|
+
/** The page's one icon map, read from storage on first use. */
|
|
34
|
+
let sharedIcons = null;
|
|
35
|
+
const iconListeners = /* @__PURE__ */ new Set();
|
|
36
|
+
const readIcons = () => sharedIcons ??= loadProjectIcons();
|
|
37
|
+
const subscribeIcons = (listener) => {
|
|
38
|
+
iconListeners.add(listener);
|
|
39
|
+
return () => iconListeners.delete(listener);
|
|
40
|
+
};
|
|
30
41
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* the in-session assignment).
|
|
42
|
+
* Assigns (or, with `null`, resets) a folder's icon. State-first, storage-second: the localStorage write is
|
|
43
|
+
* best-effort (quota overflow from many image icons must not break the in-session assignment).
|
|
34
44
|
*/
|
|
45
|
+
function setProjectIcon(fullPath, icon) {
|
|
46
|
+
const next = { ...readIcons() };
|
|
47
|
+
if (icon) next[fullPath] = icon;
|
|
48
|
+
else delete next[fullPath];
|
|
49
|
+
sharedIcons = next;
|
|
50
|
+
writePersisted(PROJECT_ICONS_KEY, JSON.stringify(next));
|
|
51
|
+
for (const listener of iconListeners) listener();
|
|
52
|
+
}
|
|
53
|
+
/** Forget the shared map (tests: a fresh read from storage). */
|
|
54
|
+
function resetProjectIconsForTests() {
|
|
55
|
+
sharedIcons = null;
|
|
56
|
+
}
|
|
57
|
+
/** Icon map + setter, shared by every caller on the page. */
|
|
35
58
|
function useProjectIcons() {
|
|
36
|
-
const [icons, setIcons] = useState(loadProjectIcons);
|
|
37
59
|
return {
|
|
38
|
-
icons,
|
|
39
|
-
setIcon:
|
|
40
|
-
setIcons((current) => {
|
|
41
|
-
const next = { ...current };
|
|
42
|
-
if (icon) next[fullPath] = icon;
|
|
43
|
-
else delete next[fullPath];
|
|
44
|
-
writePersisted(PROJECT_ICONS_KEY, JSON.stringify(next));
|
|
45
|
-
return next;
|
|
46
|
-
});
|
|
47
|
-
}, [])
|
|
60
|
+
icons: useSyncExternalStore(subscribeIcons, readIcons, readIcons),
|
|
61
|
+
setIcon: setProjectIcon
|
|
48
62
|
};
|
|
49
63
|
}
|
|
64
|
+
const GLYPH_SIZE = {
|
|
65
|
+
sm: {
|
|
66
|
+
slot: "w-[18px] h-[18px] rounded-zg-sm",
|
|
67
|
+
emoji: "text-zg-ui",
|
|
68
|
+
glyph: "text-sm"
|
|
69
|
+
},
|
|
70
|
+
lg: {
|
|
71
|
+
slot: "w-7 h-7 rounded-zg-md",
|
|
72
|
+
emoji: "text-zg-title",
|
|
73
|
+
glyph: "text-zg-title"
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/** The glyph inside a project's icon slot: the picked image or emoji, else the default glyph. */
|
|
77
|
+
function iconGlyph(icon, isGitRepo, defaultGlyph, size) {
|
|
78
|
+
const s = GLYPH_SIZE[size];
|
|
79
|
+
return icon?.kind === "image" ? /* @__PURE__ */ jsx("img", {
|
|
80
|
+
src: icon.value,
|
|
81
|
+
alt: "",
|
|
82
|
+
draggable: false,
|
|
83
|
+
className: "w-full h-full object-cover"
|
|
84
|
+
}) : icon?.kind === "emoji" ? /* @__PURE__ */ jsx("span", {
|
|
85
|
+
"aria-hidden": true,
|
|
86
|
+
className: `${s.emoji} leading-none`,
|
|
87
|
+
children: icon.value
|
|
88
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
89
|
+
"aria-hidden": true,
|
|
90
|
+
className: `${defaultGlyph ?? (isGitRepo ? "i-ph-git-branch" : "i-ph-folder")} ${s.glyph}`
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A project's icon, display only: the same picked icon or default glyph its sidebar header shows.
|
|
95
|
+
*
|
|
96
|
+
* @param props - The {@link ProjectIconGlyphProps}.
|
|
97
|
+
*/
|
|
98
|
+
function ProjectIconGlyph({ icon, isGitRepo, defaultGlyph, size = "sm", className, style }) {
|
|
99
|
+
return /* @__PURE__ */ jsx("span", {
|
|
100
|
+
"aria-hidden": true,
|
|
101
|
+
className: [`inline-flex items-center justify-center shrink-0 overflow-hidden ${GLYPH_SIZE[size].slot}`, className].filter(Boolean).join(" "),
|
|
102
|
+
style,
|
|
103
|
+
children: iconGlyph(icon, isGitRepo, defaultGlyph, size)
|
|
104
|
+
});
|
|
105
|
+
}
|
|
50
106
|
/** Downscale target in px: well above the 18px display slot so it stays sharp on retina, ~2–4 KB as webp. */
|
|
51
107
|
const ICON_PX = 48;
|
|
52
108
|
/**
|
|
@@ -84,24 +140,13 @@ function ProjectIconButton({ fullPath, label, icon, isGitRepo, defaultGlyph, tit
|
|
|
84
140
|
const labels = useSidebarLabels();
|
|
85
141
|
const popover = usePopover();
|
|
86
142
|
const { triggerRef, surfaceRef } = popover;
|
|
87
|
-
const glyph = icon
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
className: "text-zg-ui leading-none",
|
|
95
|
-
children: icon.value
|
|
96
|
-
}) : /* @__PURE__ */ jsx("span", {
|
|
97
|
-
"aria-hidden": true,
|
|
98
|
-
className: `${defaultGlyph ?? (isGitRepo ? "i-ph-git-branch" : "i-ph-folder")} text-sm`
|
|
99
|
-
});
|
|
100
|
-
if (!fullPath) return /* @__PURE__ */ jsx("span", {
|
|
101
|
-
"aria-hidden": true,
|
|
102
|
-
className: ["inline-flex items-center justify-center w-[18px] h-[18px] shrink-0 rounded-zg-sm overflow-hidden", className].filter(Boolean).join(" "),
|
|
103
|
-
style,
|
|
104
|
-
children: glyph
|
|
143
|
+
const glyph = iconGlyph(icon, isGitRepo, defaultGlyph, "sm");
|
|
144
|
+
if (!fullPath) return /* @__PURE__ */ jsx(ProjectIconGlyph, {
|
|
145
|
+
...icon ? { icon } : {},
|
|
146
|
+
...isGitRepo !== void 0 ? { isGitRepo } : {},
|
|
147
|
+
...defaultGlyph ? { defaultGlyph } : {},
|
|
148
|
+
...className ? { className } : {},
|
|
149
|
+
...style ? { style } : {}
|
|
105
150
|
});
|
|
106
151
|
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("button", {
|
|
107
152
|
ref: (node) => {
|
|
@@ -231,4 +276,4 @@ function IconPicker({ hasIcon, onPick, resetLabel }) {
|
|
|
231
276
|
] });
|
|
232
277
|
}
|
|
233
278
|
//#endregion
|
|
234
|
-
export { ICON_PICKER_WIDTH, IconPicker, ProjectIconButton, useProjectIcons };
|
|
279
|
+
export { ICON_PICKER_WIDTH, IconPicker, ProjectIconButton, ProjectIconGlyph, resetProjectIconsForTests, useProjectIcons };
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExtensionItem } from "../../extensions/headless/wire.js";
|
|
2
|
+
import { SessionArchiveFilter, SidebarGroupBy, SidebarListSession, SidebarSortBy, SidebarView } from "../headless/sidebar/types.js";
|
|
3
|
+
import { SidebarQueryLayer } from "../headless/sidebar/query.js";
|
|
2
4
|
import { HostView } from "../headless/hosts.js";
|
|
3
5
|
import { SidebarProject } from "./session-menu.js";
|
|
4
6
|
import { SidebarChromeInset } from "./SidebarFrame.js";
|
|
7
|
+
import { SidebarProjectRef } from "./SidebarGroupHeader.js";
|
|
5
8
|
import { SidebarLive } from "./sidebar-live.js";
|
|
6
9
|
import { SessionContentSearch } from "./useSessionSearch.js";
|
|
7
10
|
import { CSSProperties, ReactNode } from "react";
|
|
@@ -58,6 +61,17 @@ interface SessionSidebarProps<S extends SidebarRowSession> {
|
|
|
58
61
|
onNewSession: () => void;
|
|
59
62
|
/** Starts a new session in a project's folder. */
|
|
60
63
|
onNewSessionIn: (path: string) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Opens a project's home (its name clicked; a server's project too). Present: project names open it and
|
|
66
|
+
* their collapse moves to a chevron after their buttons. Absent: names toggle collapse.
|
|
67
|
+
*/
|
|
68
|
+
onOpenProject?: (project: SidebarProjectRef) => void;
|
|
69
|
+
/** The project whose home shows: its header wears the active chip. */
|
|
70
|
+
openProject?: SidebarProjectRef | null;
|
|
71
|
+
/** Starts a new chat with no folder (the Chats name clicked). Present: the Chats collapse moves to a chevron. */
|
|
72
|
+
onOpenChats?: () => void;
|
|
73
|
+
/** A new chat with no folder shows: the Chats header wears the active chip. */
|
|
74
|
+
chatsOpen?: boolean;
|
|
61
75
|
/** Renames a session. */
|
|
62
76
|
onRename: (sessionId: S['id'], title: string) => Promise<void>;
|
|
63
77
|
/** Archives or restores a session. */
|
|
@@ -82,6 +96,25 @@ interface SessionSidebarProps<S extends SidebarRowSession> {
|
|
|
82
96
|
onDeleteProject: (project: SidebarProject, label: string, onRemoved: () => void) => void;
|
|
83
97
|
/** The keys belong elsewhere now (a modal is open). */
|
|
84
98
|
keyboardBlocked?: () => boolean;
|
|
99
|
+
/**
|
|
100
|
+
* The shown space's query layer (`SessionDirectoryView.query`): the grouping and sort that apply
|
|
101
|
+
* (a space's, an extension's, the agents'), the row decorations and the extension items. Absent:
|
|
102
|
+
* the built-in grouping and sort, no decorations, no items.
|
|
103
|
+
*/
|
|
104
|
+
query?: SidebarQueryLayer;
|
|
105
|
+
/**
|
|
106
|
+
* Changes the shown space's view: the empty list's reset turns its filters off with it, when
|
|
107
|
+
* filters hid every session (needs `query`). Absent: the empty list offers no reset.
|
|
108
|
+
*/
|
|
109
|
+
onViewChange?: (patch: Partial<SidebarView>) => void;
|
|
110
|
+
/** Agent names by id: the agent grouping's headers. Default: the composer host's agent catalog. An agent left out shows its id. */
|
|
111
|
+
agentNames?: Readonly<Record<string, string>>;
|
|
112
|
+
/**
|
|
113
|
+
* Opens an extension item's target. Default: a session opens, a command runs through the extensions
|
|
114
|
+
* host with the item's `args`, a panel focuses in the workspace, a screen opens on the modal layer.
|
|
115
|
+
* The wire's ids are already full (`SidebarRowWire`): they are used as they are.
|
|
116
|
+
*/
|
|
117
|
+
onOpenItem?: (open: NonNullable<ExtensionItem<'sidebar-row'>['item']['open']>, item: ExtensionItem<'sidebar-row'>) => void;
|
|
85
118
|
/** Beside the search well: the filter menu. */
|
|
86
119
|
filter?: ReactNode;
|
|
87
120
|
/** Under the list: the footer strip. */
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { useWithFade } from "../../motion/springs.js";
|
|
2
2
|
import { basename } from "../../path.js";
|
|
3
|
+
import { useExtensionsHost } from "../../extensions/ExtensionsProvider.js";
|
|
3
4
|
import { useSidebarNotice } from "./SidebarHostProvider.js";
|
|
5
|
+
import { compareSessions } from "../headless/session-list.js";
|
|
6
|
+
import { useOptionalWorkspaceActions } from "../../workspace/WorkspaceProvider.js";
|
|
7
|
+
import { ExtensionSlot } from "../../extensions/ExtensionSlot.js";
|
|
4
8
|
import { ShowMoreRow } from "../SessionGroupHeader.js";
|
|
5
9
|
import { SessionHostHeader } from "../SessionHostHeader.js";
|
|
6
10
|
import { KeyHint } from "../../keybindings/KeyHint.js";
|
|
11
|
+
import { useExtensionScreen } from "../../extensions/ExtensionScreen.js";
|
|
7
12
|
import "../headless/sidebar/project-icons.js";
|
|
8
13
|
import { useSidebarLabels } from "./useSidebarLabels.js";
|
|
9
14
|
import { useProjectIcons } from "./ProjectIcon.js";
|
|
10
|
-
import { buildHostSidebarRows, groupsByFolder, nestSidebarRows, partitionMainSession } from "../headless/sidebar/rows.js";
|
|
15
|
+
import { buildHostSidebarRows, buildQuerySidebarRows, groupsByFolder, itemRows, nestSidebarRows, partitionMainSession } from "../headless/sidebar/rows.js";
|
|
16
|
+
import { AGENT_GROUPING, claimChildSessions, clearedViewFilters, createDecorator, viewFiltersOn } from "../headless/sidebar/query.js";
|
|
11
17
|
import { MainSessionRow } from "./MainSessionRow.js";
|
|
12
18
|
import { useEnvironmentCommands } from "./session-menu.js";
|
|
13
19
|
import { holdFocusIn } from "./sidebar-focus-hold.js";
|
|
14
20
|
import { SidebarFrame, useSidebarFrame } from "./SidebarFrame.js";
|
|
15
21
|
import { SidebarGroupHeader } from "./SidebarGroupHeader.js";
|
|
22
|
+
import { SidebarRowView } from "./SidebarRowView.js";
|
|
23
|
+
import { useAgentNames } from "./useAgentNames.js";
|
|
16
24
|
import { SidebarSearchRow } from "./SidebarSearchRow.js";
|
|
17
25
|
import { SidebarSessionRow } from "./SidebarSessionRow.js";
|
|
18
26
|
import { usePinnedProjects } from "./usePinnedProjects.js";
|
|
@@ -21,13 +29,19 @@ import { useSidebarKeyboardNav } from "./useSidebarKeyboardNav.js";
|
|
|
21
29
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
30
|
import { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
23
31
|
import { AnimatePresence, LazyMotion, domAnimation, m, useIsPresent } from "motion/react";
|
|
32
|
+
import { sortRows } from "zidane/chat/pure";
|
|
24
33
|
//#region src/chat/sidebar/SessionSidebar.tsx
|
|
25
34
|
/**
|
|
26
35
|
* The session sidebar, whole: its frame (`SidebarFrame`), the top band (the
|
|
27
36
|
* orchestration Main, New session, the search well with the filter menu),
|
|
28
37
|
* the list (grouped sections whose headers stick, the search results, one
|
|
29
|
-
* list per space that slides on a user switch)
|
|
30
|
-
*
|
|
38
|
+
* list per space that slides on a user switch), the extensions' `sidebar.top`
|
|
39
|
+
* and `sidebar.bottom` blocks pinned right above and below the list (they
|
|
40
|
+
* never scroll with it) and the footer the app puts under it. The keyboard walks the list (`useSidebarKeyboardNav`): ↑ / ↓ go
|
|
41
|
+
* from session to session and skip extension item rows (landing on one would
|
|
42
|
+
* open its target, which may run an extension command); Tab reaches them.
|
|
43
|
+
* An empty list says why: no chats yet, or none matching the view's filters,
|
|
44
|
+
* with a reset when the app passes `onViewChange`.
|
|
31
45
|
*
|
|
32
46
|
* The data comes in as props, the session directory's view
|
|
33
47
|
* (`useSessionDirectoryView`) with the app's actions; the live parts of the
|
|
@@ -40,6 +54,11 @@ const LIST_STYLE = {
|
|
|
40
54
|
maskImage: LIST_MASK,
|
|
41
55
|
WebkitMaskImage: LIST_MASK
|
|
42
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* The `sidebar.top` and `sidebar.bottom` blocks: pinned (the list scrolls, they don't), each at most 30% of the
|
|
59
|
+
* sidebar so the list keeps most of it, scrolling on their own past that. An empty one draws nothing.
|
|
60
|
+
*/
|
|
61
|
+
const PINNED_SLOT = "shrink-0 max-h-[30%] overflow-y-auto px-2 py-1";
|
|
43
62
|
/** The space list slide's duration (s). */
|
|
44
63
|
const SPACE_SLIDE_S = .22;
|
|
45
64
|
const SPACE_LIST_VARIANTS = {
|
|
@@ -115,13 +134,15 @@ function NewSessionButton({ onNewSession, isActive, className = "", style }) {
|
|
|
115
134
|
});
|
|
116
135
|
}
|
|
117
136
|
const messageOf = (err) => err?.message ?? String(err);
|
|
137
|
+
const NO_ITEMS = [];
|
|
138
|
+
const NO_DECORATIONS = [];
|
|
118
139
|
/**
|
|
119
140
|
* Renders the session sidebar.
|
|
120
141
|
*
|
|
121
142
|
* @param props - The directory's view, the app's actions, the live row parts, the footer and the frame.
|
|
122
143
|
*/
|
|
123
144
|
function SessionSidebar(props) {
|
|
124
|
-
const { sessions: allSessions, hosts, groupBy, sortBy, archiveFilter, activeSessionId, onActivate, orchestration, spacesOn, spaces, listSpaceId, spaceSlide: lastSpaceSwitch, search, live, runDetails = true, artifactBadges = true, onNewSession, onNewSessionIn: newSessionIn, onRename, onSetArchived, onSetFavorite, onDelete, onMoveToSpace, onMoveSession, onMoveProjectToSpace, onArchiveProject, onDeleteProject: deleteProject, keyboardBlocked, filter, footer, collapsed, width, onWidthCommit, chromeInset, ariaLabel, className, style } = props;
|
|
145
|
+
const { sessions: allSessions, hosts, groupBy, sortBy, archiveFilter, activeSessionId, onActivate, orchestration, spacesOn, spaces, listSpaceId, spaceSlide: lastSpaceSwitch, search, live, runDetails = true, artifactBadges = true, onNewSession, onNewSessionIn: newSessionIn, onOpenProject, openProject, onOpenChats, chatsOpen = false, onRename, onSetArchived, onSetFavorite, onDelete, onMoveToSpace, onMoveSession, onMoveProjectToSpace, onArchiveProject, onDeleteProject: deleteProject, keyboardBlocked, query, onViewChange, agentNames: agentNamesProp, onOpenItem, filter, footer, collapsed, width, onWidthCommit, chromeInset, ariaLabel, className, style } = props;
|
|
125
146
|
const labels = useSidebarLabels();
|
|
126
147
|
const notify = useSidebarNotice();
|
|
127
148
|
const environment = useEnvironmentCommands();
|
|
@@ -159,31 +180,78 @@ function SessionSidebar(props) {
|
|
|
159
180
|
const { pinned: pinnedProjects, setPinned: setProjectPinned } = usePinnedProjects(listSpaceId);
|
|
160
181
|
/** The pinned Main renders once, above every group, instead of also in its own bucket. */
|
|
161
182
|
const { main: mainSession, rest: groupableSessions } = useMemo(() => partitionMainSession(sessions, orchestration), [sessions, orchestration]);
|
|
183
|
+
const catalogNames = useAgentNames();
|
|
184
|
+
const agentNames = agentNamesProp ?? catalogNames;
|
|
185
|
+
/** The grouping that applies: the query layer's, else the view's ('agent' as a query grouping). */
|
|
186
|
+
const grouping = useMemo(() => query?.grouping ?? (groupBy === "agent" ? {
|
|
187
|
+
kind: "query",
|
|
188
|
+
groupBy: AGENT_GROUPING,
|
|
189
|
+
source: "agent"
|
|
190
|
+
} : {
|
|
191
|
+
kind: "builtin",
|
|
192
|
+
groupBy
|
|
193
|
+
}), [query?.grouping, groupBy]);
|
|
194
|
+
/** The grouping the headers and chips read: a query grouping's groups are no folders. */
|
|
195
|
+
const listGroupBy = grouping.kind === "builtin" ? grouping.groupBy : "none";
|
|
196
|
+
/** The view narrows the space's sessions: an empty list then says so, not "no chats yet". */
|
|
197
|
+
const filtersOn = useMemo(() => query ? viewFiltersOn(query.view, query.filters) : false, [query]);
|
|
198
|
+
const querySort = query?.sort ?? null;
|
|
199
|
+
/** The extension items of this space, each with the sessions its query lists under it (taken out of the list). */
|
|
200
|
+
const claimed = useMemo(() => claimChildSessions(query?.items ?? NO_ITEMS, groupableSessions), [query?.items, groupableSessions]);
|
|
201
|
+
/** What decorations put on each row (`null` for every row while no extension decorates, so the rows' memo holds). */
|
|
202
|
+
const decorate = useMemo(() => createDecorator(query?.decorations ?? NO_DECORATIONS), [query?.decorations]);
|
|
203
|
+
const decorations = useMemo(() => new Map(sessions.map((s) => [s.id, decorate(s)])), [sessions, decorate]);
|
|
204
|
+
const decorationOf = (session) => decorations.get(session.id) ?? null;
|
|
162
205
|
/**
|
|
163
206
|
* Sorted + grouped rows. Collapse and the per-project cap are applied inside the builder, so arrow-key nav
|
|
164
207
|
* (which walks the session rows) can never land on a hidden row.
|
|
165
208
|
*/
|
|
166
|
-
const rows = useMemo(() =>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
209
|
+
const rows = useMemo(() => {
|
|
210
|
+
const rest = claimed.rest;
|
|
211
|
+
const sorted = querySort ? sortRows(rest, querySort) : null;
|
|
212
|
+
if (grouping.kind === "query") return buildQuerySidebarRows(sorted ?? rest.slice().sort((a, b) => compareSessions(a, b, sortBy)), grouping.groupBy, {
|
|
213
|
+
collapsedGroups,
|
|
214
|
+
...grouping.source === "agent" ? { labels: agentNames } : {},
|
|
215
|
+
missingLabel: grouping.source === "agent" ? labels.agentGroupDefault : labels.queryGroupOther,
|
|
216
|
+
favoritesLabel: labels.favorites,
|
|
217
|
+
isFavorite: (s) => s.favorite === true,
|
|
218
|
+
items: claimed.items
|
|
219
|
+
});
|
|
220
|
+
const order = sorted ? new Map(sorted.map((s, i) => [s.id, i])) : null;
|
|
221
|
+
return [...claimed.items.flatMap((item) => itemRows(item, collapsedGroups)), ...buildHostSidebarRows(rest, hosts, grouping.groupBy, sortBy, {
|
|
222
|
+
collapsedGroups,
|
|
223
|
+
showMoreExpanded,
|
|
224
|
+
pinnedProjects,
|
|
225
|
+
...order ? { compare: (a, b) => (order.get(a.id) ?? 0) - (order.get(b.id) ?? 0) } : {}
|
|
226
|
+
})];
|
|
227
|
+
}, [
|
|
228
|
+
claimed,
|
|
229
|
+
querySort,
|
|
230
|
+
grouping,
|
|
172
231
|
hosts,
|
|
173
|
-
groupBy,
|
|
174
232
|
sortBy,
|
|
175
233
|
collapsedGroups,
|
|
176
234
|
showMoreExpanded,
|
|
177
|
-
pinnedProjects
|
|
235
|
+
pinnedProjects,
|
|
236
|
+
agentNames,
|
|
237
|
+
labels
|
|
178
238
|
]);
|
|
179
239
|
/** The rows as the list draws them: each header with the rows under it, a section whose header sticks. */
|
|
180
240
|
const sections = useMemo(() => nestSidebarRows(rows), [rows]);
|
|
181
241
|
const hostById = useMemo(() => new Map(hosts.map((h) => [h.id, h])), [hosts]);
|
|
182
242
|
/** This machine's project folders with a listed conversation not archived yet. */
|
|
183
243
|
const archivableProjects = useMemo(() => {
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
244
|
+
const folders = /* @__PURE__ */ new Set();
|
|
245
|
+
const repos = /* @__PURE__ */ new Set();
|
|
246
|
+
for (const s of groupableSessions) {
|
|
247
|
+
if (s.archived) continue;
|
|
248
|
+
if (!s.hostId) folders.add((s.projectRoot || s.cwd).replace(/\/+$/, "") || "/");
|
|
249
|
+
else if (s.repoKey) repos.add(s.repoKey);
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
folders,
|
|
253
|
+
repos
|
|
254
|
+
};
|
|
187
255
|
}, [groupableSessions]);
|
|
188
256
|
const favoriteProjects = useMemo(() => {
|
|
189
257
|
const out = /* @__PURE__ */ new Map();
|
|
@@ -286,6 +354,34 @@ function SessionSidebar(props) {
|
|
|
286
354
|
labels
|
|
287
355
|
]);
|
|
288
356
|
const onDeleteProject = useCallback((project, label) => deleteProject(project, label, () => setProjectPinned(project.path, false)), [deleteProject, setProjectPinned]);
|
|
357
|
+
const runCommand = useExtensionsHost()?.commands?.run;
|
|
358
|
+
const workspace = useOptionalWorkspaceActions();
|
|
359
|
+
const openScreen = useExtensionScreen();
|
|
360
|
+
const onOpenItemTarget = useCallback((entry) => {
|
|
361
|
+
const open = entry.item.open;
|
|
362
|
+
if (!open) return;
|
|
363
|
+
if (onOpenItem) return onOpenItem(open, entry);
|
|
364
|
+
if ("session" in open) commitImmediate(open.session);
|
|
365
|
+
else if ("command" in open) runCommand?.(open.command, { args: entry.item.args }).catch((err) => notify(labels.itemOpenFailed(messageOf(err))));
|
|
366
|
+
else if ("panel" in open) workspace?.focusTab(open.panel);
|
|
367
|
+
else openScreen(open.screen);
|
|
368
|
+
}, [
|
|
369
|
+
onOpenItem,
|
|
370
|
+
commitImmediate,
|
|
371
|
+
runCommand,
|
|
372
|
+
notify,
|
|
373
|
+
labels,
|
|
374
|
+
workspace,
|
|
375
|
+
openScreen
|
|
376
|
+
]);
|
|
377
|
+
const onRunItemAction = useCallback((entry, action) => {
|
|
378
|
+
if (!action.command || !runCommand) return;
|
|
379
|
+
runCommand(action.command, { args: entry.item.args }).catch((err) => notify(labels.itemOpenFailed(messageOf(err))));
|
|
380
|
+
}, [
|
|
381
|
+
runCommand,
|
|
382
|
+
notify,
|
|
383
|
+
labels
|
|
384
|
+
]);
|
|
289
385
|
const onRowOpenMenu = useCallback((sessionId) => setMenuForId(sessionId), []);
|
|
290
386
|
const onRowCloseMenu = useCallback((sessionId) => {
|
|
291
387
|
setMenuForId((current) => current === sessionId ? null : current);
|
|
@@ -359,7 +455,7 @@ function SessionSidebar(props) {
|
|
|
359
455
|
onWidthCommit
|
|
360
456
|
});
|
|
361
457
|
if (!frame.mounted) return null;
|
|
362
|
-
const renderNode = (node) => {
|
|
458
|
+
const renderNode = (node, serverOfGroup) => {
|
|
363
459
|
if (node.kind === "section") {
|
|
364
460
|
const { header } = node;
|
|
365
461
|
return /* @__PURE__ */ jsx("li", {
|
|
@@ -374,7 +470,7 @@ function SessionSidebar(props) {
|
|
|
374
470
|
className: "zg-sticky-head"
|
|
375
471
|
}) : /* @__PURE__ */ jsx(SidebarGroupHeader, {
|
|
376
472
|
row: header,
|
|
377
|
-
groupBy,
|
|
473
|
+
groupBy: listGroupBy,
|
|
378
474
|
icon: header.fullPath ? projectIcons[header.fullPath] : void 0,
|
|
379
475
|
onAssignIcon: setProjectIcon,
|
|
380
476
|
onToggle: toggleGroup,
|
|
@@ -384,11 +480,19 @@ function SessionSidebar(props) {
|
|
|
384
480
|
onMoveProject: onRowMoveProjectToSpace,
|
|
385
481
|
pinned: header.pinned === true,
|
|
386
482
|
onSetPinned: setProjectPinned,
|
|
387
|
-
canArchive: header.fullPath !== void 0 && archivableProjects.has(header.fullPath),
|
|
483
|
+
canArchive: header.fullPath !== void 0 && archivableProjects.folders.has(header.fullPath) || header.repoKey !== void 0 && archivableProjects.repos.has(header.repoKey),
|
|
388
484
|
onArchiveProject,
|
|
389
485
|
onDeleteProject,
|
|
390
|
-
...header.hostId && hostById.get(header.hostId) ? { server: hostById.get(header.hostId) } : {}
|
|
391
|
-
|
|
486
|
+
...header.hostId && hostById.get(header.hostId) ? { server: hostById.get(header.hostId) } : {},
|
|
487
|
+
...onOpenProject ? {
|
|
488
|
+
onOpenProject,
|
|
489
|
+
open: activeSessionId == null && openProject != null && openProject.path === header.fullPath && openProject.hostId === header.hostId
|
|
490
|
+
} : {},
|
|
491
|
+
...onOpenChats && header.chats ? {
|
|
492
|
+
onOpenChats,
|
|
493
|
+
open: activeSessionId == null && chatsOpen
|
|
494
|
+
} : {}
|
|
495
|
+
}), node.children.map((child) => renderNode(child, header.kind === "host" ? header.host.id : header.hostId))]
|
|
392
496
|
})
|
|
393
497
|
}, node.id);
|
|
394
498
|
}
|
|
@@ -396,6 +500,16 @@ function SessionSidebar(props) {
|
|
|
396
500
|
hiddenCount: node.hiddenCount,
|
|
397
501
|
onExpand: () => expandGroup(node.groupId)
|
|
398
502
|
}, node.id);
|
|
503
|
+
if (node.kind === "item") return /* @__PURE__ */ jsx(SidebarRowView, {
|
|
504
|
+
rowId: node.id,
|
|
505
|
+
entry: node.row.entry,
|
|
506
|
+
collapsed: node.row.collapsed,
|
|
507
|
+
childCount: node.row.childCount,
|
|
508
|
+
onOpen: onOpenItemTarget,
|
|
509
|
+
...runCommand ? { onRunAction: onRunItemAction } : {},
|
|
510
|
+
onToggle: toggleGroup,
|
|
511
|
+
children: node.children.map((child) => renderNode(child, serverOfGroup))
|
|
512
|
+
}, node.id);
|
|
399
513
|
const session = node.session;
|
|
400
514
|
const isRenaming = session.id === renamingId;
|
|
401
515
|
return /* @__PURE__ */ jsx(SidebarSessionRow, {
|
|
@@ -403,7 +517,7 @@ function SessionSidebar(props) {
|
|
|
403
517
|
title: session.title,
|
|
404
518
|
cwd: session.cwd,
|
|
405
519
|
hostId: session.hostId,
|
|
406
|
-
hostBadge: node.favorites === true || !groupsByFolder(
|
|
520
|
+
hostBadge: node.favorites === true || !groupsByFolder(listGroupBy) || session.hostId !== serverOfGroup,
|
|
407
521
|
spaceId: session.spaceId,
|
|
408
522
|
isMain: session.isMain,
|
|
409
523
|
updatedAt: session.updatedAt,
|
|
@@ -417,9 +531,12 @@ function SessionSidebar(props) {
|
|
|
417
531
|
...rowDetails,
|
|
418
532
|
spaces: spaceList,
|
|
419
533
|
environment: session.environment,
|
|
420
|
-
project: favoriteProjects.get(session.id)
|
|
534
|
+
project: favoriteProjects.get(session.id),
|
|
535
|
+
decoration: decorationOf(session)
|
|
421
536
|
}, session.id);
|
|
422
537
|
};
|
|
538
|
+
/** The pinned blocks show the open session's items with the unscoped ones. */
|
|
539
|
+
const slotScope = activeSessionId != null ? { sessionId: activeSessionId } : {};
|
|
423
540
|
const searchRow = (session, excerpt) => /* @__PURE__ */ jsx(SidebarSessionRow, {
|
|
424
541
|
sessionId: session.id,
|
|
425
542
|
title: session.title,
|
|
@@ -437,6 +554,7 @@ function SessionSidebar(props) {
|
|
|
437
554
|
...rowDetails,
|
|
438
555
|
spaces: spaceList,
|
|
439
556
|
environment: session.environment,
|
|
557
|
+
decoration: decorationOf(session),
|
|
440
558
|
...excerpt !== void 0 ? {
|
|
441
559
|
excerpt,
|
|
442
560
|
excerptQuery: trimmedQuery
|
|
@@ -464,7 +582,7 @@ function SessionSidebar(props) {
|
|
|
464
582
|
}),
|
|
465
583
|
/* @__PURE__ */ jsx(NewSessionButton, {
|
|
466
584
|
onNewSession: handleNewSession,
|
|
467
|
-
isActive: activeSessionId == null
|
|
585
|
+
isActive: activeSessionId == null && openProject == null && !chatsOpen
|
|
468
586
|
}),
|
|
469
587
|
/* @__PURE__ */ jsx(SidebarSearchRow, {
|
|
470
588
|
value: searchQuery,
|
|
@@ -473,6 +591,11 @@ function SessionSidebar(props) {
|
|
|
473
591
|
})
|
|
474
592
|
]
|
|
475
593
|
}),
|
|
594
|
+
/* @__PURE__ */ jsx(ExtensionSlot, {
|
|
595
|
+
at: "sidebar.top",
|
|
596
|
+
...slotScope,
|
|
597
|
+
className: PINNED_SLOT
|
|
598
|
+
}),
|
|
476
599
|
/* @__PURE__ */ jsx("div", {
|
|
477
600
|
ref: listBox,
|
|
478
601
|
className: "relative flex-1 min-h-0 overflow-hidden flex flex-col",
|
|
@@ -506,14 +629,27 @@ function SessionSidebar(props) {
|
|
|
506
629
|
className: "text-xs text-[var(--zg-text-muted)] px-3 pt-1 select-none",
|
|
507
630
|
children: labels.sidebarNoMatches
|
|
508
631
|
})
|
|
509
|
-
] }) : sections.map(renderNode), !searchMode && sessions.length === 0 && /* @__PURE__ */
|
|
632
|
+
] }) : sections.map((node) => renderNode(node)), !searchMode && sessions.length === 0 && claimed.items.length === 0 && (filtersOn && query ? /* @__PURE__ */ jsxs("li", {
|
|
633
|
+
className: "text-xs text-[var(--zg-text-muted)] px-3 pt-1 flex flex-col items-start gap-1",
|
|
634
|
+
children: [/* @__PURE__ */ jsx("span", { children: labels.noChatsMatchFilters }), onViewChange && /* @__PURE__ */ jsx("button", {
|
|
635
|
+
type: "button",
|
|
636
|
+
className: "p-0 bg-transparent border-0 text-xs text-[var(--zg-text)] hover:underline cursor-pointer",
|
|
637
|
+
onClick: () => onViewChange(clearedViewFilters(query.view)),
|
|
638
|
+
children: labels.resetFilters
|
|
639
|
+
})]
|
|
640
|
+
}) : /* @__PURE__ */ jsx("li", {
|
|
510
641
|
className: "text-xs text-[var(--zg-text-muted)] px-3 pt-1",
|
|
511
642
|
children: labels.noChatsYet
|
|
512
|
-
})]
|
|
643
|
+
}))]
|
|
513
644
|
}, listKey)
|
|
514
645
|
})
|
|
515
646
|
})
|
|
516
647
|
}),
|
|
648
|
+
/* @__PURE__ */ jsx(ExtensionSlot, {
|
|
649
|
+
at: "sidebar.bottom",
|
|
650
|
+
...slotScope,
|
|
651
|
+
className: PINNED_SLOT
|
|
652
|
+
}),
|
|
517
653
|
footer
|
|
518
654
|
]
|
|
519
655
|
});
|