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
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Peers: `react` and `react-dom` ^19.3, `motion` ^13.5, and two optional ones:
|
|
|
16
16
|
- `zidane` ^8, needed by the adapters (`zidane-ui/adapters`), the server helpers (`zidane-ui/server`) and these areas: chat (`zidane-ui/chat*`), approvals, app, files, git, keybindings, machines, onboarding (the setup wizard), palette (`palette/rank.worker` included), session, settings, terminal and workspace. They call `zidane/chat/pure` at runtime: formatters, diffs, the live-event reducer. That slice is browser-safe and React-free, so a browser bundle never pulls the agent runtime. Without `zidane` you can use the design system (`zidane-ui`, `zidane-ui/code/editor`, the highlight and patch-parse workers, `labels`, `uno`), the appearance area, and the headless and testing entries of files and terminal.
|
|
17
17
|
- `unocss`, only for `zidane-ui/uno` (the token palette as a UnoCSS preset).
|
|
18
18
|
|
|
19
|
-
The kit's other dependencies load where they're used: `
|
|
19
|
+
The kit's other dependencies load where they're used: `@pierre/highlights` (code highlighting, on first use or in a worker), Tiptap (the composer), `react-markdown` + `remark-gfm` (the default Markdown slot), Radix's dropdown (the session filter menu), `@pierre/diffs` + `@pierre/trees` (the code editor and file tree), `@tahul/ghostty-web` (the terminal, on first use).
|
|
20
20
|
|
|
21
21
|
## Use
|
|
22
22
|
|
|
@@ -90,6 +90,8 @@ Pick one route:
|
|
|
90
90
|
|
|
91
91
|
- **UnoCSS in the app:** `@import 'zidane-ui/styles/index.css';` after the Uno utilities (`… layer(zidane-ui);` to put it in a layer). In `uno.config.ts`: `presets: [presetIcons({ collections: { ph: () => import('@iconify-json/ph/icons.json').then((i) => i.default) } }), presetUno({ dark: { dark: '.dark' } }), presetZidane()]` (`import { presetZidane } from 'zidane-ui/uno'`), and `node_modules/zidane-ui/dist/**/*.js` in `content.filesystem` so the components' classes are generated. Your markup can then use `bg-zg-raised`, `text-zg-muted`, `bg-zg-danger/10`…
|
|
92
92
|
|
|
93
|
+
Either way, extensions name icons at runtime (`icon: { gui: 'i-ph-rocket' }`) that no built stylesheet holds. Call `watchRuntimeIcons({ loadPhosphor: () => import('@iconify-json/ph/icons.json').then((m) => crispPhosphor(m.default)) })` once at startup: it adds the rule of each `i-ph-*` class the page shows without one, and loads the set only the first time one is missing.
|
|
94
|
+
|
|
93
95
|
## Theming
|
|
94
96
|
|
|
95
97
|
Everything paints from `--zg-*` custom properties, with default-dark fallbacks, so the components render with no theme set.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
//#region src/adapters/extension-modules.d.ts
|
|
2
|
+
/** Loads an extension's `ui.tsx` module: its exports by name (`zidane-ui/extensions`' `ExtensionModuleLoader`). */
|
|
3
|
+
type ExtensionModuleLoad = (extensionId: string) => Promise<Readonly<Record<string, unknown>>>;
|
|
4
|
+
/** The global the linked bundles read host modules from. */
|
|
5
|
+
declare const EXTENSION_HOST_MODULES_GLOBAL = "__zidaneExtensionHostModules__";
|
|
6
|
+
/** A module namespace (`import * as React from 'react'`). */
|
|
7
|
+
type ExtensionHostModule = Readonly<Record<string, unknown>>;
|
|
8
|
+
/** Host modules by specifier: what the app hands the extensions' components. */
|
|
9
|
+
type ExtensionHostModules = Readonly<Record<string, ExtensionHostModule>>;
|
|
10
|
+
/**
|
|
11
|
+
* Host modules by specifier, each a namespace or a loader of one (a function resolving the namespace): a
|
|
12
|
+
* loader runs the first time a bundle imports its specifier, so the app's first load stays small.
|
|
13
|
+
*/
|
|
14
|
+
type ExtensionHostModuleSources = Readonly<Record<string, ExtensionHostModule | (() => Promise<ExtensionHostModule>)>>;
|
|
15
|
+
/** A linked bundle: its code, and the host modules it reads. */
|
|
16
|
+
interface LinkedExtensionModule {
|
|
17
|
+
/** The bundle with its host-module imports rewritten to reads of the shared module map. */
|
|
18
|
+
code: string;
|
|
19
|
+
/** The host module specifiers the code reads, each once. */
|
|
20
|
+
uses: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
/** A bundle that imports something the app does not provide. */
|
|
23
|
+
declare class ExtensionModuleLinkError extends Error {
|
|
24
|
+
readonly specifiers: readonly string[];
|
|
25
|
+
/**
|
|
26
|
+
* @param specifiers - The specifiers the app has no module for.
|
|
27
|
+
*/
|
|
28
|
+
constructor(specifiers: readonly string[]);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Rewrites a bundle's imports of host modules into reads of the host module map, so the code runs
|
|
32
|
+
* as a module with no imports. A bare import the map has no module for fails, every one named.
|
|
33
|
+
* Relative and URL imports are left alone (a self-contained bundle has none).
|
|
34
|
+
*
|
|
35
|
+
* @param code - One ESM module (zidane's `compileUiEntry` output).
|
|
36
|
+
* @param provided - Whether the app provides a specifier.
|
|
37
|
+
* @returns The linked code and the host modules it reads.
|
|
38
|
+
* @throws {ExtensionModuleLinkError} When it imports a bare specifier the app does not provide.
|
|
39
|
+
*/
|
|
40
|
+
declare function linkExtensionModule(code: string, provided: (specifier: string) => boolean): LinkedExtensionModule;
|
|
41
|
+
/**
|
|
42
|
+
* Puts `modules` in the host module map linked bundles read (merged over what is there).
|
|
43
|
+
*
|
|
44
|
+
* @param modules - Host modules by specifier.
|
|
45
|
+
* @param target - The global object. Default `globalThis`.
|
|
46
|
+
*/
|
|
47
|
+
declare function installExtensionHostModules(modules: ExtensionHostModules, target?: object): void;
|
|
48
|
+
/** One extension's bundle in the folder's listing: where it is (relative to the server's origin), or why it did not bundle. */
|
|
49
|
+
type ServerExtensionBundle = {
|
|
50
|
+
hash: string;
|
|
51
|
+
url: string;
|
|
52
|
+
} | {
|
|
53
|
+
errors: readonly string[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Where an extension's bundle is, from the folder's current listing (`ServerExtensionsHost.bundle`);
|
|
57
|
+
* `fresh`: list again first (the listed URL went stale). `undefined`: it has none.
|
|
58
|
+
*/
|
|
59
|
+
type ServerExtensionBundleLookup = (extensionId: string, opts?: {
|
|
60
|
+
fresh?: boolean;
|
|
61
|
+
}) => Promise<ServerExtensionBundle | undefined>;
|
|
62
|
+
/** A bundle that could not be loaded: not listed, did not bundle, or the server refused. */
|
|
63
|
+
declare class ExtensionModuleLoadError extends Error {
|
|
64
|
+
readonly extensionId: string;
|
|
65
|
+
/**
|
|
66
|
+
* @param extensionId - The extension.
|
|
67
|
+
* @param message - What went wrong.
|
|
68
|
+
*/
|
|
69
|
+
constructor(extensionId: string, message: string);
|
|
70
|
+
}
|
|
71
|
+
/** Options for {@link createServerExtensionModuleLoader}. */
|
|
72
|
+
interface ServerExtensionModuleLoaderOptions {
|
|
73
|
+
/** The server's HTTP origin (`https://zidane.example.com`). */
|
|
74
|
+
origin: string;
|
|
75
|
+
/** The client token. Absent: a server without auth. */
|
|
76
|
+
token?: string;
|
|
77
|
+
/** Where each bundle is: `ServerExtensionsHost.bundle`. */
|
|
78
|
+
bundle: ServerExtensionBundleLookup;
|
|
79
|
+
/** The host modules the components import, each a namespace or a loader of one. */
|
|
80
|
+
modules: ExtensionHostModuleSources;
|
|
81
|
+
/** `fetch`. Default: the global one. */
|
|
82
|
+
fetch?: typeof fetch;
|
|
83
|
+
/** Evaluates linked code as a module and returns its exports. Default: import from a `blob:` URL. */
|
|
84
|
+
importModule?: (code: string) => Promise<Readonly<Record<string, unknown>>>;
|
|
85
|
+
}
|
|
86
|
+
/** What {@link createServerExtensionModuleLoader} returns. */
|
|
87
|
+
interface ServerExtensionModuleLoader {
|
|
88
|
+
/** `AppHostProvider`'s `loadExtensionModule`. A new function after {@link ServerExtensionModuleLoader.invalidate}. */
|
|
89
|
+
load: ExtensionModuleLoad;
|
|
90
|
+
/** A fresh `load` (the folder changed, an extension reloaded, the server came back): a module loads again. */
|
|
91
|
+
invalidate(): ExtensionModuleLoad;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Creates a loader of extension `ui.tsx` modules from zidane-server: each bundle where the folder's
|
|
95
|
+
* listing says, by its hash, linked against `modules`. A bundle URL the server no longer knows (it
|
|
96
|
+
* restarted since the listing) is looked up again in a fresh listing, once.
|
|
97
|
+
*
|
|
98
|
+
* @param options - The server's origin and token, where bundles are, the host modules.
|
|
99
|
+
*/
|
|
100
|
+
declare function createServerExtensionModuleLoader(options: ServerExtensionModuleLoaderOptions): ServerExtensionModuleLoader;
|
|
101
|
+
/** Options for {@link createServerWebviewSources}. */
|
|
102
|
+
interface ServerWebviewSourcesOptions {
|
|
103
|
+
/** The server's HTTP origin. */
|
|
104
|
+
origin: string;
|
|
105
|
+
/** The client token. Absent: a server without auth. */
|
|
106
|
+
token?: string;
|
|
107
|
+
/** The folder whose extensions the webviews belong to (`null`: none). */
|
|
108
|
+
cwd: () => string | null;
|
|
109
|
+
/** `fetch`. Default: the global one. */
|
|
110
|
+
fetch?: typeof fetch;
|
|
111
|
+
/** Called with a mint that failed. Default: a console warning. */
|
|
112
|
+
onError?: (error: unknown) => void;
|
|
113
|
+
}
|
|
114
|
+
/** Webview URLs from zidane-server, for `ExtensionWebview`'s `resolveSrc`. */
|
|
115
|
+
interface ServerWebviewSources {
|
|
116
|
+
/**
|
|
117
|
+
* The URL a webview's iframe loads: a `url` source as given, a `file` source the URL the server
|
|
118
|
+
* minted for it (`null` until it answered; subscribers hear when it did).
|
|
119
|
+
*/
|
|
120
|
+
resolveSrc(webview: {
|
|
121
|
+
id: string;
|
|
122
|
+
src: {
|
|
123
|
+
url: string;
|
|
124
|
+
} | {
|
|
125
|
+
file: string;
|
|
126
|
+
};
|
|
127
|
+
}): string | null;
|
|
128
|
+
/** Called when a minted URL arrives. Returns the unsubscribe. */
|
|
129
|
+
subscribe(listener: () => void): () => void;
|
|
130
|
+
/** Forgets the minted URLs (the folder changed): the next `resolveSrc` mints again. */
|
|
131
|
+
clear(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Forgets the minted URLs and tells subscribers, so every shown webview mints again (a rebuild, a
|
|
134
|
+
* reconnect to a server that may have restarted and dropped its tickets).
|
|
135
|
+
*/
|
|
136
|
+
reset(): void;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Creates the webview URL source over zidane-server: a `file` source is minted once per folder
|
|
140
|
+
* (`POST /zidane/extensions/webview?cwd=&id=`, with the token) into a URL under an unguessable ticket,
|
|
141
|
+
* served sandboxed with no network: the page talks to its extension only through the RPC bridge.
|
|
142
|
+
*
|
|
143
|
+
* @param options - The server's origin and token, the folder.
|
|
144
|
+
*/
|
|
145
|
+
declare function createServerWebviewSources(options: ServerWebviewSourcesOptions): ServerWebviewSources;
|
|
146
|
+
//#endregion
|
|
147
|
+
export { EXTENSION_HOST_MODULES_GLOBAL, ExtensionHostModule, ExtensionHostModuleSources, ExtensionHostModules, ExtensionModuleLinkError, ExtensionModuleLoad, ExtensionModuleLoadError, LinkedExtensionModule, ServerExtensionBundle, ServerExtensionBundleLookup, ServerExtensionModuleLoader, ServerExtensionModuleLoaderOptions, ServerWebviewSources, ServerWebviewSourcesOptions, createServerExtensionModuleLoader, createServerWebviewSources, installExtensionHostModules, linkExtensionModule };
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { SERVER_EXTENSIONS_WEBVIEW_PATH } from "zidane/ipc/browser";
|
|
2
|
+
//#region src/adapters/extension-modules.ts
|
|
3
|
+
/**
|
|
4
|
+
* Loading an extension's `ui.tsx` bundle in a browser, from zidane-server.
|
|
5
|
+
*
|
|
6
|
+
* The server bundles each extension's `ui` entry into one ESM module (zidane's `compileUiEntry`)
|
|
7
|
+
* and keeps the host modules (`react`, `react/jsx-runtime`, `react-dom`, `zidane-ui/*`) as bare
|
|
8
|
+
* imports: the components must run on the app's own React and kit, or their hooks and contexts
|
|
9
|
+
* split from the app's. A page can't map bare specifiers to modules it already loaded (a vite
|
|
10
|
+
* build has no stable URL for its React, and a static import map can't name them), so the loader
|
|
11
|
+
* links the bundle against a host module map instead: each `import … from '<host module>'`
|
|
12
|
+
* becomes a read of the module the app put in the map ({@link linkExtensionModule}), and the
|
|
13
|
+
* linked code is imported from a `blob:` URL. Where each bundle is comes from the folder's
|
|
14
|
+
* `extensions.ui.list` (`ServerExtensionsHost.bundle`); the bundle itself is fetched with the
|
|
15
|
+
* client's token, by content hash (`immutable`), so the browser cache keeps it until the code changes.
|
|
16
|
+
*
|
|
17
|
+
* const loader = createServerExtensionModuleLoader({
|
|
18
|
+
* origin: 'https://zidane.example.com', token, bundle: host.bundle,
|
|
19
|
+
* modules: { react: React, 'react/jsx-runtime': jsxRuntime, 'zidane-ui/extensions/kit': kit },
|
|
20
|
+
* });
|
|
21
|
+
* <AppHostProvider host={host} loadExtensionModule={loader.load}>…
|
|
22
|
+
*/
|
|
23
|
+
/** The global the linked bundles read host modules from. */
|
|
24
|
+
const EXTENSION_HOST_MODULES_GLOBAL = "__zidaneExtensionHostModules__";
|
|
25
|
+
/** A bundle that imports something the app does not provide. */
|
|
26
|
+
var ExtensionModuleLinkError = class extends Error {
|
|
27
|
+
specifiers;
|
|
28
|
+
/**
|
|
29
|
+
* @param specifiers - The specifiers the app has no module for.
|
|
30
|
+
*/
|
|
31
|
+
constructor(specifiers) {
|
|
32
|
+
super(`the extension module imports ${specifiers.map((s) => `"${s}"`).join(", ")}, which this app does not provide`);
|
|
33
|
+
this.specifiers = specifiers;
|
|
34
|
+
this.name = "ExtensionModuleLinkError";
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const HELPER = "__zidaneHostModule$";
|
|
38
|
+
const STATIC_IMPORT = /^[ \t]*import\s*(?:([\w$]+)\s*,?\s*)?(?:\*\s*as\s+([\w$]+)|\{([^}]*)\})?\s*(?:from\s*)?(["'])([^"'\n]+)\4[ \t]*;?/gm;
|
|
39
|
+
const RE_EXPORT = /^[ \t]*export\s*(?:\*\s*(?:as\s+([\w$]+)\s*)?|\{([^}]*)\})\s*from\s*(["'])([^"'\n]+)\3[ \t]*;?/gm;
|
|
40
|
+
const DYNAMIC_IMPORT = /\bimport\(\s*(["'])([^"'\n]+)\1\s*\)/g;
|
|
41
|
+
/** `a, b as c, "d" as e, default as f` → a destructuring pattern `a, b: c, "d": e, default: f`. */
|
|
42
|
+
function bindings(list) {
|
|
43
|
+
return list.split(",").map((part) => part.trim()).filter(Boolean).map((part) => part.replace(/^(["']?[\w$-]+["']?)\s+as\s+([\w$]+)$/, "$1: $2")).join(", ");
|
|
44
|
+
}
|
|
45
|
+
const isBare = (specifier) => !/^(?:[./]|[a-z][a-z\d+.-]*:)/i.test(specifier);
|
|
46
|
+
/**
|
|
47
|
+
* Rewrites a bundle's imports of host modules into reads of the host module map, so the code runs
|
|
48
|
+
* as a module with no imports. A bare import the map has no module for fails, every one named.
|
|
49
|
+
* Relative and URL imports are left alone (a self-contained bundle has none).
|
|
50
|
+
*
|
|
51
|
+
* @param code - One ESM module (zidane's `compileUiEntry` output).
|
|
52
|
+
* @param provided - Whether the app provides a specifier.
|
|
53
|
+
* @returns The linked code and the host modules it reads.
|
|
54
|
+
* @throws {ExtensionModuleLinkError} When it imports a bare specifier the app does not provide.
|
|
55
|
+
*/
|
|
56
|
+
function linkExtensionModule(code, provided) {
|
|
57
|
+
const missing = /* @__PURE__ */ new Set();
|
|
58
|
+
const uses = /* @__PURE__ */ new Set();
|
|
59
|
+
const host = (specifier) => {
|
|
60
|
+
if (!isBare(specifier)) return void 0;
|
|
61
|
+
if (!provided(specifier)) missing.add(specifier);
|
|
62
|
+
uses.add(specifier);
|
|
63
|
+
return `${HELPER}(${JSON.stringify(specifier)})`;
|
|
64
|
+
};
|
|
65
|
+
let seq = 0;
|
|
66
|
+
let linked = code.replace(STATIC_IMPORT, (statement, def, ns, named, _q, specifier) => {
|
|
67
|
+
if (!def && !ns && named === void 0 && isBare(specifier) && specifier.endsWith(".css")) return "";
|
|
68
|
+
const read = host(specifier);
|
|
69
|
+
if (!read) return statement;
|
|
70
|
+
const out = [];
|
|
71
|
+
if (def) out.push(`const ${def} = ${HELPER}.default(${JSON.stringify(specifier)});`);
|
|
72
|
+
if (ns) out.push(`const ${ns} = ${read};`);
|
|
73
|
+
if (named !== void 0 && bindings(named)) out.push(`const { ${bindings(named)} } = ${read};`);
|
|
74
|
+
return out.join(" ");
|
|
75
|
+
});
|
|
76
|
+
linked = linked.replace(RE_EXPORT, (statement, as, named, _q, specifier) => {
|
|
77
|
+
const read = host(specifier);
|
|
78
|
+
if (!read) return statement;
|
|
79
|
+
if (named === void 0) {
|
|
80
|
+
if (!as) throw new ExtensionModuleLinkError([`export * from "${specifier}"`]);
|
|
81
|
+
return `const ${as} = ${read}; export { ${as} };`;
|
|
82
|
+
}
|
|
83
|
+
const pairs = named.split(",").map((part) => part.trim()).filter(Boolean).map((part) => {
|
|
84
|
+
const [from, to = from] = part.split(/\s+as\s+/);
|
|
85
|
+
return {
|
|
86
|
+
from,
|
|
87
|
+
to,
|
|
88
|
+
local: `${HELPER}re${++seq}`
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
return `const { ${pairs.map((p) => `${p.from}: ${p.local}`).join(", ")} } = ${read}; export { ${pairs.map((p) => `${p.local} as ${p.to}`).join(", ")} };`;
|
|
92
|
+
});
|
|
93
|
+
linked = linked.replace(DYNAMIC_IMPORT, (call, _q, specifier) => {
|
|
94
|
+
const read = host(specifier);
|
|
95
|
+
return read ? `Promise.resolve().then(() => ${read})` : call;
|
|
96
|
+
});
|
|
97
|
+
if (missing.size > 0) throw new ExtensionModuleLinkError([...missing]);
|
|
98
|
+
const global = JSON.stringify(EXTENSION_HOST_MODULES_GLOBAL);
|
|
99
|
+
return {
|
|
100
|
+
code: `const ${HELPER} = (s) => { const m = globalThis[${global}]?.[s]; if (!m) throw new Error('zidane: no host module ' + s); return m; };\n${HELPER}.default = (s) => { const m = ${HELPER}(s); return 'default' in m ? m.default : m; };\n` + linked,
|
|
101
|
+
uses: [...uses]
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Puts `modules` in the host module map linked bundles read (merged over what is there).
|
|
106
|
+
*
|
|
107
|
+
* @param modules - Host modules by specifier.
|
|
108
|
+
* @param target - The global object. Default `globalThis`.
|
|
109
|
+
*/
|
|
110
|
+
function installExtensionHostModules(modules, target = globalThis) {
|
|
111
|
+
const slot = target;
|
|
112
|
+
slot[EXTENSION_HOST_MODULES_GLOBAL] = {
|
|
113
|
+
...slot[EXTENSION_HOST_MODULES_GLOBAL],
|
|
114
|
+
...modules
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** A bundle that could not be loaded: not listed, did not bundle, or the server refused. */
|
|
118
|
+
var ExtensionModuleLoadError = class extends Error {
|
|
119
|
+
extensionId;
|
|
120
|
+
/**
|
|
121
|
+
* @param extensionId - The extension.
|
|
122
|
+
* @param message - What went wrong.
|
|
123
|
+
*/
|
|
124
|
+
constructor(extensionId, message) {
|
|
125
|
+
super(`${extensionId}: ${message}`);
|
|
126
|
+
this.extensionId = extensionId;
|
|
127
|
+
this.name = "ExtensionModuleLoadError";
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const blobImport = async (code) => {
|
|
131
|
+
const url = URL.createObjectURL(new Blob([code], { type: "text/javascript" }));
|
|
132
|
+
try {
|
|
133
|
+
return await import(
|
|
134
|
+
/* @vite-ignore */
|
|
135
|
+
url
|
|
136
|
+
);
|
|
137
|
+
} finally {
|
|
138
|
+
URL.revokeObjectURL(url);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Creates a loader of extension `ui.tsx` modules from zidane-server: each bundle where the folder's
|
|
143
|
+
* listing says, by its hash, linked against `modules`. A bundle URL the server no longer knows (it
|
|
144
|
+
* restarted since the listing) is looked up again in a fresh listing, once.
|
|
145
|
+
*
|
|
146
|
+
* @param options - The server's origin and token, where bundles are, the host modules.
|
|
147
|
+
*/
|
|
148
|
+
function createServerExtensionModuleLoader(options) {
|
|
149
|
+
const doFetch = options.fetch ?? ((input, init) => fetch(input, init));
|
|
150
|
+
const importModule = options.importModule ?? blobImport;
|
|
151
|
+
const headers = options.token ? { authorization: `Bearer ${options.token}` } : {};
|
|
152
|
+
const provided = (specifier) => Object.hasOwn(options.modules, specifier);
|
|
153
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
154
|
+
const resolve = (specifier) => {
|
|
155
|
+
let module = resolved.get(specifier);
|
|
156
|
+
if (!module) {
|
|
157
|
+
const source = options.modules[specifier];
|
|
158
|
+
module = typeof source === "function" ? source() : Promise.resolve(source);
|
|
159
|
+
resolved.set(specifier, module);
|
|
160
|
+
module.catch(() => resolved.delete(specifier));
|
|
161
|
+
}
|
|
162
|
+
return module;
|
|
163
|
+
};
|
|
164
|
+
const link = async (code) => {
|
|
165
|
+
const linked = linkExtensionModule(code, provided);
|
|
166
|
+
const modules = await Promise.all(linked.uses.map(async (s) => [s, await resolve(s)]));
|
|
167
|
+
installExtensionHostModules(Object.fromEntries(modules));
|
|
168
|
+
return linked.code;
|
|
169
|
+
};
|
|
170
|
+
const fetchBundle = (url) => doFetch(/^https?:/i.test(url) ? url : `${options.origin}${url}`, { headers });
|
|
171
|
+
const make = () => async (extensionId) => {
|
|
172
|
+
let bundle = await options.bundle(extensionId);
|
|
173
|
+
if (!bundle) throw new ExtensionModuleLoadError(extensionId, "no ui bundle on the server");
|
|
174
|
+
if ("errors" in bundle) throw new ExtensionModuleLoadError(extensionId, bundle.errors.join("; "));
|
|
175
|
+
let response = await fetchBundle(bundle.url);
|
|
176
|
+
if (response.status === 404) {
|
|
177
|
+
bundle = await options.bundle(extensionId, { fresh: true });
|
|
178
|
+
if (!bundle) throw new ExtensionModuleLoadError(extensionId, "no ui bundle on the server");
|
|
179
|
+
if ("errors" in bundle) throw new ExtensionModuleLoadError(extensionId, bundle.errors.join("; "));
|
|
180
|
+
response = await fetchBundle(bundle.url);
|
|
181
|
+
}
|
|
182
|
+
if (!response.ok) throw new ExtensionModuleLoadError(extensionId, `the server answered ${response.status} for its bundle`);
|
|
183
|
+
return importModule(await link(await response.text()));
|
|
184
|
+
};
|
|
185
|
+
const loader = {
|
|
186
|
+
load: make(),
|
|
187
|
+
invalidate() {
|
|
188
|
+
loader.load = make();
|
|
189
|
+
return loader.load;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
return loader;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Creates the webview URL source over zidane-server: a `file` source is minted once per folder
|
|
196
|
+
* (`POST /zidane/extensions/webview?cwd=&id=`, with the token) into a URL under an unguessable ticket,
|
|
197
|
+
* served sandboxed with no network: the page talks to its extension only through the RPC bridge.
|
|
198
|
+
*
|
|
199
|
+
* @param options - The server's origin and token, the folder.
|
|
200
|
+
*/
|
|
201
|
+
function createServerWebviewSources(options) {
|
|
202
|
+
const doFetch = options.fetch ?? ((input, init) => fetch(input, init));
|
|
203
|
+
const onError = options.onError ?? ((error) => console.warn("[zidane-ui] webview:", error));
|
|
204
|
+
const minted = /* @__PURE__ */ new Map();
|
|
205
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
206
|
+
return {
|
|
207
|
+
resolveSrc(webview) {
|
|
208
|
+
if ("url" in webview.src) return webview.src.url;
|
|
209
|
+
const cwd = options.cwd();
|
|
210
|
+
if (!cwd) return null;
|
|
211
|
+
const key = `${cwd}\u0000${webview.id}`;
|
|
212
|
+
if (minted.has(key)) return minted.get(key) ?? null;
|
|
213
|
+
minted.set(key, null);
|
|
214
|
+
const url = `${options.origin}${SERVER_EXTENSIONS_WEBVIEW_PATH}?cwd=${encodeURIComponent(cwd)}&id=${encodeURIComponent(webview.id)}`;
|
|
215
|
+
doFetch(url, {
|
|
216
|
+
method: "POST",
|
|
217
|
+
headers: options.token ? { authorization: `Bearer ${options.token}` } : {}
|
|
218
|
+
}).then(async (response) => {
|
|
219
|
+
if (!response.ok) throw new Error(`the server answered ${response.status} for webview ${webview.id}`);
|
|
220
|
+
const { url: path } = await response.json();
|
|
221
|
+
if (!minted.has(key)) return;
|
|
222
|
+
minted.set(key, /^https?:/i.test(path) ? path : `${options.origin}${path}`);
|
|
223
|
+
for (const listener of [...listeners]) listener();
|
|
224
|
+
}).catch((error) => {
|
|
225
|
+
minted.delete(key);
|
|
226
|
+
onError(error);
|
|
227
|
+
});
|
|
228
|
+
return null;
|
|
229
|
+
},
|
|
230
|
+
subscribe(listener) {
|
|
231
|
+
listeners.add(listener);
|
|
232
|
+
return () => listeners.delete(listener);
|
|
233
|
+
},
|
|
234
|
+
clear() {
|
|
235
|
+
minted.clear();
|
|
236
|
+
},
|
|
237
|
+
reset() {
|
|
238
|
+
minted.clear();
|
|
239
|
+
for (const listener of [...listeners]) listener();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
//#endregion
|
|
244
|
+
export { EXTENSION_HOST_MODULES_GLOBAL, ExtensionModuleLinkError, ExtensionModuleLoadError, createServerExtensionModuleLoader, createServerWebviewSources, installExtensionHostModules, linkExtensionModule };
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BrowserAppearanceHostOptions, createBrowserAppearanceHost } from "./browser-appearance-host.js";
|
|
2
2
|
import { BrowserKeybindingsHostOptions, createBrowserKeybindingsHost } from "./browser-keybindings-host.js";
|
|
3
3
|
import { BrowserWorkspaceHostOptions, createBrowserWorkspaceHost } from "./browser-workspace-host.js";
|
|
4
|
+
import { EXTENSION_HOST_MODULES_GLOBAL, ExtensionHostModule, ExtensionHostModuleSources, ExtensionHostModules, ExtensionModuleLinkError, ExtensionModuleLoad, ExtensionModuleLoadError, LinkedExtensionModule, ServerExtensionBundle, ServerExtensionBundleLookup, ServerExtensionModuleLoader, ServerExtensionModuleLoaderOptions, ServerWebviewSources, ServerWebviewSourcesOptions, createServerExtensionModuleLoader, createServerWebviewSources, installExtensionHostModules, linkExtensionModule } from "./extension-modules.js";
|
|
4
5
|
import { RunContext, RunFn, RunHost, RunHostOptions, createRunHost } from "./run-host.js";
|
|
5
6
|
import { FromWorker, MessageEndpoint, ToWorker, WORKER_PROTOCOL_VERSION, WorkerRunInput, decodeFromWorker, decodeToWorker } from "./worker-protocol.js";
|
|
6
7
|
import { WorkerHostOptions, createWorkerHost, exposeRunHost } from "./worker-host.js";
|
|
@@ -20,8 +21,9 @@ import { SERVER_MACHINES_HOST_ID, ServerMachinesHost, ServerMachinesHostOptions,
|
|
|
20
21
|
import { ServerOnboardingHost, ServerOnboardingHostOptions, createServerOnboardingHost } from "./server-onboarding-host.js";
|
|
21
22
|
import { ServerSettingsHost, ServerSettingsHostOptions, createServerSettingsHost } from "./server-settings-host.js";
|
|
22
23
|
import { ServerSidebarHostOptions, createServerSidebarHost } from "./server-sidebar-host.js";
|
|
24
|
+
import { ExtensionFlowStepHandler, ExtensionsClientAnnounce, ServerExtensionAssetsAccess, ServerExtensionCommandWire, ServerExtensionCommands, ServerExtensionDialogs, ServerExtensionsHost, ServerExtensionsHostOptions, createServerExtensionsHost } from "./server-extensions-host.js";
|
|
23
25
|
import { applyLiveEvent, closeThinkingSegment, finishLive } from "../chat/headless/streams/live-events.js";
|
|
24
26
|
import { LiveState, LiveStateOptions, LiveTranscript, createLiveState } from "./live.js";
|
|
25
27
|
import "./live-events.js";
|
|
26
28
|
import { StreamPacer, StreamPacerOptions, createStreamPacer } from "./stream-pacer.js";
|
|
27
|
-
export { AnswerBody, BrowserAppearanceHostOptions, BrowserKeybindingsHostOptions, BrowserWorkspaceHostOptions, FromWorker, HydrateResponse, LiveState, LiveStateOptions, LiveTranscript, MessageEndpoint, RunContext, RunFn, RunHost, RunHostOptions, SERVER_AUTH_CHECK_PATH, SERVER_MACHINES_HOST_ID, SSE_PROTOCOL_HEADER, SSE_PROTOCOL_VERSION, SendBody, ServerApprovalsHostOptions, ServerCallError, type ServerClient, type ServerClientOptions, type ServerClientState, ServerComposerHost, ServerComposerHostOptions, ServerConnectionError, ServerFilesHostOptions, ServerGitHostOptions, ServerHost, ServerHostOptions, ServerMachinesHost, ServerMachinesHostOptions, ServerOnboardingHost, ServerOnboardingHostOptions, ServerPaletteHost, ServerPaletteHostOptions, type ServerRefusal, ServerSessionHost, ServerSessionHostOptions, ServerSettingsHost, ServerSettingsHostOptions, ServerSidebarHostOptions, ServerTerminalHostOptions, SseHost, SseHostOptions, SseParser, SseRecord, StreamPacer, StreamPacerOptions, StreamRecord, ToWorker, WORKER_PROTOCOL_VERSION, WorkerHostOptions, WorkerRunInput, applyLiveEvent, attachmentsFromPreviews, closeThinkingSegment, createBrowserAppearanceHost, createBrowserKeybindingsHost, createBrowserWorkspaceHost, createLiveState, createRunHost, createServerApprovalsHost, createServerClient, createServerComposerHost, createServerFilesHost, createServerGitHost, createServerHost, createServerMachinesHost, createServerOnboardingHost, createServerPaletteHost, createServerSessionHost, createServerSettingsHost, createServerSidebarHost, createServerTerminalHost, createSseHost, createSseParser, createStreamPacer, createWorkerHost, decodeFromWorker, decodeToWorker, encodeSseRecord, exposeRunHost, finishLive, formatCursor, parseCursor, toChatModelProviders, toChatSession, toSidebarListSession };
|
|
29
|
+
export { AnswerBody, BrowserAppearanceHostOptions, BrowserKeybindingsHostOptions, BrowserWorkspaceHostOptions, EXTENSION_HOST_MODULES_GLOBAL, ExtensionFlowStepHandler, ExtensionHostModule, ExtensionHostModuleSources, ExtensionHostModules, ExtensionModuleLinkError, ExtensionModuleLoad, ExtensionModuleLoadError, ExtensionsClientAnnounce, FromWorker, HydrateResponse, LinkedExtensionModule, LiveState, LiveStateOptions, LiveTranscript, MessageEndpoint, RunContext, RunFn, RunHost, RunHostOptions, SERVER_AUTH_CHECK_PATH, SERVER_MACHINES_HOST_ID, SSE_PROTOCOL_HEADER, SSE_PROTOCOL_VERSION, SendBody, ServerApprovalsHostOptions, ServerCallError, type ServerClient, type ServerClientOptions, type ServerClientState, ServerComposerHost, ServerComposerHostOptions, ServerConnectionError, ServerExtensionAssetsAccess, ServerExtensionBundle, ServerExtensionBundleLookup, ServerExtensionCommandWire, ServerExtensionCommands, ServerExtensionDialogs, ServerExtensionModuleLoader, ServerExtensionModuleLoaderOptions, ServerExtensionsHost, ServerExtensionsHostOptions, ServerFilesHostOptions, ServerGitHostOptions, ServerHost, ServerHostOptions, ServerMachinesHost, ServerMachinesHostOptions, ServerOnboardingHost, ServerOnboardingHostOptions, ServerPaletteHost, ServerPaletteHostOptions, type ServerRefusal, ServerSessionHost, ServerSessionHostOptions, ServerSettingsHost, ServerSettingsHostOptions, ServerSidebarHostOptions, ServerTerminalHostOptions, ServerWebviewSources, ServerWebviewSourcesOptions, SseHost, SseHostOptions, SseParser, SseRecord, StreamPacer, StreamPacerOptions, StreamRecord, ToWorker, WORKER_PROTOCOL_VERSION, WorkerHostOptions, WorkerRunInput, applyLiveEvent, attachmentsFromPreviews, closeThinkingSegment, createBrowserAppearanceHost, createBrowserKeybindingsHost, createBrowserWorkspaceHost, createLiveState, createRunHost, createServerApprovalsHost, createServerClient, createServerComposerHost, createServerExtensionModuleLoader, createServerExtensionsHost, createServerFilesHost, createServerGitHost, createServerHost, createServerMachinesHost, createServerOnboardingHost, createServerPaletteHost, createServerSessionHost, createServerSettingsHost, createServerSidebarHost, createServerTerminalHost, createServerWebviewSources, createSseHost, createSseParser, createStreamPacer, createWorkerHost, decodeFromWorker, decodeToWorker, encodeSseRecord, exposeRunHost, finishLive, formatCursor, installExtensionHostModules, linkExtensionModule, parseCursor, toChatModelProviders, toChatSession, toSidebarListSession };
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createBrowserAppearanceHost } from "./browser-appearance-host.js";
|
|
2
2
|
import { createBrowserKeybindingsHost } from "./browser-keybindings-host.js";
|
|
3
3
|
import { createBrowserWorkspaceHost } from "./browser-workspace-host.js";
|
|
4
|
+
import { EXTENSION_HOST_MODULES_GLOBAL, ExtensionModuleLinkError, ExtensionModuleLoadError, createServerExtensionModuleLoader, createServerWebviewSources, installExtensionHostModules, linkExtensionModule } from "./extension-modules.js";
|
|
4
5
|
import { applyLiveEvent, closeThinkingSegment, finishLive } from "../chat/headless/streams/live-events.js";
|
|
5
6
|
import { createLiveState } from "./live.js";
|
|
6
7
|
import { createRunHost } from "./run-host.js";
|
|
@@ -22,5 +23,6 @@ import { SERVER_MACHINES_HOST_ID, createServerMachinesHost } from "./server-mach
|
|
|
22
23
|
import { createServerOnboardingHost } from "./server-onboarding-host.js";
|
|
23
24
|
import { createServerSettingsHost } from "./server-settings-host.js";
|
|
24
25
|
import { createServerSidebarHost } from "./server-sidebar-host.js";
|
|
26
|
+
import { createServerExtensionsHost } from "./server-extensions-host.js";
|
|
25
27
|
import { createStreamPacer } from "./stream-pacer.js";
|
|
26
|
-
export { SERVER_AUTH_CHECK_PATH, SERVER_MACHINES_HOST_ID, SSE_PROTOCOL_HEADER, SSE_PROTOCOL_VERSION, ServerCallError, ServerConnectionError, WORKER_PROTOCOL_VERSION, applyLiveEvent, attachmentsFromPreviews, closeThinkingSegment, createBrowserAppearanceHost, createBrowserKeybindingsHost, createBrowserWorkspaceHost, createLiveState, createRunHost, createServerApprovalsHost, createServerClient, createServerComposerHost, createServerFilesHost, createServerGitHost, createServerHost, createServerMachinesHost, createServerOnboardingHost, createServerPaletteHost, createServerSessionHost, createServerSettingsHost, createServerSidebarHost, createServerTerminalHost, createSseHost, createSseParser, createStreamPacer, createWorkerHost, decodeFromWorker, decodeToWorker, encodeSseRecord, exposeRunHost, finishLive, formatCursor, parseCursor, toChatModelProviders, toChatSession, toSidebarListSession };
|
|
28
|
+
export { EXTENSION_HOST_MODULES_GLOBAL, ExtensionModuleLinkError, ExtensionModuleLoadError, SERVER_AUTH_CHECK_PATH, SERVER_MACHINES_HOST_ID, SSE_PROTOCOL_HEADER, SSE_PROTOCOL_VERSION, ServerCallError, ServerConnectionError, WORKER_PROTOCOL_VERSION, applyLiveEvent, attachmentsFromPreviews, closeThinkingSegment, createBrowserAppearanceHost, createBrowserKeybindingsHost, createBrowserWorkspaceHost, createLiveState, createRunHost, createServerApprovalsHost, createServerClient, createServerComposerHost, createServerExtensionModuleLoader, createServerExtensionsHost, createServerFilesHost, createServerGitHost, createServerHost, createServerMachinesHost, createServerOnboardingHost, createServerPaletteHost, createServerSessionHost, createServerSettingsHost, createServerSidebarHost, createServerTerminalHost, createServerWebviewSources, createSseHost, createSseParser, createStreamPacer, createWorkerHost, decodeFromWorker, decodeToWorker, encodeSseRecord, exposeRunHost, finishLive, formatCursor, installExtensionHostModules, linkExtensionModule, parseCursor, toChatModelProviders, toChatSession, toSidebarListSession };
|
package/dist/adapters/live.d.ts
CHANGED
|
@@ -47,6 +47,12 @@ interface LiveStateOptions {
|
|
|
47
47
|
onOpen?: (sessionId: string) => void;
|
|
48
48
|
/** Called with the session id when the last subscriber of its transcript leaves. An adapter stops the session's stream here. */
|
|
49
49
|
onClose?: (sessionId: string) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Forget the transcripts nobody reads: when a session's last subscriber leaves, every window goes but the
|
|
52
|
+
* open sessions', the running ones' and the 12 most recently opened. For an adapter that loads a transcript
|
|
53
|
+
* again in `onOpen`. Default: `false`.
|
|
54
|
+
*/
|
|
55
|
+
evict?: boolean;
|
|
50
56
|
}
|
|
51
57
|
/**
|
|
52
58
|
* Creates the stores a {@link ChatHost} exposes: the session list, per-session transcripts, and pending interactions.
|
package/dist/adapters/live.js
CHANGED
|
@@ -3,6 +3,8 @@ import { applyLiveEvent, finishLive } from "../chat/headless/streams/live-events
|
|
|
3
3
|
import { SessionStreamStore } from "../chat/headless/streams/store.js";
|
|
4
4
|
import { transcriptSnapshot } from "../chat/headless/streams/transcript.js";
|
|
5
5
|
//#region src/adapters/live.ts
|
|
6
|
+
/** Closed sessions whose windows stay, most recent first: the desktop's prewarm window (`sidebar/directory.ts`) less the open one. */
|
|
7
|
+
const RECENT_KEPT = 12;
|
|
6
8
|
/**
|
|
7
9
|
* Creates the stores a {@link ChatHost} exposes: the session list, per-session transcripts, and pending interactions.
|
|
8
10
|
*
|
|
@@ -18,6 +20,24 @@ function createLiveState(options = {}) {
|
|
|
18
20
|
const pendings = /* @__PURE__ */ new Map();
|
|
19
21
|
const allPending = writable([]);
|
|
20
22
|
const readables = /* @__PURE__ */ new Map();
|
|
23
|
+
const subscribers = /* @__PURE__ */ new Map();
|
|
24
|
+
/** Recently opened sessions, the most recent last. */
|
|
25
|
+
const recent = /* @__PURE__ */ new Set();
|
|
26
|
+
const visit = (sessionId) => {
|
|
27
|
+
if (!options.evict) return;
|
|
28
|
+
recent.delete(sessionId);
|
|
29
|
+
recent.add(sessionId);
|
|
30
|
+
if (recent.size > RECENT_KEPT) recent.delete(recent.values().next().value);
|
|
31
|
+
};
|
|
32
|
+
const evict = () => {
|
|
33
|
+
const keep = /* @__PURE__ */ new Set([...recent, ...subscribers.keys()]);
|
|
34
|
+
store.evictExcept(keep);
|
|
35
|
+
for (const sessionId of /* @__PURE__ */ new Set([...transcripts.keys(), ...readables.keys()])) {
|
|
36
|
+
if (keep.has(sessionId) || store.getRunningSnapshot(sessionId) || store.getPageSnapshot(sessionId).loadingEarlier) continue;
|
|
37
|
+
transcripts.delete(sessionId);
|
|
38
|
+
readables.delete(sessionId);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
21
41
|
const transcript = (sessionId) => {
|
|
22
42
|
let t = transcripts.get(sessionId);
|
|
23
43
|
if (!t) {
|
|
@@ -51,21 +71,31 @@ function createLiveState(options = {}) {
|
|
|
51
71
|
sessions,
|
|
52
72
|
transcript,
|
|
53
73
|
readable(sessionId, extra) {
|
|
74
|
+
visit(sessionId);
|
|
54
75
|
let r = readables.get(sessionId);
|
|
55
76
|
if (r) return r;
|
|
56
77
|
const { state } = transcript(sessionId);
|
|
57
|
-
let subscribers = 0;
|
|
58
78
|
r = {
|
|
59
79
|
get: state.get,
|
|
60
80
|
subscribe(onChange) {
|
|
61
81
|
const off = state.subscribe(onChange);
|
|
62
|
-
|
|
82
|
+
const count = subscribers.get(sessionId) ?? 0;
|
|
83
|
+
subscribers.set(sessionId, count + 1);
|
|
84
|
+
visit(sessionId);
|
|
85
|
+
if (count === 0) options.onOpen?.(sessionId);
|
|
63
86
|
let done = false;
|
|
64
87
|
return () => {
|
|
65
88
|
if (done) return;
|
|
66
89
|
done = true;
|
|
67
90
|
off();
|
|
68
|
-
|
|
91
|
+
const left = subscribers.get(sessionId) - 1;
|
|
92
|
+
if (left > 0) {
|
|
93
|
+
subscribers.set(sessionId, left);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
subscribers.delete(sessionId);
|
|
97
|
+
options.onClose?.(sessionId);
|
|
98
|
+
if (options.evict) evict();
|
|
69
99
|
};
|
|
70
100
|
},
|
|
71
101
|
...extra?.loadEarlier ? { loadEarlier: extra.loadEarlier } : {}
|
|
@@ -19,12 +19,10 @@ import { fmtTokens, formatCostLabel } from "zidane/chat/pure";
|
|
|
19
19
|
* (`models.list`, refetched on `settings:changed` / `catalog:changed`), the
|
|
20
20
|
* context gauge and breakdown (`sessions.contextBreakdown`, refetched on a
|
|
21
21
|
* session's `turn:end` / `compacting:end`), the run counters (a run meter fed
|
|
22
|
-
* by `run:start`, `stream:progress`, `turn:end`, `run:end`)
|
|
23
|
-
*
|
|
24
|
-
* `localStorage`).
|
|
22
|
+
* by `run:start`, `stream:progress`, `turn:end`, `run:end`) and the picker
|
|
23
|
+
* preferences (this browser's `localStorage`).
|
|
25
24
|
* A session's settled cost and a joined run's progress come from its header
|
|
26
|
-
* (`sessions.getHeader` with `usage`)
|
|
27
|
-
* `hud.get`. The extensions' completion triggers, items and submit hooks
|
|
25
|
+
* (`sessions.getHeader` with `usage`). The extensions' completion triggers, items and submit hooks
|
|
28
26
|
* (`completions.*`, triggers refetched on `catalog:changed`), the agent
|
|
29
27
|
* profiles (`agents.list`), the picks remembered across apps (`prefs.*`,
|
|
30
28
|
* the server's `state.json`), the files `@` lists under a folder
|
|
@@ -56,11 +54,24 @@ function mapped(resource, map) {
|
|
|
56
54
|
subscribe: resource.subscribe
|
|
57
55
|
};
|
|
58
56
|
}
|
|
59
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* `models.list`'s providers as catalog rows. A provider with several accounts lists once per account,
|
|
59
|
+
* each with that account's own models (the provider's when it has none): the picker shows the active
|
|
60
|
+
* account's list, and a session pinned to an account picks from that account's.
|
|
61
|
+
*/
|
|
60
62
|
function toModelEntries(providers) {
|
|
61
|
-
return providers.flatMap((p) => p.
|
|
63
|
+
return providers.flatMap((p) => p.accounts?.length ? p.accounts.flatMap((a) => modelRows(p, a.models ?? p.models, {
|
|
64
|
+
id: a.id,
|
|
65
|
+
label: a.label,
|
|
66
|
+
...a.active ? { active: true } : {}
|
|
67
|
+
})) : modelRows(p, p.models));
|
|
68
|
+
}
|
|
69
|
+
/** One provider's (or one of its accounts') models as catalog rows. */
|
|
70
|
+
function modelRows(p, models, account) {
|
|
71
|
+
return models.map((m) => ({
|
|
62
72
|
providerKey: p.key,
|
|
63
73
|
providerLabel: p.label,
|
|
74
|
+
...account ? { account } : {},
|
|
64
75
|
modelId: m.id,
|
|
65
76
|
modelName: m.name ?? m.id,
|
|
66
77
|
contextWindow: m.contextWindow ?? null,
|
|
@@ -71,7 +82,7 @@ function toModelEntries(providers) {
|
|
|
71
82
|
label,
|
|
72
83
|
...description ? { description } : {}
|
|
73
84
|
})) } : {}
|
|
74
|
-
}))
|
|
85
|
+
}));
|
|
75
86
|
}
|
|
76
87
|
/** `models.list`'s image models as the picker's Image tab lists them. */
|
|
77
88
|
/** A session row as `#` lists it. */
|
|
@@ -100,19 +111,6 @@ function toImageRows(providers) {
|
|
|
100
111
|
...m.isDefault ? { isDefault: true } : {}
|
|
101
112
|
})));
|
|
102
113
|
}
|
|
103
|
-
/** A `hud:state` push as the strip's snapshot: each session's statuses, its badges. */
|
|
104
|
-
function toHudSnapshot(signal) {
|
|
105
|
-
const sessions = {};
|
|
106
|
-
for (const [sessionId, byExtension] of Object.entries(signal.sessions ?? {})) sessions[sessionId] = Object.entries(byExtension).map(([extension, s]) => ({
|
|
107
|
-
extension,
|
|
108
|
-
text: s.text,
|
|
109
|
-
loader: s.loader
|
|
110
|
-
}));
|
|
111
|
-
return {
|
|
112
|
-
sessions,
|
|
113
|
-
badges: signal.badges ?? {}
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
114
|
/** The gauge a breakdown measures, with what the catalog says of its model. */
|
|
117
115
|
function toContextStatus(breakdown, catalog, providerKey) {
|
|
118
116
|
const model = catalog.find((m) => m.modelId === breakdown.modelId && (!providerKey || m.providerKey === providerKey)) ?? catalog.find((m) => m.modelId === breakdown.modelId);
|
|
@@ -139,13 +137,7 @@ function createServerComposerHost(options) {
|
|
|
139
137
|
const unsubscribe = client.onSignal((signal) => {
|
|
140
138
|
for (const listener of listeners) listener(signal);
|
|
141
139
|
});
|
|
142
|
-
const offRuns = client.onSignal((signal) =>
|
|
143
|
-
meter.handle(signal);
|
|
144
|
-
if (signal.kind === "hud:state" && hudListeners.size > 0) {
|
|
145
|
-
const snapshot = toHudSnapshot(signal);
|
|
146
|
-
for (const listener of hudListeners) listener(snapshot);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
140
|
+
const offRuns = client.onSignal((signal) => meter.handle(signal));
|
|
149
141
|
const on = (kinds, listener) => {
|
|
150
142
|
const filtered = (signal) => {
|
|
151
143
|
if (kinds.includes(signal.kind)) listener(signal);
|
|
@@ -204,7 +196,6 @@ function createServerComposerHost(options) {
|
|
|
204
196
|
return rows;
|
|
205
197
|
};
|
|
206
198
|
const meter = createRunMeter();
|
|
207
|
-
const hudListeners = /* @__PURE__ */ new Set();
|
|
208
199
|
const skills = async (scope) => {
|
|
209
200
|
const { skills: entries } = await client.call("catalog.skills", scope.cwd ? { cwd: scope.cwd } : {});
|
|
210
201
|
return entries.filter((entry) => entry.enabled).map((entry) => ({
|
|
@@ -439,16 +430,8 @@ function createServerComposerHost(options) {
|
|
|
439
430
|
noteProgress: meter.noteProgress,
|
|
440
431
|
settleCost: meter.settleCost
|
|
441
432
|
},
|
|
442
|
-
hud: {
|
|
443
|
-
...client.can("hud.get") ? { get: async () => toHudSnapshot(await client.call("hud.get", {})) } : {},
|
|
444
|
-
onState: (listener) => {
|
|
445
|
-
hudListeners.add(listener);
|
|
446
|
-
return () => void hudListeners.delete(listener);
|
|
447
|
-
}
|
|
448
|
-
},
|
|
449
433
|
close() {
|
|
450
434
|
listeners.clear();
|
|
451
|
-
hudListeners.clear();
|
|
452
435
|
unsubscribe();
|
|
453
436
|
offRuns();
|
|
454
437
|
resources.reset();
|