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,367 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The sidebar's view: the five filter axes (archive, project, activity,
|
|
3
|
-
* group by, sort by) kept per space, the conversation last open in each
|
|
4
|
-
* space, and the space the sidebar shows.
|
|
5
|
-
*
|
|
6
|
-
* Storage-first: a view reads from the app's Storage synchronously at
|
|
7
|
-
* creation, so the first frame already has it. When the host keeps a copy
|
|
8
|
-
* too (`ChatHost.sessions.views`, the desktop app's database), it is read
|
|
9
|
-
* once and wins for every space this run has not changed yet; a space only
|
|
10
|
-
* this device knows is written back to it.
|
|
11
|
-
*/
|
|
12
|
-
import { DEFAULT_SPACE_ID } from 'zidane/chat/pure';
|
|
13
|
-
|
|
14
|
-
import { writable, type Readable } from '../store';
|
|
15
|
-
import type {
|
|
16
|
-
SessionActivityFilter,
|
|
17
|
-
SessionArchiveFilter,
|
|
18
|
-
SidebarExtensionView,
|
|
19
|
-
SidebarGroupBy,
|
|
20
|
-
SidebarSortBy,
|
|
21
|
-
SidebarView,
|
|
22
|
-
} from './types';
|
|
23
|
-
|
|
24
|
-
/** A view nobody changed yet. */
|
|
25
|
-
export const DEFAULT_SIDEBAR_VIEW: SidebarView = {
|
|
26
|
-
archive: 'active',
|
|
27
|
-
project: null,
|
|
28
|
-
activity: 'all',
|
|
29
|
-
groupBy: 'project',
|
|
30
|
-
sortBy: 'recency',
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/** Where the views persist: one map of space id → view. */
|
|
34
|
-
export const SIDEBAR_VIEW_KEY = 'zg-sidebar-view:v1';
|
|
35
|
-
/** Where the shown space persists. */
|
|
36
|
-
export const SIDEBAR_SPACE_KEY = 'zg-sidebar-space';
|
|
37
|
-
|
|
38
|
-
/** A space's record as stored: its view, plus the conversation last open in it (`session`, when one was). */
|
|
39
|
-
export type SidebarViewRecord = SidebarView & { session?: string };
|
|
40
|
-
|
|
41
|
-
/** The views the host keeps for this user, next to the device's Storage. */
|
|
42
|
-
export interface SidebarViewsHost {
|
|
43
|
-
/** Every saved view, keyed by space id (anything malformed is dropped). */
|
|
44
|
-
getViews(): Promise<unknown>;
|
|
45
|
-
/** Saves a space's record (its view and last open conversation). */
|
|
46
|
-
setView(spaceId: string, view: SidebarViewRecord): Promise<unknown>;
|
|
47
|
-
/** The space last shown, if any. */
|
|
48
|
-
getSpace(): Promise<unknown>;
|
|
49
|
-
/** Saves the space shown. */
|
|
50
|
-
setSpace(spaceId: string): Promise<unknown>;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const oneOf =
|
|
54
|
-
<T extends string>(members: readonly T[]) =>
|
|
55
|
-
(raw: string): T | undefined =>
|
|
56
|
-
members.includes(raw as T) ? (raw as T) : undefined;
|
|
57
|
-
|
|
58
|
-
const parseArchive = oneOf<SessionArchiveFilter>(['active', 'archived', 'all']);
|
|
59
|
-
const parseActivity = oneOf<SessionActivityFilter>(['all', '1d', '3d', '7d', '30d']);
|
|
60
|
-
const parseGroupBy = oneOf<SidebarGroupBy>(['none', 'date', 'state', 'project', 'host', 'agent']);
|
|
61
|
-
const parseSortBy = oneOf<SidebarSortBy>(['recency', 'createdTime', 'alphabetical']);
|
|
62
|
-
|
|
63
|
-
function parseExtensionView(raw: unknown): SidebarExtensionView | undefined {
|
|
64
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return undefined;
|
|
65
|
-
const o = raw as Record<string, unknown>;
|
|
66
|
-
const filters: Record<string, boolean | string | readonly string[]> = {};
|
|
67
|
-
if (o.filters && typeof o.filters === 'object' && !Array.isArray(o.filters)) {
|
|
68
|
-
for (const [id, value] of Object.entries(o.filters as Record<string, unknown>)) {
|
|
69
|
-
if (value === true || (typeof value === 'string' && value.length > 0)) filters[id] = value;
|
|
70
|
-
else if (Array.isArray(value)) {
|
|
71
|
-
const ids = value.filter((v): v is string => typeof v === 'string' && v.length > 0);
|
|
72
|
-
if (ids.length > 0) filters[id] = ids;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const sort = typeof o.sort === 'string' && o.sort.length > 0 ? o.sort : undefined;
|
|
77
|
-
const group = typeof o.group === 'string' && o.group.length > 0 ? o.group : undefined;
|
|
78
|
-
if (Object.keys(filters).length === 0 && !sort && !group) return undefined;
|
|
79
|
-
return { filters, ...(sort ? { sort } : {}), ...(group ? { group } : {}) };
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* A stored view, every axis checked; what is missing or unknown takes the default.
|
|
84
|
-
*
|
|
85
|
-
* @param raw - The stored value.
|
|
86
|
-
*/
|
|
87
|
-
export function parseSidebarView(raw: unknown): SidebarView {
|
|
88
|
-
const o = raw && typeof raw === 'object' ? (raw as Record<string, unknown>) : {};
|
|
89
|
-
const str = (v: unknown) => (typeof v === 'string' ? v : '');
|
|
90
|
-
const d = DEFAULT_SIDEBAR_VIEW;
|
|
91
|
-
const agent = typeof o.agent === 'string' && o.agent.length > 0 ? o.agent : null;
|
|
92
|
-
const extension = parseExtensionView(o.extension);
|
|
93
|
-
return {
|
|
94
|
-
archive: parseArchive(str(o.archive)) ?? d.archive,
|
|
95
|
-
project: typeof o.project === 'string' && o.project.length > 0 ? o.project : null,
|
|
96
|
-
activity: parseActivity(str(o.activity)) ?? d.activity,
|
|
97
|
-
groupBy: parseGroupBy(str(o.groupBy)) ?? d.groupBy,
|
|
98
|
-
sortBy: parseSortBy(str(o.sortBy)) ?? d.sortBy,
|
|
99
|
-
...(agent ? { agent } : {}),
|
|
100
|
-
...(extension ? { extension } : {}),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/** Where the switcher's own order and hidden spaces persist. */
|
|
105
|
-
export const SIDEBAR_SWITCHER_KEY = 'zg:sidebar-switcher:v1';
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* The user's arrangement of the space switcher, over the spaces' own order: extension spaces
|
|
109
|
-
* included, which Settings › Spaces doesn't list.
|
|
110
|
-
*/
|
|
111
|
-
export interface SpaceSwitcherPrefs {
|
|
112
|
-
/** Space ids in the order the user put them; a space not named keeps its place after them. */
|
|
113
|
-
order: readonly string[];
|
|
114
|
-
/** Space ids the switcher leaves out (their sessions stay where they are). */
|
|
115
|
-
hidden: readonly string[];
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/** No arrangement yet: the spaces' own order, nothing hidden. */
|
|
119
|
-
export const DEFAULT_SWITCHER_PREFS: SpaceSwitcherPrefs = { order: [], hidden: [] };
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Stored switcher prefs, checked; anything malformed reads as none.
|
|
123
|
-
*
|
|
124
|
-
* @param raw - The stored value.
|
|
125
|
-
*/
|
|
126
|
-
export function parseSwitcherPrefs(raw: unknown): SpaceSwitcherPrefs {
|
|
127
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return DEFAULT_SWITCHER_PREFS;
|
|
128
|
-
const o = raw as Record<string, unknown>;
|
|
129
|
-
const ids = (v: unknown) =>
|
|
130
|
-
Array.isArray(v) ? [...new Set(v.filter((x): x is string => typeof x === 'string' && x.length > 0))] : [];
|
|
131
|
-
return { order: ids(o.order), hidden: ids(o.hidden) };
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/** Views per space id. */
|
|
135
|
-
export type SidebarViewMap = Record<string, SidebarView>;
|
|
136
|
-
|
|
137
|
-
function viewsFrom(stored: unknown): SidebarViewMap | undefined {
|
|
138
|
-
if (!stored || typeof stored !== 'object' || Array.isArray(stored)) return undefined;
|
|
139
|
-
return Object.fromEntries(Object.entries(stored).map(([id, view]) => [id, parseSidebarView(view)]));
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/** The conversation last open per space id. */
|
|
143
|
-
export type SidebarLastSessions = Record<string, string>;
|
|
144
|
-
|
|
145
|
-
function sessionsFrom(stored: unknown): SidebarLastSessions {
|
|
146
|
-
if (!stored || typeof stored !== 'object' || Array.isArray(stored)) return {};
|
|
147
|
-
return Object.fromEntries(
|
|
148
|
-
Object.entries(stored).flatMap(([id, record]) => {
|
|
149
|
-
const session = record && typeof record === 'object' ? (record as Record<string, unknown>).session : undefined;
|
|
150
|
-
return typeof session === 'string' && session.length > 0 ? [[id, session]] : [];
|
|
151
|
-
}),
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
function parseJson(raw: string | undefined): unknown {
|
|
156
|
-
if (raw === undefined) return undefined;
|
|
157
|
-
try {
|
|
158
|
-
return JSON.parse(raw) as unknown;
|
|
159
|
-
} catch {
|
|
160
|
-
return undefined;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/** One key per axis, from before the views were kept per space: read once into the default space, then removed. */
|
|
165
|
-
const LEGACY_KEYS = {
|
|
166
|
-
archive: 'zg-sidebar-archive-filter',
|
|
167
|
-
project: 'zg-sidebar-project-filter',
|
|
168
|
-
activity: 'zg-sidebar-activity-filter',
|
|
169
|
-
groupBy: 'zg-sidebar-group-by',
|
|
170
|
-
sortBy: 'zg-sidebar-sort-by',
|
|
171
|
-
} as const satisfies Record<Exclude<keyof SidebarView, 'agent' | 'extension'>, string>;
|
|
172
|
-
|
|
173
|
-
/** The Storage the views persist in (`localStorage` in a browser). */
|
|
174
|
-
export type SidebarViewsStorage = Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>;
|
|
175
|
-
|
|
176
|
-
function read(storage: SidebarViewsStorage | undefined, key: string): string | undefined {
|
|
177
|
-
try {
|
|
178
|
-
return storage?.getItem(key) ?? undefined;
|
|
179
|
-
} catch {
|
|
180
|
-
return undefined;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function write(storage: SidebarViewsStorage | undefined, key: string, value: string | null): void {
|
|
185
|
-
try {
|
|
186
|
-
if (value === null) storage?.removeItem(key);
|
|
187
|
-
else storage?.setItem(key, value);
|
|
188
|
-
} catch {
|
|
189
|
-
// Storage full or blocked: the view still holds for this run.
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* The views the Storage holds: the per-space map, else the legacy per-axis keys as the default space's view.
|
|
195
|
-
*
|
|
196
|
-
* @param storage - Where the views persist; absent reads nothing.
|
|
197
|
-
*/
|
|
198
|
-
export function readSidebarViews(storage: SidebarViewsStorage | undefined): SidebarViewMap {
|
|
199
|
-
const stored = viewsFrom(parseJson(read(storage, SIDEBAR_VIEW_KEY)));
|
|
200
|
-
if (stored) return stored;
|
|
201
|
-
const legacy = Object.fromEntries(Object.entries(LEGACY_KEYS).map(([field, key]) => [field, read(storage, key)]));
|
|
202
|
-
return Object.values(legacy).some((v) => v !== undefined) ? { [DEFAULT_SPACE_ID]: parseSidebarView(legacy) } : {};
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/** The sidebar's views and shown space, outside React. */
|
|
206
|
-
export interface SidebarViews {
|
|
207
|
-
/** Every space's view. */
|
|
208
|
-
views: Readable<SidebarViewMap>;
|
|
209
|
-
/** The space the sidebar shows. */
|
|
210
|
-
space: Readable<string>;
|
|
211
|
-
/** The space's view (the default when it has none). */
|
|
212
|
-
viewOf(spaceId: string): SidebarView;
|
|
213
|
-
/** Change some axes of a space's view; persisted at once. */
|
|
214
|
-
patch(spaceId: string, patch: Partial<SidebarView>): void;
|
|
215
|
-
/** Show another space; persisted at once. */
|
|
216
|
-
setSpace(spaceId: string): void;
|
|
217
|
-
/** The conversation last open in a space, if one was. */
|
|
218
|
-
lastSessionOf(spaceId: string): string | null;
|
|
219
|
-
/** Remember the conversation open in a space; persisted at once (no-op when unchanged). */
|
|
220
|
-
rememberSession(spaceId: string, sessionId: string): void;
|
|
221
|
-
/** Forget a conversation in every space that remembers it (deleted, moved away). */
|
|
222
|
-
forgetSession(sessionId: string, exceptSpaceId?: string): void;
|
|
223
|
-
/** Read the host's copies once (no-op without a host). Call after creation. */
|
|
224
|
-
sync(): void;
|
|
225
|
-
/** The switcher's order and hidden spaces, on this device. */
|
|
226
|
-
switcher: Readable<SpaceSwitcherPrefs>;
|
|
227
|
-
/** Replaces the switcher's prefs; persisted at once. */
|
|
228
|
-
setSwitcher(prefs: SpaceSwitcherPrefs): void;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/** Options of {@link createSidebarViews}. */
|
|
232
|
-
export interface SidebarViewsOptions {
|
|
233
|
-
/** Where the views persist on this device. */
|
|
234
|
-
storage?: SidebarViewsStorage;
|
|
235
|
-
/** The host's copy (`ChatHost.sessions.views`). */
|
|
236
|
-
host?: SidebarViewsHost;
|
|
237
|
-
/** The space shown when none was saved. */
|
|
238
|
-
fallbackSpace?: string;
|
|
239
|
-
/** A host read or write failed. */
|
|
240
|
-
onError?: (what: 'views' | 'view' | 'space', error: unknown) => void;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* The views store: Storage first, the host's copy merged in once ({@link SidebarViews.sync}).
|
|
245
|
-
*
|
|
246
|
-
* @param options - Storage, host and fallback space.
|
|
247
|
-
*/
|
|
248
|
-
export function createSidebarViews(options: SidebarViewsOptions = {}): SidebarViews {
|
|
249
|
-
const { storage, host, onError } = options;
|
|
250
|
-
const views = writable<SidebarViewMap>(readSidebarViews(storage));
|
|
251
|
-
let lastSessions: SidebarLastSessions = sessionsFrom(parseJson(read(storage, SIDEBAR_VIEW_KEY)));
|
|
252
|
-
const savedSpace = read(storage, SIDEBAR_SPACE_KEY);
|
|
253
|
-
const space = writable<string>(savedSpace || (options.fallbackSpace ?? DEFAULT_SPACE_ID));
|
|
254
|
-
/** Spaces whose view changed this run: the host's older copy never overwrites them. */
|
|
255
|
-
const changed = new Set<string>();
|
|
256
|
-
/** Spaces whose last open conversation changed this run, likewise. */
|
|
257
|
-
const reopened = new Set<string>();
|
|
258
|
-
let switched = false;
|
|
259
|
-
let synced = false;
|
|
260
|
-
const switcher = writable<SpaceSwitcherPrefs>(parseSwitcherPrefs(parseJson(read(storage, SIDEBAR_SWITCHER_KEY))));
|
|
261
|
-
|
|
262
|
-
const recordOf = (spaceId: string, view = views.get()[spaceId] ?? DEFAULT_SIDEBAR_VIEW): SidebarViewRecord => {
|
|
263
|
-
const session = lastSessions[spaceId];
|
|
264
|
-
return session ? { ...view, session } : view;
|
|
265
|
-
};
|
|
266
|
-
const persistViews = (next: SidebarViewMap) => {
|
|
267
|
-
const ids = new Set([...Object.keys(next), ...Object.keys(lastSessions)]);
|
|
268
|
-
const records = Object.fromEntries([...ids].map((id) => [id, recordOf(id, next[id] ?? DEFAULT_SIDEBAR_VIEW)]));
|
|
269
|
-
write(storage, SIDEBAR_VIEW_KEY, JSON.stringify(records));
|
|
270
|
-
for (const key of Object.values(LEGACY_KEYS)) write(storage, key, null);
|
|
271
|
-
};
|
|
272
|
-
const saveView = (spaceId: string, view?: SidebarView) => {
|
|
273
|
-
host?.setView(spaceId, recordOf(spaceId, view)).catch((err: unknown) => onError?.('view', err));
|
|
274
|
-
};
|
|
275
|
-
const setLastSession = (spaceId: string, sessionId: string | null) => {
|
|
276
|
-
const next = { ...lastSessions };
|
|
277
|
-
if (sessionId) next[spaceId] = sessionId;
|
|
278
|
-
else delete next[spaceId];
|
|
279
|
-
lastSessions = next;
|
|
280
|
-
reopened.add(spaceId);
|
|
281
|
-
};
|
|
282
|
-
const saveSpace = (spaceId: string) => {
|
|
283
|
-
host?.setSpace(spaceId).catch((err: unknown) => onError?.('space', err));
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
return {
|
|
287
|
-
views,
|
|
288
|
-
space,
|
|
289
|
-
viewOf: (spaceId) => views.get()[spaceId] ?? DEFAULT_SIDEBAR_VIEW,
|
|
290
|
-
patch(spaceId, patch) {
|
|
291
|
-
const view = { ...(views.get()[spaceId] ?? DEFAULT_SIDEBAR_VIEW), ...patch };
|
|
292
|
-
changed.add(spaceId);
|
|
293
|
-
const next = { ...views.get(), [spaceId]: view };
|
|
294
|
-
views.set(next);
|
|
295
|
-
persistViews(next);
|
|
296
|
-
saveView(spaceId, view);
|
|
297
|
-
},
|
|
298
|
-
setSpace(spaceId) {
|
|
299
|
-
switched = true;
|
|
300
|
-
space.set(spaceId);
|
|
301
|
-
write(storage, SIDEBAR_SPACE_KEY, spaceId);
|
|
302
|
-
saveSpace(spaceId);
|
|
303
|
-
},
|
|
304
|
-
switcher,
|
|
305
|
-
setSwitcher(prefs) {
|
|
306
|
-
const next = parseSwitcherPrefs(prefs);
|
|
307
|
-
switcher.set(next);
|
|
308
|
-
write(storage, SIDEBAR_SWITCHER_KEY, JSON.stringify(next));
|
|
309
|
-
},
|
|
310
|
-
lastSessionOf: (spaceId) => lastSessions[spaceId] ?? null,
|
|
311
|
-
rememberSession(spaceId, sessionId) {
|
|
312
|
-
if (lastSessions[spaceId] === sessionId) return;
|
|
313
|
-
setLastSession(spaceId, sessionId);
|
|
314
|
-
persistViews(views.get());
|
|
315
|
-
saveView(spaceId);
|
|
316
|
-
},
|
|
317
|
-
forgetSession(sessionId, exceptSpaceId) {
|
|
318
|
-
const spaces = Object.keys(lastSessions).filter((id) => id !== exceptSpaceId && lastSessions[id] === sessionId);
|
|
319
|
-
if (spaces.length === 0) return;
|
|
320
|
-
for (const id of spaces) setLastSession(id, null);
|
|
321
|
-
persistViews(views.get());
|
|
322
|
-
for (const id of spaces) saveView(id);
|
|
323
|
-
},
|
|
324
|
-
sync() {
|
|
325
|
-
if (!host || synced) return;
|
|
326
|
-
synced = true;
|
|
327
|
-
host
|
|
328
|
-
.getViews()
|
|
329
|
-
.then((stored) => {
|
|
330
|
-
const saved = viewsFrom(stored) ?? {};
|
|
331
|
-
const local = views.get();
|
|
332
|
-
// A space the host keeps takes its record whole (a missing \`session\` included), like its view.
|
|
333
|
-
const own = lastSessions;
|
|
334
|
-
const hostSessions = sessionsFrom(stored);
|
|
335
|
-
const merged: SidebarLastSessions = { ...own, ...hostSessions };
|
|
336
|
-
for (const id of Object.keys(saved)) if (!(id in hostSessions)) delete merged[id];
|
|
337
|
-
for (const id of reopened) {
|
|
338
|
-
if (own[id]) merged[id] = own[id];
|
|
339
|
-
else delete merged[id];
|
|
340
|
-
}
|
|
341
|
-
lastSessions = merged;
|
|
342
|
-
const next: SidebarViewMap = { ...local, ...saved };
|
|
343
|
-
for (const id of changed) {
|
|
344
|
-
const own = local[id];
|
|
345
|
-
if (own) next[id] = own;
|
|
346
|
-
}
|
|
347
|
-
for (const [id, view] of Object.entries(local)) if (!(id in saved)) saveView(id, view);
|
|
348
|
-
views.set(next);
|
|
349
|
-
persistViews(next);
|
|
350
|
-
})
|
|
351
|
-
.catch((err: unknown) => onError?.('views', err));
|
|
352
|
-
host
|
|
353
|
-
.getSpace()
|
|
354
|
-
.then((saved) => {
|
|
355
|
-
if (switched) return;
|
|
356
|
-
if (typeof saved === 'string' && saved.length > 0) {
|
|
357
|
-
space.set(saved);
|
|
358
|
-
write(storage, SIDEBAR_SPACE_KEY, saved);
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
const own = read(storage, SIDEBAR_SPACE_KEY);
|
|
362
|
-
if (own) saveSpace(own);
|
|
363
|
-
})
|
|
364
|
-
.catch((err: unknown) => onError?.('space', err));
|
|
365
|
-
},
|
|
366
|
-
};
|
|
367
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Site icons for link badges, one request per origin for the whole page
|
|
3
|
-
* (`ChatHost.siteIcons`). An app builds one over its fetcher and shares it,
|
|
4
|
-
* so every badge of a site shares the answer, and badges drawn outside React
|
|
5
|
-
* (an editor's decorations) hear when one lands.
|
|
6
|
-
*/
|
|
7
|
-
import type { ChatSiteIcons } from './transcript-host';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The `http(s)` origin a link's icon belongs to, or `null` when it has none.
|
|
11
|
-
*
|
|
12
|
-
* @param url - The link's address.
|
|
13
|
-
*/
|
|
14
|
-
export function siteOrigin(url: string): string | null {
|
|
15
|
-
try {
|
|
16
|
-
const { protocol, origin, hostname } = new URL(url);
|
|
17
|
-
return (protocol === 'http:' || protocol === 'https:') && hostname ? origin : null;
|
|
18
|
-
} catch {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Creates the site icon cache over a fetcher.
|
|
25
|
-
*
|
|
26
|
-
* @param fetch - Loads an origin's icon as a data URL; `null` when it has none.
|
|
27
|
-
*/
|
|
28
|
-
export function createSiteIcons(fetch: (origin: string) => Promise<string | null>): ChatSiteIcons {
|
|
29
|
-
const icons = new Map<string, string | null>();
|
|
30
|
-
const inflight = new Set<string>();
|
|
31
|
-
const listeners = new Set<() => void>();
|
|
32
|
-
return {
|
|
33
|
-
get: (origin) => icons.get(origin) ?? null,
|
|
34
|
-
request(origin) {
|
|
35
|
-
if (icons.has(origin) || inflight.has(origin)) return;
|
|
36
|
-
inflight.add(origin);
|
|
37
|
-
void Promise.resolve()
|
|
38
|
-
.then(() => fetch(origin))
|
|
39
|
-
.catch(() => null)
|
|
40
|
-
.then((icon) => {
|
|
41
|
-
inflight.delete(origin);
|
|
42
|
-
icons.set(origin, icon);
|
|
43
|
-
if (icon) listeners.forEach((listener) => listener());
|
|
44
|
-
});
|
|
45
|
-
},
|
|
46
|
-
subscribe(listener) {
|
|
47
|
-
listeners.add(listener);
|
|
48
|
-
return () => listeners.delete(listener);
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
}
|
|
@@ -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';
|