zidane-ui 9.1.1 → 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 +2 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/server-transcript-members.d.ts +1 -1
- package/dist/adapters/server-transcript-members.js +19 -1
- package/dist/app/ModalProvider.d.ts +3 -1
- package/dist/app/ModalProvider.js +15 -9
- package/dist/approvals/headless/index.js +1 -1
- package/dist/chat/HostTranscript.d.ts +3 -1
- package/dist/chat/HostTranscript.js +5 -3
- package/dist/chat/Transcript.js +1 -1
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/index.js +1 -1
- package/dist/chat/composer/use-composer-stores.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/composer/index.js +2 -2
- 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 +3 -0
- package/dist/chat/headless/index.d.ts +2 -1
- package/dist/chat/headless/index.js +12 -11
- package/dist/chat/headless/labels.d.ts +42 -0
- package/dist/chat/headless/labels.js +42 -0
- package/dist/chat/headless/session-list.d.ts +27 -0
- package/dist/chat/headless/sidebar/index.js +1 -1
- package/dist/chat/headless/sidebar/labels.d.ts +27 -0
- package/dist/chat/headless/streams/index.js +1 -1
- package/dist/chat/headless/streams/live-events.js +2 -1
- package/dist/chat/headless/streams/session-streams.js +2 -2
- package/dist/chat/headless/streams/store.js +2 -2
- 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 +18 -3
- package/dist/chat/headless/transcript/fold.js +26 -10
- package/dist/chat/headless/transcript/index.js +1 -1
- package/dist/chat/headless/transcript/rows.d.ts +7 -1
- package/dist/chat/index.d.ts +6 -1
- package/dist/chat/index.js +7 -2
- package/dist/chat/testing/contract.d.ts +6 -1
- package/dist/chat/testing/contract.js +30 -3
- package/dist/chat/transcript/AnsiText.d.ts +27 -0
- package/dist/chat/transcript/AnsiText.js +73 -0
- package/dist/chat/transcript/CodemodeScript.d.ts +33 -0
- package/dist/chat/transcript/CodemodeScript.js +212 -0
- package/dist/chat/transcript/LiveOutput.d.ts +21 -0
- package/dist/chat/transcript/LiveOutput.js +42 -0
- package/dist/chat/transcript/TranscriptRow.js +19 -2
- package/dist/chat/transcript/actions.d.ts +6 -0
- package/dist/chat/transcript/index.d.ts +6 -1
- package/dist/chat/transcript/index.js +6 -1
- package/dist/chat/transcript/markdown.js +9 -0
- package/dist/chat/transcript/renderers.d.ts +7 -0
- 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-parts.d.ts +18 -6
- package/dist/chat/transcript/tool-parts.js +15 -5
- package/dist/chat/transcript/tool-payload.js +6 -3
- package/dist/chat/transcript/tool-row.js +155 -96
- package/dist/chat/transcript/user-bash.js +3 -2
- package/dist/code/HighlightedCode.js +3 -69
- package/dist/code/highlight-lines.d.ts +24 -0
- package/dist/code/highlight-lines.js +41 -0
- package/dist/code/use-highlighted-html.d.ts +5 -0
- package/dist/code/use-highlighted-html.js +75 -0
- package/dist/core.css +6 -2
- package/dist/dist/{index-CGbOWa7y.d.ts → index-WlE93Q6d.d.ts} +101 -3
- package/dist/extensions/ExtensionSettingsSidebar.js +19 -3
- package/dist/extensions/kit.d.ts +1 -1
- package/dist/git/BranchMenu.d.ts +1 -7
- package/dist/git/BranchMenu.js +17 -40
- package/dist/git/headless/labels.d.ts +0 -2
- package/dist/git/headless/labels.js +0 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/onboarding/index.js +1 -1
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ExtensionsStep.js +1 -1
- package/dist/onboarding/steps/ReadyStep.js +1 -1
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/session/headless/index.js +2 -2
- package/dist/settings/SettingsShell.d.ts +3 -1
- package/dist/settings/SettingsShell.js +15 -8
- package/dist/settings/headless/catalog.js +5 -0
- package/dist/settings/headless/layout.js +2 -1
- package/dist/settings/headless/registry.d.ts +2 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/sections/environments/EnvironmentsSection.js +1 -1
- package/dist/settings/sections/extensions/ExtensionsSection.js +2 -2
- package/dist/settings/sections/models/ModelRows.js +1 -1
- package/dist/settings/sections/models/model-test.js +1 -1
- package/dist/styles.css +291 -2
- package/dist/terminal/TerminalProvider.d.ts +3 -1
- package/dist/terminal/TerminalProvider.js +5 -1
- package/dist/terminal/headless/store.d.ts +10 -0
- package/dist/terminal/headless/store.js +16 -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/package.json +3 -6
- package/src/styles/primitives.css +5 -2
- package/src/styles/transcript.css +281 -0
- 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/extension-modules.ts +0 -360
- package/src/adapters/index.ts +0 -35
- package/src/adapters/live-events.ts +0 -6
- package/src/adapters/live.ts +0 -270
- 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 -459
- package/src/adapters/server-extensions-host.ts +0 -979
- 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 -489
- 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 -222
- 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 -135
- package/src/app/ModalProvider.tsx +0 -731
- package/src/app/headless/app-host.ts +0 -61
- 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 -383
- 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 -234
- 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 -310
- 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/RunEstimateChip.tsx +0 -168
- package/src/chat/SessionFilterMenu.tsx +0 -397
- package/src/chat/SessionGroupHeader.tsx +0 -177
- package/src/chat/SessionHostHeader.tsx +0 -66
- package/src/chat/SessionList.tsx +0 -413
- package/src/chat/SessionListRow.tsx +0 -296
- 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 -270
- package/src/chat/Transcript.tsx +0 -523
- 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 -168
- 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 -187
- 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/SelectTurnHint.tsx +0 -40
- package/src/chat/composer/SendButton.tsx +0 -89
- package/src/chat/composer/ServerScopeToggle.tsx +0 -188
- 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 -317
- 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 -317
- 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 -40
- 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 -227
- 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 -197
- package/src/chat/headless/composer/host.ts +0 -250
- package/src/chat/headless/composer/index.ts +0 -17
- 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/extension-sources.ts +0 -64
- 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 -264
- package/src/chat/headless/hosts.ts +0 -55
- package/src/chat/headless/index.ts +0 -31
- package/src/chat/headless/labels.ts +0 -373
- 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 -400
- package/src/chat/headless/sidebar/activity.ts +0 -179
- package/src/chat/headless/sidebar/badges.ts +0 -190
- package/src/chat/headless/sidebar/compaction.ts +0 -98
- package/src/chat/headless/sidebar/directory.ts +0 -1046
- package/src/chat/headless/sidebar/dot-state.ts +0 -36
- package/src/chat/headless/sidebar/environment.ts +0 -70
- package/src/chat/headless/sidebar/estimates.ts +0 -146
- package/src/chat/headless/sidebar/host.ts +0 -41
- package/src/chat/headless/sidebar/index.ts +0 -18
- package/src/chat/headless/sidebar/labels.ts +0 -161
- 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/query.ts +0 -621
- package/src/chat/headless/sidebar/rows.ts +0 -427
- package/src/chat/headless/sidebar/types.ts +0 -96
- package/src/chat/headless/sidebar/view.ts +0 -367
- 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 -407
- 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 -789
- 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 -377
- 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 -31
- 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 -1071
- 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-extension-composer.ts +0 -80
- 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 -399
- package/src/chat/sidebar/RowChips.tsx +0 -98
- package/src/chat/sidebar/SessionSidebar.tsx +0 -1039
- package/src/chat/sidebar/SidebarDecoration.tsx +0 -93
- package/src/chat/sidebar/SidebarFilterMenu.tsx +0 -270
- package/src/chat/sidebar/SidebarFooter.tsx +0 -244
- package/src/chat/sidebar/SidebarFrame.tsx +0 -154
- package/src/chat/sidebar/SidebarGroupHeader.tsx +0 -263
- package/src/chat/sidebar/SidebarHostProvider.tsx +0 -51
- package/src/chat/sidebar/SidebarRowView.tsx +0 -151
- package/src/chat/sidebar/SidebarSearchRow.tsx +0 -66
- package/src/chat/sidebar/SidebarSessionRow.tsx +0 -317
- package/src/chat/sidebar/SidebarToggleButton.tsx +0 -48
- package/src/chat/sidebar/SpaceSwitcher.tsx +0 -341
- package/src/chat/sidebar/SpacesSection.tsx +0 -259
- package/src/chat/sidebar/collapsed.ts +0 -61
- package/src/chat/sidebar/index.ts +0 -109
- package/src/chat/sidebar/session-menu.ts +0 -441
- package/src/chat/sidebar/sidebar-focus-hold.ts +0 -56
- package/src/chat/sidebar/sidebar-live.tsx +0 -666
- package/src/chat/sidebar/use-main-session.ts +0 -32
- package/src/chat/sidebar/useAgentNames.ts +0 -12
- package/src/chat/sidebar/useCompactionProgress.ts +0 -24
- package/src/chat/sidebar/usePinnedProjects.ts +0 -36
- package/src/chat/sidebar/useSaveViewAsSpace.ts +0 -42
- package/src/chat/sidebar/useSessionActivity.ts +0 -24
- package/src/chat/sidebar/useSessionBadges.ts +0 -26
- package/src/chat/sidebar/useSessionDirectoryView.ts +0 -128
- package/src/chat/sidebar/useSessionSearch.ts +0 -94
- package/src/chat/sidebar/useSidebarKeyboardNav.ts +0 -167
- package/src/chat/sidebar/useSidebarLabels.ts +0 -10
- package/src/chat/testing/composer.contract.ts +0 -508
- package/src/chat/testing/contract.ts +0 -634
- package/src/chat/testing/fixture-composer-chrome.ts +0 -159
- 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 -241
- package/src/chat/transcript/CardMarkdown.tsx +0 -102
- package/src/chat/transcript/ChipCard.tsx +0 -187
- 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 -176
- package/src/chat/transcript/FileChip.tsx +0 -361
- package/src/chat/transcript/ImageGenerationBlock.tsx +0 -239
- package/src/chat/transcript/InlineChipText.tsx +0 -57
- package/src/chat/transcript/InteractionToolBody.tsx +0 -211
- package/src/chat/transcript/LazyRow.tsx +0 -311
- package/src/chat/transcript/MermaidDiagram.tsx +0 -484
- package/src/chat/transcript/PromptEcho.tsx +0 -171
- package/src/chat/transcript/PromptOriginLabel.tsx +0 -44
- package/src/chat/transcript/ProseMarkdown.tsx +0 -168
- package/src/chat/transcript/ReferenceText.tsx +0 -198
- 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 -224
- package/src/chat/transcript/TranscriptRow.tsx +0 -362
- 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 -155
- package/src/chat/transcript/chip-details.ts +0 -169
- package/src/chat/transcript/chip-resolve.ts +0 -56
- package/src/chat/transcript/extension-renderers.tsx +0 -148
- 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 -522
- package/src/chat/transcript/frame.tsx +0 -326
- package/src/chat/transcript/index.ts +0 -66
- package/src/chat/transcript/markdown-cache.ts +0 -84
- package/src/chat/transcript/markdown-context.ts +0 -52
- package/src/chat/transcript/markdown.tsx +0 -351
- package/src/chat/transcript/messages.tsx +0 -169
- 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/recent-map.ts +0 -32
- package/src/chat/transcript/references.ts +0 -108
- 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 -251
- 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 -102
- package/src/chat/transcript/tool-details.tsx +0 -31
- package/src/chat/transcript/tool-media.tsx +0 -132
- package/src/chat/transcript/tool-parts.tsx +0 -358
- package/src/chat/transcript/tool-payload.tsx +0 -76
- package/src/chat/transcript/tool-row.tsx +0 -496
- 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 -163
- 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/transcript-options.ts +0 -51
- package/src/chat/useChatLabels.ts +0 -14
- package/src/code/CodeHighlightProvider.tsx +0 -87
- package/src/code/HighlightedCode.tsx +0 -156
- package/src/code/code-themes.ts +0 -187
- package/src/code/editor/CodeCompletion.tsx +0 -719
- package/src/code/editor/CodeEditor.tsx +0 -480
- package/src/code/editor/CodeHover.tsx +0 -429
- 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 -32
- 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 -155
- 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 -16
- package/src/code/highlighter.ts +0 -181
- package/src/code/highlights.ts +0 -51
- package/src/code/mermaid-lexer.ts +0 -331
- package/src/code/shiki-theme.ts +0 -46
- package/src/components/BrandMark.tsx +0 -118
- 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 -225
- 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 -593
- 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/extensions/ExtensionComponent.tsx +0 -167
- package/src/extensions/ExtensionDialogHost.tsx +0 -445
- package/src/extensions/ExtensionRenderer.tsx +0 -100
- package/src/extensions/ExtensionScreen.tsx +0 -122
- package/src/extensions/ExtensionSettingsPage.tsx +0 -112
- package/src/extensions/ExtensionSettingsPages.tsx +0 -44
- package/src/extensions/ExtensionSettingsSidebar.tsx +0 -373
- package/src/extensions/ExtensionSlot.tsx +0 -213
- package/src/extensions/ExtensionWebview.tsx +0 -104
- package/src/extensions/ExtensionsProvider.tsx +0 -124
- package/src/extensions/SettingsWireForm.tsx +0 -182
- package/src/extensions/headless/dialog-queue.ts +0 -92
- package/src/extensions/headless/effect-channel.ts +0 -50
- package/src/extensions/headless/effect-router.ts +0 -107
- package/src/extensions/headless/fixture-host.ts +0 -381
- package/src/extensions/headless/host.ts +0 -398
- package/src/extensions/headless/index.ts +0 -17
- package/src/extensions/headless/labels.ts +0 -64
- package/src/extensions/headless/links.ts +0 -56
- package/src/extensions/headless/select.ts +0 -249
- package/src/extensions/headless/webview-bridge.ts +0 -127
- package/src/extensions/headless/wire.ts +0 -175
- package/src/extensions/hooks.ts +0 -209
- package/src/extensions/index.ts +0 -25
- package/src/extensions/kit.ts +0 -79
- package/src/extensions/links.tsx +0 -165
- package/src/extensions/testing/contract.ts +0 -382
- package/src/extensions/testing/index.ts +0 -6
- package/src/extensions/useExtensionsLabels.ts +0 -14
- package/src/files/CodeViewer.tsx +0 -289
- package/src/files/DiffFileViewer.tsx +0 -143
- package/src/files/DiffsTab.tsx +0 -581
- package/src/files/EditorColumn.tsx +0 -453
- package/src/files/EditorEnvironmentRoot.tsx +0 -63
- 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 -192
- 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 -58
- 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 -25
- package/src/files/lazy-tabs.tsx +0 -41
- package/src/files/session-patch.ts +0 -45
- 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 -181
- 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 -988
- package/src/git/GitBar.tsx +0 -297
- package/src/git/GitProvider.tsx +0 -50
- package/src/git/ImportRepoDialog.tsx +0 -390
- package/src/git/MoveSessionDialog.tsx +0 -396
- 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/useDisplayPath.tsx +0 -93
- 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 -119
- 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 -15
- package/src/keybindings/load-once.ts +0 -11
- package/src/keybindings/match.ts +0 -48
- package/src/keybindings/press.ts +0 -80
- 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 -364
- package/src/machines/headless/messages.ts +0 -209
- 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 -196
- package/src/onboarding/demos/autonomy.tsx +0 -154
- package/src/onboarding/demos/extensions.tsx +0 -183
- package/src/onboarding/demos/features.tsx +0 -488
- 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 -282
- package/src/onboarding/index.ts +0 -21
- package/src/onboarding/marks.tsx +0 -107
- package/src/onboarding/preview-attachments.ts +0 -39
- package/src/onboarding/skills/SkillSourceBrowser.tsx +0 -128
- package/src/onboarding/skills/parts.tsx +0 -464
- package/src/onboarding/sources/SourceBrowser.tsx +0 -400
- package/src/onboarding/steps/AutonomyStep.tsx +0 -128
- package/src/onboarding/steps/ConnectStep.tsx +0 -104
- package/src/onboarding/steps/ConnectorsStep.tsx +0 -222
- package/src/onboarding/steps/ConversationStep.tsx +0 -132
- 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 -199
- 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 -260
- package/src/session/ArtifactsPanel.tsx +0 -426
- package/src/session/DiffFileTree.tsx +0 -173
- package/src/session/PanelAttention.tsx +0 -131
- package/src/session/ProjectHome.tsx +0 -733
- package/src/session/ProviderUsageProvider.tsx +0 -113
- 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 -627
- package/src/session/SessionHeader.tsx +0 -242
- package/src/session/SessionProvider.tsx +0 -98
- package/src/session/SessionShell.tsx +0 -77
- package/src/session/SideChat.tsx +0 -320
- package/src/session/TodoList.tsx +0 -123
- package/src/session/TodosPanel.tsx +0 -279
- package/src/session/TurnDetailsDialog.tsx +0 -299
- package/src/session/UsagePanel.tsx +0 -358
- package/src/session/WelcomeScreen.tsx +0 -88
- 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 -362
- package/src/session/headless/home-layout.ts +0 -276
- package/src/session/headless/host.ts +0 -263
- package/src/session/headless/index.ts +0 -23
- package/src/session/headless/keyed.ts +0 -72
- package/src/session/headless/labels.ts +0 -337
- 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 -19
- package/src/session/headless/usage.ts +0 -407
- package/src/session/index.ts +0 -31
- package/src/session/modal-shell.tsx +0 -24
- package/src/session/testing/contract.ts +0 -588
- package/src/session/testing/demo.ts +0 -224
- 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 -198
- package/src/settings/SettingsProvider.tsx +0 -127
- package/src/settings/SettingsRowsPage.tsx +0 -218
- package/src/settings/SettingsShell.tsx +0 -337
- package/src/settings/SettingsTutorial.tsx +0 -55
- package/src/settings/headless/catalog.ts +0 -570
- 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 -391
- package/src/settings/headless/host.ts +0 -127
- 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 -732
- 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 -62
- package/src/settings/headless/resource.ts +0 -75
- package/src/settings/headless/search.ts +0 -142
- package/src/settings/headless/sections-host.ts +0 -340
- 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/ChangeOriginDialog.tsx +0 -218
- package/src/settings/sections/extensions/CreateExtensionDialog.tsx +0 -210
- package/src/settings/sections/extensions/ExtensionConfigRows.tsx +0 -508
- package/src/settings/sections/extensions/ExtensionOptionsSection.tsx +0 -356
- package/src/settings/sections/extensions/ExtensionPicksBar.tsx +0 -112
- package/src/settings/sections/extensions/ExtensionSourceBrowser.tsx +0 -244
- package/src/settings/sections/extensions/ExtensionsSection.tsx +0 -665
- package/src/settings/sections/extensions/create-labels.ts +0 -31
- package/src/settings/sections/extensions/labels.ts +0 -64
- package/src/settings/sections/extensions/options-labels.ts +0 -34
- package/src/settings/sections/host-catalog/HostCatalogSection.tsx +0 -457
- package/src/settings/sections/host-catalog/labels.ts +0 -44
- package/src/settings/sections/index.ts +0 -60
- package/src/settings/sections/instructions/InstructionsSection.tsx +0 -385
- 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 -404
- 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 -151
- 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 -137
- package/src/settings/sections/providers/labels.ts +0 -160
- package/src/settings/sections/shared/catalog.tsx +0 -265
- 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 -917
- 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 -637
- 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 -523
- package/src/workspace/PanelCorner.tsx +0 -111
- package/src/workspace/PanelGroups.tsx +0 -264
- package/src/workspace/PanelHome.tsx +0 -71
- package/src/workspace/PanelItems.tsx +0 -368
- package/src/workspace/PanelStrip.tsx +0 -316
- package/src/workspace/SidePanel.tsx +0 -240
- package/src/workspace/TabParking.tsx +0 -120
- package/src/workspace/WorkspaceProvider.tsx +0 -558
- 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/extension-tabs.tsx +0 -174
- package/src/workspace/frame-motion.ts +0 -160
- package/src/workspace/headless/contents.ts +0 -125
- package/src/workspace/headless/host.ts +0 -129
- package/src/workspace/headless/index.ts +0 -33
- package/src/workspace/headless/labels.ts +0 -44
- 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 -164
- package/src/workspace/index.ts +0 -23
- 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,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A session's dot state from this window's signals and the daemon's shared
|
|
3
|
-
* presence. React-free: the sidebar's live dot (`createSidebarLive`) feeds it.
|
|
4
|
-
*/
|
|
5
|
-
import type { SessionPresence } from '../../../machines/headless/presence';
|
|
6
|
-
|
|
7
|
-
/** What a session's dot says (`StatusDot` draws it). */
|
|
8
|
-
export type SidebarDotState = 'idle' | 'running' | 'pending' | 'completed' | 'error' | 'attention' | 'attached';
|
|
9
|
-
|
|
10
|
-
/** What {@link deriveDotState} reads. */
|
|
11
|
-
export interface DotStateInput {
|
|
12
|
-
/** An approval, plan or question of this window waits on the user. */
|
|
13
|
-
pending: boolean;
|
|
14
|
-
/** This window sees the session's run going. */
|
|
15
|
-
running: boolean;
|
|
16
|
-
/** How the run that ended while the session was not open ended. */
|
|
17
|
-
notification: 'completed' | 'error' | null;
|
|
18
|
-
/** The daemon's presence for the session, when known. */
|
|
19
|
-
presence: Pick<SessionPresence, 'attention' | 'running' | 'windows'> | null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* The dot state. Presence follows the TUI: awaiting input (◉) beats running
|
|
24
|
-
* (▶) beats attached (○). This window's own pending ask sits on top; a
|
|
25
|
-
* finished run's notification (completed / error) outranks attached.
|
|
26
|
-
*
|
|
27
|
-
* @param input - This window's signals and the session's presence.
|
|
28
|
-
*/
|
|
29
|
-
export function deriveDotState(input: DotStateInput): SidebarDotState {
|
|
30
|
-
if (input.pending) return 'pending';
|
|
31
|
-
if (input.presence?.attention) return 'attention';
|
|
32
|
-
if (input.running || input.presence?.running) return 'running';
|
|
33
|
-
if (input.notification) return input.notification;
|
|
34
|
-
if ((input.presence?.windows ?? 0) > 0) return 'attached';
|
|
35
|
-
return 'idle';
|
|
36
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How the sidebar words where a session runs: the environment kind's name,
|
|
3
|
-
* the one-line summary its chip's tooltip reads, and the delete prompt that
|
|
4
|
-
* warns when a remote sandbox goes with the session. React-free.
|
|
5
|
-
*/
|
|
6
|
-
import type { SessionEnvironmentSummary } from 'zidane/chat';
|
|
7
|
-
import { parseMachineKind } from 'zidane/chat/pure';
|
|
8
|
-
|
|
9
|
-
import type { SidebarLabels } from './labels';
|
|
10
|
-
|
|
11
|
-
/** Kinds whose work lives in a remote sandbox: deleting the session deletes it. */
|
|
12
|
-
const REMOTE_KINDS: ReadonlySet<string> = new Set(['e2b', 'daytona']);
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Whether the session runs in a sandbox on a provider's machines, deleted with the session.
|
|
16
|
-
*
|
|
17
|
-
* @param environment - The session's environment, if any.
|
|
18
|
-
*/
|
|
19
|
-
export function runsInRemoteSandbox(environment: SessionEnvironmentSummary | undefined): boolean {
|
|
20
|
-
return environment !== undefined && REMOTE_KINDS.has(environment.kind);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* An environment kind's display name: a built-in kind's name, a machine's kind as `Local @ laptop`, else the id.
|
|
25
|
-
*
|
|
26
|
-
* @param kind - The kind (`worktree`, `local@laptop`, an extension's id).
|
|
27
|
-
* @param labels - The sidebar labels.
|
|
28
|
-
*/
|
|
29
|
-
export function environmentKindLabel(
|
|
30
|
-
kind: string,
|
|
31
|
-
labels: Pick<SidebarLabels, 'environmentKinds' | 'environmentOnMachine'>,
|
|
32
|
-
): string {
|
|
33
|
-
const machine = parseMachineKind(kind);
|
|
34
|
-
if (machine) return labels.environmentOnMachine(labels.environmentKinds[machine.base] ?? machine.base, machine.name);
|
|
35
|
-
return labels.environmentKinds[kind] ?? kind;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Where a session runs, in one line: tooltips and screen readers.
|
|
40
|
-
*
|
|
41
|
-
* @param environment - The session's environment.
|
|
42
|
-
* @param labels - The sidebar labels.
|
|
43
|
-
*/
|
|
44
|
-
export function environmentSummaryText(environment: SessionEnvironmentSummary, labels: SidebarLabels): string {
|
|
45
|
-
const label = environmentKindLabel(environment.kind, labels);
|
|
46
|
-
const where = environment.branch ? labels.environmentOnBranch(label, environment.branch) : label;
|
|
47
|
-
if (environment.state === 'provisioning') return labels.environmentSettingUp(where);
|
|
48
|
-
if (environment.state === 'failed') return labels.environmentSetupFailed(where, environment.error);
|
|
49
|
-
if (environment.suspended) return labels.environmentPaused(where);
|
|
50
|
-
return where;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* The delete confirmation: the question, and a warning when the session's sandbox goes with it.
|
|
55
|
-
*
|
|
56
|
-
* @param title - The session's title.
|
|
57
|
-
* @param environment - Its environment, if any.
|
|
58
|
-
* @param labels - The sidebar labels.
|
|
59
|
-
*/
|
|
60
|
-
export function deleteSessionPrompt(
|
|
61
|
-
title: string,
|
|
62
|
-
environment: SessionEnvironmentSummary | undefined,
|
|
63
|
-
labels: SidebarLabels,
|
|
64
|
-
): { question: string; detail?: string } {
|
|
65
|
-
const question = labels.deleteSessionQuestion(title);
|
|
66
|
-
if (environment && runsInRemoteSandbox(environment)) {
|
|
67
|
-
return { question, detail: labels.deleteSessionSandbox(environmentKindLabel(environment.kind, labels)) };
|
|
68
|
-
}
|
|
69
|
-
return { question };
|
|
70
|
-
}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How long each session's runs have left (`Settings.runEstimates`), outside
|
|
3
|
-
* React: the session's own run and its subagents', as the host estimated
|
|
4
|
-
* them ({@link createRunEstimates}). Fed from the app's stream signals
|
|
5
|
-
* (`run:estimate`, cleared on `run:start` / `run:end`) and from session rows
|
|
6
|
-
* (`runEstimates`, the saved run records), so a window opened mid-run counts
|
|
7
|
-
* down from the same point as the one that saw the estimate arrive.
|
|
8
|
-
*
|
|
9
|
-
* The store holds the estimates, not the countdown: a reader computes what
|
|
10
|
-
* an estimate says now with `estimateReadout` (`zidane/chat/pure`).
|
|
11
|
-
*/
|
|
12
|
-
import type { RunEstimateView } from 'zidane/chat/pure';
|
|
13
|
-
|
|
14
|
-
/** The stream signals the store follows; any other kind is ignored. */
|
|
15
|
-
export type RunEstimatesSignal =
|
|
16
|
-
| { kind: 'run:estimate'; sessionId: string; estimate: RunEstimateView }
|
|
17
|
-
| { kind: 'run:start'; sessionId: string }
|
|
18
|
-
| { kind: 'run:end'; sessionId: string };
|
|
19
|
-
|
|
20
|
-
/** What the store reads of a session row (`noteRows`). */
|
|
21
|
-
export interface RunEstimatesRow {
|
|
22
|
-
/** The session. */
|
|
23
|
-
id: string;
|
|
24
|
-
/** Its run state: only a `running` row's estimates count. */
|
|
25
|
-
status: string;
|
|
26
|
-
/** The estimates of its runs in progress. */
|
|
27
|
-
runEstimates?: readonly RunEstimateView[];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Every session's run estimates, outside React. */
|
|
31
|
-
export interface RunEstimatesStore {
|
|
32
|
-
/** Follow the signals; returns the stop. Call once at boot. */
|
|
33
|
-
start(): () => void;
|
|
34
|
-
/** The session's estimates, the session's own run first; the same empty list when it has none. */
|
|
35
|
-
get(sessionId: string): readonly RunEstimateView[];
|
|
36
|
-
/** Fires when the session's estimates change. */
|
|
37
|
-
subscribe(sessionId: string, listener: () => void): () => void;
|
|
38
|
-
/** The session list's word on its running sessions' estimates (a window that missed the signals). */
|
|
39
|
-
noteRows(rows: readonly RunEstimatesRow[]): void;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const NONE: readonly RunEstimateView[] = [];
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* The estimate a row shows: the session's own run (`depth` 0), or the
|
|
46
|
-
* subagent named `label` (`child-3`). `undefined` when there is none.
|
|
47
|
-
*
|
|
48
|
-
* @param estimates - The session's estimates ({@link RunEstimatesStore.get}).
|
|
49
|
-
* @param label - A subagent's label; absent for the session's own run.
|
|
50
|
-
*/
|
|
51
|
-
export function pickRunEstimate(estimates: readonly RunEstimateView[], label?: string): RunEstimateView | undefined {
|
|
52
|
-
return label === undefined ? estimates.find((e) => e.depth === 0) : estimates.find((e) => e.label === label);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** The session's own run first, then by start: the order a row's list keeps. */
|
|
56
|
-
function ordered(views: Iterable<RunEstimateView>): readonly RunEstimateView[] {
|
|
57
|
-
return [...views].sort((a, b) => a.depth - b.depth || a.startedAt - b.startedAt);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* The store over `subscribe`, the app's feed of every session's stream
|
|
62
|
-
* signals (an Electron bus, a server connection's `ipc.signal`).
|
|
63
|
-
*
|
|
64
|
-
* @param options - The signal feed.
|
|
65
|
-
*/
|
|
66
|
-
export function createRunEstimates(options: {
|
|
67
|
-
subscribe: (listener: (signal: { kind: string }) => void) => () => void;
|
|
68
|
-
}): RunEstimatesStore {
|
|
69
|
-
/** Per session, by run id. */
|
|
70
|
-
const sessions = new Map<string, Map<string, RunEstimateView>>();
|
|
71
|
-
/** Per session, the list `get` returns: one object until it changes. */
|
|
72
|
-
const lists = new Map<string, readonly RunEstimateView[]>();
|
|
73
|
-
const listeners = new Map<string, Set<() => void>>();
|
|
74
|
-
|
|
75
|
-
const changed = (sessionId: string): void => {
|
|
76
|
-
const runs = sessions.get(sessionId);
|
|
77
|
-
if (runs && runs.size > 0) lists.set(sessionId, ordered(runs.values()));
|
|
78
|
-
else {
|
|
79
|
-
sessions.delete(sessionId);
|
|
80
|
-
lists.delete(sessionId);
|
|
81
|
-
}
|
|
82
|
-
for (const listener of listeners.get(sessionId) ?? []) listener();
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
const clear = (sessionId: string): void => {
|
|
86
|
-
if (!sessions.delete(sessionId)) return;
|
|
87
|
-
changed(sessionId);
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
/** Keep `view` unless what the session holds for its run is newer. `live`: a signal, which always wins. */
|
|
91
|
-
const put = (sessionId: string, view: RunEstimateView, live: boolean): boolean => {
|
|
92
|
-
let runs = sessions.get(sessionId);
|
|
93
|
-
if (!runs) {
|
|
94
|
-
runs = new Map();
|
|
95
|
-
sessions.set(sessionId, runs);
|
|
96
|
-
}
|
|
97
|
-
const held = runs.get(view.runId);
|
|
98
|
-
if (held && !live && held.at >= view.at) return false;
|
|
99
|
-
runs.set(view.runId, view);
|
|
100
|
-
return true;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const apply = (signal: RunEstimatesSignal): void => {
|
|
104
|
-
if (signal.kind === 'run:estimate') {
|
|
105
|
-
put(signal.sessionId, signal.estimate, true);
|
|
106
|
-
changed(signal.sessionId);
|
|
107
|
-
} else clear(signal.sessionId);
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
start: () =>
|
|
112
|
-
options.subscribe((signal) => {
|
|
113
|
-
if (
|
|
114
|
-
(signal.kind === 'run:estimate' || signal.kind === 'run:start' || signal.kind === 'run:end') &&
|
|
115
|
-
'sessionId' in signal &&
|
|
116
|
-
typeof signal.sessionId === 'string'
|
|
117
|
-
) {
|
|
118
|
-
apply(signal as RunEstimatesSignal);
|
|
119
|
-
}
|
|
120
|
-
}),
|
|
121
|
-
get: (sessionId) => lists.get(sessionId) ?? NONE,
|
|
122
|
-
subscribe(sessionId, listener) {
|
|
123
|
-
let set = listeners.get(sessionId);
|
|
124
|
-
if (!set) {
|
|
125
|
-
set = new Set();
|
|
126
|
-
listeners.set(sessionId, set);
|
|
127
|
-
}
|
|
128
|
-
set.add(listener);
|
|
129
|
-
return () => {
|
|
130
|
-
set.delete(listener);
|
|
131
|
-
if (set.size === 0 && listeners.get(sessionId) === set) listeners.delete(sessionId);
|
|
132
|
-
};
|
|
133
|
-
},
|
|
134
|
-
noteRows(rows) {
|
|
135
|
-
for (const row of rows) {
|
|
136
|
-
if (row.status !== 'running') {
|
|
137
|
-
clear(row.id);
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
let any = false;
|
|
141
|
-
for (const view of row.runEstimates ?? []) any = put(row.id, view, false) || any;
|
|
142
|
-
if (any) changed(row.id);
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
};
|
|
146
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What the sidebar asks of the platform beyond the session list
|
|
3
|
-
* (`ChatHost.sessions`): showing a folder in the file manager, opening a
|
|
4
|
-
* session in a window of its own, the commands of the environment a
|
|
5
|
-
* session runs in, the rows' badges, and a host's settings. Every member is
|
|
6
|
-
* optional: leaving one out hides what needs it.
|
|
7
|
-
*
|
|
8
|
-
* The desktop app implements it over IPC (`hosts/electron-sidebar-host.ts`),
|
|
9
|
-
* `createServerSidebarHost` (`zidane-ui/adapters`) over zidane-server. Both
|
|
10
|
-
* run `describeSidebarHostContract` (`zidane-ui/chat/testing/contract`).
|
|
11
|
-
*/
|
|
12
|
-
import type { EnvironmentActionResult, EnvironmentActionSummary } from 'zidane/chat';
|
|
13
|
-
|
|
14
|
-
import type { SessionBadgesSource } from './badges';
|
|
15
|
-
|
|
16
|
-
/** What a standalone window shows: the conversation with its panels, the conversation alone, or the panels alone. */
|
|
17
|
-
export type SessionWindowMode = 'chat+panels' | 'chat' | 'panels';
|
|
18
|
-
|
|
19
|
-
/** The commands of the environment a session runs in (push the branch, open a pull request). */
|
|
20
|
-
export interface SidebarEnvironmentHost {
|
|
21
|
-
/** The commands the session's environment offers right now. Rejects when they can't be read. */
|
|
22
|
-
actions(sessionId: string): Promise<readonly EnvironmentActionSummary[]>;
|
|
23
|
-
/** Runs one of them; resolves with what to tell the user and, maybe, something to open. */
|
|
24
|
-
run(sessionId: string, actionId: string): Promise<EnvironmentActionResult>;
|
|
25
|
-
/** Sets a failed environment up again; progress arrives as the session's row changing. */
|
|
26
|
-
retry(sessionId: string): Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** The sidebar's platform capabilities. Every member is optional. */
|
|
30
|
-
export interface SidebarHost {
|
|
31
|
-
/** Shows a folder of this machine in the file manager. Absent: no "Open in Finder". */
|
|
32
|
-
revealPath?(path: string): Promise<void>;
|
|
33
|
-
/** Opens a session in a window of its own. Absent: no window rows. */
|
|
34
|
-
openWindow?(sessionId: string, mode: SessionWindowMode): Promise<void>;
|
|
35
|
-
/** A session's environment commands. Absent: no retry, no environment commands. */
|
|
36
|
-
environment?: SidebarEnvironmentHost;
|
|
37
|
-
/** The rows' badges and when they change, for `createSessionBadges`. Absent: the app reads them its own way, or rows show none. */
|
|
38
|
-
badges?: SessionBadgesSource;
|
|
39
|
-
/** Opens a saved host's page in the app's settings. Absent: a server folder's host badge is not a button. */
|
|
40
|
-
openHostSettings?(hostId: string): Promise<void>;
|
|
41
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/** The session sidebar's headless layer: rows, views, the session directory and its live stores. */
|
|
2
|
-
export * from './types';
|
|
3
|
-
export * from './labels';
|
|
4
|
-
export * from './rows';
|
|
5
|
-
export * from './pinned-sessions';
|
|
6
|
-
export * from './pinned-projects';
|
|
7
|
-
export * from './project-icons';
|
|
8
|
-
export * from './activity';
|
|
9
|
-
export * from './estimates';
|
|
10
|
-
export * from './compaction';
|
|
11
|
-
export * from './badges';
|
|
12
|
-
export * from './view';
|
|
13
|
-
export * from './notifications';
|
|
14
|
-
export * from './directory';
|
|
15
|
-
export * from './query';
|
|
16
|
-
export * from './host';
|
|
17
|
-
export * from './dot-state';
|
|
18
|
-
export * from './environment';
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The sidebar's strings, on top of the chat layer's. One flat dictionary an app
|
|
3
|
-
* overrides through `LabelsProvider`; headless helpers take it as an argument.
|
|
4
|
-
* Each part keeps its keys under its own heading.
|
|
5
|
-
*/
|
|
6
|
-
import { DEFAULT_CHAT_LABELS } from '../labels';
|
|
7
|
-
|
|
8
|
-
/** The default English strings of the session sidebar, merged over the chat layer's. */
|
|
9
|
-
export const DEFAULT_SIDEBAR_LABELS = {
|
|
10
|
-
...DEFAULT_CHAT_LABELS,
|
|
11
|
-
// — Rows and live activity
|
|
12
|
-
// The orchestration main session's pinned row
|
|
13
|
-
mainSession: 'Main',
|
|
14
|
-
changeMainIcon: 'Change Main icon',
|
|
15
|
-
// What a running session is doing, when no tool names it
|
|
16
|
-
activityCompacting: 'Compacting',
|
|
17
|
-
activityRetrying: 'Retrying',
|
|
18
|
-
activityWriting: 'Writing',
|
|
19
|
-
activityThinking: 'Thinking',
|
|
20
|
-
// Project icons: the trigger's tooltip and name, the picker
|
|
21
|
-
changeProjectIcon: 'Change project icon',
|
|
22
|
-
changeIconFor: (project: string) => `Change icon for ${project}`,
|
|
23
|
-
chooseProjectIcon: 'Choose project icon',
|
|
24
|
-
emojiPlaceholder: 'Type any emoji, then ⏎',
|
|
25
|
-
customEmoji: 'Custom emoji',
|
|
26
|
-
chooseImage: 'Choose image…',
|
|
27
|
-
resetToFolder: 'Reset to folder',
|
|
28
|
-
// — The sidebar, its list, filters, search and spaces
|
|
29
|
-
searchSessionsLabel: 'Search sessions by title and content',
|
|
30
|
-
clearSearch: 'Clear search',
|
|
31
|
-
spaces: 'Spaces',
|
|
32
|
-
spaceNamed: (name: string) => `Space: ${name}`,
|
|
33
|
-
// A space an extension adds: its tooltip line, and the switcher's menu on a space
|
|
34
|
-
spaceFromExtension: (extension: string) => `From ${extension}`,
|
|
35
|
-
spaceOptions: (name: string) => `${name} options`,
|
|
36
|
-
hideSpace: 'Hide from switcher',
|
|
37
|
-
moveSpaceLeft: 'Move left',
|
|
38
|
-
moveSpaceRight: 'Move right',
|
|
39
|
-
hiddenSpaces: 'Hidden spaces',
|
|
40
|
-
showHiddenSpace: (name: string) => `Show ${name}`,
|
|
41
|
-
savedViewName: (n: number) => `View ${n}`,
|
|
42
|
-
saveViewFailed: (message: string) => `Couldn't save the view: ${message}`,
|
|
43
|
-
// Query groupings: the group of sessions without a value, and the agent grouping's for the default agent
|
|
44
|
-
queryGroupOther: 'Other',
|
|
45
|
-
agentGroupDefault: 'Default agent',
|
|
46
|
-
// Extension items among the sessions
|
|
47
|
-
itemActions: (title: string) => `Actions for ${title}`,
|
|
48
|
-
expandItem: (title: string) => `Show sessions under ${title}`,
|
|
49
|
-
collapseItem: (title: string) => `Hide sessions under ${title}`,
|
|
50
|
-
itemOpenFailed: (message: string) => `Couldn't open the item: ${message}`,
|
|
51
|
-
newSessionTitle: 'New session (⌘N / Ctrl+N)',
|
|
52
|
-
searchingSessions: 'Searching…',
|
|
53
|
-
sidebarNoMatches: 'No matches.',
|
|
54
|
-
noChatsYet: 'No chats yet.',
|
|
55
|
-
// The empty list while the view's filters hide every session, and its reset
|
|
56
|
-
noChatsMatchFilters: 'No chats match these filters.',
|
|
57
|
-
resetFilters: 'Reset filters',
|
|
58
|
-
expandSidebar: 'Expand sidebar',
|
|
59
|
-
collapseSidebar: 'Collapse sidebar',
|
|
60
|
-
// A row's trailing slot: before this window saw what the run does, waiting on the user, run details off
|
|
61
|
-
rowRunning: 'Running',
|
|
62
|
-
rowNeedsYou: 'Needs you',
|
|
63
|
-
rowWorking: 'Working',
|
|
64
|
-
// Where a session runs (its chip on the badge line, the delete prompt)
|
|
65
|
-
environmentKinds: {
|
|
66
|
-
local: 'Local',
|
|
67
|
-
worktree: 'Worktree',
|
|
68
|
-
docker: 'Docker',
|
|
69
|
-
e2b: 'E2B',
|
|
70
|
-
daytona: 'Daytona',
|
|
71
|
-
} as Readonly<Record<string, string>>,
|
|
72
|
-
environmentOnMachine: (kind: string, machine: string) => `${kind} @ ${machine}`,
|
|
73
|
-
environmentOnBranch: (kind: string, branch: string) => `${kind} (${branch})`,
|
|
74
|
-
environmentSettingUp: (where: string) => `${where}. Setting up…`,
|
|
75
|
-
environmentSetupFailed: (where: string, error?: string) => `${where}. Setup failed${error ? `: ${error}` : '.'}`,
|
|
76
|
-
environmentPaused: (where: string) => `${where}. Paused while idle, resumes on your next prompt.`,
|
|
77
|
-
// — Session and project menus
|
|
78
|
-
menuRename: 'Rename',
|
|
79
|
-
menuAddFavorite: 'Add to favorites',
|
|
80
|
-
menuRemoveFavorite: 'Remove from favorites',
|
|
81
|
-
menuArchive: 'Archive',
|
|
82
|
-
menuUnarchive: 'Unarchive',
|
|
83
|
-
menuReveal: 'Open in Finder',
|
|
84
|
-
menuCopyPath: 'Copy folder path',
|
|
85
|
-
menuOpenWindow: 'Open in new window',
|
|
86
|
-
menuOpenChatWindow: 'Open conversation in new window',
|
|
87
|
-
menuOpenPanelsWindow: 'Open side panels in new window',
|
|
88
|
-
menuRetryEnvironment: 'Retry environment setup',
|
|
89
|
-
menuMoveTo: 'Move to…',
|
|
90
|
-
menuMoveToSpace: 'Move to space',
|
|
91
|
-
menuDelete: 'Delete',
|
|
92
|
-
newSessionIn: (project: string) => `New session in ${project}`,
|
|
93
|
-
pinProject: 'Pin project',
|
|
94
|
-
unpinProject: 'Unpin project',
|
|
95
|
-
pinNamed: (project: string) => `Pin ${project}`,
|
|
96
|
-
unpinNamed: (project: string) => `Unpin ${project}`,
|
|
97
|
-
menuMoveProjectToSpace: 'Move project to space',
|
|
98
|
-
menuArchiveProject: 'Archive conversations…',
|
|
99
|
-
menuDeleteProject: 'Delete conversations…',
|
|
100
|
-
// Confirmations and failures
|
|
101
|
-
deleteSessionQuestion: (title: string) => `Delete "${title}"?`,
|
|
102
|
-
deleteSessionSandbox: (kind: string) => `Its ${kind} sandbox is deleted too. Push anything you want to keep first.`,
|
|
103
|
-
deleteConfirmLabel: 'Delete',
|
|
104
|
-
/** After a delete that left the session's environment on disk. */
|
|
105
|
-
environmentKept: (reason?: string) => `The session's environment was kept${reason ? `: ${reason}` : '.'}`,
|
|
106
|
-
/** After deleting several sessions, some of whose environments stayed on disk. */
|
|
107
|
-
environmentsKept: (count: number) =>
|
|
108
|
-
count === 1
|
|
109
|
-
? "One session's environment was kept, so it is still on disk."
|
|
110
|
-
: `${count} sessions' environments were kept, so they are still on disk.`,
|
|
111
|
-
archiveConfirmLabel: 'Archive',
|
|
112
|
-
archiveProjectTitle: (count: number, project: string) =>
|
|
113
|
-
`Archive ${count === 1 ? '1 conversation' : `${count} conversations`} in ${project}?`,
|
|
114
|
-
archiveProjectMessage: (count: number) =>
|
|
115
|
-
count === 1
|
|
116
|
-
? 'It stays under Archived, where you can restore it.'
|
|
117
|
-
: 'They stay under Archived, where you can restore them.',
|
|
118
|
-
deleteProjectTitle: (count: number, project: string) =>
|
|
119
|
-
`Delete ${count === 1 ? '1 conversation' : `${count} conversations`} in ${project}?`,
|
|
120
|
-
deleteProjectCannotUndo: "This can't be undone.",
|
|
121
|
-
deleteProjectArchived: (archived: number) =>
|
|
122
|
-
archived === 1 ? '1 of them is archived.' : `${archived} of them are archived.`,
|
|
123
|
-
deleteProjectSandboxes: (sandboxed: number) =>
|
|
124
|
-
sandboxed === 1
|
|
125
|
-
? 'One runs in a remote sandbox that is deleted too. Push anything you want to keep first.'
|
|
126
|
-
: `${sandboxed} run in remote sandboxes that are deleted too. Push anything you want to keep first.`,
|
|
127
|
-
moveSessionFailed: (message: string) => `Couldn't move the session: ${message}`,
|
|
128
|
-
moveProjectFailed: (message: string) => `Couldn't move the project: ${message}`,
|
|
129
|
-
environmentActionFailed: (action: string, message: string) => `${action} failed: ${message}`,
|
|
130
|
-
retryEnvironmentFailed: (message: string) => `Couldn't retry the environment: ${message}`,
|
|
131
|
-
// — Footer strip
|
|
132
|
-
footerSettings: 'Settings',
|
|
133
|
-
footerSettingsWithNote: (note: string) => `Settings. ${note}`,
|
|
134
|
-
footerSignIn: 'sign in',
|
|
135
|
-
footerSignInTitle: 'No provider credentials. Click to sign in',
|
|
136
|
-
usageWindow: (window: string, percent: string) => `${window} window: ${percent}% used`,
|
|
137
|
-
usagePanelHint: 'Ctrl+P opens the usage panel.',
|
|
138
|
-
compactingTitle: 'Summarizing older turns to free up context.',
|
|
139
|
-
// — Settings › Spaces
|
|
140
|
-
spacesTitle: 'Spaces',
|
|
141
|
-
useSpaces: 'Use spaces',
|
|
142
|
-
useSpacesDescription:
|
|
143
|
-
'Group sessions into spaces, each with its own defaults for new sessions. Off shows every session in one list.',
|
|
144
|
-
yourSpaces: 'Your spaces',
|
|
145
|
-
addSpace: 'Add space',
|
|
146
|
-
newSpaceName: (n: number) => `Space ${n}`,
|
|
147
|
-
defaultSpaceName: 'Default',
|
|
148
|
-
deleteSpaceQuestion: (name: string) => `Delete "${name}"?`,
|
|
149
|
-
deleteSpaceMessage: (fallback: string) => `Its sessions move to ${fallback}. No session is deleted.`,
|
|
150
|
-
deleteSpace: 'Delete space',
|
|
151
|
-
spaceNameOf: (name: string) => `Name of space ${name}`,
|
|
152
|
-
moveSpaceUp: (name: string) => `Move ${name} up`,
|
|
153
|
-
moveSpaceDown: (name: string) => `Move ${name} down`,
|
|
154
|
-
deleteSpaceNamed: (name: string) => `Delete ${name}`,
|
|
155
|
-
changeSpaceIcon: 'Change space icon',
|
|
156
|
-
chooseSpaceIcon: 'Choose space icon',
|
|
157
|
-
resetToInitial: 'Reset to initial',
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
/** The sidebar's strings, as {@link DEFAULT_SIDEBAR_LABELS} has them. */
|
|
161
|
-
export type SidebarLabels = typeof DEFAULT_SIDEBAR_LABELS;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-session notifications: a run that ended in a session nobody was
|
|
3
|
-
* looking at leaves "completed" or "error" on it until the session opens.
|
|
4
|
-
* Listeners subscribe per session, so a dot re-renders only for its own.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/** What a finished run left on a session the user wasn't watching. */
|
|
8
|
-
export type SessionNotification = 'completed' | 'error';
|
|
9
|
-
|
|
10
|
-
/** The notifications by session, subscribed to per session. */
|
|
11
|
-
export interface SessionNotificationStore {
|
|
12
|
-
/** The session's notification, `null` for none. */
|
|
13
|
-
get(sessionId: string | null): SessionNotification | null;
|
|
14
|
-
/** Fires when the session's notification changes. */
|
|
15
|
-
subscribe(sessionId: string | null, listener: () => void): () => void;
|
|
16
|
-
/** Leaves a notification on the session. */
|
|
17
|
-
set(sessionId: string, value: SessionNotification): void;
|
|
18
|
-
/** Clears the session's notification (it was opened). */
|
|
19
|
-
clear(sessionId: string): void;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** An empty notification store. */
|
|
23
|
-
export function createNotificationStore(): SessionNotificationStore {
|
|
24
|
-
const map = new Map<string, SessionNotification>();
|
|
25
|
-
const listeners = new Map<string, Set<() => void>>();
|
|
26
|
-
|
|
27
|
-
const notify = (sessionId: string) => {
|
|
28
|
-
const set = listeners.get(sessionId);
|
|
29
|
-
if (!set) return;
|
|
30
|
-
for (const fn of set) fn();
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
return {
|
|
34
|
-
get: (sessionId) => (sessionId ? (map.get(sessionId) ?? null) : null),
|
|
35
|
-
subscribe: (sessionId, listener) => {
|
|
36
|
-
if (!sessionId) return () => undefined;
|
|
37
|
-
let set = listeners.get(sessionId);
|
|
38
|
-
if (!set) {
|
|
39
|
-
set = new Set();
|
|
40
|
-
listeners.set(sessionId, set);
|
|
41
|
-
}
|
|
42
|
-
set.add(listener);
|
|
43
|
-
return () => {
|
|
44
|
-
const live = listeners.get(sessionId);
|
|
45
|
-
if (!live) return;
|
|
46
|
-
live.delete(listener);
|
|
47
|
-
if (live.size === 0) listeners.delete(sessionId);
|
|
48
|
-
};
|
|
49
|
-
},
|
|
50
|
-
set: (sessionId, value) => {
|
|
51
|
-
if (map.get(sessionId) === value) return;
|
|
52
|
-
map.set(sessionId, value);
|
|
53
|
-
notify(sessionId);
|
|
54
|
-
},
|
|
55
|
-
clear: (sessionId) => {
|
|
56
|
-
if (!map.has(sessionId)) return;
|
|
57
|
-
map.delete(sessionId);
|
|
58
|
-
notify(sessionId);
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pinned projects: folders the user keeps at the top of the project-grouped
|
|
3
|
-
* sidebar, one list per space. The model is pure; the app persists it (the
|
|
4
|
-
* styled `usePinnedProjects` keeps it in localStorage under
|
|
5
|
-
* {@link PINNED_PROJECTS_KEY}).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** Where the pins persist. */
|
|
9
|
-
export const PINNED_PROJECTS_KEY = 'zg-sidebar-pinned-projects';
|
|
10
|
-
|
|
11
|
-
/** Pinned folder paths per space id, in pin order. */
|
|
12
|
-
export type PinsBySpace = Record<string, string[]>;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Reads a stored pin map, dropping anything malformed and duplicate paths.
|
|
16
|
-
*
|
|
17
|
-
* @param raw - The stored JSON.
|
|
18
|
-
*/
|
|
19
|
-
export function parsePinnedProjects(raw: string): PinsBySpace {
|
|
20
|
-
try {
|
|
21
|
-
const parsed: unknown = JSON.parse(raw);
|
|
22
|
-
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) return {};
|
|
23
|
-
const out: PinsBySpace = {};
|
|
24
|
-
for (const [space, paths] of Object.entries(parsed)) {
|
|
25
|
-
if (!Array.isArray(paths)) continue;
|
|
26
|
-
const kept = [...new Set(paths.filter((p): p is string => typeof p === 'string' && p !== ''))];
|
|
27
|
-
if (kept.length > 0) out[space] = kept;
|
|
28
|
-
}
|
|
29
|
-
return out;
|
|
30
|
-
} catch {
|
|
31
|
-
return {};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* `pins` with `fullPath` pinned or unpinned in `spaceId`; the same object when nothing changes.
|
|
37
|
-
*
|
|
38
|
-
* @param pins - The current pins.
|
|
39
|
-
* @param spaceId - The space the change is in.
|
|
40
|
-
* @param fullPath - The project folder.
|
|
41
|
-
* @param pin - Pin (true) or unpin (false).
|
|
42
|
-
*/
|
|
43
|
-
export function withPinnedProject(pins: PinsBySpace, spaceId: string, fullPath: string, pin: boolean): PinsBySpace {
|
|
44
|
-
const own = pins[spaceId] ?? [];
|
|
45
|
-
if (own.includes(fullPath) === pin) return pins;
|
|
46
|
-
const nextOwn = pin ? [...own, fullPath] : own.filter((p) => p !== fullPath);
|
|
47
|
-
const next = { ...pins };
|
|
48
|
-
if (nextOwn.length > 0) next[spaceId] = nextOwn;
|
|
49
|
-
else delete next[spaceId];
|
|
50
|
-
return next;
|
|
51
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sessions on screen besides the active conversation (a `/side` chat in the
|
|
3
|
-
* panel): the transcript cache keeps them while pinned.
|
|
4
|
-
*/
|
|
5
|
-
const pinned = new Map<string, number>();
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Keep `key`'s transcript cached until the returned unpin runs.
|
|
9
|
-
*
|
|
10
|
-
* @param key - The session to keep.
|
|
11
|
-
*/
|
|
12
|
-
export function pinSession(key: string): () => void {
|
|
13
|
-
pinned.set(key, (pinned.get(key) ?? 0) + 1);
|
|
14
|
-
let done = false;
|
|
15
|
-
return () => {
|
|
16
|
-
if (done) return;
|
|
17
|
-
done = true;
|
|
18
|
-
const n = (pinned.get(key) ?? 1) - 1;
|
|
19
|
-
if (n > 0) pinned.set(key, n);
|
|
20
|
-
else pinned.delete(key);
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** The sessions pinned now (each once, however many pins). */
|
|
25
|
-
export function pinnedSessions(): Iterable<string> {
|
|
26
|
-
return pinned.keys();
|
|
27
|
-
}
|