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,377 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The transcript row model: what collapseEvents() turns zidane stream events
|
|
3
|
-
* into and every later pass (batching, folding, clustering) rewrites. Pure
|
|
4
|
-
* data; the styled rows render it.
|
|
5
|
-
*/
|
|
6
|
-
import type { SessionEventStatus, StreamEvent, ToolFormatLine } from 'zidane/chat';
|
|
7
|
-
import type { PromptSegmentRef } from 'zidane/chat/pure';
|
|
8
|
-
import type { ChatAttachment } from '../host';
|
|
9
|
-
import type { PromptOrigin } from '../prompt-origin';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Every row carries the optional ownership metadata from its source
|
|
13
|
-
* `StreamEvent`. `childId` + `depth` drive the subagent block grouping;
|
|
14
|
-
* `turnId` drives select-turn mode highlighting.
|
|
15
|
-
*/
|
|
16
|
-
export interface Owned {
|
|
17
|
-
/** Id of the worker (subagent) session the row came from. Absent for the main session's own rows. */
|
|
18
|
-
childId?: string;
|
|
19
|
-
/** Nesting level of the worker that owns the row: 1 for a direct subagent, 2 for one it spawned. */
|
|
20
|
-
depth?: number;
|
|
21
|
-
/** Id of the turn the row belongs to. Select-turn mode highlights rows by it. */
|
|
22
|
-
turnId?: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/** One row of the transcript model. The `kind` field says what it is: a prompt, assistant markdown, thinking, a tool call, a notice, a worker marker, or a synthetic group such as `tool-batch` or `exchange-fold`. */
|
|
26
|
-
export type Row =
|
|
27
|
-
| (Owned & {
|
|
28
|
-
kind: 'user-prompt';
|
|
29
|
-
id: string;
|
|
30
|
-
text: string;
|
|
31
|
-
refs?: readonly PromptSegmentRef[];
|
|
32
|
-
attachments?: readonly ChatAttachment[];
|
|
33
|
-
/** A marker the user never typed: a command invocation's echo or a context note. */
|
|
34
|
-
synthetic?: true;
|
|
35
|
-
/** Who sent it, when not the session's own user in a window (a channel, an event). */
|
|
36
|
-
origin?: PromptOrigin;
|
|
37
|
-
})
|
|
38
|
-
| (Owned & {
|
|
39
|
-
kind: 'markdown';
|
|
40
|
-
id: string;
|
|
41
|
-
text: string;
|
|
42
|
-
streaming: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* A custom command block (`CommandOutputBlock.custom`): the extension renderer for `renderer` (an
|
|
45
|
-
* `ctx.add(Renderer, { for: { block } })`) draws it from `data`; `text` is its markdown fallback.
|
|
46
|
-
*/
|
|
47
|
-
custom?: { renderer: string; data?: unknown };
|
|
48
|
-
})
|
|
49
|
-
| (Owned & {
|
|
50
|
-
kind: 'thinking';
|
|
51
|
-
id: string;
|
|
52
|
-
text: string;
|
|
53
|
-
/**
|
|
54
|
-
* Wall-clock duration of the reasoning segment, stamped by the
|
|
55
|
-
* StreamProvider when the segment closes. Absent on replayed
|
|
56
|
-
* transcripts — persisted thinking blocks carry no timing metadata
|
|
57
|
-
* (canonical shape is `{ type: 'thinking', text, signature? }`),
|
|
58
|
-
* so reloaded rows render a plain "Thoughts" header.
|
|
59
|
-
*/
|
|
60
|
-
thinkingMs?: number;
|
|
61
|
-
/** True while the segment is still streaming (opened, not yet closed). */
|
|
62
|
-
live?: boolean;
|
|
63
|
-
})
|
|
64
|
-
| (Owned & {
|
|
65
|
-
/**
|
|
66
|
-
* Synthetic chained-thoughts group — a run of ≥2 closed `thinking`
|
|
67
|
-
* rows separated only by tool rows (or nothing) within one
|
|
68
|
-
* exchange. Mirrors `tool-batch`: one quiet header ("Thought 4
|
|
69
|
-
* times" and the summed time) that expands to the individual
|
|
70
|
-
* thought rows, each still individually collapsible. Produced by
|
|
71
|
-
* {@link batchThinkingRuns} after tool batching; a live (still
|
|
72
|
-
* streaming) thinking row never joins a group so the streaming
|
|
73
|
-
* text stays in view.
|
|
74
|
-
*/
|
|
75
|
-
kind: 'thinking-batch';
|
|
76
|
-
id: string;
|
|
77
|
-
thoughts: ReadonlyArray<Extract<Row, { kind: 'thinking' }>>;
|
|
78
|
-
/** Sum of the known segment durations; undefined when none carry timing. */
|
|
79
|
-
totalMs?: number;
|
|
80
|
-
})
|
|
81
|
-
| (Owned & { kind: 'info'; id: string; text: string; notice?: StreamEvent['notice'] })
|
|
82
|
-
| (Owned & {
|
|
83
|
-
kind: 'error';
|
|
84
|
-
id: string;
|
|
85
|
-
text: string;
|
|
86
|
-
/** What a run's error line leaves out, for its tooltip. */
|
|
87
|
-
detail?: StreamEvent['detail'];
|
|
88
|
-
/** A structured notice: a `/` command's error is not a run's end, a `run` or `repeat guard` one is. */
|
|
89
|
-
notice?: StreamEvent['notice'];
|
|
90
|
-
/** The tool whose error this is (an unpaired tool error): not a run's end. */
|
|
91
|
-
tool?: string;
|
|
92
|
-
/** The call whose error this is: not a run's end either. */
|
|
93
|
-
callId?: string;
|
|
94
|
-
/**
|
|
95
|
-
* Set when this row is how a run ended early (`markRunFailures`):
|
|
96
|
-
* `cause` says whether it failed or the user stopped it; `continue`
|
|
97
|
-
* when the run had done work, `retry` (resend `prompt`) when not.
|
|
98
|
-
*/
|
|
99
|
-
failure?: { cause: 'error' | 'aborted'; resume: 'continue' | 'retry'; prompt?: string };
|
|
100
|
-
})
|
|
101
|
-
| (Owned & {
|
|
102
|
-
/**
|
|
103
|
-
* Orchestration: a worker session (created/steered by the pinned
|
|
104
|
-
* "Main" session) reported an outcome. Renders as a one-line,
|
|
105
|
-
* clickable jump to that session — see `SessionEventRow` in
|
|
106
|
-
* `chat/transcript/notices.tsx`. `sessionEvent` is absent for a malformed signal;
|
|
107
|
-
* the row then renders as plain (non-clickable) text.
|
|
108
|
-
*/
|
|
109
|
-
kind: 'session-event';
|
|
110
|
-
id: string;
|
|
111
|
-
text: string;
|
|
112
|
-
sessionEvent?: StreamEvent['sessionEvent'];
|
|
113
|
-
})
|
|
114
|
-
| (Owned & {
|
|
115
|
-
/** Per-run receipt — one muted line flush under the run it describes. */
|
|
116
|
-
kind: 'run-summary';
|
|
117
|
-
id: string;
|
|
118
|
-
text: string;
|
|
119
|
-
runSummary?: StreamEvent['runSummary'];
|
|
120
|
-
})
|
|
121
|
-
| (Owned & {
|
|
122
|
-
/**
|
|
123
|
-
* Supporting output from a `/` command — rendered as a collapsed
|
|
124
|
-
* tool-call-style row (chevron header, markdown body) so reports,
|
|
125
|
-
* diffs, and logs don't drown the transcript.
|
|
126
|
-
*/
|
|
127
|
-
kind: 'command-detail';
|
|
128
|
-
id: string;
|
|
129
|
-
label?: string;
|
|
130
|
-
text: string;
|
|
131
|
-
/**
|
|
132
|
-
* Body syntax hint mirrored from the event: `'diff'` bodies are
|
|
133
|
-
* whitespace-aligned `+N −M path` stat tables that must render
|
|
134
|
-
* as a code block, not through the markdown pipeline (which
|
|
135
|
-
* would collapse the alignment into a paragraph).
|
|
136
|
-
*/
|
|
137
|
-
syntax?: 'diff';
|
|
138
|
-
})
|
|
139
|
-
| (Owned & {
|
|
140
|
-
/** What a `/` command recorded for the model: one quiet receipt line closing its exchange. */
|
|
141
|
-
kind: 'command-note';
|
|
142
|
-
id: string;
|
|
143
|
-
text: string;
|
|
144
|
-
})
|
|
145
|
-
| { kind: 'separator'; id: string }
|
|
146
|
-
| (Owned & { kind: 'spawn-start'; id: string; text: string; spawn?: SpawnMeta; model?: string })
|
|
147
|
-
| (Owned & { kind: 'spawn-end'; id: string; text: string; spawn?: SpawnMeta; model?: string })
|
|
148
|
-
| (Owned & {
|
|
149
|
-
/**
|
|
150
|
-
* User-initiated `!` shell run — a synthetic `shell` tool event
|
|
151
|
-
* whose callId carries the `bash_` prefix (TUI parity, see
|
|
152
|
-
* canonical `isUserBashEvent`). Rendered as a dedicated monospace
|
|
153
|
-
* block instead of a generic tool row.
|
|
154
|
-
*/
|
|
155
|
-
kind: 'user-bash';
|
|
156
|
-
id: string;
|
|
157
|
-
command: string;
|
|
158
|
-
/** Latest paired result text — rolling tail while running, final output after. */
|
|
159
|
-
result: string | null;
|
|
160
|
-
/** True until the final (non-`streaming`) result lands. */
|
|
161
|
-
running: boolean;
|
|
162
|
-
/** Parsed exit metadata from the final text; null while running / unparsable. */
|
|
163
|
-
exit: BashExitMeta | null;
|
|
164
|
-
/** True when the run failed host-side (spawn error — paired `error` event). */
|
|
165
|
-
errored?: boolean;
|
|
166
|
-
callId?: string;
|
|
167
|
-
resultClipped?: boolean;
|
|
168
|
-
})
|
|
169
|
-
| (Owned & {
|
|
170
|
-
kind: 'tool';
|
|
171
|
-
id: string;
|
|
172
|
-
name: string;
|
|
173
|
-
displayName: string;
|
|
174
|
-
formatted: ToolFormatLine | null;
|
|
175
|
-
rawInput?: Record<string, unknown>;
|
|
176
|
-
edit?: StreamEvent['edit'];
|
|
177
|
-
result: string | null;
|
|
178
|
-
ok: boolean | null;
|
|
179
|
-
/** Wire id of the call — the key for the lazy full-result fetch. */
|
|
180
|
-
callId?: string;
|
|
181
|
-
/** True when `result` was clipped main-side (expand offers a full fetch). */
|
|
182
|
-
resultClipped?: boolean;
|
|
183
|
-
/**
|
|
184
|
-
* Timing, from the host: `startedAt` while the call is unpaired (its
|
|
185
|
-
* `tool` event's), `durationMs` once its result landed (its
|
|
186
|
-
* `tool-result` event's, also on replay). `ChatEvent.receivedAt` stands
|
|
187
|
-
* in for a host that sends none. Absent when neither is known.
|
|
188
|
-
*/
|
|
189
|
-
startedAt?: number;
|
|
190
|
-
durationMs?: number;
|
|
191
|
-
/**
|
|
192
|
-
* A `spawn` call waiting for a free slot (its `spawn-queued` marker,
|
|
193
|
-
* live only): the slots taken and the cap. Gone once its worker starts.
|
|
194
|
-
*/
|
|
195
|
-
waitingFor?: { active: number; max: number };
|
|
196
|
-
/**
|
|
197
|
-
* A call of a batch a durable run resumed after a process death, still to
|
|
198
|
-
* settle (its `tool` event's `resuming`). Only while unpaired.
|
|
199
|
-
*/
|
|
200
|
-
resuming?: true;
|
|
201
|
-
/** The decision model approved or denied the call (Model decision approvals). */
|
|
202
|
-
approval?: StreamEvent['approval'];
|
|
203
|
-
/** `callId` of the call that made this one (a codemode script's `tools.*`): the row nests under it. */
|
|
204
|
-
parentId?: string;
|
|
205
|
-
/** The calls this one made, in order, nested under it by {@link nestToolCalls}. */
|
|
206
|
-
children?: ReadonlyArray<Extract<Row, { kind: 'tool' }>>;
|
|
207
|
-
})
|
|
208
|
-
| (Owned & {
|
|
209
|
-
/**
|
|
210
|
-
* Synthetic batch — a run of ≥2 consecutive `tool` rows wedged
|
|
211
|
-
* between text/thinking/user boundaries (Claude-Code-style
|
|
212
|
-
* "Ran a command, read a file ›" header). Produced by
|
|
213
|
-
* {@link batchToolRuns} after the main collapse pass; single
|
|
214
|
-
* tool rows stay as `kind: 'tool'` unchanged.
|
|
215
|
-
*/
|
|
216
|
-
kind: 'tool-batch';
|
|
217
|
-
id: string;
|
|
218
|
-
summary: string;
|
|
219
|
-
tools: ReadonlyArray<Extract<Row, { kind: 'tool' }>>;
|
|
220
|
-
})
|
|
221
|
-
| {
|
|
222
|
-
kind: 'compact-summary';
|
|
223
|
-
id: string;
|
|
224
|
-
text: string;
|
|
225
|
-
compact: NonNullable<StreamEvent['compact']>;
|
|
226
|
-
}
|
|
227
|
-
| (Owned & {
|
|
228
|
-
/**
|
|
229
|
-
* Compact-density fold — everything an exchange did between two user
|
|
230
|
-
* prompts except its prose: thinking, tool calls and batches, worker
|
|
231
|
-
* output, command details. One quiet header (the current action while
|
|
232
|
-
* live, a "Read a file, ran a command +3" summary once settled) that
|
|
233
|
-
* expands in place to the rows exactly as full density paints them. Produced by {@link foldExchanges}; it
|
|
234
|
-
* sits right under the exchange's prompt and its id keys off that
|
|
235
|
-
* prompt, so a live exchange grows without remounting the fold (open
|
|
236
|
-
* state, enter animation) from the first frame of the run.
|
|
237
|
-
*/
|
|
238
|
-
kind: 'exchange-fold';
|
|
239
|
-
id: string;
|
|
240
|
-
rows: Row[];
|
|
241
|
-
/** The run is still going and this is its exchange: the dot spins, `recent` shows. */
|
|
242
|
-
live: boolean;
|
|
243
|
-
stats: ExchangeFoldStats;
|
|
244
|
-
/** What the exchange did, phrased like a tool group's header (core `foldSummary`). */
|
|
245
|
-
summary: string;
|
|
246
|
-
})
|
|
247
|
-
| (Owned & {
|
|
248
|
-
/**
|
|
249
|
-
* Compact density: an exchange's earlier messages, ahead of its last
|
|
250
|
-
* one (which stays its own `markdown` row: receipt, caret, turn menu).
|
|
251
|
-
* Live, the latest of them show as a stack of previews; settled, one
|
|
252
|
-
* `N earlier messages` line that opens onto them in full. Produced by
|
|
253
|
-
* {@link foldExchanges} when an exchange wrote two or more messages.
|
|
254
|
-
*/
|
|
255
|
-
kind: 'message-group';
|
|
256
|
-
id: string;
|
|
257
|
-
messages: Row[];
|
|
258
|
-
live: boolean;
|
|
259
|
-
/**
|
|
260
|
-
* The exchange's latest message, painted in full as a regular row at
|
|
261
|
-
* the end of the group (receipt, caret, turn menu). When the next one
|
|
262
|
-
* starts it shrinks into the stack of earlier messages.
|
|
263
|
-
*/
|
|
264
|
-
current: Row;
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
/** Counts shown on the summary line of a folded exchange. */
|
|
268
|
-
export interface ExchangeFoldStats {
|
|
269
|
-
/** Number of tool calls folded. */
|
|
270
|
-
tools: number;
|
|
271
|
-
/** Number of thinking segments folded. */
|
|
272
|
-
thoughts: number;
|
|
273
|
-
/** Distinct worker (subagent) sessions whose rows folded. */
|
|
274
|
-
subagents: number;
|
|
275
|
-
/** Tool calls that failed. */
|
|
276
|
-
failed: number;
|
|
277
|
-
/** Sum of known tool + thinking durations; undefined when nothing carries timing (replayed transcripts). */
|
|
278
|
-
durationMs?: number;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/** Structured subagent lifecycle metadata, as carried on `StreamEvent.spawn`. */
|
|
282
|
-
export type SpawnMeta = NonNullable<StreamEvent['spawn']>;
|
|
283
|
-
|
|
284
|
-
/** A paired tool call's row: what `ToolRow`, `ToolDetails` and the `ToolBody` slot read. */
|
|
285
|
-
export type ToolRowModel = Extract<Row, { kind: 'tool' }>;
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* A transcript row, or a subagent block. A block's `rows` are the worker's
|
|
289
|
-
* OWN rows (its header reads its lifecycle off them); `body` is what the
|
|
290
|
-
* block paints in order — those rows as singles, plus the blocks of the
|
|
291
|
-
* workers it started, nested where they ran.
|
|
292
|
-
*/
|
|
293
|
-
export type Cluster =
|
|
294
|
-
{ kind: 'single'; row: Row } | { kind: 'group'; childId: string; depth: number; rows: Row[]; body: Cluster[] };
|
|
295
|
-
|
|
296
|
-
/** A subagent block: the `group` member of {@link Cluster}. */
|
|
297
|
-
export type GroupCluster = Extract<Cluster, { kind: 'group' }>;
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* A block's first row in paint order (its own or a nested block's): a stable key.
|
|
301
|
-
*
|
|
302
|
-
* @param cluster - The subagent block to read.
|
|
303
|
-
*/
|
|
304
|
-
export function firstRowId(cluster: GroupCluster): string | undefined {
|
|
305
|
-
for (const item of cluster.body) {
|
|
306
|
-
const id = item.kind === 'single' ? item.row.id : firstRowId(item);
|
|
307
|
-
if (id !== undefined) return id;
|
|
308
|
-
}
|
|
309
|
-
return undefined;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/** Exit details of a shell command, parsed from its result text by {@link parseBashExitMeta}. */
|
|
313
|
-
export interface BashExitMeta {
|
|
314
|
-
/** null = killed by signal (abort / output-ceiling kill). */
|
|
315
|
-
code: number | null;
|
|
316
|
-
/** How long the command ran, in milliseconds. */
|
|
317
|
-
durationMs: number;
|
|
318
|
-
/** The user cancelled the command. */
|
|
319
|
-
cancelled: boolean;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Parse the exit metadata the shell contract embeds in the persisted
|
|
324
|
-
* result text (see `runBashCommand` in the TUI / `startShellRun` in
|
|
325
|
-
* main): `(exit 0, Nms)` footer on success, `Exit code N (Nms)` /
|
|
326
|
-
* `Killed (Nms)` header on failure, `(cancelled by user after Nms)`
|
|
327
|
-
* footer on abort. Live and reloaded transcripts render identically
|
|
328
|
-
* because both read the same text. Returns null when nothing matches
|
|
329
|
-
* (still streaming, or a clipped tail dropped the footer).
|
|
330
|
-
*
|
|
331
|
-
* @param text - The shell tool's result text.
|
|
332
|
-
*/
|
|
333
|
-
export function parseBashExitMeta(text: string): BashExitMeta | null {
|
|
334
|
-
const cancelled = /\(cancelled by user after (\d+)ms\)\s*$/.exec(text);
|
|
335
|
-
|
|
336
|
-
if (cancelled) {
|
|
337
|
-
return { code: null, durationMs: Number(cancelled[1]), cancelled: true };
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
const ok = /\(exit 0, (\d+)ms\)\s*$/.exec(text);
|
|
341
|
-
|
|
342
|
-
if (ok) {
|
|
343
|
-
return { code: 0, durationMs: Number(ok[1]), cancelled: false };
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
const failed = /^Exit code (\d+) \((\d+)ms\)/.exec(text);
|
|
347
|
-
|
|
348
|
-
if (failed) {
|
|
349
|
-
return { code: Number(failed[1]), durationMs: Number(failed[2]), cancelled: false };
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
const killed = /^Killed \((\d+)ms\)/.exec(text);
|
|
353
|
-
|
|
354
|
-
if (killed) {
|
|
355
|
-
return { code: null, durationMs: Number(killed[1]), cancelled: false };
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
return null;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
/** The status dot a row shows, chosen by {@link dotVariantFor}: a row kind, a tool state, or a session event status. */
|
|
362
|
-
export type DotVariant =
|
|
363
|
-
| 'user'
|
|
364
|
-
| 'thinking'
|
|
365
|
-
| 'text'
|
|
366
|
-
| 'tool-running'
|
|
367
|
-
| 'tool-ok'
|
|
368
|
-
| 'tool-err'
|
|
369
|
-
| 'info'
|
|
370
|
-
| 'note'
|
|
371
|
-
| 'error'
|
|
372
|
-
| 'stopped'
|
|
373
|
-
| 'spawn-start'
|
|
374
|
-
| 'spawn-end'
|
|
375
|
-
| 'compact'
|
|
376
|
-
| 'messages'
|
|
377
|
-
| `session-${SessionEventStatus}`;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A run that ended early (failed, or stopped by the user) shows as ONE
|
|
3
|
-
* quiet row, not as prose. The loop writes a `[✗ Streaming failed …]` or
|
|
4
|
-
* `[⏹ Streaming was aborted.]` marker into the assistant turn (for the
|
|
5
|
-
* model) and a failed run's end carries the error again (live from
|
|
6
|
-
* `run:end`, on replay from the run record): split the marker off the
|
|
7
|
-
* reply, keep whatever the model did write, and let one row speak for the
|
|
8
|
-
* stop. That row knows how to pick the work back up: `continue` when the
|
|
9
|
-
* run had done something, `retry` (resend the prompt) when it had not.
|
|
10
|
-
* The TUI applies the same classifier to events (`src/tui/run-stops.ts`).
|
|
11
|
-
*/
|
|
12
|
-
import { createRunStopMarker } from 'zidane/chat/pure';
|
|
13
|
-
|
|
14
|
-
import type { Row } from './rows';
|
|
15
|
-
|
|
16
|
-
type ErrorRow = Extract<Row, { kind: 'error' }>;
|
|
17
|
-
/** How a run ended early and how to pick it back up: `cause` (`error` or `aborted`), `resume` (`continue` or `retry`), and the `prompt` to resend on retry. */
|
|
18
|
-
export type RunFailure = NonNullable<ErrorRow['failure']>;
|
|
19
|
-
|
|
20
|
-
/** A reset time: the clock time today, with the date on any other day. */
|
|
21
|
-
function formatResetTime(resetsAt: number): string {
|
|
22
|
-
const at = new Date(resetsAt);
|
|
23
|
-
return at.toDateString() === new Date().toDateString()
|
|
24
|
-
? at.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' })
|
|
25
|
-
: at.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' });
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* The failure row's tooltip: the line, then what it leaves out (when the
|
|
30
|
-
* limit resets, the provider's own words). Never inline: the row stays one
|
|
31
|
-
* quiet line.
|
|
32
|
-
*
|
|
33
|
-
* @param text - The failure line.
|
|
34
|
-
* @param detail - What the line leaves out.
|
|
35
|
-
* @param resetsAtLabel - Words a reset time (`Resets at 14:30`).
|
|
36
|
-
*/
|
|
37
|
-
export function failureTooltip(
|
|
38
|
-
text: string,
|
|
39
|
-
detail: ErrorRow['detail'],
|
|
40
|
-
resetsAtLabel: (time: string) => string,
|
|
41
|
-
): string | undefined {
|
|
42
|
-
const lines = [
|
|
43
|
-
text,
|
|
44
|
-
detail?.resetsAt !== undefined ? resetsAtLabel(formatResetTime(detail.resetsAt)) : '',
|
|
45
|
-
detail?.raw ?? '',
|
|
46
|
-
].filter(Boolean);
|
|
47
|
-
return lines.length > 0 ? lines.join('\n\n') : undefined;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const markRows = createRunStopMarker<Row>({
|
|
51
|
-
isMarked: (row) => row.kind === 'error' && row.failure !== undefined,
|
|
52
|
-
withText: (row, text) => ({ ...row, text }) as Row,
|
|
53
|
-
mint: (reply, text, failure) => ({
|
|
54
|
-
kind: 'error',
|
|
55
|
-
id: `${reply.id}-failure`,
|
|
56
|
-
text,
|
|
57
|
-
...('turnId' in reply && reply.turnId ? { turnId: reply.turnId } : {}),
|
|
58
|
-
failure,
|
|
59
|
-
}),
|
|
60
|
-
mark: (error, text, failure) => ({ ...(error as ErrorRow), text, failure }),
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Returns `rows` itself when no run failed, so memoised consumers stay put.
|
|
65
|
-
* The rules are core's (`createRunStopMarker`), shared with the TUI; an
|
|
66
|
-
* exchange whose rows did not change keeps its previous output rows.
|
|
67
|
-
*
|
|
68
|
-
* @param rows - The transcript rows, oldest first.
|
|
69
|
-
*/
|
|
70
|
-
export function markRunFailures(rows: readonly Row[]): readonly Row[] {
|
|
71
|
-
return markRows(rows);
|
|
72
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Select-turn navigation model: which turns the cursor stops on, and which
|
|
3
|
-
* painted rows light up for each stop.
|
|
4
|
-
*
|
|
5
|
-
* Built from the rows the Transcript actually paints (batches, folds, hidden
|
|
6
|
-
* thinking), so the cursor never lands on something invisible. Two merges
|
|
7
|
-
* make one stop per thing a reader thinks of as one message:
|
|
8
|
-
* - result-only turns belong to the assistant turn that made the call
|
|
9
|
-
* (core `turnSelectionOwnership`);
|
|
10
|
-
* - an assistant turn that only did work (tool calls, thinking) belongs to
|
|
11
|
-
* the next assistant turn in the same exchange that wrote prose, so
|
|
12
|
-
* "read three files, then answered" is one stop, not four. Work with no
|
|
13
|
-
* answer yet (a run still going) forms one stop of its own.
|
|
14
|
-
*
|
|
15
|
-
* Pure and cheap: one pass over the rows.
|
|
16
|
-
*/
|
|
17
|
-
import type { Row } from './rows';
|
|
18
|
-
|
|
19
|
-
/** The turns select-turn mode can stop on, and how any turn id maps to its stop. */
|
|
20
|
-
export interface SelectStops {
|
|
21
|
-
/** Stop ids in transcript order; the cursor walks this. */
|
|
22
|
-
order: string[];
|
|
23
|
-
/** Any turn id a row carries → the stop it belongs to. */
|
|
24
|
-
stopOf: ReadonlyMap<string, string>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Every turn a painted row stands for (batches and folds see through to their members).
|
|
29
|
-
*
|
|
30
|
-
* @param row - A painted transcript row.
|
|
31
|
-
*/
|
|
32
|
-
export function rowTurnIds(row: Row): string[] {
|
|
33
|
-
const ids: string[] = [];
|
|
34
|
-
if ('turnId' in row && row.turnId) ids.push(row.turnId);
|
|
35
|
-
if (row.kind === 'tool-batch') for (const t of row.tools) if (t.turnId) ids.push(t.turnId);
|
|
36
|
-
if (row.kind === 'thinking-batch') for (const t of row.thoughts) if (t.turnId) ids.push(t.turnId);
|
|
37
|
-
if (row.kind === 'exchange-fold') for (const r of row.rows) ids.push(...rowTurnIds(r));
|
|
38
|
-
if (row.kind === 'message-group') {
|
|
39
|
-
for (const r of row.messages) ids.push(...rowTurnIds(r));
|
|
40
|
-
ids.push(...rowTurnIds(row.current));
|
|
41
|
-
}
|
|
42
|
-
return ids;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const BOUNDARY: ReadonlySet<Row['kind']> = new Set(['user-prompt', 'separator', 'compact-summary']);
|
|
46
|
-
|
|
47
|
-
/** Rows that are the agent working, not speaking: they join the answer that follows them. */
|
|
48
|
-
function isWork(row: Row): boolean {
|
|
49
|
-
switch (row.kind) {
|
|
50
|
-
case 'tool':
|
|
51
|
-
case 'tool-batch':
|
|
52
|
-
case 'thinking':
|
|
53
|
-
case 'thinking-batch':
|
|
54
|
-
case 'exchange-fold':
|
|
55
|
-
case 'message-group':
|
|
56
|
-
case 'command-detail':
|
|
57
|
-
case 'spawn-start':
|
|
58
|
-
case 'spawn-end':
|
|
59
|
-
return true;
|
|
60
|
-
case 'info':
|
|
61
|
-
return row.notice === undefined;
|
|
62
|
-
default:
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Works out the stops of select-turn mode from the painted rows. Result-only turns join the turn that made the call, and work-only turns join the next answer in the same exchange.
|
|
69
|
-
*
|
|
70
|
-
* @param rows - The transcript rows as painted, oldest first.
|
|
71
|
-
* @param ownership - Maps a result-only turn id to the turn that owns it.
|
|
72
|
-
* @param isHidden - Tells whether a row is hidden, so the cursor skips it. Defaults to showing every row.
|
|
73
|
-
*/
|
|
74
|
-
export function computeSelectStops(
|
|
75
|
-
rows: readonly Row[],
|
|
76
|
-
ownership: ReadonlyMap<string, string>,
|
|
77
|
-
isHidden: (row: Row) => boolean = () => false,
|
|
78
|
-
): SelectStops {
|
|
79
|
-
const stopOf = new Map<string, string>();
|
|
80
|
-
// Owner turn ids in the order their first row paints.
|
|
81
|
-
const seen: string[] = [];
|
|
82
|
-
const seenSet = new Set<string>();
|
|
83
|
-
// Work turns of the current exchange still waiting for an answer.
|
|
84
|
-
let pending: string[] = [];
|
|
85
|
-
|
|
86
|
-
const settlePending = (into: string | null) => {
|
|
87
|
-
if (pending.length === 0) return;
|
|
88
|
-
const target = into ?? pending[0]!;
|
|
89
|
-
for (const id of pending) if (!stopOf.has(id)) stopOf.set(id, target);
|
|
90
|
-
pending = [];
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
for (const row of rows) {
|
|
94
|
-
if ('childId' in row && row.childId !== undefined) continue; // worker rows: their block, not a stop
|
|
95
|
-
if (isHidden(row)) continue;
|
|
96
|
-
if (BOUNDARY.has(row.kind)) settlePending(null);
|
|
97
|
-
|
|
98
|
-
const owners = rowTurnIds(row).map((id) => ownership.get(id) ?? id);
|
|
99
|
-
for (const id of owners) {
|
|
100
|
-
if (!seenSet.has(id)) {
|
|
101
|
-
seenSet.add(id);
|
|
102
|
-
seen.push(id);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (owners.length === 0) continue;
|
|
106
|
-
|
|
107
|
-
if (row.kind === 'markdown' && row.text.trim() !== '') {
|
|
108
|
-
// An answer (words, as core's `messageSelectionOwnership` counts it): its own stop, absorbing the work before it.
|
|
109
|
-
const answer = owners[0]!;
|
|
110
|
-
stopOf.set(answer, stopOf.get(answer) ?? answer);
|
|
111
|
-
settlePending(stopOf.get(answer)!);
|
|
112
|
-
} else if (isWork(row)) {
|
|
113
|
-
for (const id of owners) if (!stopOf.has(id) && !pending.includes(id)) pending.push(id);
|
|
114
|
-
} else {
|
|
115
|
-
settlePending(null);
|
|
116
|
-
for (const id of owners) if (!stopOf.has(id)) stopOf.set(id, id);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
settlePending(null);
|
|
120
|
-
|
|
121
|
-
// Raw ids (result turns folded into their owner) resolve through both maps.
|
|
122
|
-
for (const [raw, owner] of ownership) {
|
|
123
|
-
const stop = stopOf.get(owner);
|
|
124
|
-
if (stop) stopOf.set(raw, stop);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const order: string[] = [];
|
|
128
|
-
const inOrder = new Set<string>();
|
|
129
|
-
for (const id of seen) {
|
|
130
|
-
const stop = stopOf.get(id);
|
|
131
|
-
if (stop && !inOrder.has(stop)) {
|
|
132
|
-
inOrder.add(stop);
|
|
133
|
-
order.push(stop);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return { order, stopOf };
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* The stop a painted row belongs to, or `null` for rows that are not selectable.
|
|
141
|
-
*
|
|
142
|
-
* @param row - A painted transcript row.
|
|
143
|
-
* @param stops - The stops from {@link computeSelectStops}.
|
|
144
|
-
*/
|
|
145
|
-
export function stopForRow(row: Row, stops: SelectStops): string | null {
|
|
146
|
-
for (const id of rowTurnIds(row)) {
|
|
147
|
-
const stop = stops.stopOf.get(id);
|
|
148
|
-
if (stop) return stop;
|
|
149
|
-
}
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A tool result's media, read from its text: the transcript carries each
|
|
3
|
-
* image, video or audio block as a stand-in line (`[image: image/png, 742500
|
|
4
|
-
* b64 bytes]`, core's `toolResultToText`), which an app that serves the
|
|
5
|
-
* bytes turns back into the media (`TranscriptActions.toolMediaUrl`).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** One media block of a tool result, as parsed from its text stand-in. */
|
|
9
|
-
export interface ToolMediaItem {
|
|
10
|
-
/** What the block is. */
|
|
11
|
-
kind: 'image' | 'video' | 'audio';
|
|
12
|
-
/** The block's MIME type, for example `image/png`. */
|
|
13
|
-
mediaType: string;
|
|
14
|
-
/** Position among the result's media blocks: the address the app serves it at. */
|
|
15
|
-
index: number;
|
|
16
|
-
/** The stand-in line, shown again if the media fails to load. */
|
|
17
|
-
marker: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const MARKER = /^\[(image|video|audio): ([^,\]]+), (?:\d+ b64 bytes|ref [^\]]*)\]$/;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* The media stand-ins of a result's text, in order, and the text without them.
|
|
24
|
-
*
|
|
25
|
-
* @param text - The tool result's text.
|
|
26
|
-
*/
|
|
27
|
-
export function parseToolMedia(text: string): { media: ToolMediaItem[]; rest: string } {
|
|
28
|
-
const media: ToolMediaItem[] = [];
|
|
29
|
-
const rest: string[] = [];
|
|
30
|
-
for (const line of text.split('\n')) {
|
|
31
|
-
const m = MARKER.exec(line.trim());
|
|
32
|
-
if (m)
|
|
33
|
-
media.push({
|
|
34
|
-
kind: m[1] as ToolMediaItem['kind'],
|
|
35
|
-
mediaType: m[2]!.trim(),
|
|
36
|
-
index: media.length,
|
|
37
|
-
marker: line.trim(),
|
|
38
|
-
});
|
|
39
|
-
else rest.push(line);
|
|
40
|
-
}
|
|
41
|
-
return { media, rest: rest.join('\n').trim() };
|
|
42
|
-
}
|