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,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The host of a whole app built on the kit: one optional host per area. An app
|
|
3
|
-
* builds it once (over IPC, over zidane-server, in memory) and hands it to
|
|
4
|
-
* `AppHostProvider`, which provides each area's host to its components.
|
|
5
|
-
*
|
|
6
|
-
* Each new area adds its host here, optional like the others (approvals,
|
|
7
|
-
* workspace, files…): an app that leaves an area's host out doesn't show that
|
|
8
|
-
* area.
|
|
9
|
-
*/
|
|
10
|
-
import type { AppearanceHost } from '../../appearance/headless/host';
|
|
11
|
-
import type { ApprovalsHost } from '../../approvals/headless/host';
|
|
12
|
-
import type { ComposerHost } from '../../chat/headless/composer/host';
|
|
13
|
-
import type { ChatHost } from '../../chat/headless/host';
|
|
14
|
-
import type { SidebarHost } from '../../chat/headless/sidebar/host';
|
|
15
|
-
import type { FilesHost } from '../../files/headless/host';
|
|
16
|
-
import type { GitHost } from '../../git/headless/host';
|
|
17
|
-
import type { KeybindingsHost } from '../../keybindings/headless/host';
|
|
18
|
-
import type { MachinesHost } from '../../machines/headless/host';
|
|
19
|
-
import type { OnboardingHost } from '../../onboarding/headless/host';
|
|
20
|
-
import type { PaletteHost } from '../../palette/headless/host';
|
|
21
|
-
import type { SessionHost } from '../../session/headless/host';
|
|
22
|
-
import type { SettingsHost } from '../../settings/headless/host';
|
|
23
|
-
import type { TerminalHost } from '../../terminal/headless/host';
|
|
24
|
-
import type { WorkspaceHost } from '../../workspace/headless/host';
|
|
25
|
-
|
|
26
|
-
/** Every area's host an app offers. An area whose host is absent is not shown. */
|
|
27
|
-
export interface AppHost {
|
|
28
|
-
/** Where the appearance preferences live, the extra themes, the pre-paint snapshot and the window effects. Absent: the app applies no appearance (the stylesheet's defaults). */
|
|
29
|
-
appearance?: AppearanceHost;
|
|
30
|
-
/** Tool approvals (safe mode): the pending approvals, the decisions and the safelist. Absent: no approval UI. */
|
|
31
|
-
approvals?: ApprovalsHost;
|
|
32
|
-
/** The chat area: sessions, transcripts, sending and interactions. Absent: no chat. */
|
|
33
|
-
chat?: ChatHost;
|
|
34
|
-
/** The rich composer's host: shared drafts, completions, ghost text and next-prompt suggestions. Absent: those stay off (`zidane-ui/chat/rich-composer`). */
|
|
35
|
-
composer?: ComposerHost;
|
|
36
|
-
/** The Files and Diffs tabs' host: listing, reading, writing and searching files, git status, the working-tree diff and the editor preferences. Absent: no Files or Diffs tab. */
|
|
37
|
-
files?: FilesHost;
|
|
38
|
-
/** The git area's host: branches and pull requests, worktrees, environment kinds and remote folders. Absent: no branch menu, no remote folder picker. */
|
|
39
|
-
git?: GitHost;
|
|
40
|
-
/** Where the user's keybinding overrides live. Absent: the default bindings. */
|
|
41
|
-
keybindings?: KeybindingsHost;
|
|
42
|
-
/** Which agent hosts the app talks to and how they are: servers, machines, self-update, tokens, the local daemon. Absent: no host status, banners or server settings. */
|
|
43
|
-
machines?: MachinesHost;
|
|
44
|
-
/** The setup wizard's host: detection, settings, sign-in and the commit. Absent: no onboarding. */
|
|
45
|
-
onboarding?: OnboardingHost;
|
|
46
|
-
/** The command palette's host: commands, files, extension items, settings and recents. Absent: the palette lists only the app's own sources. */
|
|
47
|
-
palette?: PaletteHost;
|
|
48
|
-
/** The session panels' host: todos, the message queue and artifacts. Absent: no session panels. */
|
|
49
|
-
session?: SessionHost;
|
|
50
|
-
/** The zidane settings document: read, written through when this connection may. Absent: no settings rows. */
|
|
51
|
-
settings?: SettingsHost;
|
|
52
|
-
/** The session sidebar's platform members: Finder, standalone windows, environment commands. Absent: those menu rows hide. */
|
|
53
|
-
sidebar?: SidebarHost;
|
|
54
|
-
/** The terminals: listing, opening and viewing them per scope. Absent: no terminal drawer or tab. */
|
|
55
|
-
terminal?: TerminalHost;
|
|
56
|
-
/** Where the side panel's layouts live, and the extension panels. Absent: layouts last as long as the page, no extension panels. */
|
|
57
|
-
workspace?: WorkspaceHost;
|
|
58
|
-
}
|
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reads that stay current: one store of entries keyed by the serialized key,
|
|
3
|
-
* shared by every view and module asking for the same data. A read is
|
|
4
|
-
* described by a {@link ResourceSpec} (key, fetcher, options), declared once
|
|
5
|
-
* per kind of data. React-free; `useResource` (`zidane-ui/app`) reads it in
|
|
6
|
-
* a component.
|
|
7
|
-
*
|
|
8
|
-
* - `store.subscribe(spec, onChange)` → unsubscribe, for module code:
|
|
9
|
-
* keeps the resource live like a mounted hook and calls `onChange` with the
|
|
10
|
-
* current snapshot right away, then on every change.
|
|
11
|
-
* - `store.fetch(spec)` → a promise of the data, for a read on demand (a
|
|
12
|
-
* fresh value is reused, an in-flight one joined); rejects on error.
|
|
13
|
-
* - `store.subscribeInvalidation(options, listener)` → unsubscribe: the
|
|
14
|
-
* matching invalidation events themselves, for views that refresh their own way.
|
|
15
|
-
*
|
|
16
|
-
* Behavior: one request per key at a time (concurrent readers share it); the
|
|
17
|
-
* last data stays while a refetch runs (`stale` says it is out of date) and
|
|
18
|
-
* when a refetch fails; errors land in `error`, never as an empty value. An
|
|
19
|
-
* invalidation event (from the `invalidation` source) whose topic is in
|
|
20
|
-
* `options.topics` and whose `cwd` / `hostId` / `sessionId` don't contradict
|
|
21
|
-
* `options.scope` marks the entry stale and refetches it when someone reads it
|
|
22
|
-
* (otherwise on the next read). Topics in `watchedTopics` (only emitted while
|
|
23
|
-
* watched) are watched for `scope.cwd` while the entry has readers.
|
|
24
|
-
* `revalidateOnFocus` refetches when the window regains focus. A new reader
|
|
25
|
-
* refetches data older than `ttl` (default 2 s). Entries without readers are
|
|
26
|
-
* dropped after a minute. Snapshots are immutable and only replaced when
|
|
27
|
-
* something changed, and `refresh` keeps its identity for the life of the
|
|
28
|
-
* entry, so a reader's result is safe in effect and memo deps. Reading never
|
|
29
|
-
* touches the store: entries are made by subscribing and fetching.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/** A resource's identity: a string, or values serialized as JSON. */
|
|
33
|
-
export type ResourceKey = string | readonly unknown[];
|
|
34
|
-
|
|
35
|
-
/** What a resource's data is about; an event naming another folder, server or session leaves it alone. */
|
|
36
|
-
export interface ResourceScope {
|
|
37
|
-
/** The folder (an event about a folder that holds it, or that it holds, concerns it). */
|
|
38
|
-
cwd?: string;
|
|
39
|
-
/** The host (this computer's or a server's id). */
|
|
40
|
-
hostId?: string;
|
|
41
|
-
/** The session. */
|
|
42
|
-
sessionId?: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** An invalidation event: a topic, and the scope it is about (absent fields: any). */
|
|
46
|
-
export interface ResourceEvent<Topic extends string = string> extends ResourceScope {
|
|
47
|
-
/** What changed. */
|
|
48
|
-
topic: Topic;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** How a resource stays current. */
|
|
52
|
-
export interface ResourceOptions<Topic extends string = string> {
|
|
53
|
-
/** Topics whose events stale this resource. */
|
|
54
|
-
topics?: readonly Topic[];
|
|
55
|
-
/** What the data is about. */
|
|
56
|
-
scope?: ResourceScope;
|
|
57
|
-
/** A new reader refetches data older than this (ms). */
|
|
58
|
-
ttl?: number;
|
|
59
|
-
/** Refetch (when old) as the window regains focus. */
|
|
60
|
-
revalidateOnFocus?: boolean;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/** One kind of data: the same key and fetcher wherever it is read. */
|
|
64
|
-
export interface ResourceSpec<T, Topic extends string = string> {
|
|
65
|
-
/** The resource's identity. */
|
|
66
|
-
key: ResourceKey;
|
|
67
|
-
/** Reads the data. */
|
|
68
|
-
fetcher: () => Promise<T>;
|
|
69
|
-
/** How it stays current; the first read of a key decides. */
|
|
70
|
-
options?: ResourceOptions<Topic>;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Where a resource is: `idle` (nothing asked), `loading` (the first fetch runs), then the last fetch's outcome. */
|
|
74
|
-
export type ResourceStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
75
|
-
|
|
76
|
-
/** A resource as read: immutable, replaced only when something changed. */
|
|
77
|
-
export interface ResourceSnapshot<T> {
|
|
78
|
-
/** The last data fetched. */
|
|
79
|
-
data: T | undefined;
|
|
80
|
-
/** The last fetch's error. */
|
|
81
|
-
error: unknown;
|
|
82
|
-
/** See {@link ResourceStatus}. */
|
|
83
|
-
status: ResourceStatus;
|
|
84
|
-
/** `data` is known out of date (invalidated, refetching). */
|
|
85
|
-
stale: boolean;
|
|
86
|
-
/** Refetch now; keeps its identity for the life of the entry. */
|
|
87
|
-
refresh: () => Promise<void>;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/** Where invalidation events come from (an app's IPC, a server's signals). */
|
|
91
|
-
export interface ResourceInvalidation<Topic extends string = string> {
|
|
92
|
-
/** Calls `listener` with each event; returns the unsubscribe. */
|
|
93
|
-
onInvalidate(listener: (event: ResourceEvent<Topic>) => void): () => void;
|
|
94
|
-
/** Start emitting a watched topic for a folder. */
|
|
95
|
-
watch?(topic: Topic, cwd: string): unknown;
|
|
96
|
-
/** Stop emitting it. */
|
|
97
|
-
unwatch?(topic: Topic, cwd: string): unknown;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/** Options of {@link createResourceStore}. */
|
|
101
|
-
export interface ResourceStoreOptions<Topic extends string = string> {
|
|
102
|
-
/**
|
|
103
|
-
* The event source, read when the store first needs it (and again after `reset`), so an app can
|
|
104
|
-
* install it after the store is made. Absent or `undefined`: no invalidation, only TTL and refresh.
|
|
105
|
-
*/
|
|
106
|
-
invalidation?: () => ResourceInvalidation<Topic> | undefined;
|
|
107
|
-
/** Topics only emitted while watched for a folder. */
|
|
108
|
-
watchedTopics?: readonly Topic[];
|
|
109
|
-
/** Calls `listener` when the window regains focus; returns the unsubscribe. Default: the window's `focus` event. */
|
|
110
|
-
onFocus?: (listener: () => void) => () => void;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/** A store of resources; see the top of this file. */
|
|
114
|
-
export interface ResourceStore<Topic extends string = string> {
|
|
115
|
-
/** The serialized form of a key: what {@link ResourceStore.peekKey} takes. */
|
|
116
|
-
keyOf(key: ResourceKey): string;
|
|
117
|
-
/** The snapshot a serialized key holds now (`loading` before anyone subscribed). */
|
|
118
|
-
peekKey(id: string): ResourceSnapshot<unknown>;
|
|
119
|
-
/** The snapshot `spec` holds now, without reading or subscribing. */
|
|
120
|
-
peek<T>(spec: ResourceSpec<T, Topic>): ResourceSnapshot<T>;
|
|
121
|
-
/** Keep `spec` live; `listener` hears each new snapshot (not the current one). Returns the unsubscribe. */
|
|
122
|
-
watch<T>(spec: ResourceSpec<T, Topic>, listener: () => void): () => void;
|
|
123
|
-
/** Keep `spec` live; `onChange` gets the current snapshot now and every new one. Returns the unsubscribe. */
|
|
124
|
-
subscribe<T>(spec: ResourceSpec<T, Topic>, onChange: (snapshot: ResourceSnapshot<T>) => void): () => void;
|
|
125
|
-
/** `listener` hears the events `options` matches (as a resource with them would), watched topics watched meanwhile. */
|
|
126
|
-
subscribeInvalidation(options: ResourceOptions<Topic>, listener: (event: ResourceEvent<Topic>) => void): () => void;
|
|
127
|
-
/** The data now: a fresh value is reused and an in-flight fetch joined. Rejects with the fetch's error. */
|
|
128
|
-
fetch<T>(spec: ResourceSpec<T, Topic>): Promise<T>;
|
|
129
|
-
/** Forget every entry and listener, and unhook the event source (tests). */
|
|
130
|
-
reset(): void;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const DEFAULT_TTL_MS = 2_000;
|
|
134
|
-
const GC_MS = 60_000;
|
|
135
|
-
|
|
136
|
-
/** What a null spec reads. */
|
|
137
|
-
export const IDLE_RESOURCE: ResourceSnapshot<never> = Object.freeze({
|
|
138
|
-
data: undefined,
|
|
139
|
-
error: undefined,
|
|
140
|
-
status: 'idle',
|
|
141
|
-
stale: false,
|
|
142
|
-
refresh: () => Promise.resolve(),
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
/** What a reader sees before its first subscribe makes the entry. */
|
|
146
|
-
const PENDING: ResourceSnapshot<never> = Object.freeze({ ...IDLE_RESOURCE, status: 'loading' });
|
|
147
|
-
|
|
148
|
-
function isAtOrUnder(path: string, dir: string): boolean {
|
|
149
|
-
const root = dir.replace(/\/+$/, '');
|
|
150
|
-
return path === root || path.startsWith(`${root}/`);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Whether `event` concerns a resource with `options`: its topic is listed, and absent fields on either side
|
|
155
|
-
* mean "any"; folders match when one holds the other (a repo root vs a subfolder).
|
|
156
|
-
*
|
|
157
|
-
* @param event - An invalidation event.
|
|
158
|
-
* @param options - A resource's options.
|
|
159
|
-
*/
|
|
160
|
-
export function resourceEventMatches<Topic extends string>(
|
|
161
|
-
event: ResourceEvent<Topic>,
|
|
162
|
-
options: ResourceOptions<Topic>,
|
|
163
|
-
): boolean {
|
|
164
|
-
if (!options.topics?.includes(event.topic)) return false;
|
|
165
|
-
const scope = options.scope ?? {};
|
|
166
|
-
if (event.cwd && scope.cwd && !(isAtOrUnder(event.cwd, scope.cwd) || isAtOrUnder(scope.cwd, event.cwd))) {
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
if (event.hostId && scope.hostId && event.hostId !== scope.hostId) return false;
|
|
170
|
-
if (event.sessionId && scope.sessionId && event.sessionId !== scope.sessionId) return false;
|
|
171
|
-
return true;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/** JSON data: equal when it serializes the same. */
|
|
175
|
-
function sameData(a: unknown, b: unknown): boolean {
|
|
176
|
-
if (Object.is(a, b)) return true;
|
|
177
|
-
try {
|
|
178
|
-
return JSON.stringify(a) === JSON.stringify(b);
|
|
179
|
-
} catch {
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function serializeKey(key: ResourceKey): string {
|
|
185
|
-
return typeof key === 'string' ? key : JSON.stringify(key);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
function windowFocus(listener: () => void): () => void {
|
|
189
|
-
if (typeof window === 'undefined') return () => undefined;
|
|
190
|
-
window.addEventListener('focus', listener);
|
|
191
|
-
return () => window.removeEventListener('focus', listener);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* A new resource store over an invalidation source.
|
|
196
|
-
*
|
|
197
|
-
* @param options - The event source, the watched topics and the focus signal.
|
|
198
|
-
*/
|
|
199
|
-
export function createResourceStore<Topic extends string = string>(
|
|
200
|
-
options: ResourceStoreOptions<Topic> = {},
|
|
201
|
-
): ResourceStore<Topic> {
|
|
202
|
-
type Options = ResourceOptions<Topic>;
|
|
203
|
-
type Snapshot = ResourceSnapshot<unknown>;
|
|
204
|
-
interface Entry {
|
|
205
|
-
key: string;
|
|
206
|
-
fetcher: () => Promise<unknown>;
|
|
207
|
-
/** The spec's, from the read that made the entry: one key names one kind of data. */
|
|
208
|
-
options: Options;
|
|
209
|
-
snapshot: Snapshot;
|
|
210
|
-
inflight: Promise<void> | null;
|
|
211
|
-
/** Invalidated while a fetch ran: its result may predate the change. */
|
|
212
|
-
again: boolean;
|
|
213
|
-
fetchedAt: number;
|
|
214
|
-
readers: Set<(snapshot: Snapshot) => void>;
|
|
215
|
-
watches: string[];
|
|
216
|
-
gc: ReturnType<typeof setTimeout> | null;
|
|
217
|
-
}
|
|
218
|
-
interface InvalidationListener {
|
|
219
|
-
options: Options;
|
|
220
|
-
listener: (event: ResourceEvent<Topic>) => void;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
const watched: ReadonlySet<Topic> = new Set(options.watchedTopics ?? []);
|
|
224
|
-
const onFocusSignal = options.onFocus ?? windowFocus;
|
|
225
|
-
const entries = new Map<string, Entry>();
|
|
226
|
-
const invalidationListeners = new Set<InvalidationListener>();
|
|
227
|
-
const watchCounts = new Map<string, number>();
|
|
228
|
-
let wired = false;
|
|
229
|
-
let unwire: (() => void) | null = null;
|
|
230
|
-
|
|
231
|
-
const source = () => options.invalidation?.();
|
|
232
|
-
|
|
233
|
-
function setSnapshot(entry: Entry, patch: Partial<Snapshot>): void {
|
|
234
|
-
const prev = entry.snapshot;
|
|
235
|
-
const changed = (Object.keys(patch) as (keyof Snapshot)[]).some((k) => !Object.is(prev[k], patch[k]));
|
|
236
|
-
if (!changed) return;
|
|
237
|
-
entry.snapshot = Object.freeze({ ...prev, ...patch });
|
|
238
|
-
for (const reader of [...entry.readers]) reader(entry.snapshot);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* `quiet`: a check only because the data aged (a new reader, window focus), not because something
|
|
243
|
-
* changed: readers hear nothing unless the answer differs (no `stale` flip, no re-render).
|
|
244
|
-
*/
|
|
245
|
-
function revalidate(entry: Entry, quiet = false): Promise<void> {
|
|
246
|
-
if (entry.inflight) {
|
|
247
|
-
if (!quiet) entry.again = true;
|
|
248
|
-
return entry.inflight;
|
|
249
|
-
}
|
|
250
|
-
entry.again = false;
|
|
251
|
-
if (!quiet) {
|
|
252
|
-
if (entry.snapshot.data !== undefined) setSnapshot(entry, { stale: true });
|
|
253
|
-
else if (entry.snapshot.status !== 'loading') setSnapshot(entry, { status: 'loading' });
|
|
254
|
-
}
|
|
255
|
-
let run: Promise<unknown>;
|
|
256
|
-
try {
|
|
257
|
-
run = Promise.resolve(entry.fetcher());
|
|
258
|
-
} catch (err) {
|
|
259
|
-
run = Promise.reject(err);
|
|
260
|
-
}
|
|
261
|
-
const done = run.then(
|
|
262
|
-
(data) => {
|
|
263
|
-
entry.fetchedAt = Date.now();
|
|
264
|
-
// The same answer keeps its identity, so readers' memoized work (a 300-model list) stays valid.
|
|
265
|
-
const same = entry.snapshot.data !== undefined && sameData(entry.snapshot.data, data);
|
|
266
|
-
setSnapshot(entry, { ...(same ? {} : { data }), error: undefined, status: 'success', stale: entry.again });
|
|
267
|
-
},
|
|
268
|
-
(error: unknown) => {
|
|
269
|
-
entry.fetchedAt = Date.now();
|
|
270
|
-
setSnapshot(entry, { error, status: 'error', stale: entry.again || entry.snapshot.data !== undefined });
|
|
271
|
-
},
|
|
272
|
-
);
|
|
273
|
-
entry.inflight = done.finally(() => {
|
|
274
|
-
entry.inflight = null;
|
|
275
|
-
if (entry.again && entries.get(entry.key) === entry && entry.readers.size > 0) void revalidate(entry);
|
|
276
|
-
});
|
|
277
|
-
return entry.inflight;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
function wire(): void {
|
|
281
|
-
if (wired) return;
|
|
282
|
-
wired = true;
|
|
283
|
-
const off = source()?.onInvalidate((event) => {
|
|
284
|
-
for (const { options: o, listener } of [...invalidationListeners]) {
|
|
285
|
-
if (resourceEventMatches(event, o)) listener(event);
|
|
286
|
-
}
|
|
287
|
-
for (const entry of entries.values()) {
|
|
288
|
-
if (!resourceEventMatches(event, entry.options)) continue;
|
|
289
|
-
if (entry.inflight) entry.again = true;
|
|
290
|
-
else if (entry.readers.size > 0) void revalidate(entry);
|
|
291
|
-
else setSnapshot(entry, { stale: true });
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
const offFocus = onFocusSignal(() => {
|
|
295
|
-
for (const entry of entries.values()) {
|
|
296
|
-
if (entry.readers.size > 0 && entry.options.revalidateOnFocus && isOld(entry)) void revalidate(entry, true);
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
unwire = () => {
|
|
300
|
-
off?.();
|
|
301
|
-
offFocus();
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function isOld(entry: Entry): boolean {
|
|
306
|
-
return entry.fetchedAt === 0 || Date.now() - entry.fetchedAt >= (entry.options.ttl ?? DEFAULT_TTL_MS);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
function scheduleGc(entry: Entry): void {
|
|
310
|
-
if (entry.gc) clearTimeout(entry.gc);
|
|
311
|
-
entry.gc = setTimeout(() => {
|
|
312
|
-
entry.gc = null;
|
|
313
|
-
if (entry.readers.size === 0 && !entry.inflight && entries.get(entry.key) === entry) entries.delete(entry.key);
|
|
314
|
-
}, GC_MS);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
function ensureEntry<T>(spec: ResourceSpec<T, Topic>): Entry {
|
|
318
|
-
const key = serializeKey(spec.key);
|
|
319
|
-
const existing = entries.get(key);
|
|
320
|
-
if (existing) return existing;
|
|
321
|
-
const entry: Entry = {
|
|
322
|
-
key,
|
|
323
|
-
fetcher: spec.fetcher,
|
|
324
|
-
options: spec.options ?? {},
|
|
325
|
-
snapshot: PENDING,
|
|
326
|
-
inflight: null,
|
|
327
|
-
again: false,
|
|
328
|
-
fetchedAt: 0,
|
|
329
|
-
readers: new Set(),
|
|
330
|
-
watches: [],
|
|
331
|
-
gc: null,
|
|
332
|
-
};
|
|
333
|
-
entry.snapshot = Object.freeze({ ...PENDING, refresh: () => revalidate(entry) });
|
|
334
|
-
entries.set(key, entry);
|
|
335
|
-
return entry;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
/** Starts the watchers `o` needs (counted per topic and folder); returns their ids for {@link stopWatches}. */
|
|
339
|
-
function startWatches(o: Options): string[] {
|
|
340
|
-
const cwd = o.scope?.cwd;
|
|
341
|
-
const api = source();
|
|
342
|
-
if (!cwd || !api) return [];
|
|
343
|
-
const ids: string[] = [];
|
|
344
|
-
for (const topic of o.topics ?? []) {
|
|
345
|
-
if (!watched.has(topic)) continue;
|
|
346
|
-
const id = `${topic}\0${cwd}`;
|
|
347
|
-
ids.push(id);
|
|
348
|
-
const count = watchCounts.get(id) ?? 0;
|
|
349
|
-
watchCounts.set(id, count + 1);
|
|
350
|
-
if (count === 0) void Promise.resolve(api.watch?.(topic, cwd)).catch(() => undefined);
|
|
351
|
-
}
|
|
352
|
-
return ids;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
function stopWatches(ids: readonly string[]): void {
|
|
356
|
-
const api = source();
|
|
357
|
-
for (const id of ids) {
|
|
358
|
-
const count = (watchCounts.get(id) ?? 1) - 1;
|
|
359
|
-
if (count > 0) {
|
|
360
|
-
watchCounts.set(id, count);
|
|
361
|
-
continue;
|
|
362
|
-
}
|
|
363
|
-
watchCounts.delete(id);
|
|
364
|
-
const [topic, cwd] = id.split('\0') as [Topic, string];
|
|
365
|
-
void Promise.resolve(api?.unwatch?.(topic, cwd)).catch(() => undefined);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
function attach(entry: Entry, reader: (snapshot: Snapshot) => void): () => void {
|
|
370
|
-
wire();
|
|
371
|
-
if (entry.gc) {
|
|
372
|
-
clearTimeout(entry.gc);
|
|
373
|
-
entry.gc = null;
|
|
374
|
-
}
|
|
375
|
-
if (entry.readers.size === 0) entry.watches = startWatches(entry.options);
|
|
376
|
-
entry.readers.add(reader);
|
|
377
|
-
if (!entry.inflight && (entry.snapshot.stale || isOld(entry))) void revalidate(entry, !entry.snapshot.stale);
|
|
378
|
-
return () => {
|
|
379
|
-
if (!entry.readers.delete(reader) || entry.readers.size > 0) return;
|
|
380
|
-
stopWatches(entry.watches);
|
|
381
|
-
entry.watches = [];
|
|
382
|
-
scheduleGc(entry);
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return {
|
|
387
|
-
keyOf: serializeKey,
|
|
388
|
-
peekKey: (id) => entries.get(id)?.snapshot ?? PENDING,
|
|
389
|
-
peek: <T>(spec: ResourceSpec<T, Topic>) =>
|
|
390
|
-
(entries.get(serializeKey(spec.key))?.snapshot ?? PENDING) as ResourceSnapshot<T>,
|
|
391
|
-
watch: (spec, listener) => attach(ensureEntry(spec), listener),
|
|
392
|
-
subscribe<T>(spec: ResourceSpec<T, Topic>, onChange: (snapshot: ResourceSnapshot<T>) => void) {
|
|
393
|
-
const entry = ensureEntry(spec);
|
|
394
|
-
const detach = attach(entry, onChange as (snapshot: Snapshot) => void);
|
|
395
|
-
onChange(entry.snapshot as ResourceSnapshot<T>);
|
|
396
|
-
return detach;
|
|
397
|
-
},
|
|
398
|
-
subscribeInvalidation(o, listener) {
|
|
399
|
-
wire();
|
|
400
|
-
const entry: InvalidationListener = { options: o, listener };
|
|
401
|
-
invalidationListeners.add(entry);
|
|
402
|
-
const watches = startWatches(o);
|
|
403
|
-
return () => {
|
|
404
|
-
if (!invalidationListeners.delete(entry)) return;
|
|
405
|
-
stopWatches(watches);
|
|
406
|
-
};
|
|
407
|
-
},
|
|
408
|
-
async fetch<T>(spec: ResourceSpec<T, Topic>): Promise<T> {
|
|
409
|
-
wire();
|
|
410
|
-
const entry = ensureEntry(spec);
|
|
411
|
-
if (entry.inflight) await entry.inflight;
|
|
412
|
-
if (entry.snapshot.stale || isOld(entry) || entry.snapshot.status === 'error') {
|
|
413
|
-
await revalidate(entry);
|
|
414
|
-
}
|
|
415
|
-
if (entry.readers.size === 0) scheduleGc(entry);
|
|
416
|
-
const snapshot = entry.snapshot;
|
|
417
|
-
if (snapshot.status === 'error') throw snapshot.error;
|
|
418
|
-
return snapshot.data as T;
|
|
419
|
-
},
|
|
420
|
-
reset() {
|
|
421
|
-
for (const entry of entries.values()) if (entry.gc) clearTimeout(entry.gc);
|
|
422
|
-
entries.clear();
|
|
423
|
-
invalidationListeners.clear();
|
|
424
|
-
watchCounts.clear();
|
|
425
|
-
unwire?.();
|
|
426
|
-
unwire = null;
|
|
427
|
-
wired = false;
|
|
428
|
-
},
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/**
|
|
433
|
-
* One resource of a store as a readable value (`get` + `subscribe`, the shape hosts hand to components):
|
|
434
|
-
* subscribing keeps it live like a mounted reader. Both methods keep their identity.
|
|
435
|
-
*
|
|
436
|
-
* @param store - The store holding it.
|
|
437
|
-
* @param spec - The resource.
|
|
438
|
-
*/
|
|
439
|
-
export function readableResource<T, Topic extends string = string>(
|
|
440
|
-
store: ResourceStore<Topic>,
|
|
441
|
-
spec: ResourceSpec<T, Topic>,
|
|
442
|
-
): { get(): ResourceSnapshot<T>; subscribe(listener: () => void): () => void } {
|
|
443
|
-
return { get: () => store.peek(spec), subscribe: (listener) => store.watch(spec, listener) };
|
|
444
|
-
}
|
package/src/app/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `zidane-ui/app`: the app area. `AppHostProvider` puts every area's host in
|
|
3
|
-
* context in one wrap, `useAppHost` reads it back. The `AppHost` type is
|
|
4
|
-
* `zidane-ui/app/headless`.
|
|
5
|
-
*/
|
|
6
|
-
export * from './AppHostProvider';
|
|
7
|
-
export * from './ModalProvider';
|
|
8
|
-
export * from './useConfirm';
|
|
9
|
-
export * from './useResource';
|
package/src/app/testing/index.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `zidane-ui/app/testing`: an `AppHost` that runs in memory
|
|
3
|
-
* (`createFixtureAppHost`), composed of each area's fixture host, for docs,
|
|
4
|
-
* demos and an app's own tests. Not for production hosts.
|
|
5
|
-
*/
|
|
6
|
-
import { createFixtureAppearanceHost, type FixtureAppearanceOptions } from '../../appearance/testing';
|
|
7
|
-
import { createFixtureApprovalsHost, type FixtureApprovalsOptions } from '../../approvals/testing';
|
|
8
|
-
import {
|
|
9
|
-
createFixtureComposerHost,
|
|
10
|
-
createFixtureHost,
|
|
11
|
-
createFixtureSidebarHost,
|
|
12
|
-
type ChatFixture,
|
|
13
|
-
type FixtureComposerHostOptions,
|
|
14
|
-
type FixtureHostOptions,
|
|
15
|
-
type FixtureSidebarHostOptions,
|
|
16
|
-
} from '../../chat/testing';
|
|
17
|
-
import { createFixtureFilesHost, type FixtureFilesHostOptions } from '../../files/testing';
|
|
18
|
-
import { createFixtureGitHost, type FixtureGitOptions } from '../../git/testing';
|
|
19
|
-
import { createFixtureKeybindingsHost, type FixtureKeybindingsOptions } from '../../keybindings/testing';
|
|
20
|
-
import { createFixtureMachinesHost, type FixtureMachinesOptions } from '../../machines/testing';
|
|
21
|
-
import { createFixtureOnboardingHost, type FixtureOnboardingOptions } from '../../onboarding/testing';
|
|
22
|
-
import { createFixturePaletteHost, type FixturePaletteOptions } from '../../palette/testing';
|
|
23
|
-
import { createFixtureSessionHost, type SessionFixture } from '../../session/testing';
|
|
24
|
-
import { createFixtureSettingsHost, type FixtureSettingsOptions } from '../../settings/testing';
|
|
25
|
-
import { createFixtureTerminalHost, type FixtureTerminalOptions } from '../../terminal/testing';
|
|
26
|
-
import { createFixtureWorkspaceHost, type FixtureWorkspaceOptions } from '../../workspace/testing';
|
|
27
|
-
import type { AppHost } from '../headless/app-host';
|
|
28
|
-
|
|
29
|
-
/** Options for {@link createFixtureAppHost}: each area's fixture, or `false` to leave the area out. */
|
|
30
|
-
export interface FixtureAppHostOptions {
|
|
31
|
-
/** The appearance fixture host's options. Default: none, the app applies no appearance. */
|
|
32
|
-
appearance?: FixtureAppearanceOptions | false;
|
|
33
|
-
/** The approvals fixture host's options: pending approvals and the safelist. Default: none pending. `false`: no approvals host. */
|
|
34
|
-
approvals?: FixtureApprovalsOptions | false;
|
|
35
|
-
/** The chat fixture's sessions, transcripts, models and interactions. Default: no sessions. `false`: no chat host. */
|
|
36
|
-
chat?: ChatFixture | false;
|
|
37
|
-
/** How the chat fixture host behaves: editable, scripted replies, streaming pace. */
|
|
38
|
-
chatOptions?: FixtureHostOptions;
|
|
39
|
-
/** The rich composer's fixture host: drafts, completions, ghost text. Default: none, no composer host. */
|
|
40
|
-
composer?: FixtureComposerHostOptions | false;
|
|
41
|
-
/** The files fixture host's options: the folder's files, git status and patches. Default: none, no files host. */
|
|
42
|
-
files?: FixtureFilesHostOptions | false;
|
|
43
|
-
/** The git fixture host's options: branches, pull requests, environment kinds and remote folders. Default: none, no git host. */
|
|
44
|
-
git?: FixtureGitOptions | false;
|
|
45
|
-
/** The keybindings fixture host's options: stored overrides. Default: none, the default bindings. */
|
|
46
|
-
keybindings?: FixtureKeybindingsOptions | false;
|
|
47
|
-
/** The machines fixture host's options: hosts, machines, updates, tokens, the daemon. Default: none, no machines host. */
|
|
48
|
-
machines?: FixtureMachinesOptions | false;
|
|
49
|
-
/** The onboarding fixture host's options. Default: its defaults. `false`: no onboarding host. */
|
|
50
|
-
onboarding?: FixtureOnboardingOptions | false;
|
|
51
|
-
/** The palette fixture host's options. Default: its demo data. `false`: no palette host. */
|
|
52
|
-
palette?: FixturePaletteOptions | false;
|
|
53
|
-
/** The session panels' fixture: todos, queues and artifacts. Default: none. `false`: no session host. */
|
|
54
|
-
session?: SessionFixture | false;
|
|
55
|
-
/** The sidebar fixture host's options: environment commands, Finder and windows. Default: none, no sidebar host. */
|
|
56
|
-
sidebar?: FixtureSidebarHostOptions | false;
|
|
57
|
-
/** The settings fixture host's options: stored settings, read-only. Default: none, no settings host. */
|
|
58
|
-
settings?: FixtureSettingsOptions | false;
|
|
59
|
-
/** The terminal fixture host's options: terminals per scope. Default: none, no terminal host. */
|
|
60
|
-
terminal?: FixtureTerminalOptions | false;
|
|
61
|
-
/** The workspace fixture host's options: stored layouts and extension panels. Default: none stored. `false`: no workspace host. */
|
|
62
|
-
workspace?: FixtureWorkspaceOptions | false;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Creates an {@link AppHost} held in memory, with each area's fixture host (`createFixtureHost`, `createFixtureOnboardingHost`).
|
|
67
|
-
*
|
|
68
|
-
* @param options - Each area's fixture, or `false` to leave that area out.
|
|
69
|
-
*/
|
|
70
|
-
export function createFixtureAppHost(options: FixtureAppHostOptions = {}): AppHost {
|
|
71
|
-
const { chat = { sessions: [] }, chatOptions, onboarding = {}, palette = {}, session = {} } = options;
|
|
72
|
-
const { approvals = {}, appearance = false, git = false, keybindings = false } = options;
|
|
73
|
-
return {
|
|
74
|
-
...(appearance ? { appearance: createFixtureAppearanceHost(appearance) } : {}),
|
|
75
|
-
...(keybindings ? { keybindings: createFixtureKeybindingsHost(keybindings) } : {}),
|
|
76
|
-
...(options.machines ? { machines: createFixtureMachinesHost(options.machines) } : {}),
|
|
77
|
-
...(git ? { git: createFixtureGitHost(git) } : {}),
|
|
78
|
-
...(approvals ? { approvals: createFixtureApprovalsHost(approvals) } : {}),
|
|
79
|
-
...(chat ? { chat: createFixtureHost(chat, chatOptions) } : {}),
|
|
80
|
-
...(options.composer ? { composer: createFixtureComposerHost(options.composer) } : {}),
|
|
81
|
-
...(options.sidebar ? { sidebar: createFixtureSidebarHost(options.sidebar) } : {}),
|
|
82
|
-
...(options.files ? { files: createFixtureFilesHost(options.files) } : {}),
|
|
83
|
-
...(onboarding ? { onboarding: createFixtureOnboardingHost(onboarding) } : {}),
|
|
84
|
-
...(palette ? { palette: createFixturePaletteHost(palette) } : {}),
|
|
85
|
-
...(session ? { session: createFixtureSessionHost(session) } : {}),
|
|
86
|
-
...(options.settings ? { settings: createFixtureSettingsHost(options.settings) } : {}),
|
|
87
|
-
...(options.terminal ? { terminal: createFixtureTerminalHost(options.terminal) } : {}),
|
|
88
|
-
...(options.workspace !== false ? { workspace: createFixtureWorkspaceHost(options.workspace ?? {}) } : {}),
|
|
89
|
-
};
|
|
90
|
-
}
|
package/src/app/useConfirm.tsx
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The in-app replacement for `window.confirm()`: the design system's ConfirmDialog
|
|
3
|
-
* on the modal layer (`ModalProvider.openLayer`), so asking from inside
|
|
4
|
-
* Settings or another modal stacks above it instead of replacing it.
|
|
5
|
-
*
|
|
6
|
-
* const confirm = useConfirm();
|
|
7
|
-
* if (!(await confirm({ title: 'Delete session?', destructive: true }))) return;
|
|
8
|
-
*
|
|
9
|
-
* Esc, a scrim click, Cancel, or the surface underneath closing all resolve
|
|
10
|
-
* `false`. Focus returns to where it was.
|
|
11
|
-
*/
|
|
12
|
-
import { useCallback } from 'react';
|
|
13
|
-
import { CONFIRM_TITLE_ID, ConfirmDialog, type ConfirmOptions } from '../components/ConfirmDialog';
|
|
14
|
-
import { useModal, useOptionalModal, type ModalContextValue } from './ModalProvider';
|
|
15
|
-
|
|
16
|
-
/** Opens a ConfirmDialog on `modal`'s layer and resolves with the choice. */
|
|
17
|
-
function askOn(modal: Pick<ModalContextValue, 'openLayer' | 'closeLayer'>, options: ConfirmOptions): Promise<boolean> {
|
|
18
|
-
const { openLayer, closeLayer } = modal;
|
|
19
|
-
return new Promise<boolean>((resolve) => {
|
|
20
|
-
const previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
21
|
-
const settle = (value: boolean) => {
|
|
22
|
-
resolve(value);
|
|
23
|
-
// After the layer unmounts and the surface underneath is no longer inert.
|
|
24
|
-
requestAnimationFrame(() => previousFocus?.focus());
|
|
25
|
-
};
|
|
26
|
-
openLayer(
|
|
27
|
-
<ConfirmDialog
|
|
28
|
-
{...options}
|
|
29
|
-
titleId={CONFIRM_TITLE_ID}
|
|
30
|
-
className="zg-modal-panel"
|
|
31
|
-
onConfirm={() => {
|
|
32
|
-
closeLayer();
|
|
33
|
-
settle(true);
|
|
34
|
-
}}
|
|
35
|
-
onCancel={() => {
|
|
36
|
-
closeLayer();
|
|
37
|
-
settle(false);
|
|
38
|
-
}}
|
|
39
|
-
/>,
|
|
40
|
-
{ onDismiss: () => settle(false), labelledBy: CONFIRM_TITLE_ID },
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** A function that opens a ConfirmDialog above whatever is open and resolves with the choice. Needs a `ModalProvider`. */
|
|
46
|
-
export function useConfirm(): (options: ConfirmOptions) => Promise<boolean> {
|
|
47
|
-
const { openLayer, closeLayer } = useModal();
|
|
48
|
-
return useCallback((options: ConfirmOptions) => askOn({ openLayer, closeLayer }, options), [openLayer, closeLayer]);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* {@link useConfirm} where a `ModalProvider` may be missing (a component mounted on its own, a gallery):
|
|
53
|
-
* `null` there, so the caller leaves out what must ask first.
|
|
54
|
-
*/
|
|
55
|
-
export function useOptionalConfirm(): ((options: ConfirmOptions) => Promise<boolean>) | null {
|
|
56
|
-
const modal = useOptionalModal();
|
|
57
|
-
const openLayer = modal?.openLayer;
|
|
58
|
-
const closeLayer = modal?.closeLayer;
|
|
59
|
-
const ask = useCallback(
|
|
60
|
-
(options: ConfirmOptions) =>
|
|
61
|
-
openLayer && closeLayer ? askOn({ openLayer, closeLayer }, options) : Promise.resolve(false),
|
|
62
|
-
[openLayer, closeLayer],
|
|
63
|
-
);
|
|
64
|
-
return modal ? ask : null;
|
|
65
|
-
}
|