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
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { DEFAULT_CHAT_LABELS } from "../labels.js";
|
|
1
2
|
import { buildSessionRows } from "../session-list.js";
|
|
3
|
+
import { groupRows } from "zidane/chat/pure";
|
|
2
4
|
//#region src/chat/headless/sidebar/rows.ts
|
|
3
5
|
/**
|
|
6
|
+
* The sidebar's rows: zidane-ui's session-list model (sort, date / state /
|
|
7
|
+
* project grouping, collapse, "show more") over the app's sessions, plus the
|
|
8
|
+
* app's own layer on top: the Per host view's one section per host, and the
|
|
9
|
+
* sections the list renders (`nestSidebarRows`).
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
4
12
|
* The project a session is listed under: its repository's root, else its folder (`''`: none).
|
|
5
13
|
*
|
|
6
14
|
* @param session - Its folder and project root.
|
|
@@ -65,6 +73,51 @@ function hostFolderKey(session) {
|
|
|
65
73
|
if (!session.hostId || !path) return path;
|
|
66
74
|
return `${path.replace(/\/+$/, "") || "/"}${HOST_SEP}${session.hostId}`;
|
|
67
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* The group each repository's sessions share across machines, by `repoKey`. A
|
|
78
|
+
* repository with one local folder groups under that folder: its sessions on
|
|
79
|
+
* servers join it. A repository only on servers groups under its first
|
|
80
|
+
* server folder, in key order. A repository with several local folders (two
|
|
81
|
+
* clones) is left out: each folder keeps its own group, and so does each
|
|
82
|
+
* server folder.
|
|
83
|
+
*
|
|
84
|
+
* @param sessions - The listed sessions.
|
|
85
|
+
*/
|
|
86
|
+
function repoGroups(sessions) {
|
|
87
|
+
const local = /* @__PURE__ */ new Map();
|
|
88
|
+
const remote = /* @__PURE__ */ new Map();
|
|
89
|
+
for (const session of sessions) {
|
|
90
|
+
if (!session.repoKey || !projectPathOf(session)) continue;
|
|
91
|
+
if (session.hostId) {
|
|
92
|
+
const key = hostFolderKey(session);
|
|
93
|
+
const first = remote.get(session.repoKey);
|
|
94
|
+
if (first === void 0 || key < first) remote.set(session.repoKey, key);
|
|
95
|
+
} else {
|
|
96
|
+
const folders = local.get(session.repoKey) ?? /* @__PURE__ */ new Set();
|
|
97
|
+
folders.add(projectPathOf(session).replace(/\/+$/, "") || "/");
|
|
98
|
+
local.set(session.repoKey, folders);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const groups = /* @__PURE__ */ new Map();
|
|
102
|
+
for (const [repoKey, first] of remote) {
|
|
103
|
+
const folders = local.get(repoKey);
|
|
104
|
+
if (!folders) groups.set(repoKey, first);
|
|
105
|
+
else if (folders.size === 1) groups.set(repoKey, [...folders][0]);
|
|
106
|
+
}
|
|
107
|
+
return groups;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Whether `session` is listed under a project header: a local session in its
|
|
111
|
+
* folder, or, for a header that names a `repoKey`, a server session of that
|
|
112
|
+
* repository.
|
|
113
|
+
*
|
|
114
|
+
* @param session - The session.
|
|
115
|
+
* @param project - The header's folder (`path`), its server (`hostId`) and its repository (`repoKey`).
|
|
116
|
+
*/
|
|
117
|
+
function isProjectMember(session, project) {
|
|
118
|
+
if (project.repoKey && session.hostId && session.repoKey === project.repoKey) return true;
|
|
119
|
+
return (session.hostId ?? void 0) === project.hostId && projectPathOf(session) === project.path;
|
|
120
|
+
}
|
|
68
121
|
/** A server folder's header: the folder, its server as `hostId` (a chip), without the local folder affordances. */
|
|
69
122
|
function serverFolderHeader(row) {
|
|
70
123
|
if (row.kind !== "header" || !row.fullPath?.includes(HOST_SEP)) return row;
|
|
@@ -77,6 +130,15 @@ function serverFolderHeader(row) {
|
|
|
77
130
|
hostId
|
|
78
131
|
};
|
|
79
132
|
}
|
|
133
|
+
/** A header whose group holds a repository's sessions from several machines names the repository. */
|
|
134
|
+
function withRepoKey(row, repoByGroup) {
|
|
135
|
+
if (row.kind !== "header" || row.fullPath === void 0) return row;
|
|
136
|
+
const repoKey = repoByGroup.get(row.fullPath);
|
|
137
|
+
return repoKey ? {
|
|
138
|
+
...row,
|
|
139
|
+
repoKey
|
|
140
|
+
} : row;
|
|
141
|
+
}
|
|
80
142
|
function withoutLocalPath(row) {
|
|
81
143
|
if (row.kind !== "header" || row.fullPath === void 0) return row;
|
|
82
144
|
const { fullPath: _fullPath, isGitRepo: _isGitRepo, ...rest } = row;
|
|
@@ -86,8 +148,9 @@ function withoutLocalPath(row) {
|
|
|
86
148
|
* The sidebar's rows over every host. Per host: This computer's section
|
|
87
149
|
* first, then each saved server's, each host's sessions grouped per folder
|
|
88
150
|
* under its header. Any other view lists every host in one list, a server's
|
|
89
|
-
* folder headers naming the server
|
|
90
|
-
*
|
|
151
|
+
* folder headers naming the server, and a repository's sessions on every
|
|
152
|
+
* machine under one header ({@link repoGroups}). Sessions of a server no
|
|
153
|
+
* longer saved are not listed.
|
|
91
154
|
*
|
|
92
155
|
* @param sessions - The sessions to list.
|
|
93
156
|
* @param hosts - This machine and each saved server, in order.
|
|
@@ -98,8 +161,11 @@ function withoutLocalPath(row) {
|
|
|
98
161
|
function buildHostSidebarRows(sessions, hosts, groupBy, sortBy, options = {}) {
|
|
99
162
|
const servers = new Map(hosts.filter((host) => host.kind === "server").map((host) => [host.id, host.name]));
|
|
100
163
|
if (groupBy !== "host") {
|
|
101
|
-
const
|
|
102
|
-
|
|
164
|
+
const listed = sessions.filter((s) => !s.hostId || servers.has(s.hostId));
|
|
165
|
+
const groups = servers.size > 0 ? repoGroups(listed) : /* @__PURE__ */ new Map();
|
|
166
|
+
const repoByGroup = new Map([...groups].map(([repoKey, group]) => [group, repoKey]));
|
|
167
|
+
const rows = buildSidebarRows(listed, groupBy, sortBy, options, (s) => s.repoKey && groups.has(s.repoKey) ? groups.get(s.repoKey) : hostFolderKey(s));
|
|
168
|
+
return servers.size > 0 ? rows.map((row) => serverFolderHeader(withRepoKey(row, repoByGroup))) : rows;
|
|
103
169
|
}
|
|
104
170
|
const local = sessions.filter((s) => !s.hostId);
|
|
105
171
|
const collapsedGroups = options.collapsedGroups ?? EMPTY_SET;
|
|
@@ -127,6 +193,107 @@ function buildHostSidebarRows(sessions, hosts, groupBy, sortBy, options = {}) {
|
|
|
127
193
|
return out;
|
|
128
194
|
}
|
|
129
195
|
/**
|
|
196
|
+
* An item's row and its child sessions' rows (none while it is collapsed).
|
|
197
|
+
*
|
|
198
|
+
* @param item - The item and its child sessions.
|
|
199
|
+
* @param collapsedGroups - Collapsed row ids (an item collapses under its row id).
|
|
200
|
+
*/
|
|
201
|
+
function itemRows(item, collapsedGroups = EMPTY_SET) {
|
|
202
|
+
const id = `i-${item.entry.item.id}`;
|
|
203
|
+
const collapsed = collapsedGroups.has(id);
|
|
204
|
+
const out = [{
|
|
205
|
+
kind: "item",
|
|
206
|
+
id,
|
|
207
|
+
entry: item.entry,
|
|
208
|
+
collapsed,
|
|
209
|
+
childCount: item.children.length
|
|
210
|
+
}];
|
|
211
|
+
if (!collapsed) for (const session of item.children) out.push({
|
|
212
|
+
kind: "session",
|
|
213
|
+
id: session.id,
|
|
214
|
+
session,
|
|
215
|
+
itemId: id
|
|
216
|
+
});
|
|
217
|
+
return out;
|
|
218
|
+
}
|
|
219
|
+
const MISSING = "\0none";
|
|
220
|
+
/**
|
|
221
|
+
* The sidebar's rows under a query grouping (a space's, an extension's, the agents'): favorites
|
|
222
|
+
* first, then one group per value in the grouping's order, the items of each group leading it. A
|
|
223
|
+
* session whose value is a list is in each of its groups. The sessions come sorted.
|
|
224
|
+
*
|
|
225
|
+
* @param sessions - The sessions to list, in order.
|
|
226
|
+
* @param groupBy - The grouping.
|
|
227
|
+
* @param options - Collapse, labels, favorites and items.
|
|
228
|
+
*/
|
|
229
|
+
function buildQuerySidebarRows(sessions, groupBy, options = {}) {
|
|
230
|
+
const collapsedGroups = options.collapsedGroups ?? EMPTY_SET;
|
|
231
|
+
const out = [];
|
|
232
|
+
const favorites = options.isFavorite ? sessions.filter(options.isFavorite) : [];
|
|
233
|
+
const rest = favorites.length > 0 ? sessions.filter((s) => !options.isFavorite(s)) : sessions;
|
|
234
|
+
if (favorites.length > 0) {
|
|
235
|
+
const id = "h-Favorites";
|
|
236
|
+
const collapsed = collapsedGroups.has(id);
|
|
237
|
+
out.push({
|
|
238
|
+
kind: "header",
|
|
239
|
+
id,
|
|
240
|
+
label: options.favoritesLabel ?? DEFAULT_CHAT_LABELS.favorites,
|
|
241
|
+
collapsed,
|
|
242
|
+
favorites: true
|
|
243
|
+
});
|
|
244
|
+
if (!collapsed) for (const session of favorites) out.push({
|
|
245
|
+
kind: "session",
|
|
246
|
+
id: session.id,
|
|
247
|
+
session,
|
|
248
|
+
favorites: true
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
const groups = groupRows(rest, groupBy, {
|
|
252
|
+
...options.labels ? { labels: options.labels } : {},
|
|
253
|
+
...options.missingLabel ? { missingLabel: options.missingLabel } : {}
|
|
254
|
+
}).map((g) => ({
|
|
255
|
+
key: g.key,
|
|
256
|
+
label: g.label,
|
|
257
|
+
rows: g.rows
|
|
258
|
+
}));
|
|
259
|
+
const itemsByKey = /* @__PURE__ */ new Map();
|
|
260
|
+
for (const item of options.items ?? []) {
|
|
261
|
+
const key = item.entry.item.group ?? MISSING;
|
|
262
|
+
itemsByKey.set(key, [...itemsByKey.get(key) ?? [], item]);
|
|
263
|
+
}
|
|
264
|
+
for (const key of itemsByKey.keys()) {
|
|
265
|
+
if (groups.some((g) => (g.key ?? MISSING) === key)) continue;
|
|
266
|
+
const label = key === MISSING ? options.missingLabel ?? "" : groupBy.labels?.[key] ?? options.labels?.[key] ?? key;
|
|
267
|
+
const at = groups.findIndex((g) => g.key === null);
|
|
268
|
+
const group = {
|
|
269
|
+
key: key === MISSING ? null : key,
|
|
270
|
+
label,
|
|
271
|
+
rows: []
|
|
272
|
+
};
|
|
273
|
+
if (key === MISSING || at === -1) groups.push(group);
|
|
274
|
+
else groups.splice(at, 0, group);
|
|
275
|
+
}
|
|
276
|
+
for (const group of groups) {
|
|
277
|
+
const key = group.key ?? MISSING;
|
|
278
|
+
const id = `h-q:${key}`;
|
|
279
|
+
const collapsed = collapsedGroups.has(id);
|
|
280
|
+
out.push({
|
|
281
|
+
kind: "header",
|
|
282
|
+
id,
|
|
283
|
+
label: group.label,
|
|
284
|
+
collapsed
|
|
285
|
+
});
|
|
286
|
+
if (collapsed) continue;
|
|
287
|
+
for (const item of itemsByKey.get(key) ?? []) out.push(...itemRows(item, collapsedGroups));
|
|
288
|
+
for (const session of group.rows) out.push({
|
|
289
|
+
kind: "session",
|
|
290
|
+
id: session.id,
|
|
291
|
+
session
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
return out;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
130
297
|
* The flat rows as nested sections: a host's section holds its groups, a
|
|
131
298
|
* group's holds its rows. Rows before any header (a flat view) stay at the
|
|
132
299
|
* top level, and so do a flat view's rows after its Favorites.
|
|
@@ -137,7 +304,24 @@ function nestSidebarRows(rows) {
|
|
|
137
304
|
const top = [];
|
|
138
305
|
let host = null;
|
|
139
306
|
let group = null;
|
|
307
|
+
let item = null;
|
|
140
308
|
for (const row of rows) {
|
|
309
|
+
if (row.kind === "session" && row.itemId !== void 0 && item?.id === row.itemId) {
|
|
310
|
+
item.children.push(row);
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
if (row.kind === "item") {
|
|
314
|
+
item = {
|
|
315
|
+
kind: "item",
|
|
316
|
+
id: row.id,
|
|
317
|
+
row,
|
|
318
|
+
children: []
|
|
319
|
+
};
|
|
320
|
+
const parent = group ?? host;
|
|
321
|
+
if (parent) parent.children.push(item);
|
|
322
|
+
else top.push(item);
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
141
325
|
if (row.kind === "host") {
|
|
142
326
|
host = {
|
|
143
327
|
kind: "section",
|
|
@@ -167,4 +351,4 @@ function nestSidebarRows(rows) {
|
|
|
167
351
|
return top;
|
|
168
352
|
}
|
|
169
353
|
//#endregion
|
|
170
|
-
export { CHATS_BUCKET, buildHostSidebarRows, buildSidebarRows, groupsByFolder, nestSidebarRows, partitionMainSession, projectPathOf };
|
|
354
|
+
export { CHATS_BUCKET, buildHostSidebarRows, buildQuerySidebarRows, buildSidebarRows, groupsByFolder, isProjectMember, itemRows, nestSidebarRows, partitionMainSession, projectPathOf, repoGroups };
|
|
@@ -27,20 +27,49 @@ interface SidebarListSession {
|
|
|
27
27
|
isMain?: boolean;
|
|
28
28
|
/** Its folder is a git repository. */
|
|
29
29
|
isGitRepo?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The repository its folder is a checkout of (`github.com/owner/repo`). Sessions of one
|
|
32
|
+
* repository on several machines are listed under one project.
|
|
33
|
+
*/
|
|
34
|
+
repoKey?: string;
|
|
30
35
|
/** Starred: listed under Favorites. */
|
|
31
36
|
favorite?: boolean;
|
|
32
37
|
/** Archived: listed only under the archived filter. */
|
|
33
38
|
archived?: boolean;
|
|
39
|
+
/** The agent profile it runs (`AgentProfile.id`): the agent grouping and filter read it. */
|
|
40
|
+
agentId?: string;
|
|
41
|
+
/**
|
|
42
|
+
* What extensions computed for it, keyed `<extensionId>.<key>` (a query reads one as
|
|
43
|
+
* `facet.<extensionId>.<key>`). Absent: none, or a host that sends none.
|
|
44
|
+
*/
|
|
45
|
+
facets?: Readonly<Record<string, unknown>>;
|
|
34
46
|
}
|
|
35
47
|
/** Which sessions the list reads: the archive axis is the one the host filters. */
|
|
36
48
|
type SessionArchiveFilter = 'active' | 'archived' | 'all';
|
|
37
49
|
/** Only sessions touched within the last day, 3, 7 or 30 days. */
|
|
38
50
|
type SessionActivityFilter = 'all' | '1d' | '3d' | '7d' | '30d';
|
|
39
|
-
/** How the sidebar groups its rows: the session list's groupings
|
|
40
|
-
type SidebarGroupBy = 'none' | 'date' | 'state' | 'project' | 'host';
|
|
51
|
+
/** How the sidebar groups its rows: the session list's groupings, one section per host, or one group per agent. */
|
|
52
|
+
type SidebarGroupBy = 'none' | 'date' | 'state' | 'project' | 'host' | 'agent';
|
|
53
|
+
/**
|
|
54
|
+
* In {@link SidebarExtensionView}: the view's own axis (`groupBy`, `sortBy`) in a space that has a
|
|
55
|
+
* grouping or sort of its own (an extension space, a saved view), where that one applies by default.
|
|
56
|
+
*/
|
|
57
|
+
declare const VIEW_CHOICE = "@view";
|
|
58
|
+
/**
|
|
59
|
+
* The user's layer over what extensions contribute to the filter menu, kept per space with the rest
|
|
60
|
+
* of the view. Ids are the published ones (`<extension>/<id>`); an id no extension offers now is ignored.
|
|
61
|
+
*/
|
|
62
|
+
interface SidebarExtensionView {
|
|
63
|
+
/** Each contributed filter's value: `true` for an active toggle, an option id (select), option ids (multi). */
|
|
64
|
+
filters: Readonly<Record<string, boolean | string | readonly string[]>>;
|
|
65
|
+
/** A contributed sort, or {@link VIEW_CHOICE}. Absent: the space's sort when it has one, else `sortBy`. */
|
|
66
|
+
sort?: string;
|
|
67
|
+
/** A contributed grouping, or {@link VIEW_CHOICE}. Absent: the space's grouping when it has one, else `groupBy`. */
|
|
68
|
+
group?: string;
|
|
69
|
+
}
|
|
41
70
|
/** How the sidebar orders sessions inside a group. */
|
|
42
71
|
type SidebarSortBy = 'recency' | 'createdTime' | 'alphabetical';
|
|
43
|
-
/** The
|
|
72
|
+
/** The filter axes, kept per space. */
|
|
44
73
|
interface SidebarView {
|
|
45
74
|
/** Active, archived or every session. */
|
|
46
75
|
archive: SessionArchiveFilter;
|
|
@@ -52,6 +81,10 @@ interface SidebarView {
|
|
|
52
81
|
groupBy: SidebarGroupBy;
|
|
53
82
|
/** How the rows sort inside a group. */
|
|
54
83
|
sortBy: SidebarSortBy;
|
|
84
|
+
/** Only this agent's sessions (`AgentProfile.id`), or null for every agent. */
|
|
85
|
+
agent?: string | null;
|
|
86
|
+
/** What the user picked of the extensions' filters, sorts and groupings. Absent: nothing. */
|
|
87
|
+
extension?: SidebarExtensionView;
|
|
55
88
|
}
|
|
56
89
|
//#endregion
|
|
57
|
-
export { SessionActivityFilter, SessionArchiveFilter, SidebarGroupBy, SidebarListSession, SidebarSortBy, SidebarView };
|
|
90
|
+
export { SessionActivityFilter, SessionArchiveFilter, SidebarExtensionView, SidebarGroupBy, SidebarListSession, SidebarSortBy, SidebarView, VIEW_CHOICE };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/chat/headless/sidebar/types.ts
|
|
2
|
+
/**
|
|
3
|
+
* In {@link SidebarExtensionView}: the view's own axis (`groupBy`, `sortBy`) in a space that has a
|
|
4
|
+
* grouping or sort of its own (an extension space, a saved view), where that one applies by default.
|
|
5
|
+
*/
|
|
6
|
+
const VIEW_CHOICE = "@view";
|
|
7
|
+
//#endregion
|
|
8
|
+
export { VIEW_CHOICE };
|
|
@@ -28,6 +28,26 @@ interface SidebarViewsHost {
|
|
|
28
28
|
* @param raw - The stored value.
|
|
29
29
|
*/
|
|
30
30
|
declare function parseSidebarView(raw: unknown): SidebarView;
|
|
31
|
+
/** Where the switcher's own order and hidden spaces persist. */
|
|
32
|
+
declare const SIDEBAR_SWITCHER_KEY = "zg:sidebar-switcher:v1";
|
|
33
|
+
/**
|
|
34
|
+
* The user's arrangement of the space switcher, over the spaces' own order: extension spaces
|
|
35
|
+
* included, which Settings › Spaces doesn't list.
|
|
36
|
+
*/
|
|
37
|
+
interface SpaceSwitcherPrefs {
|
|
38
|
+
/** Space ids in the order the user put them; a space not named keeps its place after them. */
|
|
39
|
+
order: readonly string[];
|
|
40
|
+
/** Space ids the switcher leaves out (their sessions stay where they are). */
|
|
41
|
+
hidden: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
/** No arrangement yet: the spaces' own order, nothing hidden. */
|
|
44
|
+
declare const DEFAULT_SWITCHER_PREFS: SpaceSwitcherPrefs;
|
|
45
|
+
/**
|
|
46
|
+
* Stored switcher prefs, checked; anything malformed reads as none.
|
|
47
|
+
*
|
|
48
|
+
* @param raw - The stored value.
|
|
49
|
+
*/
|
|
50
|
+
declare function parseSwitcherPrefs(raw: unknown): SpaceSwitcherPrefs;
|
|
31
51
|
/** Views per space id. */
|
|
32
52
|
type SidebarViewMap = Record<string, SidebarView>;
|
|
33
53
|
/** The conversation last open per space id. */
|
|
@@ -60,6 +80,10 @@ interface SidebarViews {
|
|
|
60
80
|
forgetSession(sessionId: string, exceptSpaceId?: string): void;
|
|
61
81
|
/** Read the host's copies once (no-op without a host). Call after creation. */
|
|
62
82
|
sync(): void;
|
|
83
|
+
/** The switcher's order and hidden spaces, on this device. */
|
|
84
|
+
switcher: Readable<SpaceSwitcherPrefs>;
|
|
85
|
+
/** Replaces the switcher's prefs; persisted at once. */
|
|
86
|
+
setSwitcher(prefs: SpaceSwitcherPrefs): void;
|
|
63
87
|
}
|
|
64
88
|
/** Options of {@link createSidebarViews}. */
|
|
65
89
|
interface SidebarViewsOptions {
|
|
@@ -79,4 +103,4 @@ interface SidebarViewsOptions {
|
|
|
79
103
|
*/
|
|
80
104
|
declare function createSidebarViews(options?: SidebarViewsOptions): SidebarViews;
|
|
81
105
|
//#endregion
|
|
82
|
-
export { DEFAULT_SIDEBAR_VIEW, SIDEBAR_SPACE_KEY, SIDEBAR_VIEW_KEY, SidebarLastSessions, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, createSidebarViews, parseSidebarView, readSidebarViews };
|
|
106
|
+
export { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SidebarLastSessions, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, SpaceSwitcherPrefs, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews };
|
|
@@ -42,13 +42,34 @@ const parseGroupBy = oneOf([
|
|
|
42
42
|
"date",
|
|
43
43
|
"state",
|
|
44
44
|
"project",
|
|
45
|
-
"host"
|
|
45
|
+
"host",
|
|
46
|
+
"agent"
|
|
46
47
|
]);
|
|
47
48
|
const parseSortBy = oneOf([
|
|
48
49
|
"recency",
|
|
49
50
|
"createdTime",
|
|
50
51
|
"alphabetical"
|
|
51
52
|
]);
|
|
53
|
+
function parseExtensionView(raw) {
|
|
54
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return void 0;
|
|
55
|
+
const o = raw;
|
|
56
|
+
const filters = {};
|
|
57
|
+
if (o.filters && typeof o.filters === "object" && !Array.isArray(o.filters)) {
|
|
58
|
+
for (const [id, value] of Object.entries(o.filters)) if (value === true || typeof value === "string" && value.length > 0) filters[id] = value;
|
|
59
|
+
else if (Array.isArray(value)) {
|
|
60
|
+
const ids = value.filter((v) => typeof v === "string" && v.length > 0);
|
|
61
|
+
if (ids.length > 0) filters[id] = ids;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const sort = typeof o.sort === "string" && o.sort.length > 0 ? o.sort : void 0;
|
|
65
|
+
const group = typeof o.group === "string" && o.group.length > 0 ? o.group : void 0;
|
|
66
|
+
if (Object.keys(filters).length === 0 && !sort && !group) return void 0;
|
|
67
|
+
return {
|
|
68
|
+
filters,
|
|
69
|
+
...sort ? { sort } : {},
|
|
70
|
+
...group ? { group } : {}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
52
73
|
/**
|
|
53
74
|
* A stored view, every axis checked; what is missing or unknown takes the default.
|
|
54
75
|
*
|
|
@@ -58,12 +79,37 @@ function parseSidebarView(raw) {
|
|
|
58
79
|
const o = raw && typeof raw === "object" ? raw : {};
|
|
59
80
|
const str = (v) => typeof v === "string" ? v : "";
|
|
60
81
|
const d = DEFAULT_SIDEBAR_VIEW;
|
|
82
|
+
const agent = typeof o.agent === "string" && o.agent.length > 0 ? o.agent : null;
|
|
83
|
+
const extension = parseExtensionView(o.extension);
|
|
61
84
|
return {
|
|
62
85
|
archive: parseArchive(str(o.archive)) ?? d.archive,
|
|
63
86
|
project: typeof o.project === "string" && o.project.length > 0 ? o.project : null,
|
|
64
87
|
activity: parseActivity(str(o.activity)) ?? d.activity,
|
|
65
88
|
groupBy: parseGroupBy(str(o.groupBy)) ?? d.groupBy,
|
|
66
|
-
sortBy: parseSortBy(str(o.sortBy)) ?? d.sortBy
|
|
89
|
+
sortBy: parseSortBy(str(o.sortBy)) ?? d.sortBy,
|
|
90
|
+
...agent ? { agent } : {},
|
|
91
|
+
...extension ? { extension } : {}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Where the switcher's own order and hidden spaces persist. */
|
|
95
|
+
const SIDEBAR_SWITCHER_KEY = "zg:sidebar-switcher:v1";
|
|
96
|
+
/** No arrangement yet: the spaces' own order, nothing hidden. */
|
|
97
|
+
const DEFAULT_SWITCHER_PREFS = {
|
|
98
|
+
order: [],
|
|
99
|
+
hidden: []
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Stored switcher prefs, checked; anything malformed reads as none.
|
|
103
|
+
*
|
|
104
|
+
* @param raw - The stored value.
|
|
105
|
+
*/
|
|
106
|
+
function parseSwitcherPrefs(raw) {
|
|
107
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return DEFAULT_SWITCHER_PREFS;
|
|
108
|
+
const o = raw;
|
|
109
|
+
const ids = (v) => Array.isArray(v) ? [...new Set(v.filter((x) => typeof x === "string" && x.length > 0))] : [];
|
|
110
|
+
return {
|
|
111
|
+
order: ids(o.order),
|
|
112
|
+
hidden: ids(o.hidden)
|
|
67
113
|
};
|
|
68
114
|
}
|
|
69
115
|
function viewsFrom(stored) {
|
|
@@ -134,6 +180,7 @@ function createSidebarViews(options = {}) {
|
|
|
134
180
|
const reopened = /* @__PURE__ */ new Set();
|
|
135
181
|
let switched = false;
|
|
136
182
|
let synced = false;
|
|
183
|
+
const switcher = writable(parseSwitcherPrefs(parseJson(read(storage, SIDEBAR_SWITCHER_KEY))));
|
|
137
184
|
const recordOf = (spaceId, view = views.get()[spaceId] ?? DEFAULT_SIDEBAR_VIEW) => {
|
|
138
185
|
const session = lastSessions[spaceId];
|
|
139
186
|
return session ? {
|
|
@@ -184,6 +231,12 @@ function createSidebarViews(options = {}) {
|
|
|
184
231
|
write(storage, SIDEBAR_SPACE_KEY, spaceId);
|
|
185
232
|
saveSpace(spaceId);
|
|
186
233
|
},
|
|
234
|
+
switcher,
|
|
235
|
+
setSwitcher(prefs) {
|
|
236
|
+
const next = parseSwitcherPrefs(prefs);
|
|
237
|
+
switcher.set(next);
|
|
238
|
+
write(storage, SIDEBAR_SWITCHER_KEY, JSON.stringify(next));
|
|
239
|
+
},
|
|
187
240
|
lastSessionOf: (spaceId) => lastSessions[spaceId] ?? null,
|
|
188
241
|
rememberSession(spaceId, sessionId) {
|
|
189
242
|
if (lastSessions[spaceId] === sessionId) return;
|
|
@@ -240,4 +293,4 @@ function createSidebarViews(options = {}) {
|
|
|
240
293
|
};
|
|
241
294
|
}
|
|
242
295
|
//#endregion
|
|
243
|
-
export { DEFAULT_SIDEBAR_VIEW, SIDEBAR_SPACE_KEY, SIDEBAR_VIEW_KEY, createSidebarViews, parseSidebarView, readSidebarViews };
|
|
296
|
+
export { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { appendMarkdownDelta, appendThinkingLines, finalizeStreamingMarkdown, mergeTargetIndex, ownerOf } from "zidane/chat/pure";
|
|
1
|
+
import { appendMarkdownDelta, appendThinkingLines, finalizeStreamingMarkdown, mergeTargetIndex, ownerOf, upsertToolProgress } from "zidane/chat/pure";
|
|
2
2
|
//#region src/chat/headless/streams/live-events.ts
|
|
3
3
|
const rows = (events) => events;
|
|
4
4
|
const timed = (events) => events;
|
|
@@ -48,6 +48,7 @@ function closeThinkingSegment(events, owner, now = Date.now()) {
|
|
|
48
48
|
* @param markdown - How streamed markdown merges (`segmentChars`: where a long message splits). The reducer's default when omitted.
|
|
49
49
|
*/
|
|
50
50
|
function applyLiveEvent(events, event, now = Date.now(), markdown) {
|
|
51
|
+
if (event.kind === "tool-progress") return upsertToolProgress(events, event);
|
|
51
52
|
const owner = ownerOf(event);
|
|
52
53
|
if (event.kind === "thinking") return timed(appendThinkingLines(rows(events), event.text, owner, event.depth, event.turnId, { onLaneOpen: (row) => ({
|
|
53
54
|
...row,
|
|
@@ -124,14 +124,20 @@ function createSessionStreams(options = {}) {
|
|
|
124
124
|
},
|
|
125
125
|
drop(sessionId) {
|
|
126
126
|
buckets.delete(sessionId);
|
|
127
|
+
transcripts.delete(sessionId);
|
|
127
128
|
store.drop(sessionId);
|
|
128
129
|
},
|
|
129
130
|
dropAll() {
|
|
130
131
|
buckets.clear();
|
|
132
|
+
transcripts.clear();
|
|
131
133
|
store.dropAll();
|
|
132
134
|
},
|
|
133
135
|
evictExcept(keep) {
|
|
134
136
|
for (const sessionId of [...buckets.keys()]) if (!keep.has(sessionId) && !store.getRunningSnapshot(sessionId)) buckets.delete(sessionId);
|
|
137
|
+
for (const sessionId of [...transcripts.keys()]) {
|
|
138
|
+
if (keep.has(sessionId) || store.getRunningSnapshot(sessionId) || store.getPageSnapshot(sessionId).loadingEarlier) continue;
|
|
139
|
+
transcripts.delete(sessionId);
|
|
140
|
+
}
|
|
135
141
|
store.evictExcept(keep);
|
|
136
142
|
},
|
|
137
143
|
confirmIdle(sessionId) {
|
|
@@ -29,6 +29,26 @@ declare function summarizeToolBatch(tools: ReadonlyArray<Extract<Row, {
|
|
|
29
29
|
declare const TOOL_GROUP_BOUNDARIES: ReadonlySet<Row['kind']>;
|
|
30
30
|
declare const FOLD_CACHE: WeakMap<object, Row>;
|
|
31
31
|
declare function sameMembers(a: readonly Row[], b: readonly Row[]): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* The id an aggregate row (a batch, an exchange fold, a message group) was
|
|
34
|
+
* first given, remembered by each of its members. A page of older history
|
|
35
|
+
* landing in front of the window extends the first aggregate backwards (its
|
|
36
|
+
* prompt, its earlier calls arrive): an id read off its new first member
|
|
37
|
+
* changed its React key, and the row remounted under the reader, blank for a
|
|
38
|
+
* frame. One hold per kind of aggregate: a prompt bounds both a fold and a
|
|
39
|
+
* message group.
|
|
40
|
+
*/
|
|
41
|
+
declare class IdHold {
|
|
42
|
+
private readonly ids;
|
|
43
|
+
/**
|
|
44
|
+
* The id one of `members` was given before, else `fresh`; never one `used` already holds (ids must stay unique in a pass).
|
|
45
|
+
*
|
|
46
|
+
* @param members - The aggregate's member rows.
|
|
47
|
+
* @param fresh - The id read off the aggregate as it is now.
|
|
48
|
+
* @param used - The ids this pass has given so far; the result is added.
|
|
49
|
+
*/
|
|
50
|
+
take(members: readonly object[], fresh: string, used: Set<string>): string;
|
|
51
|
+
}
|
|
32
52
|
/**
|
|
33
53
|
* Group consecutive `tool` rows (≥2) into a single `tool-batch` row so
|
|
34
54
|
* the renderer can paint one Claude-Code-style collapsible header
|
|
@@ -74,4 +94,4 @@ declare function batchToolRuns(rows: readonly Row[], groupToolCalls?: boolean):
|
|
|
74
94
|
*/
|
|
75
95
|
declare function batchThinkingRuns(rows: readonly Row[]): Row[];
|
|
76
96
|
//#endregion
|
|
77
|
-
export { FOLD_CACHE, TOOL_GROUP_BOUNDARIES, batchThinkingRuns, batchToolRuns, clusterByOwner, sameMembers, summarizeToolBatch };
|
|
97
|
+
export { FOLD_CACHE, IdHold, TOOL_GROUP_BOUNDARIES, batchThinkingRuns, batchToolRuns, clusterByOwner, sameMembers, summarizeToolBatch };
|
|
@@ -118,10 +118,52 @@ function sameMembers(a, b) {
|
|
|
118
118
|
for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
|
|
119
119
|
return true;
|
|
120
120
|
}
|
|
121
|
-
|
|
121
|
+
/**
|
|
122
|
+
* The id an aggregate row (a batch, an exchange fold, a message group) was
|
|
123
|
+
* first given, remembered by each of its members. A page of older history
|
|
124
|
+
* landing in front of the window extends the first aggregate backwards (its
|
|
125
|
+
* prompt, its earlier calls arrive): an id read off its new first member
|
|
126
|
+
* changed its React key, and the row remounted under the reader, blank for a
|
|
127
|
+
* frame. One hold per kind of aggregate: a prompt bounds both a fold and a
|
|
128
|
+
* message group.
|
|
129
|
+
*/
|
|
130
|
+
var IdHold = class {
|
|
131
|
+
ids = /* @__PURE__ */ new WeakMap();
|
|
132
|
+
/**
|
|
133
|
+
* The id one of `members` was given before, else `fresh`; never one `used` already holds (ids must stay unique in a pass).
|
|
134
|
+
*
|
|
135
|
+
* @param members - The aggregate's member rows.
|
|
136
|
+
* @param fresh - The id read off the aggregate as it is now.
|
|
137
|
+
* @param used - The ids this pass has given so far; the result is added.
|
|
138
|
+
*/
|
|
139
|
+
take(members, fresh, used) {
|
|
140
|
+
let id;
|
|
141
|
+
for (const member of members) {
|
|
142
|
+
const held = this.ids.get(member);
|
|
143
|
+
if (held !== void 0 && !used.has(held)) {
|
|
144
|
+
id = held;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (id === void 0) {
|
|
149
|
+
id = fresh;
|
|
150
|
+
for (let n = 2; used.has(id); n++) id = `${fresh}~${n}`;
|
|
151
|
+
}
|
|
152
|
+
for (const member of members) this.ids.set(member, id);
|
|
153
|
+
used.add(id);
|
|
154
|
+
return id;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const TOOL_BATCH_IDS = new IdHold();
|
|
158
|
+
const TOOL_GROUP_IDS = new IdHold();
|
|
159
|
+
const THINKING_BATCH_IDS = new IdHold();
|
|
160
|
+
function stableBatch(cache, hold, used, members, membersOf, fresh, build) {
|
|
122
161
|
const hit = cache.get(members[0]);
|
|
123
|
-
if (hit && sameMembers(membersOf(hit), members)
|
|
124
|
-
|
|
162
|
+
if (hit && sameMembers(membersOf(hit), members) && !used.has(hit.id)) {
|
|
163
|
+
used.add(hit.id);
|
|
164
|
+
return hit;
|
|
165
|
+
}
|
|
166
|
+
const next = build(hold.take(members, fresh, used));
|
|
125
167
|
cache.set(members[0], next);
|
|
126
168
|
return next;
|
|
127
169
|
}
|
|
@@ -153,15 +195,16 @@ function stableBatch(cache, members, membersOf, build) {
|
|
|
153
195
|
*/
|
|
154
196
|
function liftExchangeToolGroups(rows) {
|
|
155
197
|
const out = [...rows];
|
|
198
|
+
const used = /* @__PURE__ */ new Set();
|
|
156
199
|
let exchange = [];
|
|
157
200
|
const flush = () => {
|
|
158
201
|
if (exchange.length >= 2) {
|
|
159
202
|
const tools = exchange.map((i) => rows[i]);
|
|
160
203
|
const first = tools[0];
|
|
161
|
-
out[exchange[0]] = stableBatch(TOOL_GROUP_CACHE, tools, (row) => row.tools, () => ({
|
|
204
|
+
out[exchange[0]] = stableBatch(TOOL_GROUP_CACHE, TOOL_GROUP_IDS, used, tools, (row) => row.tools, `tg-${first.id}`, (id) => ({
|
|
162
205
|
...first.turnId !== void 0 ? { turnId: first.turnId } : {},
|
|
163
206
|
kind: "tool-batch",
|
|
164
|
-
id
|
|
207
|
+
id,
|
|
165
208
|
summary: summarizeToolBatch(tools),
|
|
166
209
|
tools
|
|
167
210
|
}));
|
|
@@ -206,19 +249,20 @@ function liftExchangeToolGroups(rows) {
|
|
|
206
249
|
function batchToolRuns(rows, groupToolCalls = false) {
|
|
207
250
|
const pre = groupToolCalls ? liftExchangeToolGroups(rows) : rows;
|
|
208
251
|
const out = [];
|
|
252
|
+
const used = /* @__PURE__ */ new Set();
|
|
209
253
|
let run = [];
|
|
210
254
|
const flush = () => {
|
|
211
255
|
if (run.length === 0) return;
|
|
212
256
|
if (run.length === 1) out.push(run[0]);
|
|
213
257
|
else {
|
|
214
258
|
const first = run[0];
|
|
215
|
-
const
|
|
259
|
+
const fresh = `tb-${first.id}`;
|
|
216
260
|
const owned = {};
|
|
217
261
|
if (first.childId !== void 0) owned.childId = first.childId;
|
|
218
262
|
if (first.depth !== void 0) owned.depth = first.depth;
|
|
219
263
|
if (first.turnId !== void 0) owned.turnId = first.turnId;
|
|
220
264
|
const tools = run;
|
|
221
|
-
out.push(stableBatch(TOOL_BATCH_CACHE, tools, (row) => row.tools, () => ({
|
|
265
|
+
out.push(stableBatch(TOOL_BATCH_CACHE, TOOL_BATCH_IDS, used, tools, (row) => row.tools, fresh, (id) => ({
|
|
222
266
|
...owned,
|
|
223
267
|
kind: "tool-batch",
|
|
224
268
|
id,
|
|
@@ -272,6 +316,7 @@ const THINKING_CHAIN_TRANSPARENT = /* @__PURE__ */ new Set(["tool", "tool-batch"
|
|
|
272
316
|
*/
|
|
273
317
|
function batchThinkingRuns(rows) {
|
|
274
318
|
const out = [];
|
|
319
|
+
const used = /* @__PURE__ */ new Set();
|
|
275
320
|
let chain = [];
|
|
276
321
|
/** Rows between chained thoughts, re-emitted after the group. */
|
|
277
322
|
let deferred = [];
|
|
@@ -284,10 +329,10 @@ function batchThinkingRuns(rows) {
|
|
|
284
329
|
if (first.turnId !== void 0) owned.turnId = first.turnId;
|
|
285
330
|
const totalMs = chain.reduce((sum, t) => sum + (t.thinkingMs ?? 0), 0);
|
|
286
331
|
const thoughts = chain;
|
|
287
|
-
out.push(stableBatch(THINKING_BATCH_CACHE, thoughts, (row) => row.thoughts, () => ({
|
|
332
|
+
out.push(stableBatch(THINKING_BATCH_CACHE, THINKING_BATCH_IDS, used, thoughts, (row) => row.thoughts, `kb-${first.id}`, (id) => ({
|
|
288
333
|
...owned,
|
|
289
334
|
kind: "thinking-batch",
|
|
290
|
-
id
|
|
335
|
+
id,
|
|
291
336
|
thoughts,
|
|
292
337
|
...totalMs > 0 ? { totalMs } : {}
|
|
293
338
|
})));
|
|
@@ -313,4 +358,4 @@ function batchThinkingRuns(rows) {
|
|
|
313
358
|
return out;
|
|
314
359
|
}
|
|
315
360
|
//#endregion
|
|
316
|
-
export { FOLD_CACHE, TOOL_GROUP_BOUNDARIES, batchThinkingRuns, batchToolRuns, clusterByOwner, sameMembers, summarizeToolBatch };
|
|
361
|
+
export { FOLD_CACHE, IdHold, TOOL_GROUP_BOUNDARIES, batchThinkingRuns, batchToolRuns, clusterByOwner, sameMembers, summarizeToolBatch };
|