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
package/src/adapters/live.ts
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The client half of zidane's live transcript, shared by every adapter: the
|
|
3
|
-
* stores a `ChatHost` exposes (session list, transcripts, pending
|
|
4
|
-
* interactions), fed by live events folded with `applyLiveEvent`
|
|
5
|
-
* (`live-events.ts`, zidane's merge rule).
|
|
6
|
-
*
|
|
7
|
-
* The transcripts live in the session stream store (`SessionStreamStore`,
|
|
8
|
-
* `chat/headless/streams/`), the one the desktop app runs on: events fold
|
|
9
|
-
* and prompt echoes dedupe there. This module is a facade that keeps the
|
|
10
|
-
* adapters' own rules on top of it, because they differ from the desktop
|
|
11
|
-
* app's signal rules: a hydrate replaces the window wholesale and forgets
|
|
12
|
-
* pending echoes (the store reconciles a page with the live window),
|
|
13
|
-
* notifications go out at once (the store batches transcript events per
|
|
14
|
-
* frame), a run's end neither appends an error row nor drops pending echoes,
|
|
15
|
-
* and long messages split at the reducer's default size.
|
|
16
|
-
*/
|
|
17
|
-
import type { InteractionRequest } from 'zidane/chat';
|
|
18
|
-
|
|
19
|
-
import type {
|
|
20
|
-
ChatAttachment,
|
|
21
|
-
ChatEvent,
|
|
22
|
-
ChatInteraction,
|
|
23
|
-
ChatSession,
|
|
24
|
-
ChatSessionStatus,
|
|
25
|
-
Transcript,
|
|
26
|
-
TranscriptState,
|
|
27
|
-
} from '../chat/headless/host';
|
|
28
|
-
import { writable, type Readable, type Writable } from '../chat/headless/store';
|
|
29
|
-
import { applyLiveEvent, finishLive } from '../chat/headless/streams/live-events';
|
|
30
|
-
import { SessionStreamStore } from '../chat/headless/streams/store';
|
|
31
|
-
import { transcriptSnapshot } from '../chat/headless/streams/transcript';
|
|
32
|
-
|
|
33
|
-
export { applyLiveEvent, finishLive };
|
|
34
|
-
|
|
35
|
-
/** One session's live transcript: its state store and the echo bookkeeping. */
|
|
36
|
-
export interface LiveTranscript {
|
|
37
|
-
/** The session's transcript state, updated as events arrive. */
|
|
38
|
-
state: Writable<TranscriptState>;
|
|
39
|
-
/** Prompts this client echoed itself, waiting for the host's echo to drop (the store's pending-echo list). */
|
|
40
|
-
echoes: string[];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** The client half of the live transcript: the stores a {@link ChatHost} exposes, fed by live events. Shared by every adapter. */
|
|
44
|
-
export interface LiveState {
|
|
45
|
-
/** The session list store. */
|
|
46
|
-
sessions: Writable<readonly ChatSession[]>;
|
|
47
|
-
/** Created on first use; `onOpen` runs then (an adapter starts its stream there). */
|
|
48
|
-
transcript(sessionId: string): LiveTranscript;
|
|
49
|
-
/** The `Transcript` a host hands the components, with `onFirstSubscribe` / `onLastUnsubscribe` hooks. */
|
|
50
|
-
readable(sessionId: string, extra?: Pick<Transcript, 'loadEarlier'>): Transcript;
|
|
51
|
-
/** Replaces a session's events with a loaded history and marks it hydrated. `patch` sets other transcript state fields, such as `running`. */
|
|
52
|
-
hydrate(sessionId: string, events: readonly ChatEvent[], patch?: Partial<TranscriptState>): void;
|
|
53
|
-
/** A live event from the agent; `echo` marks the host repeating a prompt (dropped when this client echoed it). */
|
|
54
|
-
apply(sessionId: string, event: ChatEvent, echo?: boolean): void;
|
|
55
|
-
/** Show the user's prompt at once (with its attachment previews); the host's echo of it is then dropped. */
|
|
56
|
-
echoPrompt(sessionId: string, text: string, attachments?: readonly ChatAttachment[]): void;
|
|
57
|
-
/** A run started or ended; the session's status follows (`status` overrides: `'error'`, `'idle'` after an interrupt). */
|
|
58
|
-
setRunning(sessionId: string, running: boolean, status?: ChatSessionStatus): void;
|
|
59
|
-
/** Merges fields into a session in the list. A session the list does not hold is ignored. */
|
|
60
|
-
patchSession(sessionId: string, patch: Partial<ChatSession>): void;
|
|
61
|
-
/** The store of a session's pending interactions. */
|
|
62
|
-
pending(sessionId: string): Writable<readonly ChatInteraction[]>;
|
|
63
|
-
/** Every session's pending interactions, in arrival order. */
|
|
64
|
-
allPending: Readable<readonly ChatInteraction[]>;
|
|
65
|
-
/** Adds a pending request to a session. A request already pending is ignored. */
|
|
66
|
-
addInteraction(sessionId: string, request: InteractionRequest): void;
|
|
67
|
-
/** Removes a request from the pending interactions of every session. */
|
|
68
|
-
resolveInteraction(requestId: string): void;
|
|
69
|
-
/** The session a pending request belongs to. */
|
|
70
|
-
interactionSession(requestId: string): string | undefined;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Options for {@link createLiveState}. */
|
|
74
|
-
export interface LiveStateOptions {
|
|
75
|
-
/** The sessions the list starts with. Default: none. */
|
|
76
|
-
sessions?: readonly ChatSession[];
|
|
77
|
-
/** Called with the session id when the first subscriber of its transcript arrives. An adapter starts the session's stream here. */
|
|
78
|
-
onOpen?: (sessionId: string) => void;
|
|
79
|
-
/** Called with the session id when the last subscriber of its transcript leaves. An adapter stops the session's stream here. */
|
|
80
|
-
onClose?: (sessionId: string) => void;
|
|
81
|
-
/**
|
|
82
|
-
* Forget the transcripts nobody reads: when a session's last subscriber leaves, every window goes but the
|
|
83
|
-
* open sessions', the running ones' and the 12 most recently opened. For an adapter that loads a transcript
|
|
84
|
-
* again in `onOpen`. Default: `false`.
|
|
85
|
-
*/
|
|
86
|
-
evict?: boolean;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Closed sessions whose windows stay, most recent first: the desktop's prewarm window (`sidebar/directory.ts`) less the open one. */
|
|
90
|
-
const RECENT_KEPT = 12;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Creates the stores a {@link ChatHost} exposes: the session list, per-session transcripts, and pending interactions.
|
|
94
|
-
*
|
|
95
|
-
* @param options - The initial sessions and the transcript open and close hooks.
|
|
96
|
-
*/
|
|
97
|
-
export function createLiveState(options: LiveStateOptions = {}): LiveState {
|
|
98
|
-
const sessions = writable<readonly ChatSession[]>(options.sessions ?? []);
|
|
99
|
-
// Unbatched, and the reducer's default markdown split: see the module comment.
|
|
100
|
-
const store = new SessionStreamStore({ batch: false, markdown: {} });
|
|
101
|
-
const transcripts = new Map<string, LiveTranscript>();
|
|
102
|
-
const pendings = new Map<string, Writable<readonly ChatInteraction[]>>();
|
|
103
|
-
const allPending = writable<readonly ChatInteraction[]>([]);
|
|
104
|
-
const readables = new Map<string, Transcript>();
|
|
105
|
-
// Per session, not per readable: a readable made again after an eviction counts with the old one.
|
|
106
|
-
const subscribers = new Map<string, number>();
|
|
107
|
-
/** Recently opened sessions, the most recent last. */
|
|
108
|
-
const recent = new Set<string>();
|
|
109
|
-
const visit = (sessionId: string) => {
|
|
110
|
-
if (!options.evict) return;
|
|
111
|
-
recent.delete(sessionId);
|
|
112
|
-
recent.add(sessionId);
|
|
113
|
-
if (recent.size > RECENT_KEPT) recent.delete(recent.values().next().value!);
|
|
114
|
-
};
|
|
115
|
-
const evict = () => {
|
|
116
|
-
const keep = new Set([...recent, ...subscribers.keys()]);
|
|
117
|
-
store.evictExcept(keep);
|
|
118
|
-
// The store's own rule: running and mid-scrollback sessions stay.
|
|
119
|
-
for (const sessionId of new Set([...transcripts.keys(), ...readables.keys()])) {
|
|
120
|
-
if (keep.has(sessionId) || store.getRunningSnapshot(sessionId) || store.getPageSnapshot(sessionId).loadingEarlier)
|
|
121
|
-
continue;
|
|
122
|
-
transcripts.delete(sessionId);
|
|
123
|
-
readables.delete(sessionId);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const transcript = (sessionId: string) => {
|
|
128
|
-
let t = transcripts.get(sessionId);
|
|
129
|
-
if (!t) {
|
|
130
|
-
t = {
|
|
131
|
-
state: transcriptState(store, sessionId),
|
|
132
|
-
get echoes() {
|
|
133
|
-
return store.pendingEchoes(sessionId);
|
|
134
|
-
},
|
|
135
|
-
set echoes(next) {
|
|
136
|
-
const echoes = store.pendingEchoes(sessionId);
|
|
137
|
-
echoes.splice(0, echoes.length, ...next);
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
transcripts.set(sessionId, t);
|
|
141
|
-
}
|
|
142
|
-
return t;
|
|
143
|
-
};
|
|
144
|
-
const pending = (sessionId: string) => {
|
|
145
|
-
let p = pendings.get(sessionId);
|
|
146
|
-
if (!p) {
|
|
147
|
-
p = writable<readonly ChatInteraction[]>([]);
|
|
148
|
-
pendings.set(sessionId, p);
|
|
149
|
-
}
|
|
150
|
-
return p;
|
|
151
|
-
};
|
|
152
|
-
const patchSession = (sessionId: string, patch: Partial<ChatSession>) =>
|
|
153
|
-
sessions.set((all) =>
|
|
154
|
-
all.some((s) => s.id === sessionId) ? all.map((s) => (s.id === sessionId ? { ...s, ...patch } : s)) : all,
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
return {
|
|
158
|
-
sessions,
|
|
159
|
-
transcript,
|
|
160
|
-
readable(sessionId, extra) {
|
|
161
|
-
visit(sessionId);
|
|
162
|
-
let r = readables.get(sessionId);
|
|
163
|
-
if (r) return r;
|
|
164
|
-
const { state } = transcript(sessionId);
|
|
165
|
-
const store: Readable<TranscriptState> = {
|
|
166
|
-
get: state.get,
|
|
167
|
-
subscribe(onChange) {
|
|
168
|
-
const off = state.subscribe(onChange);
|
|
169
|
-
const count = subscribers.get(sessionId) ?? 0;
|
|
170
|
-
subscribers.set(sessionId, count + 1);
|
|
171
|
-
visit(sessionId);
|
|
172
|
-
if (count === 0) options.onOpen?.(sessionId);
|
|
173
|
-
let done = false;
|
|
174
|
-
return () => {
|
|
175
|
-
if (done) return;
|
|
176
|
-
done = true;
|
|
177
|
-
off();
|
|
178
|
-
const left = subscribers.get(sessionId)! - 1;
|
|
179
|
-
if (left > 0) {
|
|
180
|
-
subscribers.set(sessionId, left);
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
subscribers.delete(sessionId);
|
|
184
|
-
options.onClose?.(sessionId);
|
|
185
|
-
if (options.evict) evict();
|
|
186
|
-
};
|
|
187
|
-
},
|
|
188
|
-
};
|
|
189
|
-
r = { ...store, ...(extra?.loadEarlier ? { loadEarlier: extra.loadEarlier } : {}) };
|
|
190
|
-
readables.set(sessionId, r);
|
|
191
|
-
return r;
|
|
192
|
-
},
|
|
193
|
-
hydrate(sessionId, events, patch) {
|
|
194
|
-
const t = transcript(sessionId);
|
|
195
|
-
t.echoes = [];
|
|
196
|
-
t.state.set((s) => ({ ...s, ...patch, events: [...events], hydrated: true }));
|
|
197
|
-
},
|
|
198
|
-
apply(sessionId, event, echo) {
|
|
199
|
-
transcript(sessionId);
|
|
200
|
-
// An echo this client is waiting for is consumed; anything else folds with `applyLiveEvent`.
|
|
201
|
-
store.applySignal({ kind: 'event', sessionId, event, ...(echo ? { echo } : {}) });
|
|
202
|
-
},
|
|
203
|
-
echoPrompt(sessionId, text, attachments) {
|
|
204
|
-
transcript(sessionId);
|
|
205
|
-
store.appendUserPrompt(sessionId, text, undefined, attachments ?? []);
|
|
206
|
-
},
|
|
207
|
-
setRunning(sessionId, running, status) {
|
|
208
|
-
const t = transcript(sessionId);
|
|
209
|
-
t.state.set((s) =>
|
|
210
|
-
s.running === running ? s : { ...s, running, events: running ? s.events : finishLive(s.events) },
|
|
211
|
-
);
|
|
212
|
-
patchSession(sessionId, { status: status ?? (running ? 'running' : 'completed'), updatedAt: Date.now() });
|
|
213
|
-
},
|
|
214
|
-
patchSession,
|
|
215
|
-
pending,
|
|
216
|
-
allPending,
|
|
217
|
-
addInteraction(sessionId, request) {
|
|
218
|
-
if (allPending.get().some((i) => i.requestId === request.id)) return;
|
|
219
|
-
const item = { requestId: request.id, sessionId, request };
|
|
220
|
-
pending(sessionId).set((all) => [...all, item]);
|
|
221
|
-
allPending.set((all) => [...all, item]);
|
|
222
|
-
},
|
|
223
|
-
resolveInteraction(requestId) {
|
|
224
|
-
for (const p of pendings.values()) {
|
|
225
|
-
if (p.get().some((i) => i.requestId === requestId))
|
|
226
|
-
p.set((all) => all.filter((i) => i.requestId !== requestId));
|
|
227
|
-
}
|
|
228
|
-
if (allPending.get().some((i) => i.requestId === requestId))
|
|
229
|
-
allPending.set((all) => all.filter((i) => i.requestId !== requestId));
|
|
230
|
-
},
|
|
231
|
-
interactionSession(requestId) {
|
|
232
|
-
for (const p of pendings.values()) {
|
|
233
|
-
const hit = p.get().find((i) => i.requestId === requestId);
|
|
234
|
-
if (hit) return hit.sessionId;
|
|
235
|
-
}
|
|
236
|
-
return undefined;
|
|
237
|
-
},
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* A session's transcript state as a writable store over the session stream
|
|
243
|
-
* store: reads are the store's snapshots, a write sets the events, the run
|
|
244
|
-
* flag and the page state (`hydrated`, `hasEarlier`, `loadingEarlier`) in
|
|
245
|
-
* one notification.
|
|
246
|
-
*/
|
|
247
|
-
function transcriptState(store: SessionStreamStore, sessionId: string): Writable<TranscriptState> {
|
|
248
|
-
let last: TranscriptState | undefined;
|
|
249
|
-
const get = () => (last = transcriptSnapshot(store, sessionId, last));
|
|
250
|
-
return {
|
|
251
|
-
get,
|
|
252
|
-
set(next) {
|
|
253
|
-
const prev = get();
|
|
254
|
-
const resolved = typeof next === 'function' ? next(prev) : next;
|
|
255
|
-
if (Object.is(resolved, prev)) return;
|
|
256
|
-
store.write(sessionId, {
|
|
257
|
-
...(resolved.events !== prev.events ? { events: resolved.events } : {}),
|
|
258
|
-
running: resolved.running,
|
|
259
|
-
page: resolved.hydrated
|
|
260
|
-
? {
|
|
261
|
-
firstSeq: store.getPageSnapshot(sessionId).firstSeq,
|
|
262
|
-
hasMore: resolved.hasEarlier ?? false,
|
|
263
|
-
loadingEarlier: resolved.loadingEarlier ?? false,
|
|
264
|
-
}
|
|
265
|
-
: null,
|
|
266
|
-
});
|
|
267
|
-
},
|
|
268
|
-
subscribe: (onChange) => store.subscribeSession(sessionId, onChange),
|
|
269
|
-
};
|
|
270
|
-
}
|
package/src/adapters/run-host.ts
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A `ChatHost` around a run function you supply: the kit keeps the sessions,
|
|
3
|
-
* transcripts and pending interactions in memory, you run the agent.
|
|
4
|
-
*
|
|
5
|
-
* `run` is called once per sent prompt. It streams the reply with `emit`,
|
|
6
|
-
* using zidane's live event rule (see `live.ts`): `{ kind: 'markdown', text:
|
|
7
|
-
* delta, streaming: true }` and `{ kind: 'thinking', text: delta }` grow the
|
|
8
|
-
* open block, any other `StreamEvent` (`tool`, `tool-result`, `error`, …) is
|
|
9
|
-
* a row of its own. It raises a question or a plan with `ask` and gets the
|
|
10
|
-
* answer back (`null`: dismissed or interrupted). It watches `signal` for an
|
|
11
|
-
* interrupt. Wiring a real zidane agent into `run` is the app's job, which
|
|
12
|
-
* keeps this module free of the zidane runtime (it runs in a page or a Web
|
|
13
|
-
* Worker). The user's prompt is echoed by the host; `run` does not emit it.
|
|
14
|
-
*/
|
|
15
|
-
import type { InteractionRequest, InteractionResponse } from 'zidane/chat';
|
|
16
|
-
|
|
17
|
-
import type {
|
|
18
|
-
ChatAttachment,
|
|
19
|
-
ChatEvent,
|
|
20
|
-
ChatHost,
|
|
21
|
-
ChatModelProvider,
|
|
22
|
-
ChatSession,
|
|
23
|
-
SendInput,
|
|
24
|
-
} from '../chat/headless/host';
|
|
25
|
-
import { constant, type Readable } from '../chat/headless/store';
|
|
26
|
-
import { createLiveState } from './live';
|
|
27
|
-
|
|
28
|
-
/** What {@link createRunHost} hands to the `run` function for one sent prompt. */
|
|
29
|
-
export interface RunContext {
|
|
30
|
-
/** Id of the session the prompt was sent to. */
|
|
31
|
-
sessionId: string;
|
|
32
|
-
/** The prompt text. */
|
|
33
|
-
prompt: string;
|
|
34
|
-
/** Files sent with the prompt. Empty when there are none. */
|
|
35
|
-
attachments: readonly ChatAttachment[];
|
|
36
|
-
/** The model the user picked, as `provider/model` or a bare id. Absent when none was picked. */
|
|
37
|
-
model?: string;
|
|
38
|
-
/** The reasoning effort the user picked. Absent when none was picked. */
|
|
39
|
-
thinking?: SendInput['thinking'];
|
|
40
|
-
/** Aborted on interrupt. */
|
|
41
|
-
signal: AbortSignal;
|
|
42
|
-
/** Streams an event into the session's transcript. Markdown and thinking events with `streaming` grow the open block; any other event is a new row. */
|
|
43
|
-
emit(event: ChatEvent): void;
|
|
44
|
-
/** Ask the user; resolves with the answer, or `null` when dismissed or interrupted. */
|
|
45
|
-
ask(request: InteractionRequest): Promise<InteractionResponse | null>;
|
|
46
|
-
/** Receive messages the user steers into this run. Without a listener, `steer` reports false. */
|
|
47
|
-
onSteer(listener: (message: string) => void): void;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Runs the agent for one prompt. Called once per sent prompt with a {@link RunContext}. The run ends when the returned promise settles; a rejection shows as an error row. */
|
|
51
|
-
export type RunFn = (context: RunContext) => void | Promise<void>;
|
|
52
|
-
|
|
53
|
-
/** Options for {@link createRunHost}. */
|
|
54
|
-
export interface RunHostOptions {
|
|
55
|
-
/** The function that runs the agent for each sent prompt. */
|
|
56
|
-
run: RunFn;
|
|
57
|
-
/** Sessions to start with (default: none; the user creates them). */
|
|
58
|
-
sessions?: readonly ChatSession[];
|
|
59
|
-
/** Their existing events, per session id. */
|
|
60
|
-
transcripts?: Record<string, readonly ChatEvent[]>;
|
|
61
|
-
/** Providers and models the host offers, fixed or live (a model's details change). Default: none. */
|
|
62
|
-
models?: readonly ChatModelProvider[] | Readable<readonly ChatModelProvider[]>;
|
|
63
|
-
/** New session ids (default: `crypto.randomUUID()`). */
|
|
64
|
-
newId?: () => string;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/** The {@link ChatHost} {@link createRunHost} returns, plus what only an in-memory host can do. */
|
|
68
|
-
export interface RunHost extends ChatHost {
|
|
69
|
-
/**
|
|
70
|
-
* Adds a session with a history, as a new session first in the list (a saved or shared one). Its events show as they are; the agent's own memory of them is the app's concern.
|
|
71
|
-
*
|
|
72
|
-
* @param session - The session's title.
|
|
73
|
-
* @param events - Its transcript events, oldest first.
|
|
74
|
-
*/
|
|
75
|
-
restore(session: { title: string }, events: readonly ChatEvent[]): ChatSession;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
interface ActiveRun {
|
|
79
|
-
controller: AbortController;
|
|
80
|
-
steer?: (message: string) => void;
|
|
81
|
-
queued: SendInput[];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Creates a {@link ChatHost} around a run function. Sessions, transcripts, and pending interactions live in memory; the app supplies the agent through `run`.
|
|
86
|
-
*
|
|
87
|
-
* @param options - The `run` function and optional initial sessions, transcripts, and models.
|
|
88
|
-
*/
|
|
89
|
-
export function createRunHost(options: RunHostOptions): RunHost {
|
|
90
|
-
const state = createLiveState({ sessions: options.sessions ?? [] });
|
|
91
|
-
for (const s of options.sessions ?? []) state.hydrate(s.id, options.transcripts?.[s.id] ?? []);
|
|
92
|
-
const runs = new Map<string, ActiveRun>();
|
|
93
|
-
const waiters = new Map<string, (response: InteractionResponse | null) => void>();
|
|
94
|
-
const newId = options.newId ?? (() => crypto.randomUUID());
|
|
95
|
-
|
|
96
|
-
const settle = (requestId: string, response: InteractionResponse | null) => {
|
|
97
|
-
state.resolveInteraction(requestId);
|
|
98
|
-
const waiter = waiters.get(requestId);
|
|
99
|
-
waiters.delete(requestId);
|
|
100
|
-
waiter?.(response);
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const send = async (input: SendInput): Promise<void> => {
|
|
104
|
-
const { sessionId } = input;
|
|
105
|
-
if (runs.has(sessionId)) {
|
|
106
|
-
// A run is in flight: the prompt waits for it, as a follow-up.
|
|
107
|
-
runs.get(sessionId)!.queued.push(input);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const t = state.transcript(sessionId);
|
|
111
|
-
if (!t.state.get().hydrated) state.hydrate(sessionId, []);
|
|
112
|
-
const active: ActiveRun = { controller: new AbortController(), queued: [] };
|
|
113
|
-
runs.set(sessionId, active);
|
|
114
|
-
state.echoPrompt(sessionId, input.prompt, input.attachments);
|
|
115
|
-
state.setRunning(sessionId, true);
|
|
116
|
-
const live = () => runs.get(sessionId) === active;
|
|
117
|
-
const asked = new Set<string>();
|
|
118
|
-
let failed = false;
|
|
119
|
-
try {
|
|
120
|
-
await options.run({
|
|
121
|
-
sessionId,
|
|
122
|
-
prompt: input.prompt,
|
|
123
|
-
attachments: input.attachments ?? [],
|
|
124
|
-
...(input.model ? { model: input.model } : {}),
|
|
125
|
-
...(input.thinking ? { thinking: input.thinking } : {}),
|
|
126
|
-
signal: active.controller.signal,
|
|
127
|
-
emit(event) {
|
|
128
|
-
if (live()) state.apply(sessionId, event);
|
|
129
|
-
},
|
|
130
|
-
ask(request) {
|
|
131
|
-
if (!live()) return Promise.resolve(null);
|
|
132
|
-
asked.add(request.id);
|
|
133
|
-
return new Promise((resolve) => {
|
|
134
|
-
waiters.set(request.id, resolve);
|
|
135
|
-
state.addInteraction(sessionId, request);
|
|
136
|
-
});
|
|
137
|
-
},
|
|
138
|
-
onSteer(listener) {
|
|
139
|
-
active.steer = listener;
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
} catch (error) {
|
|
143
|
-
if (live() && !active.controller.signal.aborted) {
|
|
144
|
-
failed = true;
|
|
145
|
-
state.apply(sessionId, { kind: 'error', text: error instanceof Error ? error.message : String(error) });
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
for (const id of asked) if (waiters.has(id)) settle(id, null);
|
|
149
|
-
if (!live()) return;
|
|
150
|
-
runs.delete(sessionId);
|
|
151
|
-
state.setRunning(sessionId, false, failed ? 'error' : 'completed');
|
|
152
|
-
const next = active.queued.shift();
|
|
153
|
-
if (next !== undefined) {
|
|
154
|
-
// The rest of the queue moves to the run `next` starts (registered synchronously).
|
|
155
|
-
const started = send(next);
|
|
156
|
-
runs.get(sessionId)?.queued.push(...active.queued);
|
|
157
|
-
await started;
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
const host: RunHost = {
|
|
162
|
-
restore({ title }, events) {
|
|
163
|
-
const now = Date.now();
|
|
164
|
-
const session: ChatSession = { id: newId(), title, status: 'idle', createdAt: now, updatedAt: now };
|
|
165
|
-
state.sessions.set((all) => [session, ...all]);
|
|
166
|
-
state.hydrate(session.id, events);
|
|
167
|
-
return session;
|
|
168
|
-
},
|
|
169
|
-
sessions: {
|
|
170
|
-
list: state.sessions,
|
|
171
|
-
async create(input) {
|
|
172
|
-
const now = Date.now();
|
|
173
|
-
const session: ChatSession = {
|
|
174
|
-
id: newId(),
|
|
175
|
-
title: input?.title ?? 'New session',
|
|
176
|
-
status: 'idle',
|
|
177
|
-
createdAt: now,
|
|
178
|
-
updatedAt: now,
|
|
179
|
-
};
|
|
180
|
-
state.sessions.set((all) => [session, ...all]);
|
|
181
|
-
state.hydrate(session.id, []);
|
|
182
|
-
return session;
|
|
183
|
-
},
|
|
184
|
-
async rename(sessionId, title) {
|
|
185
|
-
state.patchSession(sessionId, { title, updatedAt: Date.now() });
|
|
186
|
-
},
|
|
187
|
-
async setArchived(sessionId, archived) {
|
|
188
|
-
state.patchSession(sessionId, { archived });
|
|
189
|
-
},
|
|
190
|
-
async remove(sessionId) {
|
|
191
|
-
host.interrupt!(sessionId);
|
|
192
|
-
state.sessions.set((all) => all.filter((s) => s.id !== sessionId));
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
transcript: (sessionId) => {
|
|
196
|
-
const t = state.transcript(sessionId);
|
|
197
|
-
if (!t.state.get().hydrated) state.hydrate(sessionId, []);
|
|
198
|
-
return state.readable(sessionId);
|
|
199
|
-
},
|
|
200
|
-
send,
|
|
201
|
-
interrupt(sessionId) {
|
|
202
|
-
const active = runs.get(sessionId);
|
|
203
|
-
if (!active) return;
|
|
204
|
-
runs.delete(sessionId);
|
|
205
|
-
active.controller.abort();
|
|
206
|
-
for (const i of state.pending(sessionId).get()) settle(i.requestId, null);
|
|
207
|
-
state.setRunning(sessionId, false, 'idle');
|
|
208
|
-
},
|
|
209
|
-
async steer(sessionId, message) {
|
|
210
|
-
const active = runs.get(sessionId);
|
|
211
|
-
if (!active?.steer) return false;
|
|
212
|
-
state.apply(sessionId, { kind: 'user-prompt', text: message });
|
|
213
|
-
active.steer(message);
|
|
214
|
-
return true;
|
|
215
|
-
},
|
|
216
|
-
async followUp(sessionId, message) {
|
|
217
|
-
const active = runs.get(sessionId);
|
|
218
|
-
if (!active) return false;
|
|
219
|
-
active.queued.push({ sessionId, prompt: message });
|
|
220
|
-
return true;
|
|
221
|
-
},
|
|
222
|
-
interactions: {
|
|
223
|
-
pending: state.pending,
|
|
224
|
-
async answer(requestId, response) {
|
|
225
|
-
settle(requestId, response);
|
|
226
|
-
},
|
|
227
|
-
async cancel(requestId) {
|
|
228
|
-
settle(requestId, null);
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
models: isReadable(options.models) ? options.models : constant(options.models ?? []),
|
|
232
|
-
};
|
|
233
|
-
return host;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
function isReadable<T>(value: T | Readable<T> | undefined): value is Readable<T> {
|
|
237
|
-
return typeof value === 'object' && value !== null && typeof (value as Readable<T>).subscribe === 'function';
|
|
238
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An `ApprovalsHost` on a running zidane-server, over a shared browser client
|
|
3
|
-
* (`createServerClient`): the pending approvals (`approvals.listPending`,
|
|
4
|
-
* re-read after every handshake, then kept current by the `approval:request` /
|
|
5
|
-
* `approval:resolved` signals), decisions (`approvals.resolve`) and bulk deny
|
|
6
|
-
* (`approvals.denyAll`).
|
|
7
|
-
*
|
|
8
|
-
* Listing needs a `chat` token; answering needs `approve`. Built after the
|
|
9
|
-
* handshake (`await client.ready`), the host follows the token: one without
|
|
10
|
-
* `approve` shows approvals without buttons.
|
|
11
|
-
*
|
|
12
|
-
* `safelist` is the server's "Always allow" list (`safelist.list`, a
|
|
13
|
-
* `chat` token) and revoking an entry (`safelist.remove`, `approve`); a
|
|
14
|
-
* server without those methods (older) leaves it out.
|
|
15
|
-
*/
|
|
16
|
-
import type { ServerClient } from 'zidane/ipc/browser';
|
|
17
|
-
import type { HostSignal } from 'zidane/ipc';
|
|
18
|
-
|
|
19
|
-
import type { ApprovalDecision, ApprovalsHost } from '../approvals/headless/host';
|
|
20
|
-
import { createPendingApprovals } from '../approvals/headless/pending';
|
|
21
|
-
import { createSafelist } from '../approvals/headless/safelist';
|
|
22
|
-
|
|
23
|
-
/** Options for {@link createServerApprovalsHost}. */
|
|
24
|
-
export interface ServerApprovalsHostOptions {
|
|
25
|
-
/** The client to speak through, shared with the chat host (`createServerHost({ client })`) and other areas' hosts. */
|
|
26
|
-
client: ServerClient;
|
|
27
|
-
/**
|
|
28
|
-
* `false` leaves out `resolve` and `denyAll`, for a token without the `approve` scope.
|
|
29
|
-
* Default: `client.can('approvals.resolve')` once the handshake has landed, `true` before it.
|
|
30
|
-
*/
|
|
31
|
-
canApprove?: boolean;
|
|
32
|
-
/** Called with errors no caller receives (a failed listing). Default: a console warning. */
|
|
33
|
-
onError?: (error: unknown) => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Creates an {@link ApprovalsHost} on a running zidane-server.
|
|
38
|
-
*
|
|
39
|
-
* @param options - The shared client, whether the token may answer approvals, and where background errors go.
|
|
40
|
-
*/
|
|
41
|
-
export function createServerApprovalsHost(options: ServerApprovalsHostOptions): ApprovalsHost {
|
|
42
|
-
const { client } = options;
|
|
43
|
-
const canApprove = options.canApprove ?? (client.hello() === null || client.can('approvals.resolve'));
|
|
44
|
-
const onError = options.onError ?? ((error: unknown) => console.warn('createServerApprovalsHost:', error));
|
|
45
|
-
const offers = (method: 'safelist.list' | 'safelist.remove') => client.hello() === null || client.can(method);
|
|
46
|
-
|
|
47
|
-
const pending = createPendingApprovals((sink) => {
|
|
48
|
-
let live = true;
|
|
49
|
-
const list = () => {
|
|
50
|
-
client
|
|
51
|
-
.call('approvals.listPending', {})
|
|
52
|
-
.then((requests) => {
|
|
53
|
-
if (live && Array.isArray(requests)) sink.merge(requests);
|
|
54
|
-
})
|
|
55
|
-
.catch((error: unknown) => {
|
|
56
|
-
if (live) onError(error);
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const offSignal = client.onSignal((signal: HostSignal) => {
|
|
60
|
-
if (signal.kind === 'approval:request') sink.add(signal.request);
|
|
61
|
-
else if (signal.kind === 'approval:resolved') sink.drop(signal.requestId);
|
|
62
|
-
});
|
|
63
|
-
// After every handshake: approvals raised while this page was away.
|
|
64
|
-
const offOpen = client.onOpen(() => list());
|
|
65
|
-
if (client.hello()) list();
|
|
66
|
-
return () => {
|
|
67
|
-
live = false;
|
|
68
|
-
offSignal();
|
|
69
|
-
offOpen();
|
|
70
|
-
};
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
pending,
|
|
75
|
-
...(offers('safelist.list')
|
|
76
|
-
? {
|
|
77
|
-
safelist: createSafelist({
|
|
78
|
-
list: async () => (await client.call('safelist.list', {})).projects,
|
|
79
|
-
...(offers('safelist.remove')
|
|
80
|
-
? {
|
|
81
|
-
remove: async (project: string, entry: string) => {
|
|
82
|
-
await client.call('safelist.remove', { project, entry });
|
|
83
|
-
},
|
|
84
|
-
}
|
|
85
|
-
: {}),
|
|
86
|
-
}),
|
|
87
|
-
}
|
|
88
|
-
: {}),
|
|
89
|
-
...(canApprove
|
|
90
|
-
? {
|
|
91
|
-
async resolve(requestId: string, decision: ApprovalDecision) {
|
|
92
|
-
if (!pending.take(requestId)) return;
|
|
93
|
-
await client.call('approvals.resolve', { requestId, decision });
|
|
94
|
-
},
|
|
95
|
-
async denyAll(sessionId?: string) {
|
|
96
|
-
pending.takeAll(sessionId);
|
|
97
|
-
await client.call('approvals.denyAll', sessionId === undefined ? {} : { sessionId });
|
|
98
|
-
},
|
|
99
|
-
}
|
|
100
|
-
: {}),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The zidane-server client the server adapter speaks through: zidane's own browser client
|
|
3
|
-
* (`zidane/ipc/browser`), re-exported so an app reaches it from the kit. Share one client
|
|
4
|
-
* between the chat host and the other areas' hosts on the same server.
|
|
5
|
-
*/
|
|
6
|
-
export {
|
|
7
|
-
createServerClient,
|
|
8
|
-
SERVER_AUTH_CHECK_PATH,
|
|
9
|
-
ServerCallError,
|
|
10
|
-
type ServerClient,
|
|
11
|
-
type ServerClientOptions,
|
|
12
|
-
type ServerClientState,
|
|
13
|
-
ServerConnectionError,
|
|
14
|
-
type ServerRefusal,
|
|
15
|
-
} from 'zidane/ipc/browser';
|