zidane-ui 9.0.4 → 9.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/adapters/extension-modules.d.ts +147 -0
- package/dist/adapters/extension-modules.js +244 -0
- package/dist/adapters/index.d.ts +3 -1
- package/dist/adapters/index.js +3 -1
- package/dist/adapters/live.d.ts +6 -0
- package/dist/adapters/live.js +33 -3
- package/dist/adapters/server-composer-host.js +20 -37
- package/dist/adapters/server-extensions-host.d.ts +113 -0
- package/dist/adapters/server-extensions-host.js +829 -0
- package/dist/adapters/server-host.js +28 -6
- package/dist/adapters/server-machines-host.js +1 -1
- package/dist/adapters/server-settings-host.js +1 -1
- package/dist/adapters/server-settings-sections.js +36 -13
- package/dist/adapters/server-transcript-members.d.ts +1 -1
- package/dist/adapters/server-transcript-members.js +19 -1
- package/dist/app/AppHostProvider.d.ts +4 -1
- package/dist/app/AppHostProvider.js +11 -4
- package/dist/app/ModalProvider.d.ts +9 -3
- package/dist/app/ModalProvider.js +45 -25
- package/dist/app/headless/app-host.d.ts +3 -0
- package/dist/appearance/AppearanceProvider.d.ts +11 -4
- package/dist/appearance/AppearanceProvider.js +18 -6
- package/dist/appearance/headless/index.js +1 -1
- package/dist/appearance/headless/prefs.d.ts +2 -2
- package/dist/appearance/index.d.ts +1 -1
- package/dist/approvals/ApprovalBar.js +7 -1
- package/dist/approvals/FileEditApproval.js +7 -3
- package/dist/approvals/headless/index.js +2 -2
- package/dist/approvals/headless/labels.js +3 -3
- package/dist/chat/HostBadge.js +1 -1
- package/dist/chat/HostStatusDot.js +1 -1
- package/dist/chat/HostTranscript.d.ts +3 -1
- package/dist/chat/HostTranscript.js +5 -3
- package/dist/chat/RunEstimateChip.d.ts +53 -0
- package/dist/chat/RunEstimateChip.js +116 -0
- package/dist/chat/SessionFilterMenu.d.ts +77 -5
- package/dist/chat/SessionFilterMenu.js +86 -4
- package/dist/chat/SessionGroupHeader.d.ts +6 -2
- package/dist/chat/SessionGroupHeader.js +35 -3
- package/dist/chat/SessionHostHeader.js +1 -1
- package/dist/chat/SessionList.js +1 -1
- package/dist/chat/SessionListRow.d.ts +8 -1
- package/dist/chat/SessionListRow.js +5 -4
- package/dist/chat/Throbber.js +0 -3
- package/dist/chat/Transcript.d.ts +1 -1
- package/dist/chat/Transcript.js +112 -57
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/ConversationBadges.js +18 -11
- package/dist/chat/composer/HostPicker.js +1 -1
- package/dist/chat/composer/ProjectMenu.d.ts +8 -1
- package/dist/chat/composer/ProjectMenu.js +11 -8
- package/dist/chat/composer/RetryPill.js +1 -1
- package/dist/chat/composer/SelectTurnHint.d.ts +19 -0
- package/dist/chat/composer/SelectTurnHint.js +28 -0
- package/dist/chat/composer/ServerScopeToggle.js +4 -1
- package/dist/chat/composer/composer-bus.d.ts +8 -1
- package/dist/chat/composer/composer-bus.js +10 -1
- package/dist/chat/composer/index.d.ts +4 -4
- package/dist/chat/composer/index.js +3 -3
- package/dist/chat/composer/use-composer-stores.js +1 -1
- package/dist/chat/composer/use-draft-target.d.ts +19 -1
- package/dist/chat/composer/use-draft-target.js +14 -1
- package/dist/chat/composer/use-run-meter.js +1 -1
- package/dist/chat/headless/block-runs.d.ts +57 -0
- package/dist/chat/headless/block-runs.js +123 -0
- package/dist/chat/headless/chip-labels.d.ts +1 -0
- package/dist/chat/headless/chip-labels.js +1 -0
- package/dist/chat/headless/composer/conversation-badges.d.ts +8 -6
- package/dist/chat/headless/composer/conversation-badges.js +26 -24
- package/dist/chat/headless/composer/host-chrome.d.ts +2 -27
- package/dist/chat/headless/composer/host.d.ts +1 -3
- package/dist/chat/headless/composer/index.d.ts +3 -4
- package/dist/chat/headless/composer/index.js +5 -6
- package/dist/chat/headless/composer/labels-chrome.d.ts +1 -1
- package/dist/chat/headless/composer/labels-chrome.js +1 -1
- package/dist/chat/headless/extension-sources.d.ts +17 -0
- package/dist/chat/headless/extension-sources.js +52 -0
- package/dist/chat/headless/fixture-transcript.d.ts +6 -1
- package/dist/chat/headless/fixture-transcript.js +49 -0
- package/dist/chat/headless/host.d.ts +8 -0
- package/dist/chat/headless/hosts.d.ts +2 -0
- package/dist/chat/headless/index.d.ts +10 -8
- package/dist/chat/headless/index.js +21 -18
- package/dist/chat/headless/labels.d.ts +79 -1
- package/dist/chat/headless/labels.js +80 -3
- package/dist/chat/headless/session-list.d.ts +65 -2
- package/dist/chat/headless/session-list.js +10 -2
- package/dist/chat/headless/sidebar/badges.d.ts +2 -0
- package/dist/chat/headless/sidebar/badges.js +20 -1
- package/dist/chat/headless/sidebar/directory.d.ts +46 -6
- package/dist/chat/headless/sidebar/directory.js +198 -22
- package/dist/chat/headless/sidebar/estimates.d.ts +55 -0
- package/dist/chat/headless/sidebar/estimates.js +91 -0
- package/dist/chat/headless/sidebar/index.d.ts +6 -4
- package/dist/chat/headless/sidebar/index.js +6 -3
- package/dist/chat/headless/sidebar/labels.d.ts +71 -1
- package/dist/chat/headless/sidebar/labels.js +17 -0
- package/dist/chat/headless/sidebar/query.d.ts +276 -0
- package/dist/chat/headless/sidebar/query.js +450 -0
- package/dist/chat/headless/sidebar/rows.d.ts +104 -13
- package/dist/chat/headless/sidebar/rows.js +189 -5
- package/dist/chat/headless/sidebar/types.d.ts +37 -4
- package/dist/chat/headless/sidebar/types.js +8 -0
- package/dist/chat/headless/sidebar/view.d.ts +25 -1
- package/dist/chat/headless/sidebar/view.js +56 -3
- package/dist/chat/headless/streams/live-events.js +2 -1
- package/dist/chat/headless/streams/session-streams.js +6 -0
- package/dist/chat/headless/transcript/batch.d.ts +21 -1
- package/dist/chat/headless/transcript/batch.js +55 -10
- package/dist/chat/headless/transcript/collapse.js +22 -3
- package/dist/chat/headless/transcript/fold-attachments.js +1 -1
- package/dist/chat/headless/transcript/fold.js +26 -10
- package/dist/chat/headless/transcript/rows.d.ts +15 -1
- package/dist/chat/headless/transcript-labels.d.ts +1 -0
- package/dist/chat/index.d.ts +14 -6
- package/dist/chat/index.js +40 -32
- package/dist/chat/rich-composer/RichComposer.js +32 -1
- package/dist/chat/rich-composer/badge-decorations.js +1 -1
- package/dist/chat/rich-composer/use-extension-composer.d.ts +32 -0
- package/dist/chat/rich-composer/use-extension-composer.js +46 -0
- package/dist/chat/sidebar/MainSessionRow.js +1 -1
- package/dist/chat/sidebar/ProjectIcon.d.ts +25 -6
- package/dist/chat/sidebar/ProjectIcon.js +79 -34
- package/dist/chat/sidebar/SessionSidebar.d.ts +34 -1
- package/dist/chat/sidebar/SessionSidebar.js +161 -25
- package/dist/chat/sidebar/SidebarDecoration.d.ts +38 -0
- package/dist/chat/sidebar/SidebarDecoration.js +61 -0
- package/dist/chat/sidebar/SidebarFilterMenu.d.ts +15 -2
- package/dist/chat/sidebar/SidebarFilterMenu.js +226 -8
- package/dist/chat/sidebar/SidebarFooter.d.ts +3 -1
- package/dist/chat/sidebar/SidebarFooter.js +17 -4
- package/dist/chat/sidebar/SidebarGroupHeader.d.ts +17 -4
- package/dist/chat/sidebar/SidebarGroupHeader.js +23 -4
- package/dist/chat/sidebar/SidebarRowView.d.ts +30 -0
- package/dist/chat/sidebar/SidebarRowView.js +117 -0
- package/dist/chat/sidebar/SidebarSessionRow.d.ts +4 -1
- package/dist/chat/sidebar/SidebarSessionRow.js +22 -4
- package/dist/chat/sidebar/SpaceSwitcher.d.ts +12 -5
- package/dist/chat/sidebar/SpaceSwitcher.js +142 -49
- package/dist/chat/sidebar/SpacesSection.js +4 -2
- package/dist/chat/sidebar/collapsed.d.ts +24 -0
- package/dist/chat/sidebar/collapsed.js +44 -0
- package/dist/chat/sidebar/index.d.ts +8 -4
- package/dist/chat/sidebar/index.js +6 -2
- package/dist/chat/sidebar/session-menu.d.ts +2 -0
- package/dist/chat/sidebar/session-menu.js +8 -2
- package/dist/chat/sidebar/sidebar-live.d.ts +12 -1
- package/dist/chat/sidebar/sidebar-live.js +57 -17
- package/dist/chat/sidebar/useAgentNames.d.ts +8 -0
- package/dist/chat/sidebar/useAgentNames.js +13 -0
- package/dist/chat/sidebar/useSaveViewAsSpace.d.ts +13 -0
- package/dist/chat/sidebar/useSaveViewAsSpace.js +44 -0
- package/dist/chat/sidebar/useSessionDirectoryView.d.ts +4 -1
- package/dist/chat/sidebar/useSessionDirectoryView.js +46 -12
- package/dist/chat/sidebar/useSidebarKeyboardNav.js +3 -1
- package/dist/chat/testing/composer.contract.d.ts +2 -6
- package/dist/chat/testing/composer.contract.js +2 -31
- package/dist/chat/testing/contract.d.ts +6 -1
- package/dist/chat/testing/contract.js +30 -3
- package/dist/chat/testing/fixture-composer-chrome.d.ts +2 -6
- package/dist/chat/testing/fixture-composer-chrome.js +1 -17
- package/dist/chat/transcript/AnsiText.d.ts +27 -0
- package/dist/chat/transcript/AnsiText.js +73 -0
- package/dist/chat/transcript/BadgeMenu.d.ts +2 -0
- package/dist/chat/transcript/BadgeMenu.js +22 -6
- package/dist/chat/transcript/CardMarkdown.js +17 -5
- package/dist/chat/transcript/ChipCard.js +6 -0
- package/dist/chat/transcript/ChipCards.js +2 -2
- package/dist/chat/transcript/CodemodeScript.d.ts +33 -0
- package/dist/chat/transcript/CodemodeScript.js +212 -0
- package/dist/chat/transcript/EditDiffBlock.js +4 -1
- package/dist/chat/transcript/FileChip.js +20 -7
- package/dist/chat/transcript/InlineChipText.js +1 -1
- package/dist/chat/transcript/InteractionToolBody.js +32 -13
- package/dist/chat/transcript/LiveOutput.d.ts +21 -0
- package/dist/chat/transcript/LiveOutput.js +42 -0
- package/dist/chat/transcript/MermaidDiagram.d.ts +22 -0
- package/dist/chat/transcript/MermaidDiagram.js +410 -0
- package/dist/chat/transcript/PromptEcho.js +5 -5
- package/dist/chat/transcript/ProseMarkdown.js +9 -6
- package/dist/chat/transcript/ReferenceText.js +7 -2
- package/dist/chat/transcript/SelectTurnHint.js +1 -1
- package/dist/chat/transcript/SubagentBlock.d.ts +4 -2
- package/dist/chat/transcript/SubagentBlock.js +5 -2
- package/dist/chat/transcript/TranscriptRow.js +28 -6
- package/dist/chat/transcript/TranscriptSearch.js +1 -1
- package/dist/chat/transcript/actions.d.ts +6 -0
- package/dist/chat/transcript/badges.js +5 -2
- package/dist/chat/transcript/extension-renderers.d.ts +36 -0
- package/dist/chat/transcript/extension-renderers.js +133 -0
- package/dist/chat/transcript/fold-worker.js +2 -2
- package/dist/chat/transcript/fold.js +6 -4
- package/dist/chat/transcript/index.d.ts +8 -2
- package/dist/chat/transcript/index.js +35 -29
- package/dist/chat/transcript/markdown-cache.js +16 -7
- package/dist/chat/transcript/markdown.d.ts +15 -1
- package/dist/chat/transcript/markdown.js +71 -6
- package/dist/chat/transcript/messages.js +3 -2
- package/dist/chat/transcript/notices.js +1 -1
- package/dist/chat/transcript/prompt.js +1 -1
- package/dist/chat/transcript/prose.js +1 -1
- package/dist/chat/transcript/recent-map.d.ts +20 -0
- package/dist/chat/transcript/recent-map.js +22 -0
- package/dist/chat/transcript/references.js +7 -3
- package/dist/chat/transcript/renderers.d.ts +11 -1
- package/dist/chat/transcript/renderers.js +14 -4
- package/dist/chat/transcript/script-input.d.ts +17 -0
- package/dist/chat/transcript/script-input.js +16 -0
- package/dist/chat/transcript/shell-block-scope.d.ts +29 -0
- package/dist/chat/transcript/shell-block-scope.js +18 -0
- package/dist/chat/transcript/shell-block.d.ts +27 -0
- package/dist/chat/transcript/shell-block.js +306 -0
- package/dist/chat/transcript/tool-batch.js +4 -9
- package/dist/chat/transcript/tool-details.js +7 -67
- package/dist/chat/transcript/tool-parts.d.ts +18 -6
- package/dist/chat/transcript/tool-parts.js +15 -5
- package/dist/chat/transcript/tool-payload.d.ts +21 -0
- package/dist/chat/transcript/tool-payload.js +80 -0
- package/dist/chat/transcript/tool-row.js +158 -96
- package/dist/chat/transcript/useTranscriptScroll.js +3 -2
- package/dist/chat/transcript/user-bash.js +3 -2
- package/dist/chat/transcript-options.d.ts +15 -0
- package/dist/chat/transcript-options.js +40 -0
- package/dist/code/CodeHighlightProvider.d.ts +3 -3
- package/dist/code/CodeHighlightProvider.js +4 -4
- package/dist/code/HighlightedCode.d.ts +7 -2
- package/dist/code/HighlightedCode.js +7 -71
- package/dist/code/code-themes.d.ts +13 -6
- package/dist/code/code-themes.js +385 -13
- package/dist/code/editor/CodeHover.d.ts +5 -4
- package/dist/code/editor/CodeHover.js +20 -16
- package/dist/code/editor/HighlightWorkers.js +2 -2
- package/dist/code/editor/edit-session.js +1 -0
- package/dist/code/editor/environment.d.ts +1 -1
- package/dist/code/editor/environment.js +1 -1
- package/dist/code/editor/index.d.ts +2 -2
- package/dist/code/editor/index.js +2 -2
- package/dist/code/editor/pierre-theme.d.ts +5 -5
- package/dist/code/editor/pierre-theme.js +6 -5
- package/dist/code/highlight-lines.d.ts +24 -0
- package/dist/code/highlight-lines.js +41 -0
- package/dist/code/highlight.worker.js +2 -14
- package/dist/code/highlighter.d.ts +24 -9
- package/dist/code/highlighter.js +1 -4
- package/dist/code/highlights.d.ts +12 -0
- package/dist/code/highlights.js +47 -0
- package/dist/code/mermaid-lexer.d.ts +26 -0
- package/dist/code/mermaid-lexer.js +303 -0
- package/dist/code/shiki-theme.d.ts +6 -6
- package/dist/code/shiki-theme.js +3 -3
- package/dist/code/use-highlighted-html.d.ts +5 -0
- package/dist/code/use-highlighted-html.js +75 -0
- package/dist/components/BrandMark.d.ts +6 -4
- package/dist/components/BrandMark.js +5 -2
- package/dist/components/CodeFrame.d.ts +5 -0
- package/dist/components/CodeFrame.js +27 -23
- package/dist/components/Form.js +1 -1
- package/dist/core.css +82 -11
- package/dist/dist/{index-Cx7GDZlz.d.ts → index-WlE93Q6d.d.ts} +255 -51
- package/dist/extensions/ExtensionComponent.d.ts +62 -0
- package/dist/extensions/ExtensionComponent.js +120 -0
- package/dist/extensions/ExtensionDialogHost.d.ts +31 -0
- package/dist/extensions/ExtensionDialogHost.js +439 -0
- package/dist/extensions/ExtensionRenderer.d.ts +30 -0
- package/dist/extensions/ExtensionRenderer.js +78 -0
- package/dist/extensions/ExtensionScreen.d.ts +24 -0
- package/dist/extensions/ExtensionScreen.js +120 -0
- package/dist/extensions/ExtensionSettingsPage.d.ts +19 -0
- package/dist/extensions/ExtensionSettingsPage.js +116 -0
- package/dist/extensions/ExtensionSettingsPages.d.ts +17 -0
- package/dist/extensions/ExtensionSettingsPages.js +33 -0
- package/dist/extensions/ExtensionSettingsSidebar.d.ts +63 -0
- package/dist/extensions/ExtensionSettingsSidebar.js +360 -0
- package/dist/extensions/ExtensionSlot.d.ts +44 -0
- package/dist/extensions/ExtensionSlot.js +161 -0
- package/dist/extensions/ExtensionWebview.d.ts +32 -0
- package/dist/extensions/ExtensionWebview.js +80 -0
- package/dist/extensions/ExtensionsProvider.d.ts +42 -0
- package/dist/extensions/ExtensionsProvider.js +104 -0
- package/dist/extensions/SettingsWireForm.d.ts +44 -0
- package/dist/extensions/SettingsWireForm.js +104 -0
- package/dist/extensions/headless/dialog-queue.d.ts +27 -0
- package/dist/extensions/headless/dialog-queue.js +68 -0
- package/dist/extensions/headless/effect-channel.d.ts +15 -0
- package/dist/extensions/headless/effect-channel.js +33 -0
- package/dist/extensions/headless/effect-router.d.ts +34 -0
- package/dist/extensions/headless/effect-router.js +50 -0
- package/dist/extensions/headless/fixture-host.d.ts +110 -0
- package/dist/extensions/headless/fixture-host.js +258 -0
- package/dist/extensions/headless/host.d.ts +433 -0
- package/dist/extensions/headless/host.js +27 -0
- package/dist/extensions/headless/index.d.ts +10 -0
- package/dist/extensions/headless/index.js +10 -0
- package/dist/extensions/headless/labels.d.ts +45 -0
- package/dist/extensions/headless/labels.js +49 -0
- package/dist/extensions/headless/links.d.ts +30 -0
- package/dist/extensions/headless/links.js +34 -0
- package/dist/extensions/headless/select.d.ts +120 -0
- package/dist/extensions/headless/select.js +191 -0
- package/dist/extensions/headless/webview-bridge.d.ts +71 -0
- package/dist/extensions/headless/webview-bridge.js +78 -0
- package/dist/extensions/headless/wire.d.ts +113 -0
- package/dist/extensions/headless/wire.js +38 -0
- package/dist/extensions/hooks.d.ts +88 -0
- package/dist/extensions/hooks.js +151 -0
- package/dist/extensions/index.d.ts +15 -0
- package/dist/extensions/index.js +15 -0
- package/dist/extensions/kit.d.ts +19 -0
- package/dist/extensions/kit.js +19 -0
- package/dist/extensions/links.d.ts +79 -0
- package/dist/extensions/links.js +94 -0
- package/dist/extensions/testing/contract.d.ts +80 -0
- package/dist/extensions/testing/contract.js +407 -0
- package/dist/extensions/testing/index.d.ts +2 -0
- package/dist/extensions/testing/index.js +1 -0
- package/dist/extensions/useExtensionsLabels.d.ts +6 -0
- package/dist/extensions/useExtensionsLabels.js +18 -0
- package/dist/files/DiffsTab.js +7 -19
- package/dist/files/EditorColumn.js +1 -1
- package/dist/files/EditorEnvironmentRoot.d.ts +15 -0
- package/dist/files/EditorEnvironmentRoot.js +55 -0
- package/dist/files/MediaDiff.js +1 -1
- package/dist/files/drafts-store.d.ts +10 -0
- package/dist/files/drafts-store.js +30 -1
- package/dist/files/headless/lsp-edits.d.ts +4 -1
- package/dist/files/headless/lsp-edits.js +14 -2
- package/dist/files/index.d.ts +2 -1
- package/dist/files/index.js +2 -1
- package/dist/files/session-patch.d.ts +11 -0
- package/dist/files/session-patch.js +44 -0
- package/dist/files/useEntryActions.js +1 -1
- package/dist/files/useLsp.js +5 -2
- package/dist/files/useOpenFiles.js +1 -1
- package/dist/git/BranchMenu.d.ts +1 -5
- package/dist/git/BranchMenu.js +23 -39
- package/dist/git/GitBar.d.ts +1 -1
- package/dist/git/GitBar.js +7 -1
- package/dist/git/ImportRepoDialog.d.ts +3 -1
- package/dist/git/ImportRepoDialog.js +8 -6
- package/dist/git/MoveSessionDialog.js +3 -1
- package/dist/git/headless/labels.d.ts +0 -2
- package/dist/git/headless/labels.js +0 -2
- package/dist/hooks/useDisplayPath.d.ts +40 -0
- package/dist/hooks/useDisplayPath.js +75 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +4 -2
- package/dist/keybindings/KeyCommands.js +1 -1
- package/dist/keybindings/KeybindingsProvider.js +1 -1
- package/dist/keybindings/headless/index.js +2 -2
- package/dist/keybindings/headless/overrides.js +1 -1
- package/dist/keybindings/index.d.ts +2 -1
- package/dist/keybindings/index.js +2 -1
- package/dist/keybindings/press.d.ts +27 -0
- package/dist/keybindings/press.js +67 -0
- package/dist/machines/Banners.js +1 -1
- package/dist/machines/HostSyncPanel.js +1 -1
- package/dist/machines/HostsSection.js +1 -1
- package/dist/machines/SyncOutcomeBadge.js +1 -1
- package/dist/machines/headless/index.js +1 -1
- package/dist/machines/headless/labels.d.ts +1 -0
- package/dist/machines/headless/labels.js +1 -0
- package/dist/machines/headless/messages.d.ts +2 -1
- package/dist/machines/headless/messages.js +4 -3
- package/dist/machines/settings-section.d.ts +1 -1
- package/dist/onboarding/conversation.js +21 -3
- package/dist/onboarding/demos/features.d.ts +5 -1
- package/dist/onboarding/demos/features.js +80 -1
- package/dist/onboarding/headless/fixture-host.d.ts +2 -2
- package/dist/onboarding/headless/host.d.ts +2 -2
- package/dist/onboarding/headless/labels.d.ts +2 -0
- package/dist/onboarding/headless/labels.js +2 -0
- package/dist/onboarding/index.d.ts +4 -2
- package/dist/onboarding/index.js +3 -2
- package/dist/onboarding/marks.d.ts +29 -7
- package/dist/onboarding/marks.js +38 -12
- package/dist/onboarding/skills/SkillSourceBrowser.js +56 -247
- package/dist/onboarding/skills/parts.d.ts +31 -4
- package/dist/onboarding/skills/parts.js +8 -11
- package/dist/onboarding/sources/SourceBrowser.d.ts +87 -0
- package/dist/onboarding/sources/SourceBrowser.js +292 -0
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ConnectorsStep.js +3 -3
- package/dist/onboarding/steps/ConversationStep.js +2 -1
- package/dist/onboarding/steps/ExtensionsStep.js +2 -2
- package/dist/onboarding/steps/ReadyStep.js +2 -2
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/palette/app-sources.js +1 -1
- package/dist/path.d.ts +24 -2
- package/dist/path.js +34 -2
- package/dist/session/ArtifactRowChips.js +11 -2
- package/dist/session/ArtifactsPanel.d.ts +2 -0
- package/dist/session/ArtifactsPanel.js +67 -27
- package/dist/session/ProjectHome.d.ts +82 -0
- package/dist/session/ProjectHome.js +518 -0
- package/dist/session/ProviderUsageProvider.d.ts +3 -1
- package/dist/session/ProviderUsageProvider.js +5 -2
- package/dist/session/QueueTab.js +1 -1
- package/dist/session/SessionCacheFacts.js +1 -1
- package/dist/session/SessionDetailsDialog.d.ts +1 -1
- package/dist/session/SessionDetailsDialog.js +5 -2
- package/dist/session/SessionHeader.d.ts +3 -1
- package/dist/session/SessionHeader.js +7 -1
- package/dist/session/SideChat.js +2 -2
- package/dist/session/TodosPanel.js +4 -1
- package/dist/session/UsagePanel.js +139 -17
- package/dist/session/WelcomeScreen.d.ts +1 -1
- package/dist/session/WelcomeScreen.js +46 -502
- package/dist/session/headless/fixture-host.js +43 -1
- package/dist/session/headless/home-layout.d.ts +137 -0
- package/dist/session/headless/home-layout.js +235 -0
- package/dist/session/headless/host.d.ts +3 -1
- package/dist/session/headless/index.d.ts +4 -3
- package/dist/session/headless/index.js +4 -3
- package/dist/session/headless/labels.d.ts +33 -36
- package/dist/session/headless/labels.js +48 -47
- package/dist/session/headless/usage-format.d.ts +2 -92
- package/dist/session/headless/usage-format.js +2 -181
- package/dist/session/headless/usage.d.ts +15 -2
- package/dist/session/headless/usage.js +15 -1
- package/dist/session/index.d.ts +3 -1
- package/dist/session/index.js +4 -2
- package/dist/session/modal-shell.d.ts +8 -0
- package/dist/session/modal-shell.js +18 -0
- package/dist/session/testing/contract.d.ts +1 -1
- package/dist/session/testing/contract.js +16 -0
- package/dist/session/testing/demo.js +28 -4
- package/dist/settings/SettingsNav.d.ts +3 -2
- package/dist/settings/SettingsNav.js +86 -13
- package/dist/settings/SettingsRowsPage.d.ts +2 -2
- package/dist/settings/SettingsShell.d.ts +3 -1
- package/dist/settings/SettingsShell.js +16 -9
- package/dist/settings/headless/catalog.js +20 -0
- package/dist/settings/headless/fixture-sections.d.ts +10 -1
- package/dist/settings/headless/fixture-sections.js +88 -3
- package/dist/settings/headless/host.d.ts +2 -0
- package/dist/settings/headless/index.d.ts +4 -4
- package/dist/settings/headless/index.js +1 -1
- package/dist/settings/headless/layout.d.ts +8 -4
- package/dist/settings/headless/layout.js +22 -16
- package/dist/settings/headless/registry.d.ts +14 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/headless/sections-host.d.ts +36 -3
- package/dist/settings/index.d.ts +5 -3
- package/dist/settings/index.js +8 -6
- package/dist/settings/sections/appearance/AppearanceSection.js +4 -4
- package/dist/settings/sections/claude-import/ClaudeImportDialog.js +1 -1
- package/dist/settings/sections/editor/EditorSection.js +1 -1
- package/dist/settings/sections/environments/EnvironmentsSection.js +1 -1
- package/dist/settings/sections/extensions/ChangeOriginDialog.d.ts +48 -0
- package/dist/settings/sections/extensions/ChangeOriginDialog.js +181 -0
- package/dist/settings/sections/extensions/CreateExtensionDialog.js +5 -2
- package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +76 -0
- package/dist/settings/sections/extensions/ExtensionConfigRows.js +349 -0
- package/dist/settings/sections/extensions/ExtensionOptionsSection.d.ts +1 -4
- package/dist/settings/sections/extensions/ExtensionOptionsSection.js +23 -286
- package/dist/settings/sections/extensions/ExtensionPicksBar.d.ts +46 -0
- package/dist/settings/sections/extensions/ExtensionPicksBar.js +102 -0
- package/dist/settings/sections/extensions/ExtensionSourceBrowser.d.ts +50 -0
- package/dist/settings/sections/extensions/ExtensionSourceBrowser.js +164 -0
- package/dist/settings/sections/extensions/ExtensionsSection.d.ts +6 -2
- package/dist/settings/sections/extensions/ExtensionsSection.js +233 -42
- package/dist/settings/sections/extensions/labels.d.ts +26 -5
- package/dist/settings/sections/extensions/labels.js +28 -3
- package/dist/settings/sections/extensions/options-labels.d.ts +2 -0
- package/dist/settings/sections/extensions/options-labels.js +2 -0
- package/dist/settings/sections/host-catalog/HostCatalogSection.js +104 -30
- package/dist/settings/sections/host-catalog/labels.js +4 -2
- package/dist/settings/sections/index.d.ts +5 -3
- package/dist/settings/sections/index.js +8 -6
- package/dist/settings/sections/instructions/InstructionsSection.js +7 -4
- package/dist/settings/sections/mcp/McpSection.js +1 -1
- package/dist/settings/sections/mcp/McpServerRow.js +3 -2
- package/dist/settings/sections/models/AgentDefaults.js +1 -1
- package/dist/settings/sections/models/ModelPickField.js +1 -1
- package/dist/settings/sections/models/ModelRows.js +3 -3
- package/dist/settings/sections/plugins/PluginsSection.js +3 -1
- package/dist/settings/sections/providers/ProvidersSection.js +3 -3
- package/dist/settings/sections/providers/ServerProvidersSection.js +2 -2
- package/dist/settings/sections/providers/ServerSignIn.js +3 -3
- package/dist/settings/sections/shared/catalog.d.ts +6 -1
- package/dist/settings/sections/shared/catalog.js +28 -22
- package/dist/settings/sections/skills/SkillList.js +2 -2
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/styles.css +526 -21
- package/dist/terminal/HostTerminalSurface.js +18 -8
- package/dist/terminal/TerminalProvider.d.ts +3 -1
- package/dist/terminal/TerminalProvider.js +5 -1
- package/dist/terminal/headless/store.d.ts +17 -0
- package/dist/terminal/headless/store.js +31 -0
- package/dist/terminal/index.d.ts +2 -2
- package/dist/terminal/index.js +2 -2
- package/dist/theme/runtime-icons.d.ts +50 -0
- package/dist/theme/runtime-icons.js +95 -0
- package/dist/workspace/PanelContentView.d.ts +33 -4
- package/dist/workspace/PanelContentView.js +192 -58
- package/dist/workspace/PanelCorner.d.ts +35 -0
- package/dist/workspace/PanelCorner.js +68 -0
- package/dist/workspace/PanelGroups.d.ts +7 -2
- package/dist/workspace/PanelGroups.js +7 -3
- package/dist/workspace/PanelHome.d.ts +19 -0
- package/dist/workspace/PanelHome.js +74 -0
- package/dist/workspace/PanelItems.d.ts +28 -0
- package/dist/workspace/PanelItems.js +330 -0
- package/dist/workspace/PanelStrip.d.ts +5 -1
- package/dist/workspace/PanelStrip.js +6 -4
- package/dist/workspace/SidePanel.d.ts +9 -3
- package/dist/workspace/SidePanel.js +47 -10
- package/dist/workspace/TabParking.d.ts +2 -0
- package/dist/workspace/TabParking.js +8 -2
- package/dist/workspace/WorkspaceProvider.d.ts +1 -1
- package/dist/workspace/WorkspaceProvider.js +10 -6
- package/dist/workspace/extension-tabs.d.ts +36 -0
- package/dist/workspace/extension-tabs.js +175 -0
- package/dist/workspace/headless/host.d.ts +6 -2
- package/dist/workspace/headless/index.js +1 -1
- package/dist/workspace/headless/labels.d.ts +7 -0
- package/dist/workspace/headless/labels.js +14 -0
- package/dist/workspace/headless/view.d.ts +5 -0
- package/dist/workspace/index.d.ts +3 -2
- package/dist/workspace/index.js +3 -2
- package/package.json +37 -9
- package/src/styles/components.css +24 -8
- package/src/styles/motion.css +35 -0
- package/src/styles/primitives.css +5 -2
- package/src/styles/rich-composer.css +7 -2
- package/src/styles/sidebar.css +24 -0
- package/src/styles/transcript.css +329 -0
- package/src/styles/workspace.css +58 -0
- package/dist/chat/composer/use-hud.d.ts +0 -16
- package/dist/chat/composer/use-hud.js +0 -36
- package/dist/chat/headless/composer/hud.d.ts +0 -25
- package/dist/chat/headless/composer/hud.js +0 -66
- package/src/adapters/browser-appearance-host.ts +0 -51
- package/src/adapters/browser-keybindings-host.ts +0 -48
- package/src/adapters/browser-workspace-host.ts +0 -92
- package/src/adapters/closable-client.ts +0 -34
- package/src/adapters/index.ts +0 -32
- package/src/adapters/live-events.ts +0 -6
- package/src/adapters/live.ts +0 -230
- package/src/adapters/run-host.ts +0 -238
- package/src/adapters/server-approvals-host.ts +0 -102
- package/src/adapters/server-client.ts +0 -15
- package/src/adapters/server-composer-host.ts +0 -474
- package/src/adapters/server-files-host.ts +0 -287
- package/src/adapters/server-git-host.ts +0 -289
- package/src/adapters/server-host.ts +0 -459
- package/src/adapters/server-machines-host.ts +0 -283
- package/src/adapters/server-oauth-flow.ts +0 -133
- package/src/adapters/server-onboarding-host.ts +0 -363
- package/src/adapters/server-palette-host.ts +0 -134
- package/src/adapters/server-session-host.ts +0 -241
- package/src/adapters/server-settings-accounts.ts +0 -212
- package/src/adapters/server-settings-host.ts +0 -120
- package/src/adapters/server-settings-models.ts +0 -46
- package/src/adapters/server-settings-performance.ts +0 -58
- package/src/adapters/server-settings-sections.ts +0 -184
- package/src/adapters/server-sidebar-host.ts +0 -59
- package/src/adapters/server-terminal-host.ts +0 -124
- package/src/adapters/server-transcript-members.ts +0 -131
- package/src/adapters/sse-host.ts +0 -264
- package/src/adapters/sse-parser.ts +0 -82
- package/src/adapters/sse-protocol.ts +0 -118
- package/src/adapters/stream-pacer.ts +0 -122
- package/src/adapters/worker-host.ts +0 -192
- package/src/adapters/worker-protocol.ts +0 -97
- package/src/app/AppHostProvider.tsx +0 -122
- package/src/app/ModalProvider.tsx +0 -711
- package/src/app/headless/app-host.ts +0 -58
- package/src/app/headless/index.ts +0 -6
- package/src/app/headless/resource.ts +0 -444
- package/src/app/index.ts +0 -9
- package/src/app/testing/index.ts +0 -90
- package/src/app/useConfirm.tsx +0 -65
- package/src/app/useResource.ts +0 -30
- package/src/appearance/AppearanceProvider.tsx +0 -359
- package/src/appearance/apply.ts +0 -69
- package/src/appearance/headless/fixture-host.ts +0 -111
- package/src/appearance/headless/fonts.ts +0 -224
- package/src/appearance/headless/host.ts +0 -65
- package/src/appearance/headless/index.ts +0 -12
- package/src/appearance/headless/prefs.ts +0 -252
- package/src/appearance/headless/storage.ts +0 -127
- package/src/appearance/headless/zoom-commands.ts +0 -21
- package/src/appearance/index.ts +0 -11
- package/src/appearance/testing/contract.ts +0 -210
- package/src/appearance/testing/index.ts +0 -6
- package/src/approvals/ApprovalBar.tsx +0 -227
- package/src/approvals/ApprovalConcern.tsx +0 -33
- package/src/approvals/ApprovalShell.tsx +0 -69
- package/src/approvals/ApprovalsProvider.tsx +0 -110
- package/src/approvals/FileEditApproval.tsx +0 -305
- package/src/approvals/HunkPreviews.tsx +0 -225
- package/src/approvals/SafelistPanel.tsx +0 -149
- package/src/approvals/headless/fixture-host.ts +0 -73
- package/src/approvals/headless/fixtures.ts +0 -86
- package/src/approvals/headless/heads.ts +0 -81
- package/src/approvals/headless/host.ts +0 -80
- package/src/approvals/headless/index.ts +0 -12
- package/src/approvals/headless/labels.ts +0 -67
- package/src/approvals/headless/pending.ts +0 -91
- package/src/approvals/headless/preview.ts +0 -94
- package/src/approvals/headless/safelist.ts +0 -63
- package/src/approvals/index.ts +0 -13
- package/src/approvals/key-scope.ts +0 -33
- package/src/approvals/testing/contract.ts +0 -230
- package/src/approvals/testing/index.ts +0 -7
- package/src/brands/marks.ts +0 -298
- package/src/chat/ChatProvider.tsx +0 -60
- package/src/chat/DaemonOrb.tsx +0 -107
- package/src/chat/HostBadge.tsx +0 -71
- package/src/chat/HostStatusDot.tsx +0 -53
- package/src/chat/HostTranscript.tsx +0 -101
- package/src/chat/PdfPreview.tsx +0 -65
- package/src/chat/SessionFilterMenu.tsx +0 -237
- package/src/chat/SessionGroupHeader.tsx +0 -136
- package/src/chat/SessionHostHeader.tsx +0 -66
- package/src/chat/SessionList.tsx +0 -413
- package/src/chat/SessionListRow.tsx +0 -279
- package/src/chat/SessionStreamsProvider.tsx +0 -253
- package/src/chat/StatusDot.tsx +0 -128
- package/src/chat/TextPreview.tsx +0 -121
- package/src/chat/Throbber.tsx +0 -277
- package/src/chat/Transcript.tsx +0 -461
- package/src/chat/composer/AgentPicker.tsx +0 -155
- package/src/chat/composer/AgentPickerDialog.tsx +0 -99
- package/src/chat/composer/ApprovalDock.tsx +0 -64
- package/src/chat/composer/ArchivedBanner.tsx +0 -44
- package/src/chat/composer/AttachmentTiles.tsx +0 -211
- package/src/chat/composer/Composer.tsx +0 -500
- package/src/chat/composer/ComposerBadges.tsx +0 -339
- package/src/chat/composer/ComposerControls.tsx +0 -243
- package/src/chat/composer/ComposerEditor.tsx +0 -101
- package/src/chat/composer/ComposerHostProvider.tsx +0 -46
- package/src/chat/composer/ComposerShell.tsx +0 -129
- package/src/chat/composer/ContextBreakdown.tsx +0 -382
- package/src/chat/composer/ContextOrb.tsx +0 -176
- package/src/chat/composer/ConversationBadges.tsx +0 -159
- package/src/chat/composer/DockCard.tsx +0 -126
- package/src/chat/composer/EffortPickerDialog.tsx +0 -184
- package/src/chat/composer/HostComposer.tsx +0 -135
- package/src/chat/composer/HostContextOrb.tsx +0 -94
- package/src/chat/composer/HostModelChainList.tsx +0 -102
- package/src/chat/composer/HostPicker.tsx +0 -97
- package/src/chat/composer/HostPickers.tsx +0 -320
- package/src/chat/composer/ImageModelList.tsx +0 -151
- package/src/chat/composer/ModelChainList.tsx +0 -442
- package/src/chat/composer/ModelChainParts.tsx +0 -247
- package/src/chat/composer/ModelChainRow.tsx +0 -191
- package/src/chat/composer/ModelChainRows.tsx +0 -223
- package/src/chat/composer/ModelChainTooltip.tsx +0 -121
- package/src/chat/composer/ModelFacts.tsx +0 -204
- package/src/chat/composer/ModelOptionsPicker.tsx +0 -257
- package/src/chat/composer/ModelPicker.tsx +0 -513
- package/src/chat/composer/ModelPickerDialog.tsx +0 -99
- package/src/chat/composer/ModelProviderPills.tsx +0 -141
- package/src/chat/composer/PickerPill.tsx +0 -41
- package/src/chat/composer/ProjectMenu.tsx +0 -170
- package/src/chat/composer/PromptHistoryProvider.tsx +0 -214
- package/src/chat/composer/RetryPill.tsx +0 -47
- package/src/chat/composer/RunStatusChip.tsx +0 -150
- package/src/chat/composer/ScopeToggle.tsx +0 -94
- package/src/chat/composer/SendButton.tsx +0 -89
- package/src/chat/composer/ServerScopeToggle.tsx +0 -179
- package/src/chat/composer/attachment-ingest.ts +0 -413
- package/src/chat/composer/attachments.tsx +0 -176
- package/src/chat/composer/badge-order.ts +0 -65
- package/src/chat/composer/composer-bus.ts +0 -307
- package/src/chat/composer/index.ts +0 -63
- package/src/chat/composer/load-composer-editor.ts +0 -25
- package/src/chat/composer/model-catalog.ts +0 -424
- package/src/chat/composer/model-list-layout.ts +0 -118
- package/src/chat/composer/prompt-history-nav.ts +0 -60
- package/src/chat/composer/scope-side.ts +0 -7
- package/src/chat/composer/suggestion-extension.ts +0 -113
- package/src/chat/composer/suggestions.tsx +0 -115
- package/src/chat/composer/use-agent-profiles.ts +0 -97
- package/src/chat/composer/use-cache-hints.ts +0 -93
- package/src/chat/composer/use-composer-stores.ts +0 -140
- package/src/chat/composer/use-draft-target.ts +0 -284
- package/src/chat/composer/use-hud.ts +0 -38
- package/src/chat/composer/use-new-session-defaults.ts +0 -201
- package/src/chat/composer/use-provider-ready-poll.ts +0 -35
- package/src/chat/composer/use-run-meter.ts +0 -140
- package/src/chat/composer/use-send-prompt.ts +0 -188
- package/src/chat/composer/use-session-meters.ts +0 -109
- package/src/chat/composer/use-sustained-work.ts +0 -74
- package/src/chat/composer/useAttachmentIngest.ts +0 -116
- package/src/chat/composer/useModelListSpy.ts +0 -19
- package/src/chat/headless/badge-refs.ts +0 -76
- package/src/chat/headless/chip-labels.ts +0 -39
- package/src/chat/headless/chip-settle.ts +0 -53
- package/src/chat/headless/chip-views.ts +0 -215
- package/src/chat/headless/composer/attachment-dedupe.ts +0 -50
- package/src/chat/headless/composer/commands.ts +0 -16
- package/src/chat/headless/composer/composer-sources.ts +0 -150
- package/src/chat/headless/composer/conversation-badges.ts +0 -222
- package/src/chat/headless/composer/draft-sync.ts +0 -199
- package/src/chat/headless/composer/editor-markdown.ts +0 -137
- package/src/chat/headless/composer/ghost-autocomplete.ts +0 -381
- package/src/chat/headless/composer/host-chrome.ts +0 -227
- package/src/chat/headless/composer/host.ts +0 -253
- package/src/chat/headless/composer/hud.ts +0 -101
- package/src/chat/headless/composer/index.ts +0 -18
- package/src/chat/headless/composer/labels-chrome.ts +0 -83
- package/src/chat/headless/composer/labels-editor.ts +0 -44
- package/src/chat/headless/composer/labels.ts +0 -18
- package/src/chat/headless/composer/live-cost.ts +0 -67
- package/src/chat/headless/composer/model-knobs.ts +0 -179
- package/src/chat/headless/composer/model-names.ts +0 -145
- package/src/chat/headless/composer/model-picker-prefs.ts +0 -90
- package/src/chat/headless/composer/models.ts +0 -86
- package/src/chat/headless/composer/new-session-defaults.ts +0 -68
- package/src/chat/headless/composer/prompt-suggestions.ts +0 -72
- package/src/chat/headless/composer/remember-model-pick.ts +0 -132
- package/src/chat/headless/composer/run-meter.ts +0 -228
- package/src/chat/headless/composer-modes.ts +0 -170
- package/src/chat/headless/draft-scope.ts +0 -136
- package/src/chat/headless/draft-target.ts +0 -87
- package/src/chat/headless/file-chip.ts +0 -175
- package/src/chat/headless/fixture-host.ts +0 -294
- package/src/chat/headless/fixture-transcript.ts +0 -125
- package/src/chat/headless/fixtures/demo-transcript-all-kinds.ts +0 -233
- package/src/chat/headless/fixtures/demo-transcript.ts +0 -244
- package/src/chat/headless/host.ts +0 -259
- package/src/chat/headless/hosts.ts +0 -53
- package/src/chat/headless/index.ts +0 -31
- package/src/chat/headless/labels.ts +0 -331
- package/src/chat/headless/markdown-chunks.ts +0 -134
- package/src/chat/headless/path-resolver.ts +0 -178
- package/src/chat/headless/prompt-origin.ts +0 -90
- package/src/chat/headless/reference-store.ts +0 -285
- package/src/chat/headless/send-flow.ts +0 -347
- package/src/chat/headless/session-list.ts +0 -390
- package/src/chat/headless/sidebar/activity.ts +0 -179
- package/src/chat/headless/sidebar/badges.ts +0 -163
- package/src/chat/headless/sidebar/compaction.ts +0 -98
- package/src/chat/headless/sidebar/directory.ts +0 -819
- package/src/chat/headless/sidebar/dot-state.ts +0 -36
- package/src/chat/headless/sidebar/environment.ts +0 -70
- package/src/chat/headless/sidebar/host.ts +0 -41
- package/src/chat/headless/sidebar/index.ts +0 -16
- package/src/chat/headless/sidebar/labels.ts +0 -140
- package/src/chat/headless/sidebar/notifications.ts +0 -61
- package/src/chat/headless/sidebar/pinned-projects.ts +0 -51
- package/src/chat/headless/sidebar/pinned-sessions.ts +0 -27
- package/src/chat/headless/sidebar/project-icons.ts +0 -116
- package/src/chat/headless/sidebar/rows.ts +0 -229
- package/src/chat/headless/sidebar/types.ts +0 -61
- package/src/chat/headless/sidebar/view.ts +0 -296
- package/src/chat/headless/site-icons.ts +0 -51
- package/src/chat/headless/smooth-stream.ts +0 -76
- package/src/chat/headless/store.ts +0 -62
- package/src/chat/headless/streams/actions.ts +0 -85
- package/src/chat/headless/streams/index.ts +0 -25
- package/src/chat/headless/streams/live-events.ts +0 -124
- package/src/chat/headless/streams/merge.ts +0 -60
- package/src/chat/headless/streams/pacer.ts +0 -189
- package/src/chat/headless/streams/prompt-previews.ts +0 -64
- package/src/chat/headless/streams/scheduler.ts +0 -36
- package/src/chat/headless/streams/selectors.ts +0 -76
- package/src/chat/headless/streams/session-streams.ts +0 -394
- package/src/chat/headless/streams/store.ts +0 -1107
- package/src/chat/headless/streams/transcript.ts +0 -41
- package/src/chat/headless/streams/types.ts +0 -84
- package/src/chat/headless/transcript/batch.ts +0 -429
- package/src/chat/headless/transcript/collapse.ts +0 -780
- package/src/chat/headless/transcript/fold-actions.ts +0 -269
- package/src/chat/headless/transcript/fold-attachments.ts +0 -78
- package/src/chat/headless/transcript/fold.ts +0 -382
- package/src/chat/headless/transcript/index.ts +0 -41
- package/src/chat/headless/transcript/nesting.ts +0 -73
- package/src/chat/headless/transcript/pairing.ts +0 -124
- package/src/chat/headless/transcript/rows.ts +0 -367
- package/src/chat/headless/transcript/run-failures.ts +0 -72
- package/src/chat/headless/transcript/select-stops.ts +0 -151
- package/src/chat/headless/transcript/tool-media.ts +0 -42
- package/src/chat/headless/transcript-host.ts +0 -180
- package/src/chat/headless/transcript-labels.ts +0 -12
- package/src/chat/headless/turn-labels.ts +0 -28
- package/src/chat/headless/turn-prompt.ts +0 -32
- package/src/chat/index.ts +0 -29
- package/src/chat/interactions/HostInteractions.tsx +0 -76
- package/src/chat/interactions/InboxPanel.tsx +0 -226
- package/src/chat/interactions/InteractionCard.tsx +0 -111
- package/src/chat/interactions/PlanCard.tsx +0 -186
- package/src/chat/interactions/QuestionField.tsx +0 -336
- package/src/chat/interactions/QuestionForm.tsx +0 -283
- package/src/chat/interactions/card-ui.tsx +0 -86
- package/src/chat/interactions/hooks.ts +0 -49
- package/src/chat/interactions/index.ts +0 -8
- package/src/chat/provider-color.ts +0 -71
- package/src/chat/rich-composer/MentionList.tsx +0 -238
- package/src/chat/rich-composer/RichComposer.tsx +0 -1036
- package/src/chat/rich-composer/badge-decorations.ts +0 -157
- package/src/chat/rich-composer/composer-controls.tsx +0 -102
- package/src/chat/rich-composer/composer-extensions.ts +0 -388
- package/src/chat/rich-composer/composer-keys.ts +0 -416
- package/src/chat/rich-composer/ghost-plugin.ts +0 -89
- package/src/chat/rich-composer/index.ts +0 -3
- package/src/chat/rich-composer/mention-popover.ts +0 -336
- package/src/chat/rich-composer/slash-completion.ts +0 -143
- package/src/chat/rich-composer/use-composer-bus.ts +0 -57
- package/src/chat/rich-composer/use-composer-editor.ts +0 -216
- package/src/chat/rich-composer/use-composer-sources.ts +0 -90
- package/src/chat/rich-composer/use-draft-mirror.ts +0 -398
- package/src/chat/rich-composer/use-editor-handover.ts +0 -45
- package/src/chat/rich-composer/use-ghost-lifecycle.ts +0 -265
- package/src/chat/rich-composer/use-prompt-ghost.ts +0 -90
- package/src/chat/rich-composer/use-staged-attachments.ts +0 -65
- package/src/chat/sidebar/MainSessionRow.tsx +0 -102
- package/src/chat/sidebar/ProjectIcon.tsx +0 -336
- package/src/chat/sidebar/RowChips.tsx +0 -98
- package/src/chat/sidebar/SessionSidebar.tsx +0 -805
- package/src/chat/sidebar/SidebarFilterMenu.tsx +0 -41
- package/src/chat/sidebar/SidebarFooter.tsx +0 -234
- package/src/chat/sidebar/SidebarFrame.tsx +0 -154
- package/src/chat/sidebar/SidebarGroupHeader.tsx +0 -231
- package/src/chat/sidebar/SidebarHostProvider.tsx +0 -51
- package/src/chat/sidebar/SidebarSearchRow.tsx +0 -66
- package/src/chat/sidebar/SidebarSessionRow.tsx +0 -293
- package/src/chat/sidebar/SidebarToggleButton.tsx +0 -48
- package/src/chat/sidebar/SpaceSwitcher.tsx +0 -232
- package/src/chat/sidebar/SpacesSection.tsx +0 -256
- package/src/chat/sidebar/index.ts +0 -92
- package/src/chat/sidebar/session-menu.ts +0 -437
- package/src/chat/sidebar/sidebar-focus-hold.ts +0 -56
- package/src/chat/sidebar/sidebar-live.tsx +0 -605
- package/src/chat/sidebar/use-main-session.ts +0 -32
- package/src/chat/sidebar/useCompactionProgress.ts +0 -24
- package/src/chat/sidebar/usePinnedProjects.ts +0 -36
- package/src/chat/sidebar/useSessionActivity.ts +0 -24
- package/src/chat/sidebar/useSessionBadges.ts +0 -26
- package/src/chat/sidebar/useSessionDirectoryView.ts +0 -86
- package/src/chat/sidebar/useSessionSearch.ts +0 -94
- package/src/chat/sidebar/useSidebarKeyboardNav.ts +0 -165
- package/src/chat/sidebar/useSidebarLabels.ts +0 -10
- package/src/chat/testing/composer.contract.ts +0 -532
- package/src/chat/testing/contract.ts +0 -634
- package/src/chat/testing/fixture-composer-chrome.ts +0 -178
- package/src/chat/testing/fixture-composer-host.ts +0 -147
- package/src/chat/testing/fixture-sidebar-host.ts +0 -99
- package/src/chat/testing/index.ts +0 -12
- package/src/chat/testing/sidebar.contract.ts +0 -196
- package/src/chat/transcript/BadgeMenu.tsx +0 -223
- package/src/chat/transcript/CardMarkdown.tsx +0 -92
- package/src/chat/transcript/ChipCard.tsx +0 -176
- package/src/chat/transcript/ChipCards.tsx +0 -100
- package/src/chat/transcript/DiffLines.tsx +0 -122
- package/src/chat/transcript/EarlierHistory.tsx +0 -136
- package/src/chat/transcript/EditDiffBlock.tsx +0 -171
- package/src/chat/transcript/FileChip.tsx +0 -350
- package/src/chat/transcript/ImageGenerationBlock.tsx +0 -239
- package/src/chat/transcript/InlineChipText.tsx +0 -57
- package/src/chat/transcript/InteractionToolBody.tsx +0 -193
- package/src/chat/transcript/LazyRow.tsx +0 -311
- package/src/chat/transcript/PromptEcho.tsx +0 -171
- package/src/chat/transcript/PromptOriginLabel.tsx +0 -44
- package/src/chat/transcript/ProseMarkdown.tsx +0 -165
- package/src/chat/transcript/ReferenceText.tsx +0 -193
- package/src/chat/transcript/SelectCursor.tsx +0 -118
- package/src/chat/transcript/SelectTurnHint.tsx +0 -81
- package/src/chat/transcript/SelectTurnProvider.tsx +0 -150
- package/src/chat/transcript/SubagentBlock.tsx +0 -218
- package/src/chat/transcript/TranscriptRow.tsx +0 -356
- package/src/chat/transcript/TranscriptSearch.tsx +0 -171
- package/src/chat/transcript/TurnMenu.tsx +0 -217
- package/src/chat/transcript/actions.tsx +0 -77
- package/src/chat/transcript/badges.tsx +0 -152
- package/src/chat/transcript/chip-details.ts +0 -169
- package/src/chat/transcript/chip-resolve.ts +0 -56
- package/src/chat/transcript/fold-attachments.tsx +0 -221
- package/src/chat/transcript/fold-status.tsx +0 -112
- package/src/chat/transcript/fold-worker.tsx +0 -160
- package/src/chat/transcript/fold.tsx +0 -520
- package/src/chat/transcript/frame.tsx +0 -326
- package/src/chat/transcript/index.ts +0 -65
- package/src/chat/transcript/markdown-cache.ts +0 -70
- package/src/chat/transcript/markdown-context.ts +0 -52
- package/src/chat/transcript/markdown.tsx +0 -282
- package/src/chat/transcript/messages.tsx +0 -168
- package/src/chat/transcript/notices.tsx +0 -508
- package/src/chat/transcript/prompt-lines.tsx +0 -55
- package/src/chat/transcript/prompt.tsx +0 -258
- package/src/chat/transcript/prose.tsx +0 -171
- package/src/chat/transcript/references.ts +0 -104
- package/src/chat/transcript/remark-references.ts +0 -157
- package/src/chat/transcript/remark-refs.ts +0 -176
- package/src/chat/transcript/renderer-slots.tsx +0 -35
- package/src/chat/transcript/renderers.tsx +0 -241
- package/src/chat/transcript/row-estimate.ts +0 -158
- package/src/chat/transcript/run-rows.tsx +0 -291
- package/src/chat/transcript/site-icons.ts +0 -27
- package/src/chat/transcript/thumbnails.ts +0 -146
- package/src/chat/transcript/tool-batch.tsx +0 -111
- package/src/chat/transcript/tool-details.tsx +0 -77
- package/src/chat/transcript/tool-media.tsx +0 -132
- package/src/chat/transcript/tool-parts.tsx +0 -358
- package/src/chat/transcript/tool-row.tsx +0 -489
- package/src/chat/transcript/turn-commands.ts +0 -101
- package/src/chat/transcript/use-transcript-rows.ts +0 -195
- package/src/chat/transcript/useComposerSearch.ts +0 -106
- package/src/chat/transcript/useSelectTurnKeys.ts +0 -204
- package/src/chat/transcript/useSettledReveal.ts +0 -57
- package/src/chat/transcript/useStickToBottom.ts +0 -600
- package/src/chat/transcript/useTranscriptFind.ts +0 -70
- package/src/chat/transcript/useTranscriptFindKey.ts +0 -52
- package/src/chat/transcript/useTranscriptScroll.ts +0 -162
- package/src/chat/transcript/useTranscriptSearch.tsx +0 -382
- package/src/chat/transcript/useTranscriptSelectionCopy.ts +0 -63
- package/src/chat/transcript/useWheelHoverPause.ts +0 -79
- package/src/chat/transcript/user-bash.tsx +0 -134
- package/src/chat/useChatLabels.ts +0 -14
- package/src/code/CodeHighlightProvider.tsx +0 -87
- package/src/code/HighlightedCode.tsx +0 -150
- package/src/code/code-themes.ts +0 -34
- package/src/code/editor/CodeCompletion.tsx +0 -719
- package/src/code/editor/CodeEditor.tsx +0 -480
- package/src/code/editor/CodeHover.tsx +0 -428
- package/src/code/editor/DiagnosticAnnotation.tsx +0 -73
- package/src/code/editor/DiagnosticsChip.tsx +0 -85
- package/src/code/editor/DiffView.tsx +0 -197
- package/src/code/editor/EditorColumn.tsx +0 -256
- package/src/code/editor/FileIcon.tsx +0 -89
- package/src/code/editor/FileTabPill.tsx +0 -101
- package/src/code/editor/FileTree.tsx +0 -414
- package/src/code/editor/FileView.tsx +0 -462
- package/src/code/editor/HighlightWorkers.tsx +0 -84
- package/src/code/editor/LanguageEditor.tsx +0 -210
- package/src/code/editor/_vendor/tree-icon-colors.ts +0 -72
- package/src/code/editor/diagnostics.ts +0 -140
- package/src/code/editor/edit-session.ts +0 -28
- package/src/code/editor/environment.tsx +0 -88
- package/src/code/editor/find/FindBar.tsx +0 -126
- package/src/code/editor/find/find-highlight.ts +0 -138
- package/src/code/editor/find/find-model.ts +0 -123
- package/src/code/editor/find/settle-scroll.ts +0 -77
- package/src/code/editor/find/useFind.ts +0 -203
- package/src/code/editor/fs-adapter.ts +0 -37
- package/src/code/editor/index.ts +0 -36
- package/src/code/editor/language.ts +0 -31
- package/src/code/editor/patch-parse.ts +0 -176
- package/src/code/editor/patch-parse.worker.ts +0 -12
- package/src/code/editor/pierre-theme.ts +0 -154
- package/src/code/editor/prime-diff.ts +0 -37
- package/src/code/editor/reveal.ts +0 -58
- package/src/code/editor/scroll-reach.ts +0 -28
- package/src/code/editor/useCodeDocument.ts +0 -226
- package/src/code/editor/useDefinition.ts +0 -159
- package/src/code/editor/useDetachCleanup.ts +0 -36
- package/src/code/editor/useFileDocument.ts +0 -87
- package/src/code/editor/useRevealLine.ts +0 -92
- package/src/code/editor/word-at.ts +0 -145
- package/src/code/highlight.worker.ts +0 -19
- package/src/code/highlighter.ts +0 -185
- package/src/code/shiki-theme.ts +0 -47
- package/src/components/BrandMark.tsx +0 -107
- package/src/components/Breadcrumb.tsx +0 -105
- package/src/components/BrowserChrome.tsx +0 -189
- package/src/components/BrowserSignIn.tsx +0 -210
- package/src/components/ChoiceCards.tsx +0 -170
- package/src/components/CodeFrame.tsx +0 -209
- package/src/components/ConfirmDialog.tsx +0 -119
- package/src/components/CopyButton.tsx +0 -85
- package/src/components/EditableTitle.tsx +0 -199
- package/src/components/ErrorBoundary.tsx +0 -208
- package/src/components/Form.tsx +0 -589
- package/src/components/Highlighted.tsx +0 -68
- package/src/components/HowItWorks.tsx +0 -123
- package/src/components/IconButton.tsx +0 -101
- package/src/components/IconToggle.tsx +0 -71
- package/src/components/Keycap.tsx +0 -334
- package/src/components/Lightbox.tsx +0 -257
- package/src/components/LoadError.tsx +0 -45
- package/src/components/MediaNav.tsx +0 -85
- package/src/components/Menu.tsx +0 -435
- package/src/components/Overlay.tsx +0 -327
- package/src/components/PanelEmpty.tsx +0 -80
- package/src/components/PanelRows.tsx +0 -107
- package/src/components/PreviewWindow.tsx +0 -53
- package/src/components/ReorderTabs.tsx +0 -103
- package/src/components/RowActionsMenu.tsx +0 -383
- package/src/components/SegmentSpinner.tsx +0 -88
- package/src/components/Segmented.tsx +0 -126
- package/src/components/StepFrame.tsx +0 -151
- package/src/components/Stepper.tsx +0 -157
- package/src/components/Surface.tsx +0 -191
- package/src/components/SwatchPicker.tsx +0 -147
- package/src/components/SwitchGlyph.tsx +0 -56
- package/src/components/TabPill.tsx +0 -188
- package/src/components/ThemeThumb.tsx +0 -52
- package/src/components/ToggleCard.tsx +0 -120
- package/src/components/Tooltip.tsx +0 -288
- package/src/components/ZoomableImage.tsx +0 -322
- package/src/components/button.ts +0 -120
- package/src/components/floating/FloatingSurface.tsx +0 -158
- package/src/components/floating/HoverCard.tsx +0 -143
- package/src/components/floating/Popover.tsx +0 -166
- package/src/components/floating/useAnchoredPosition.ts +0 -186
- package/src/components/floating/usePopover.ts +0 -158
- package/src/components/image-clipboard.ts +0 -70
- package/src/components/keyboard-layout.ts +0 -115
- package/src/components/palette/PaletteList.tsx +0 -432
- package/src/components/palette/PalettePanel.tsx +0 -338
- package/src/components/palette/palette-layout.ts +0 -86
- package/src/components/report-error.ts +0 -142
- package/src/components/zoom.ts +0 -133
- package/src/files/CodeViewer.tsx +0 -289
- package/src/files/DiffFileViewer.tsx +0 -143
- package/src/files/DiffsTab.tsx +0 -590
- package/src/files/EditorColumn.tsx +0 -453
- package/src/files/FilesDiagnosticsChip.tsx +0 -32
- package/src/files/FilesProvider.tsx +0 -58
- package/src/files/FilesTab.tsx +0 -441
- package/src/files/MediaDiff.tsx +0 -61
- package/src/files/MediaView.tsx +0 -170
- package/src/files/ReviewDraft.tsx +0 -88
- package/src/files/ReviewableDiff.tsx +0 -72
- package/src/files/SearchPanel.tsx +0 -325
- package/src/files/TreeColumn.tsx +0 -229
- package/src/files/code-excerpt.ts +0 -265
- package/src/files/code-menu.ts +0 -53
- package/src/files/drafts-store.ts +0 -159
- package/src/files/file-actions.ts +0 -152
- package/src/files/headless/editor-prefs.ts +0 -230
- package/src/files/headless/entries.ts +0 -172
- package/src/files/headless/fixture-host.ts +0 -260
- package/src/files/headless/host.ts +0 -387
- package/src/files/headless/index.ts +0 -14
- package/src/files/headless/labels.ts +0 -123
- package/src/files/headless/lsp-edits.ts +0 -40
- package/src/files/headless/media.ts +0 -57
- package/src/files/headless/name-match.ts +0 -38
- package/src/files/headless/search.ts +0 -23
- package/src/files/headless/view.ts +0 -114
- package/src/files/headless/workspace-diff.ts +0 -82
- package/src/files/index.ts +0 -24
- package/src/files/lazy-tabs.tsx +0 -41
- package/src/files/tab-hooks.ts +0 -37
- package/src/files/testing/contract.ts +0 -279
- package/src/files/testing/demo.ts +0 -36
- package/src/files/testing/index.ts +0 -7
- package/src/files/useCodeReview.tsx +0 -177
- package/src/files/useDiagnostics.ts +0 -59
- package/src/files/useDiagnosticsRun.ts +0 -86
- package/src/files/useEntryActions.ts +0 -280
- package/src/files/useFilesDiagnostics.ts +0 -51
- package/src/files/useFilesLabels.ts +0 -14
- package/src/files/useFolderChanges.ts +0 -38
- package/src/files/useLsp.ts +0 -178
- package/src/files/useOpenFiles.ts +0 -402
- package/src/files/useWorkspace.ts +0 -148
- package/src/files/working-tree-diff.ts +0 -142
- package/src/git/BranchMenu.tsx +0 -981
- package/src/git/GitBar.tsx +0 -286
- package/src/git/GitProvider.tsx +0 -50
- package/src/git/ImportRepoDialog.tsx +0 -381
- package/src/git/MoveSessionDialog.tsx +0 -394
- package/src/git/RemoteFolderPicker.tsx +0 -475
- package/src/git/SyncChip.tsx +0 -275
- package/src/git/WherePicker.tsx +0 -358
- package/src/git/headless/environment.ts +0 -132
- package/src/git/headless/host.ts +0 -353
- package/src/git/headless/index.ts +0 -14
- package/src/git/headless/labels.ts +0 -230
- package/src/git/headless/move.ts +0 -101
- package/src/git/headless/remote-clone.ts +0 -44
- package/src/git/headless/status-reads.ts +0 -77
- package/src/git/headless/switcher.ts +0 -215
- package/src/git/headless/sync.ts +0 -71
- package/src/git/index.ts +0 -17
- package/src/git/testing/contract.ts +0 -551
- package/src/git/testing/index.ts +0 -537
- package/src/git/useEnvironmentChoices.ts +0 -50
- package/src/git/useGitBar.ts +0 -180
- package/src/hooks/keyed-store.ts +0 -65
- package/src/hooks/useHydrated.ts +0 -16
- package/src/hooks/useMinuteTick.ts +0 -49
- package/src/hooks/useNearViewport.ts +0 -111
- package/src/hooks/usePersistedState.ts +0 -98
- package/src/hooks/useResizeDrag.ts +0 -240
- package/src/hooks/useTabDrag.ts +0 -88
- package/src/index.ts +0 -118
- package/src/keybindings/KeyCommands.tsx +0 -123
- package/src/keybindings/KeyHint.tsx +0 -78
- package/src/keybindings/KeybindingsProvider.tsx +0 -231
- package/src/keybindings/headless/catalog.ts +0 -360
- package/src/keybindings/headless/commands.ts +0 -77
- package/src/keybindings/headless/fixture-host.ts +0 -51
- package/src/keybindings/headless/host.ts +0 -29
- package/src/keybindings/headless/index.ts +0 -13
- package/src/keybindings/headless/key-scope.ts +0 -91
- package/src/keybindings/headless/labels.ts +0 -14
- package/src/keybindings/headless/overrides.ts +0 -64
- package/src/keybindings/index.ts +0 -14
- package/src/keybindings/load-once.ts +0 -11
- package/src/keybindings/match.ts +0 -48
- package/src/keybindings/testing/contract.ts +0 -139
- package/src/keybindings/testing/index.ts +0 -6
- package/src/keybindings/useHelpKey.ts +0 -35
- package/src/keybindings/useKeybindingsLabels.ts +0 -14
- package/src/labels.tsx +0 -175
- package/src/machines/AddServerForm.tsx +0 -151
- package/src/machines/Banners.tsx +0 -172
- package/src/machines/DaemonMenu.tsx +0 -413
- package/src/machines/HostCapabilities.tsx +0 -245
- package/src/machines/HostSignIn.tsx +0 -63
- package/src/machines/HostSyncPanel.tsx +0 -275
- package/src/machines/HostsSection.tsx +0 -312
- package/src/machines/MachinesProvider.tsx +0 -164
- package/src/machines/ServerCard.tsx +0 -347
- package/src/machines/ServerMachinesPanel.tsx +0 -547
- package/src/machines/ServerUpdatePanel.tsx +0 -160
- package/src/machines/SyncAccounts.tsx +0 -148
- package/src/machines/SyncMarker.tsx +0 -87
- package/src/machines/SyncOutcomeBadge.tsx +0 -84
- package/src/machines/TokensPanel.tsx +0 -249
- package/src/machines/headless/fixture-host.ts +0 -519
- package/src/machines/headless/fixtures.ts +0 -164
- package/src/machines/headless/host.ts +0 -381
- package/src/machines/headless/index.ts +0 -13
- package/src/machines/headless/labels.ts +0 -356
- package/src/machines/headless/messages.ts +0 -197
- package/src/machines/headless/presence.ts +0 -110
- package/src/machines/headless/settings-focus.ts +0 -25
- package/src/machines/headless/stores.ts +0 -137
- package/src/machines/headless/sync.ts +0 -207
- package/src/machines/index.ts +0 -29
- package/src/machines/settings-section.tsx +0 -37
- package/src/machines/testing/contract.ts +0 -617
- package/src/machines/testing/index.ts +0 -7
- package/src/machines/testing/sync.contract.ts +0 -260
- package/src/motion/SwapIcon.tsx +0 -29
- package/src/motion/collapse.ts +0 -21
- package/src/motion/grow.tsx +0 -86
- package/src/motion/layout-animating.ts +0 -50
- package/src/motion/presence.ts +0 -191
- package/src/motion/provider.tsx +0 -63
- package/src/motion/reduced.ts +0 -36
- package/src/motion/roll.tsx +0 -131
- package/src/motion/shimmer.ts +0 -15
- package/src/motion/size.tsx +0 -192
- package/src/motion/springs.ts +0 -413
- package/src/motion/swap.tsx +0 -216
- package/src/motion/title-text.tsx +0 -74
- package/src/onboarding/ConnectProviderCard.tsx +0 -49
- package/src/onboarding/OnboardingFlow.tsx +0 -176
- package/src/onboarding/OnboardingProvider.tsx +0 -209
- package/src/onboarding/OnboardingStepFrame.tsx +0 -80
- package/src/onboarding/conversation.tsx +0 -179
- package/src/onboarding/demos/autonomy.tsx +0 -154
- package/src/onboarding/demos/extensions.tsx +0 -183
- package/src/onboarding/demos/features.tsx +0 -447
- package/src/onboarding/demos/how-it-works.tsx +0 -698
- package/src/onboarding/demos/index.ts +0 -11
- package/src/onboarding/demos/parts.tsx +0 -133
- package/src/onboarding/demos/tour.tsx +0 -217
- package/src/onboarding/headless/controller.ts +0 -110
- package/src/onboarding/headless/fixture-host.ts +0 -269
- package/src/onboarding/headless/fixtures.ts +0 -486
- package/src/onboarding/headless/host.ts +0 -176
- package/src/onboarding/headless/index.ts +0 -8
- package/src/onboarding/headless/labels.ts +0 -280
- package/src/onboarding/index.ts +0 -20
- package/src/onboarding/marks.tsx +0 -69
- package/src/onboarding/preview-attachments.ts +0 -39
- package/src/onboarding/skills/SkillSourceBrowser.tsx +0 -336
- package/src/onboarding/skills/parts.tsx +0 -440
- package/src/onboarding/steps/AutonomyStep.tsx +0 -128
- package/src/onboarding/steps/ConnectStep.tsx +0 -104
- package/src/onboarding/steps/ConnectorsStep.tsx +0 -226
- package/src/onboarding/steps/ConversationStep.tsx +0 -131
- package/src/onboarding/steps/ExtensionsStep.tsx +0 -113
- package/src/onboarding/steps/FeatureExample.tsx +0 -46
- package/src/onboarding/steps/FeaturesStep.tsx +0 -88
- package/src/onboarding/steps/ImportStep.tsx +0 -156
- package/src/onboarding/steps/LookStep.tsx +0 -276
- package/src/onboarding/steps/ReadyStep.tsx +0 -278
- package/src/onboarding/steps/SkillsStep.tsx +0 -45
- package/src/onboarding/steps/StepSection.tsx +0 -63
- package/src/onboarding/steps/Tradeoff.tsx +0 -45
- package/src/onboarding/steps/WelcomeStep.tsx +0 -147
- package/src/onboarding/steps/connect/KeyForm.tsx +0 -112
- package/src/onboarding/steps/connect/ProviderPanel.tsx +0 -149
- package/src/onboarding/steps/connect/ProviderReady.tsx +0 -171
- package/src/onboarding/steps/connect/ready-text.ts +0 -17
- package/src/onboarding/steps/index.ts +0 -12
- package/src/onboarding/steps/tasks.tsx +0 -84
- package/src/onboarding/testing/contract.ts +0 -472
- package/src/onboarding/testing/index.ts +0 -7
- package/src/onboarding/tutorials.tsx +0 -45
- package/src/onboarding/useSignIn.ts +0 -58
- package/src/palette/CommandPalette.tsx +0 -59
- package/src/palette/PaletteDialog.tsx +0 -186
- package/src/palette/PaletteProvider.tsx +0 -149
- package/src/palette/PaletteRows.tsx +0 -208
- package/src/palette/app-sources.ts +0 -62
- package/src/palette/headless/app-sources.ts +0 -515
- package/src/palette/headless/gather.ts +0 -50
- package/src/palette/headless/host.ts +0 -129
- package/src/palette/headless/index.ts +0 -15
- package/src/palette/headless/labels.ts +0 -124
- package/src/palette/headless/rank-protocol.ts +0 -23
- package/src/palette/headless/recents.ts +0 -35
- package/src/palette/headless/session-sources.ts +0 -218
- package/src/palette/headless/sources.ts +0 -313
- package/src/palette/headless/store.ts +0 -105
- package/src/palette/index.ts +0 -17
- package/src/palette/rank.worker.ts +0 -30
- package/src/palette/setup.ts +0 -19
- package/src/palette/testing/contract.ts +0 -250
- package/src/palette/testing/index.ts +0 -152
- package/src/palette/useConversationSearch.ts +0 -115
- package/src/palette/usePaletteController.ts +0 -229
- package/src/palette/useRankedItems.ts +0 -122
- package/src/path.ts +0 -165
- package/src/server/demo-tools.ts +0 -34
- package/src/server/environment.ts +0 -118
- package/src/server/index.ts +0 -7
- package/src/server/scripted-provider.ts +0 -174
- package/src/server/sse-handler.ts +0 -457
- package/src/server/testing/index.ts +0 -7
- package/src/session/ArtifactRowChips.tsx +0 -251
- package/src/session/ArtifactsPanel.tsx +0 -381
- package/src/session/DiffFileTree.tsx +0 -173
- package/src/session/PanelAttention.tsx +0 -131
- package/src/session/ProviderUsageProvider.tsx +0 -106
- package/src/session/QueueTab.tsx +0 -669
- package/src/session/RunningWorkDialog.tsx +0 -178
- package/src/session/SessionCacheFacts.tsx +0 -190
- package/src/session/SessionDetailsDialog.tsx +0 -621
- package/src/session/SessionHeader.tsx +0 -237
- package/src/session/SessionProvider.tsx +0 -98
- package/src/session/SessionShell.tsx +0 -77
- package/src/session/SideChat.tsx +0 -316
- package/src/session/TodoList.tsx +0 -123
- package/src/session/TodosPanel.tsx +0 -278
- package/src/session/TurnDetailsDialog.tsx +0 -299
- package/src/session/UsagePanel.tsx +0 -222
- package/src/session/WelcomeScreen.tsx +0 -578
- package/src/session/headless/artifacts.ts +0 -101
- package/src/session/headless/diff-tree.ts +0 -167
- package/src/session/headless/fixture-host.ts +0 -331
- package/src/session/headless/host.ts +0 -255
- package/src/session/headless/index.ts +0 -22
- package/src/session/headless/keyed.ts +0 -72
- package/src/session/headless/labels.ts +0 -321
- package/src/session/headless/queue-attachments.ts +0 -73
- package/src/session/headless/queue.ts +0 -122
- package/src/session/headless/running-work.ts +0 -85
- package/src/session/headless/session-actions.ts +0 -198
- package/src/session/headless/session-diffs.ts +0 -136
- package/src/session/headless/side.ts +0 -63
- package/src/session/headless/todos.ts +0 -62
- package/src/session/headless/usage-format.ts +0 -280
- package/src/session/headless/usage.ts +0 -380
- package/src/session/index.ts +0 -29
- package/src/session/testing/contract.ts +0 -579
- package/src/session/testing/demo.ts +0 -209
- package/src/session/testing/index.ts +0 -7
- package/src/session/useSessionLabels.ts +0 -14
- package/src/session/useUsageSummary.ts +0 -82
- package/src/settings/SettingsHeadingText.tsx +0 -54
- package/src/settings/SettingsHostSwitcher.tsx +0 -93
- package/src/settings/SettingsNav.tsx +0 -116
- package/src/settings/SettingsProvider.tsx +0 -127
- package/src/settings/SettingsRowsPage.tsx +0 -217
- package/src/settings/SettingsShell.tsx +0 -336
- package/src/settings/SettingsTutorial.tsx +0 -55
- package/src/settings/headless/catalog.ts +0 -553
- package/src/settings/headless/claude-import.ts +0 -61
- package/src/settings/headless/enabled.ts +0 -44
- package/src/settings/headless/fixture-accounts.ts +0 -260
- package/src/settings/headless/fixture-host.ts +0 -162
- package/src/settings/headless/fixture-models.ts +0 -51
- package/src/settings/headless/fixture-performance.ts +0 -350
- package/src/settings/headless/fixture-sections.ts +0 -323
- package/src/settings/headless/host.ts +0 -125
- package/src/settings/headless/index.ts +0 -22
- package/src/settings/headless/labels.ts +0 -63
- package/src/settings/headless/layout-sections.ts +0 -41
- package/src/settings/headless/layout.ts +0 -723
- package/src/settings/headless/mcp.ts +0 -319
- package/src/settings/headless/models.ts +0 -51
- package/src/settings/headless/page-counts.ts +0 -40
- package/src/settings/headless/performance.ts +0 -524
- package/src/settings/headless/providers.ts +0 -117
- package/src/settings/headless/registry.ts +0 -52
- package/src/settings/headless/resource.ts +0 -75
- package/src/settings/headless/search.ts +0 -142
- package/src/settings/headless/sections-host.ts +0 -307
- package/src/settings/index.ts +0 -32
- package/src/settings/rows.tsx +0 -152
- package/src/settings/section.tsx +0 -165
- package/src/settings/sections/appearance/AppearanceSection.tsx +0 -667
- package/src/settings/sections/appearance/labels.ts +0 -77
- package/src/settings/sections/claude-import/ClaudeImportDialog.tsx +0 -258
- package/src/settings/sections/claude-import/labels.ts +0 -42
- package/src/settings/sections/claude-import/use-claude-import-available.ts +0 -35
- package/src/settings/sections/descriptors.tsx +0 -261
- package/src/settings/sections/editor/EditorSection.tsx +0 -521
- package/src/settings/sections/editor/labels.ts +0 -84
- package/src/settings/sections/enabled-list/EnabledListSection.tsx +0 -112
- package/src/settings/sections/enabled-list/labels.ts +0 -37
- package/src/settings/sections/environments/EnvironmentsSection.tsx +0 -549
- package/src/settings/sections/environments/labels.ts +0 -31
- package/src/settings/sections/extensions/CreateExtensionDialog.tsx +0 -206
- package/src/settings/sections/extensions/ExtensionOptionsSection.tsx +0 -743
- package/src/settings/sections/extensions/ExtensionsSection.tsx +0 -480
- package/src/settings/sections/extensions/create-labels.ts +0 -31
- package/src/settings/sections/extensions/labels.ts +0 -38
- package/src/settings/sections/extensions/options-labels.ts +0 -31
- package/src/settings/sections/host-catalog/HostCatalogSection.tsx +0 -374
- package/src/settings/sections/host-catalog/labels.ts +0 -40
- package/src/settings/sections/index.ts +0 -58
- package/src/settings/sections/instructions/InstructionsSection.tsx +0 -381
- package/src/settings/sections/instructions/labels.ts +0 -33
- package/src/settings/sections/keybindings/KeybindingsSection.tsx +0 -124
- package/src/settings/sections/keybindings/labels.ts +0 -72
- package/src/settings/sections/keybindings/rows.ts +0 -103
- package/src/settings/sections/logs/LogsSection.tsx +0 -153
- package/src/settings/sections/logs/labels.ts +0 -20
- package/src/settings/sections/mcp/McpAddForm.tsx +0 -245
- package/src/settings/sections/mcp/McpSection.tsx +0 -358
- package/src/settings/sections/mcp/McpServerRow.tsx +0 -403
- package/src/settings/sections/mcp/labels.ts +0 -193
- package/src/settings/sections/models/AgentDefaults.tsx +0 -365
- package/src/settings/sections/models/ModelListPicker.tsx +0 -265
- package/src/settings/sections/models/ModelPickField.tsx +0 -220
- package/src/settings/sections/models/ModelRows.tsx +0 -381
- package/src/settings/sections/models/SpacesDefaultsSection.tsx +0 -102
- package/src/settings/sections/models/labels.ts +0 -119
- package/src/settings/sections/models/model-test.tsx +0 -125
- package/src/settings/sections/performance/PerfSparkline.tsx +0 -64
- package/src/settings/sections/performance/PerformanceHud.tsx +0 -110
- package/src/settings/sections/performance/PerformanceSection.tsx +0 -770
- package/src/settings/sections/performance/labels.ts +0 -114
- package/src/settings/sections/performance/use-perf-monitor.ts +0 -26
- package/src/settings/sections/plugins/PluginsSection.tsx +0 -148
- package/src/settings/sections/plugins/labels.ts +0 -23
- package/src/settings/sections/providers/CredentialSources.tsx +0 -237
- package/src/settings/sections/providers/ProvidersSection.tsx +0 -389
- package/src/settings/sections/providers/ServerProvidersSection.tsx +0 -244
- package/src/settings/sections/providers/ServerSignIn.tsx +0 -136
- package/src/settings/sections/providers/labels.ts +0 -160
- package/src/settings/sections/shared/catalog.tsx +0 -246
- package/src/settings/sections/shared/labels.ts +0 -31
- package/src/settings/sections/skills/SkillList.tsx +0 -494
- package/src/settings/sections/skills/SkillsSection.tsx +0 -249
- package/src/settings/sections/skills/labels.ts +0 -54
- package/src/settings/sections/use-section-labels.ts +0 -10
- package/src/settings/testing/accounts-demo.ts +0 -110
- package/src/settings/testing/accounts.contract.ts +0 -319
- package/src/settings/testing/claude-import.contract.ts +0 -93
- package/src/settings/testing/contract.ts +0 -192
- package/src/settings/testing/extension-options.contract.ts +0 -163
- package/src/settings/testing/index.ts +0 -11
- package/src/settings/testing/models.contract.ts +0 -135
- package/src/settings/testing/performance.contract.ts +0 -219
- package/src/settings/testing/sections.contract.ts +0 -306
- package/src/terminal/HostTerminalSurface.tsx +0 -911
- package/src/terminal/TerminalDrawer.tsx +0 -228
- package/src/terminal/TerminalPanel.tsx +0 -740
- package/src/terminal/TerminalProvider.tsx +0 -201
- package/src/terminal/TerminalSurface.tsx +0 -262
- package/src/terminal/box-glyphs.ts +0 -333
- package/src/terminal/ghostty.ts +0 -116
- package/src/terminal/grid-size.ts +0 -46
- package/src/terminal/headless/fixture-host.ts +0 -250
- package/src/terminal/headless/host.ts +0 -99
- package/src/terminal/headless/index.ts +0 -11
- package/src/terminal/headless/labels.ts +0 -69
- package/src/terminal/headless/layout.ts +0 -57
- package/src/terminal/headless/links.ts +0 -227
- package/src/terminal/headless/order.ts +0 -28
- package/src/terminal/headless/output-cursor.ts +0 -66
- package/src/terminal/headless/recent.ts +0 -20
- package/src/terminal/headless/replay.ts +0 -45
- package/src/terminal/headless/scope.ts +0 -60
- package/src/terminal/headless/store.ts +0 -621
- package/src/terminal/index.ts +0 -40
- package/src/terminal/keys.ts +0 -34
- package/src/terminal/testing/contract.ts +0 -274
- package/src/terminal/testing/demo.ts +0 -40
- package/src/terminal/testing/index.ts +0 -7
- package/src/terminal/theme.ts +0 -110
- package/src/terminal/useTerminalLabels.ts +0 -14
- package/src/theme/accents.ts +0 -46
- package/src/theme/color.ts +0 -450
- package/src/theme/css-vars.ts +0 -187
- package/src/theme/derive.ts +0 -700
- package/src/theme/from-theme.ts +0 -52
- package/src/theme/stylesheet.ts +0 -55
- package/src/theme/themes.ts +0 -767
- package/src/theme/without-transitions.ts +0 -18
- package/src/uno.ts +0 -167
- package/src/workspace/LayoutBudget.tsx +0 -143
- package/src/workspace/PanelContentView.tsx +0 -335
- package/src/workspace/PanelGroups.tsx +0 -249
- package/src/workspace/PanelStrip.tsx +0 -307
- package/src/workspace/SidePanel.tsx +0 -192
- package/src/workspace/TabParking.tsx +0 -111
- package/src/workspace/WorkspaceProvider.tsx +0 -554
- package/src/workspace/dnd/engine.ts +0 -371
- package/src/workspace/dnd/hooks.ts +0 -72
- package/src/workspace/dnd/index.ts +0 -57
- package/src/workspace/dnd/parking.tsx +0 -181
- package/src/workspace/frame-motion.ts +0 -160
- package/src/workspace/headless/contents.ts +0 -125
- package/src/workspace/headless/host.ts +0 -118
- package/src/workspace/headless/index.ts +0 -33
- package/src/workspace/headless/labels.ts +0 -34
- package/src/workspace/headless/layout-memory.ts +0 -649
- package/src/workspace/headless/layouts.ts +0 -224
- package/src/workspace/headless/open-target.ts +0 -125
- package/src/workspace/headless/ops.ts +0 -163
- package/src/workspace/headless/panel-focus.ts +0 -58
- package/src/workspace/headless/panel-tree.ts +0 -259
- package/src/workspace/headless/resolve.ts +0 -146
- package/src/workspace/headless/reveal-at.ts +0 -27
- package/src/workspace/headless/strip-drop.ts +0 -81
- package/src/workspace/headless/tree.ts +0 -480
- package/src/workspace/headless/view.ts +0 -159
- package/src/workspace/index.ts +0 -22
- package/src/workspace/panel-group-keys.ts +0 -36
- package/src/workspace/panel-visibility.ts +0 -28
- package/src/workspace/tab-scopes.ts +0 -245
- package/src/workspace/testing/contract.ts +0 -282
- package/src/workspace/testing/index.ts +0 -140
- package/src/workspace/use-split-drag.ts +0 -73
- package/src/workspace/useScopeLayout.ts +0 -26
- package/src/workspace/useViewport.ts +0 -22
- package/src/workspace/useWorkspaceLabels.ts +0 -14
- package/src/workspace/workspace-key-commands.ts +0 -108
- /package/dist/dist/{types-bDQagoiL.d.ts → types-2HrgolQz.d.ts} +0 -0
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smooth streaming's pace: streamed reply text waits in a per-owner bucket
|
|
3
|
-
* and leaves it at a steady rate, one slice a frame, so a reply reveals
|
|
4
|
-
* evenly however unevenly its deltas arrive (the `smoothStreaming`
|
|
5
|
-
* setting). The math only; the caller owns the frame loop: the desktop
|
|
6
|
-
* app's `StreamProvider` drives one ticker for all its sessions,
|
|
7
|
-
* `createStreamPacer` (`adapters/stream-pacer.ts`) one per run. The pace is
|
|
8
|
-
* core's (`smoothCharsForTick`), the TUI's too: a continuous ramp from 200
|
|
9
|
-
* to 4000 chars a second as the backlog grows, never a one-frame dump.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { smoothCharsForTick, takeChars } from 'zidane/chat/pure';
|
|
13
|
-
|
|
14
|
-
/** Tick interval (ms). Matches one frame at 60fps. */
|
|
15
|
-
export const SMOOTH_TICK_MS = 16;
|
|
16
|
-
|
|
17
|
-
/** One owner's streamed text waiting to reveal. */
|
|
18
|
-
export interface DeltaBucket {
|
|
19
|
-
/** Un-emitted text awaiting drain. */
|
|
20
|
-
pending: string;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Fractional char accumulator — prevents drift when `cps * dtMs / 1000`
|
|
24
|
-
* doesn't divide evenly into 1 over a single tick. Without this, a slow
|
|
25
|
-
* base rate (200cps * 0.016s = 3.2 chars) would always floor to 3,
|
|
26
|
-
* effectively running at 187cps.
|
|
27
|
-
*/
|
|
28
|
-
carry: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Slice `n` UTF-16 code units off the head of `text`, extending by one
|
|
33
|
-
* if the cut would land between a high surrogate and its low surrogate
|
|
34
|
-
* (core's `takeChars`).
|
|
35
|
-
*
|
|
36
|
-
* Returns `[head, tail]`: caller decides what to do with each side.
|
|
37
|
-
* `n <= 0` yields `['', text]`; `n >= text.length` yields `[text, '']`.
|
|
38
|
-
*
|
|
39
|
-
* @param text - The text to cut.
|
|
40
|
-
* @param n - How many code units the head takes.
|
|
41
|
-
*/
|
|
42
|
-
export function safeSurrogateSlice(text: string, n: number): [string, string] {
|
|
43
|
-
const { taken, rest } = takeChars(text, n);
|
|
44
|
-
return [taken, rest];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Compute how many chars to emit from `bucket` on this tick, at the pace
|
|
49
|
-
* its backlog sets. Mutates `bucket.carry` so caller can repeatedly tick
|
|
50
|
-
* without re-seeding. An empty bucket yields 0.
|
|
51
|
-
*
|
|
52
|
-
* @param bucket - The bucket to tick.
|
|
53
|
-
* @param dtMs - Milliseconds since its last tick.
|
|
54
|
-
*/
|
|
55
|
-
export function tickBucket(bucket: DeltaBucket, dtMs: number): number {
|
|
56
|
-
const { take, carry } = smoothCharsForTick(bucket.pending.length, bucket.carry, dtMs);
|
|
57
|
-
bucket.carry = carry;
|
|
58
|
-
return take;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Pop the head off `bucket.pending` using the surrogate-safe slice.
|
|
63
|
-
* Convenience over a raw `safeSurrogateSlice` call when the caller
|
|
64
|
-
* doesn't need the remainder.
|
|
65
|
-
*
|
|
66
|
-
* @param bucket - The bucket to drain.
|
|
67
|
-
* @param n - How many code units to take (see {@link tickBucket}).
|
|
68
|
-
*/
|
|
69
|
-
export function drainBucket(bucket: DeltaBucket, n: number): string {
|
|
70
|
-
const { taken, rest } = takeChars(bucket.pending, n);
|
|
71
|
-
bucket.pending = rest;
|
|
72
|
-
// A drained bucket starts the next stream from zero, as core's ticker does.
|
|
73
|
-
if (!rest) bucket.carry = 0;
|
|
74
|
-
|
|
75
|
-
return taken;
|
|
76
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The one reactive shape the chat layer reads: `get()` the current value,
|
|
3
|
-
* `subscribe()` to hear it changed. Hosts back it with whatever they have
|
|
4
|
-
* (the desktop app's stream store, a WebSocket, a fixture); components read
|
|
5
|
-
* it with `useReadable`, which is `useSyncExternalStore`.
|
|
6
|
-
*/
|
|
7
|
-
import { useSyncExternalStore } from 'react';
|
|
8
|
-
|
|
9
|
-
/** The shape every chat host exposes its data in: read the current value and subscribe to changes. */
|
|
10
|
-
export interface Readable<T> {
|
|
11
|
-
/** Returns the current value. */
|
|
12
|
-
get(): T;
|
|
13
|
-
/** Registers a listener called after the value changes. Returns a function that removes the listener. */
|
|
14
|
-
subscribe(onChange: () => void): () => void;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/** A {@link Readable} you can also write to. */
|
|
18
|
-
export interface Writable<T> extends Readable<T> {
|
|
19
|
-
/** Replaces the value, or computes the next one from the previous. Listeners run only when the value changes by `Object.is`. */
|
|
20
|
-
set(next: T | ((prev: T) => T)): void;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* A plain value store: the building block for simple hosts and fixtures.
|
|
25
|
-
*
|
|
26
|
-
* @param initial - The starting value.
|
|
27
|
-
*/
|
|
28
|
-
export function writable<T>(initial: T): Writable<T> {
|
|
29
|
-
let value = initial;
|
|
30
|
-
const listeners = new Set<() => void>();
|
|
31
|
-
return {
|
|
32
|
-
get: () => value,
|
|
33
|
-
set(next) {
|
|
34
|
-
const resolved = typeof next === 'function' ? (next as (prev: T) => T)(value) : next;
|
|
35
|
-
if (Object.is(resolved, value)) return;
|
|
36
|
-
value = resolved;
|
|
37
|
-
for (const l of [...listeners]) l();
|
|
38
|
-
},
|
|
39
|
-
subscribe(onChange) {
|
|
40
|
-
listeners.add(onChange);
|
|
41
|
-
return () => listeners.delete(onChange);
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* A store that never changes.
|
|
48
|
-
*
|
|
49
|
-
* @param value - The value the store always returns.
|
|
50
|
-
*/
|
|
51
|
-
export function constant<T>(value: T): Readable<T> {
|
|
52
|
-
return { get: () => value, subscribe: () => () => {} };
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Subscribes a component to a {@link Readable} and returns its current value, re-rendering when it changes.
|
|
57
|
-
*
|
|
58
|
-
* @param store - The store to read.
|
|
59
|
-
*/
|
|
60
|
-
export function useReadable<T>(store: Readable<T>): T {
|
|
61
|
-
return useSyncExternalStore(store.subscribe, store.get, store.get);
|
|
62
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session streams' writes as one object of bound functions: what an app
|
|
3
|
-
* hands to the code that dispatches (a send, a reset, a hydration) without
|
|
4
|
-
* subscribing it to the store. Created once per streams, so every function
|
|
5
|
-
* keeps its identity for as long as the streams live.
|
|
6
|
-
*/
|
|
7
|
-
import type { SystemMdFile } from 'zidane/chat';
|
|
8
|
-
import type { PromptSegmentRef } from 'zidane/chat/pure';
|
|
9
|
-
|
|
10
|
-
import type { ChatAttachment } from '../host';
|
|
11
|
-
import type { LoadEarlierOptions, SessionStreams } from './session-streams';
|
|
12
|
-
import type { SessionStreamPage } from './types';
|
|
13
|
-
|
|
14
|
-
/** The bound writes of a {@link SessionStreams}, from {@link createSessionStreamActions}. */
|
|
15
|
-
export interface SessionStreamActions<K extends string = string> {
|
|
16
|
-
/** Clears the session's transcript and run state, keeping its record. */
|
|
17
|
-
reset(sessionId: K): void;
|
|
18
|
-
/** Forgets the session (a deleted one). */
|
|
19
|
-
drop(sessionId: K): void;
|
|
20
|
-
/** Shows a sent prompt at once; the host's echo of it is then dropped. */
|
|
21
|
-
appendUserPrompt(
|
|
22
|
-
sessionId: K,
|
|
23
|
-
text: string,
|
|
24
|
-
refs?: readonly PromptSegmentRef[],
|
|
25
|
-
attachments?: readonly ChatAttachment[],
|
|
26
|
-
): void;
|
|
27
|
-
/** Unwinds one pending echo after a failed send. */
|
|
28
|
-
dropPendingEcho(sessionId: K, text: string): void;
|
|
29
|
-
/** Keeps a queued prompt's previews until the host sends it. */
|
|
30
|
-
rememberPromptPreviews(sessionId: K, text: string, attachments: readonly ChatAttachment[]): void;
|
|
31
|
-
/** Unwinds a queued prompt's previews after a failed enqueue. */
|
|
32
|
-
dropPromptPreviews(sessionId: K, text: string): void;
|
|
33
|
-
/** Re-keys a queued prompt's previews after its text is edited. */
|
|
34
|
-
renamePromptPreviews(sessionId: K, from: string, to: string): void;
|
|
35
|
-
/** Adds an error row to the session's transcript. */
|
|
36
|
-
appendErrorEvent(sessionId: K, text: string): void;
|
|
37
|
-
/** Whether the store holds any record for the session (no subscription). */
|
|
38
|
-
hasEvents(sessionId: K): boolean;
|
|
39
|
-
/** Seeds a run seen only through the session list. */
|
|
40
|
-
markRunning(sessionId: K): void;
|
|
41
|
-
/** Confirms the session is idle (a run that ended while nobody listened). */
|
|
42
|
-
confirmIdle(sessionId: K): void;
|
|
43
|
-
/** Evicts hydrated windows outside `keep`; running and mid-scrollback sessions stay. */
|
|
44
|
-
evictExcept(keep: ReadonlySet<K>): void;
|
|
45
|
-
/** Forgets every session. */
|
|
46
|
-
dropAll(): void;
|
|
47
|
-
/** Hydrates a tail page (events and scrollback bookkeeping, one notify). */
|
|
48
|
-
setEventsPage(sessionId: K, page: SessionStreamPage): void;
|
|
49
|
-
/** Seeds the session's `SYSTEM.md` override. */
|
|
50
|
-
seedSystemMd(sessionId: K, file: SystemMdFile | null): void;
|
|
51
|
-
/** Names the session the user reads: its run-end compaction waits until it is backgrounded. */
|
|
52
|
-
noteActiveSession(sessionId: K | null): void;
|
|
53
|
-
/** Fetches and splices the page before the window. `false` when no fetch started. */
|
|
54
|
-
loadEarlier(sessionId: K, options?: LoadEarlierOptions): boolean;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Binds the writes of `streams` (and its store) into one stable object.
|
|
59
|
-
*
|
|
60
|
-
* @param streams - The session streams to write to.
|
|
61
|
-
*/
|
|
62
|
-
export function createSessionStreamActions<K extends string>(streams: SessionStreams<K>): SessionStreamActions<K> {
|
|
63
|
-
const store = streams.store;
|
|
64
|
-
return {
|
|
65
|
-
reset: (sessionId) => streams.reset(sessionId),
|
|
66
|
-
drop: (sessionId) => streams.drop(sessionId),
|
|
67
|
-
dropAll: () => streams.dropAll(),
|
|
68
|
-
evictExcept: (keep) => streams.evictExcept(keep),
|
|
69
|
-
setEventsPage: (sessionId, page) => store.setEventsPage(sessionId, page),
|
|
70
|
-
seedSystemMd: (sessionId, file) => store.seedSystemMd(sessionId, file),
|
|
71
|
-
loadEarlier: (sessionId, options) => streams.loadEarlier(sessionId, options),
|
|
72
|
-
appendUserPrompt: (sessionId, text, refs, attachments) =>
|
|
73
|
-
store.appendUserPrompt(sessionId, text, refs, attachments),
|
|
74
|
-
dropPendingEcho: (sessionId, text) => store.dropPendingEcho(sessionId, text),
|
|
75
|
-
rememberPromptPreviews: (sessionId, text, attachments) =>
|
|
76
|
-
store.rememberPromptPreviews(sessionId, text, attachments),
|
|
77
|
-
dropPromptPreviews: (sessionId, text) => store.dropPromptPreviews(sessionId, text),
|
|
78
|
-
renamePromptPreviews: (sessionId, from, to) => store.renamePromptPreviews(sessionId, from, to),
|
|
79
|
-
appendErrorEvent: (sessionId, text) => store.appendErrorEvent(sessionId, text),
|
|
80
|
-
hasEvents: (sessionId) => store.hasEvents(sessionId),
|
|
81
|
-
markRunning: (sessionId) => store.markRunning(sessionId),
|
|
82
|
-
confirmIdle: (sessionId) => streams.confirmIdle(sessionId),
|
|
83
|
-
noteActiveSession: (sessionId) => streams.noteActiveSession(sessionId),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session stream store: every session's live transcript and run state,
|
|
3
|
-
* reduced from zidane's host signals, with per-session subscriptions,
|
|
4
|
-
* smooth-stream pacing, lazy scrollback and run-end compaction. React-free.
|
|
5
|
-
*/
|
|
6
|
-
export { createSessionStreams } from './session-streams';
|
|
7
|
-
export type { LoadEarlierOptions, SessionStreams, SessionStreamsOptions } from './session-streams';
|
|
8
|
-
export { SessionStreamStore } from './store';
|
|
9
|
-
export type { SessionStreamStoreOptions, SessionStreamWrite } from './store';
|
|
10
|
-
export type { DrainPlan } from './pacer';
|
|
11
|
-
export { defaultFrameScheduler } from './scheduler';
|
|
12
|
-
export type { FrameScheduler } from './scheduler';
|
|
13
|
-
export { mergeLiveTail } from './merge';
|
|
14
|
-
export { mergePromptPreviews, missingPreviewData } from './prompt-previews';
|
|
15
|
-
export { createSessionStreamActions } from './actions';
|
|
16
|
-
export type { SessionStreamActions } from './actions';
|
|
17
|
-
export { selectEditEvents, stableSelection } from './selectors';
|
|
18
|
-
export type {
|
|
19
|
-
OtherStreamSignal,
|
|
20
|
-
SessionFallbackModel,
|
|
21
|
-
SessionPageState,
|
|
22
|
-
SessionRetryState,
|
|
23
|
-
SessionStreamPage,
|
|
24
|
-
SessionStreamSignal,
|
|
25
|
-
} from './types';
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zidane's live event rule, on zidane's own reducers (`zidane/chat/pure`):
|
|
3
|
-
* a `markdown` event with `streaming: true` and every `thinking` event are
|
|
4
|
-
* deltas that grow the same owner's open block (the parent agent's, or a
|
|
5
|
-
* subagent's by `childId`); every other event is a whole row, appended.
|
|
6
|
-
* This is how the TUI and the desktop app reduce the engine's `event`
|
|
7
|
-
* signals. React-free and runtime-free: the SSE server keeps its cached
|
|
8
|
-
* transcripts with it too.
|
|
9
|
-
*
|
|
10
|
-
* A thinking lane is live from its first event (`thinkingStartedAt`) until
|
|
11
|
-
* it closes (`thinkingMs`): a non-thinking event of its owner closes it, and
|
|
12
|
-
* the run's end closes every lane still open.
|
|
13
|
-
*/
|
|
14
|
-
import type { Owner, StreamEvent } from 'zidane/chat';
|
|
15
|
-
import {
|
|
16
|
-
appendMarkdownDelta,
|
|
17
|
-
appendThinkingLines,
|
|
18
|
-
finalizeStreamingMarkdown,
|
|
19
|
-
mergeTargetIndex,
|
|
20
|
-
ownerOf,
|
|
21
|
-
type MarkdownDeltaOptions,
|
|
22
|
-
} from 'zidane/chat/pure';
|
|
23
|
-
|
|
24
|
-
import type { ChatEvent } from '../host';
|
|
25
|
-
|
|
26
|
-
/** A live transcript event with the live timings (`ChatEvent`'s, the desktop app's `GuiStreamEvent`'s). */
|
|
27
|
-
type TimedEvent = Omit<StreamEvent, 'attachments'> & Pick<ChatEvent, 'thinkingStartedAt' | 'thinkingMs' | 'receivedAt'>;
|
|
28
|
-
|
|
29
|
-
// The reducers are generic over StreamEvent; a timed event only narrows `attachments`.
|
|
30
|
-
type Rows = StreamEvent[];
|
|
31
|
-
const rows = (events: readonly TimedEvent[]) => events as unknown as Rows;
|
|
32
|
-
const timed = <E extends TimedEvent>(events: readonly TimedEvent[]) => events as unknown as E[];
|
|
33
|
-
|
|
34
|
-
const closed = <E extends TimedEvent>(event: E, startedAt: number, now: number): E => ({
|
|
35
|
-
...event,
|
|
36
|
-
thinkingMs: Math.max(0, now - startedAt),
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Closes `owner`'s open thinking segment (the tail's, any owner, when `owner`
|
|
41
|
-
* is omitted): the segment's stamped first event is REPLACED by one carrying
|
|
42
|
-
* `thinkingMs`. The fresh object identity is deliberate: the transcript's
|
|
43
|
-
* collapse cache is keyed by event object, so exactly that one row rebuilds.
|
|
44
|
-
* The segment is the collapse merge's: strictly consecutive thinking events
|
|
45
|
-
* sharing turnId / childId / depth.
|
|
46
|
-
*
|
|
47
|
-
* @param events - The transcript so far.
|
|
48
|
-
* @param owner - The owner whose segment closes; the tail's when omitted.
|
|
49
|
-
* @param now - Epoch milliseconds the segment closes at. Defaults to the current time.
|
|
50
|
-
*/
|
|
51
|
-
export function closeThinkingSegment<E extends TimedEvent>(events: E[], owner?: Owner, now = Date.now()): E[] {
|
|
52
|
-
// An owner's segment may sit behind concurrent siblings' rows.
|
|
53
|
-
const end = owner === undefined ? events.length - 1 : mergeTargetIndex(events as unknown as Rows, owner);
|
|
54
|
-
const tail = end >= 0 ? events[end] : undefined;
|
|
55
|
-
if (!tail || tail.kind !== 'thinking') return events;
|
|
56
|
-
let start = end;
|
|
57
|
-
while (start > 0) {
|
|
58
|
-
const prev = events[start - 1]!;
|
|
59
|
-
if (
|
|
60
|
-
prev.kind !== 'thinking' ||
|
|
61
|
-
prev.turnId !== tail.turnId ||
|
|
62
|
-
prev.childId !== tail.childId ||
|
|
63
|
-
prev.depth !== tail.depth
|
|
64
|
-
)
|
|
65
|
-
break;
|
|
66
|
-
start--;
|
|
67
|
-
}
|
|
68
|
-
for (let i = start; i <= end; i++) {
|
|
69
|
-
const startedAt = events[i]!.thinkingStartedAt;
|
|
70
|
-
if (startedAt !== undefined && events[i]!.thinkingMs === undefined) {
|
|
71
|
-
const next = events.slice();
|
|
72
|
-
next[i] = closed(events[i]!, startedAt, now);
|
|
73
|
-
return next;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return events;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* One live event folded into a transcript (`now` stamps arrival on tool rows and thinking lanes).
|
|
81
|
-
* Generic over the event type so the desktop app's `GuiStreamEvent` lanes fold the same way.
|
|
82
|
-
*
|
|
83
|
-
* @param events - The transcript so far.
|
|
84
|
-
* @param event - The live event to fold in.
|
|
85
|
-
* @param now - Epoch milliseconds stamped on tool rows and thinking lanes as their arrival time. Defaults to the current time.
|
|
86
|
-
* @param markdown - How streamed markdown merges (`segmentChars`: where a long message splits). The reducer's default when omitted.
|
|
87
|
-
*/
|
|
88
|
-
export function applyLiveEvent<E extends TimedEvent = ChatEvent>(
|
|
89
|
-
events: readonly E[],
|
|
90
|
-
event: E,
|
|
91
|
-
now = Date.now(),
|
|
92
|
-
markdown?: MarkdownDeltaOptions,
|
|
93
|
-
): E[] {
|
|
94
|
-
const owner = ownerOf(event as StreamEvent);
|
|
95
|
-
if (event.kind === 'thinking') {
|
|
96
|
-
return timed<E>(
|
|
97
|
-
appendThinkingLines(rows(events), event.text, owner, event.depth, event.turnId, {
|
|
98
|
-
onLaneOpen: (row) => ({ ...row, thinkingStartedAt: now }) as StreamEvent,
|
|
99
|
-
}),
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
const open = closeThinkingSegment(events as E[], owner, now);
|
|
103
|
-
if (event.kind === 'markdown' && event.streaming)
|
|
104
|
-
return timed<E>(appendMarkdownDelta(rows(open), event.text, owner, event.depth, event.turnId, markdown));
|
|
105
|
-
if (event.kind === 'tool' || event.kind === 'tool-result')
|
|
106
|
-
return [...open, event.receivedAt ? event : { ...event, receivedAt: now }];
|
|
107
|
-
return [...open, event];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* A run ended: close the blocks still marked streaming and every thinking lane still open.
|
|
112
|
-
*
|
|
113
|
-
* @param events - The transcript so far.
|
|
114
|
-
* @param now - Epoch milliseconds the open lanes close at. Defaults to the current time.
|
|
115
|
-
*/
|
|
116
|
-
export function finishLive<E extends TimedEvent = ChatEvent>(events: readonly E[], now = Date.now()): E[] {
|
|
117
|
-
const open = events.some((e) => e.thinkingStartedAt !== undefined && e.thinkingMs === undefined);
|
|
118
|
-
const settled = open
|
|
119
|
-
? events.map((e) =>
|
|
120
|
-
e.thinkingStartedAt !== undefined && e.thinkingMs === undefined ? closed(e, e.thinkingStartedAt, now) : e,
|
|
121
|
-
)
|
|
122
|
-
: events;
|
|
123
|
-
return timed<E>(finalizeStreamingMarkdown(rows(settled)));
|
|
124
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { reconcileEvents } from 'zidane/chat/pure';
|
|
2
|
-
|
|
3
|
-
import type { ChatEvent } from '../host';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Hydrate a live-only window: the disk page followed by the live events
|
|
7
|
-
* that disk does not have yet. Persisted turns and their live events share
|
|
8
|
-
* a `turnId` (hooks pre-mint it), so the boundary is the LAST live event
|
|
9
|
-
* whose turn is on the page — everything after it (the in-flight turn's
|
|
10
|
-
* streaming markdown, a display-only error row) is kept; everything before
|
|
11
|
-
* it is superseded by its persisted form. No live turn on the page (the
|
|
12
|
-
* run's first turn is still streaming) keeps the whole live lane.
|
|
13
|
-
*
|
|
14
|
-
* Untagged live events in the kept suffix (a `user-prompt` echo is
|
|
15
|
-
* broadcast bare and only retagged by `prompt-turns`, `steer:inject` echoes
|
|
16
|
-
* likewise) are dropped when the page's trailing part already holds the
|
|
17
|
-
* same `kind` + `text` — otherwise the disk copy and the echo both render.
|
|
18
|
-
*
|
|
19
|
-
* @param live - The window's live events (never hydrated from disk).
|
|
20
|
-
* @param page - The persisted page to hydrate it with.
|
|
21
|
-
*/
|
|
22
|
-
export function mergeLiveTail(live: readonly ChatEvent[], page: readonly ChatEvent[]): ChatEvent[] {
|
|
23
|
-
if (live.length === 0) {
|
|
24
|
-
return [...page];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const persisted = new Set<string>();
|
|
28
|
-
for (const event of page) {
|
|
29
|
-
if (event.turnId) {
|
|
30
|
-
persisted.add(event.turnId);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let lastPersisted = -1;
|
|
35
|
-
for (let i = live.length - 1; i >= 0; i--) {
|
|
36
|
-
const turnId = live[i]!.turnId;
|
|
37
|
-
if (turnId && persisted.has(turnId)) {
|
|
38
|
-
lastPersisted = i;
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Page events after the boundary turn; the whole page when there is none.
|
|
44
|
-
const boundaryTurn = lastPersisted === -1 ? undefined : live[lastPersisted]!.turnId;
|
|
45
|
-
let trailingFrom = 0;
|
|
46
|
-
if (boundaryTurn) {
|
|
47
|
-
for (let i = page.length - 1; i >= 0; i--) {
|
|
48
|
-
if (page[i]!.turnId === boundaryTurn) {
|
|
49
|
-
trailingFrom = i + 1;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const trailing = page.slice(trailingFrom);
|
|
55
|
-
const suffix = live
|
|
56
|
-
.slice(lastPersisted + 1)
|
|
57
|
-
.filter((event) => event.turnId || !trailing.some((p) => p.kind === event.kind && p.text === event.text));
|
|
58
|
-
|
|
59
|
-
return [...reconcileEvents(live, page), ...suffix];
|
|
60
|
-
}
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smooth-stream buckets, one per (session, owner): streamed markdown waits
|
|
3
|
-
* here and a once-per-frame ticker drains it at a steady pace. Keyed by
|
|
4
|
-
* session AND owner so concurrent sessions and nested subagents pace
|
|
5
|
-
* independently. The helpers mutate the bucket map in place and return the
|
|
6
|
-
* text to reveal as a {@link DrainPlan}, which the store applies in one pass.
|
|
7
|
-
*/
|
|
8
|
-
import type { Owner } from 'zidane/chat';
|
|
9
|
-
|
|
10
|
-
import { type DeltaBucket, drainBucket, tickBucket } from '../smooth-stream';
|
|
11
|
-
import type { SessionStreamSignal } from './types';
|
|
12
|
-
|
|
13
|
-
const PARENT_OWNER: Owner = 'parent';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Bucket value extends `DeltaBucket` with the most-recent markdown event's
|
|
17
|
-
* ownership tags so the ticker can synthesize matching child / depth / turn
|
|
18
|
-
* metadata when emitting a delta — without this, drained chars would
|
|
19
|
-
* accidentally surface under `parent` and break subagent grouping.
|
|
20
|
-
*/
|
|
21
|
-
export interface OwnerBucket extends DeltaBucket {
|
|
22
|
-
childId?: string;
|
|
23
|
-
depth?: number;
|
|
24
|
-
turnId?: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** Streamed markdown released from a smooth-stream bucket, applied by {@link SessionStreamStore.applyDrainPlan}. */
|
|
28
|
-
export interface DrainPlan<K extends string = string> {
|
|
29
|
-
/** The session the text belongs to. */
|
|
30
|
-
sessionId: K;
|
|
31
|
-
/** The owner it streamed under: `'parent'` or a subagent's child id. */
|
|
32
|
-
ownerKey: string;
|
|
33
|
-
/** The text to reveal. */
|
|
34
|
-
text: string;
|
|
35
|
-
/** The subagent's child id, for a subagent's reply. */
|
|
36
|
-
childId?: string;
|
|
37
|
-
/** The subagent's nesting depth. */
|
|
38
|
-
depth?: number;
|
|
39
|
-
/** The turn the text belongs to. */
|
|
40
|
-
turnId?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type BucketMap<K extends string> = Map<K, Map<string, OwnerBucket>>;
|
|
44
|
-
|
|
45
|
-
export function getOrCreateBucket<K extends string>(
|
|
46
|
-
buckets: BucketMap<K>,
|
|
47
|
-
sessionId: K,
|
|
48
|
-
ownerKey: string,
|
|
49
|
-
): OwnerBucket {
|
|
50
|
-
let sessionMap = buckets.get(sessionId);
|
|
51
|
-
|
|
52
|
-
if (!sessionMap) {
|
|
53
|
-
sessionMap = new Map();
|
|
54
|
-
buckets.set(sessionId, sessionMap);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let bucket = sessionMap.get(ownerKey);
|
|
58
|
-
|
|
59
|
-
if (!bucket) {
|
|
60
|
-
bucket = { pending: '', carry: 0 };
|
|
61
|
-
sessionMap.set(ownerKey, bucket);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return bucket;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export function allBucketsEmpty<K extends string>(buckets: BucketMap<K>): boolean {
|
|
68
|
-
for (const sessionMap of buckets.values()) {
|
|
69
|
-
for (const bucket of sessionMap.values()) {
|
|
70
|
-
if (bucket.pending.length > 0) {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Build the per-tick drain plan. Mutates each bucket's `pending` and
|
|
81
|
-
* `carry` so the caller's store update only needs to apply the
|
|
82
|
-
* synthetic deltas — no second pass to update bucket bookkeeping.
|
|
83
|
-
*/
|
|
84
|
-
export function planTickDrain<K extends string>(buckets: BucketMap<K>, dtMs: number): DrainPlan<K>[] {
|
|
85
|
-
const plan: DrainPlan<K>[] = [];
|
|
86
|
-
|
|
87
|
-
for (const [sessionId, sessionMap] of buckets) {
|
|
88
|
-
for (const [ownerKey, bucket] of sessionMap) {
|
|
89
|
-
const n = tickBucket(bucket, dtMs);
|
|
90
|
-
|
|
91
|
-
if (n === 0) {
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const text = drainBucket(bucket, n);
|
|
96
|
-
|
|
97
|
-
if (text.length === 0) {
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
plan.push({
|
|
102
|
-
sessionId,
|
|
103
|
-
ownerKey,
|
|
104
|
-
text,
|
|
105
|
-
childId: bucket.childId,
|
|
106
|
-
depth: bucket.depth,
|
|
107
|
-
turnId: bucket.turnId,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return plan;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Drain decisions when a non-markdown signal arrives. Turn / run
|
|
117
|
-
* boundaries drain unconditionally (across owners) so finalize sees
|
|
118
|
-
* a clean tail; other events drain only the matching owner so unrelated
|
|
119
|
-
* subagents keep their paced rhythm.
|
|
120
|
-
*/
|
|
121
|
-
export function planDrainBeforeSignal<K extends string>(
|
|
122
|
-
buckets: BucketMap<K>,
|
|
123
|
-
signal: SessionStreamSignal<K>,
|
|
124
|
-
): DrainPlan<K>[] {
|
|
125
|
-
const plan: DrainPlan<K>[] = [];
|
|
126
|
-
|
|
127
|
-
if (signal.kind === 'run:end' || signal.kind === 'run:start') {
|
|
128
|
-
const sessionMap = buckets.get(signal.sessionId);
|
|
129
|
-
|
|
130
|
-
if (sessionMap) {
|
|
131
|
-
for (const [ownerKey, bucket] of sessionMap) {
|
|
132
|
-
pushFullDrain(plan, signal.sessionId, ownerKey, bucket);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return plan;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (signal.kind === 'turn:end' || signal.kind === 'event') {
|
|
140
|
-
const sessionMap = buckets.get(signal.sessionId);
|
|
141
|
-
|
|
142
|
-
if (sessionMap) {
|
|
143
|
-
const ownerKey = (signal.kind === 'event' ? signal.event.childId : signal.childId) ?? PARENT_OWNER;
|
|
144
|
-
const bucket = sessionMap.get(ownerKey);
|
|
145
|
-
|
|
146
|
-
if (bucket) {
|
|
147
|
-
pushFullDrain(plan, signal.sessionId, ownerKey, bucket);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return plan;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export function planFullDrain<K extends string>(buckets: BucketMap<K>): DrainPlan<K>[] {
|
|
156
|
-
const plan: DrainPlan<K>[] = [];
|
|
157
|
-
|
|
158
|
-
for (const [sessionId, sessionMap] of buckets) {
|
|
159
|
-
for (const [ownerKey, bucket] of sessionMap) {
|
|
160
|
-
pushFullDrain(plan, sessionId, ownerKey, bucket);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return plan;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
function pushFullDrain<K extends string>(
|
|
168
|
-
plan: DrainPlan<K>[],
|
|
169
|
-
sessionId: K,
|
|
170
|
-
ownerKey: string,
|
|
171
|
-
bucket: OwnerBucket,
|
|
172
|
-
): void {
|
|
173
|
-
if (bucket.pending.length === 0) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const text = bucket.pending;
|
|
178
|
-
bucket.pending = '';
|
|
179
|
-
bucket.carry = 0;
|
|
180
|
-
|
|
181
|
-
plan.push({
|
|
182
|
-
sessionId,
|
|
183
|
-
ownerKey,
|
|
184
|
-
text,
|
|
185
|
-
childId: bucket.childId,
|
|
186
|
-
depth: bucket.depth,
|
|
187
|
-
turnId: bucket.turnId,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Image and PDF previews for prompts whose bytes never come back from the host.
|
|
3
|
-
*
|
|
4
|
-
* A queued message is sent host-side when the run ends (or on push). The
|
|
5
|
-
* host's `user-prompt` broadcast carries attachment METADATA only (name,
|
|
6
|
-
* media type, size), so the window that queued it rendered a broken
|
|
7
|
-
* thumbnail (or a PDF chip that could not open), and a pushed entry's
|
|
8
|
-
* optimistic copy carried none at all. The window that queued the message
|
|
9
|
-
* still holds the data URLs it built; this matches them back onto whichever
|
|
10
|
-
* copy of the prompt reaches the transcript. Windows that never had the
|
|
11
|
-
* bytes keep a metadata chip until the transcript re-converges from disk,
|
|
12
|
-
* where the rehydrator restores them.
|
|
13
|
-
*/
|
|
14
|
-
import type { ChatAttachment } from '../host';
|
|
15
|
-
|
|
16
|
-
/** An attachment the transcript previews from its bytes: an image or a PDF. */
|
|
17
|
-
const previewed = (att: ChatAttachment): boolean =>
|
|
18
|
-
att.mediaType.startsWith('image/') || att.mediaType.toLowerCase() === 'application/pdf';
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Fill `dataUrl` on image and PDF attachments that lack one, from `previews`:
|
|
22
|
-
* same media type and name first, then the next unused preview of that media
|
|
23
|
-
* type. With no incoming metadata at all (a local append that knew nothing
|
|
24
|
-
* of the attachments) the previews are the attachments.
|
|
25
|
-
*
|
|
26
|
-
* @param attachments - The attachments the prompt arrived with, metadata only for a host-sent copy.
|
|
27
|
-
* @param previews - The attachments this client kept when it queued the prompt, with their bytes.
|
|
28
|
-
*/
|
|
29
|
-
export function mergePromptPreviews(
|
|
30
|
-
attachments: readonly ChatAttachment[] | undefined,
|
|
31
|
-
previews: readonly ChatAttachment[],
|
|
32
|
-
): ChatAttachment[] | undefined {
|
|
33
|
-
if (previews.length === 0) return attachments ? [...attachments] : undefined;
|
|
34
|
-
if (!attachments || attachments.length === 0) return [...previews];
|
|
35
|
-
|
|
36
|
-
const used = new Set<number>();
|
|
37
|
-
const claim = (match: (p: ChatAttachment) => boolean): ChatAttachment | undefined => {
|
|
38
|
-
const index = previews.findIndex((p, i) => !used.has(i) && p.dataUrl !== undefined && match(p));
|
|
39
|
-
if (index === -1) return undefined;
|
|
40
|
-
used.add(index);
|
|
41
|
-
return previews[index];
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const needs = (att: ChatAttachment): boolean => att.dataUrl === undefined && previewed(att);
|
|
45
|
-
// Two passes: exact names claim their previews first, so an unnamed match
|
|
46
|
-
// earlier in the list can't take a preview that belongs to a later name.
|
|
47
|
-
const byName = attachments.map((att) =>
|
|
48
|
-
needs(att) ? claim((p) => p.mediaType === att.mediaType && p.name === att.name) : undefined,
|
|
49
|
-
);
|
|
50
|
-
return attachments.map((att, i) => {
|
|
51
|
-
if (!needs(att)) return att;
|
|
52
|
-
const preview = byName[i] ?? claim((p) => p.mediaType === att.mediaType);
|
|
53
|
-
return preview ? { ...att, dataUrl: preview.dataUrl } : att;
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* True when some image or PDF attachment has no bytes to show.
|
|
59
|
-
*
|
|
60
|
-
* @param attachments - The prompt's attachments.
|
|
61
|
-
*/
|
|
62
|
-
export function missingPreviewData(attachments: readonly ChatAttachment[] | undefined): boolean {
|
|
63
|
-
return attachments?.some((a) => previewed(a) && a.dataUrl === undefined) ?? false;
|
|
64
|
-
}
|