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,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The extensions' renderers (`ctx.add(Renderer, …)`) in the transcript,
|
|
3
|
-
* read from the `ExtensionsHost` (`zidane-ui/extensions`) when there is one:
|
|
4
|
-
*
|
|
5
|
-
* { language } a fenced code block of that language (the `CodeBlock`
|
|
6
|
-
* slot); props `{ code, language }`
|
|
7
|
-
* { tool } a tool call's body (the `ToolBody` slot); props
|
|
8
|
-
* `{ tool, callId, text, input, result, ok }`
|
|
9
|
-
* { block } a custom command block (`CommandOutputBlock.custom`);
|
|
10
|
-
* props `{ renderer, data }`
|
|
11
|
-
*
|
|
12
|
-
* Each draws through `ExtensionRenderer` (error boundary, fall-through),
|
|
13
|
-
* over what the place draws without extensions: the app's own slot (or the
|
|
14
|
-
* kit's default) stays the default view, so a renderer that falls through
|
|
15
|
-
* hands back to it, never to a markdown copy of the same fence.
|
|
16
|
-
*/
|
|
17
|
-
import { memo, type ComponentType } from 'react';
|
|
18
|
-
|
|
19
|
-
import { renderersFor } from '../../extensions/headless/select';
|
|
20
|
-
import type { ExtensionItem } from '../../extensions/headless/wire';
|
|
21
|
-
import { ExtensionRenderer } from '../../extensions/ExtensionRenderer';
|
|
22
|
-
import { useExtensionItems } from '../../extensions/ExtensionsProvider';
|
|
23
|
-
import type { ToolRowModel } from '../headless/transcript';
|
|
24
|
-
import type { CodeBlockSlotProps, ToolBodySlotProps, TranscriptRenderers } from './renderers';
|
|
25
|
-
import { TextRow } from './prose';
|
|
26
|
-
import { ToolPayload } from './tool-payload';
|
|
27
|
-
|
|
28
|
-
const codeBlocks = new WeakMap<ComponentType<CodeBlockSlotProps>, ComponentType<CodeBlockSlotProps>>();
|
|
29
|
-
|
|
30
|
-
/** `Base`, drawn by an extension renderer for the block's language when there is one. */
|
|
31
|
-
function extensionCodeBlock(Base: ComponentType<CodeBlockSlotProps>): ComponentType<CodeBlockSlotProps> {
|
|
32
|
-
let wrapped = codeBlocks.get(Base);
|
|
33
|
-
if (!wrapped) {
|
|
34
|
-
wrapped = memo(function ExtensionCodeBlock(props: CodeBlockSlotProps) {
|
|
35
|
-
const items = useExtensionItems('renderer');
|
|
36
|
-
const base = <Base {...props} />;
|
|
37
|
-
if (renderersFor(items, { language: props.language }).length === 0) return base;
|
|
38
|
-
return (
|
|
39
|
-
<ExtensionRenderer
|
|
40
|
-
for={{ language: props.language }}
|
|
41
|
-
data={{ code: props.code, language: props.language }}
|
|
42
|
-
defaultView={base}
|
|
43
|
-
/>
|
|
44
|
-
);
|
|
45
|
-
});
|
|
46
|
-
codeBlocks.set(Base, wrapped);
|
|
47
|
-
}
|
|
48
|
-
return wrapped;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* The props a tool renderer's component gets.
|
|
53
|
-
*
|
|
54
|
-
* @param tool - The tool call.
|
|
55
|
-
*/
|
|
56
|
-
export function toolRendererProps(tool: ToolRowModel): Readonly<Record<string, unknown>> {
|
|
57
|
-
return {
|
|
58
|
-
tool: tool.name,
|
|
59
|
-
...(tool.callId ? { callId: tool.callId } : {}),
|
|
60
|
-
text: tool.result ?? '',
|
|
61
|
-
...(tool.rawInput ? { input: tool.rawInput } : {}),
|
|
62
|
-
result: tool.result,
|
|
63
|
-
ok: tool.ok,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const toolBodies = new WeakMap<TranscriptRenderers, ComponentType<ToolBodySlotProps>>();
|
|
68
|
-
|
|
69
|
-
/** The tool body: the extension renderer for the call's tool, over the app's body or the call's payload. */
|
|
70
|
-
function extensionToolBody(base: TranscriptRenderers): ComponentType<ToolBodySlotProps> {
|
|
71
|
-
const known = toolBodies.get(base);
|
|
72
|
-
if (known) return known;
|
|
73
|
-
const { ToolBody: Base, hasToolBody } = base;
|
|
74
|
-
const body = memo(function ExtensionToolBody({ tool }: ToolBodySlotProps) {
|
|
75
|
-
const items = useExtensionItems('renderer');
|
|
76
|
-
const fallback = Base && hasToolBody?.(tool) ? <Base tool={tool} /> : <ToolPayload tool={tool} />;
|
|
77
|
-
if (renderersFor(items, { tool: tool.name }).length === 0) return fallback;
|
|
78
|
-
return <ExtensionRenderer for={{ tool: tool.name }} data={toolRendererProps(tool)} defaultView={fallback} />;
|
|
79
|
-
});
|
|
80
|
-
toolBodies.set(base, body);
|
|
81
|
-
return body;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const composed = new WeakMap<TranscriptRenderers, WeakMap<readonly ExtensionItem<'renderer'>[], TranscriptRenderers>>();
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* `base` with the extensions' language and tool renderers routed in: the same object while neither
|
|
88
|
-
* changes, so rows that compare slots by identity stay memoized.
|
|
89
|
-
*
|
|
90
|
-
* @param base - The renderer slots in effect without extensions.
|
|
91
|
-
* @param items - The extensions' renderer items.
|
|
92
|
-
*/
|
|
93
|
-
export function withExtensionRenderers(
|
|
94
|
-
base: TranscriptRenderers,
|
|
95
|
-
items: readonly ExtensionItem<'renderer'>[],
|
|
96
|
-
): TranscriptRenderers {
|
|
97
|
-
if (items.length === 0) return base;
|
|
98
|
-
let byItems = composed.get(base);
|
|
99
|
-
if (!byItems) {
|
|
100
|
-
byItems = new WeakMap();
|
|
101
|
-
composed.set(base, byItems);
|
|
102
|
-
}
|
|
103
|
-
let slots = byItems.get(items);
|
|
104
|
-
if (!slots) {
|
|
105
|
-
const tools = items.some((e) => 'tool' in e.item.for);
|
|
106
|
-
slots = {
|
|
107
|
-
...base,
|
|
108
|
-
CodeBlock: extensionCodeBlock(base.CodeBlock),
|
|
109
|
-
...(tools
|
|
110
|
-
? {
|
|
111
|
-
ToolBody: extensionToolBody(base),
|
|
112
|
-
hasToolBody: (tool: ToolRowModel) =>
|
|
113
|
-
renderersFor(items, { tool: tool.name }).length > 0 || base.hasToolBody?.(tool) === true,
|
|
114
|
-
}
|
|
115
|
-
: {}),
|
|
116
|
-
};
|
|
117
|
-
byItems.set(items, slots);
|
|
118
|
-
}
|
|
119
|
-
return slots;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/** Props for {@link CustomBlockRow}. */
|
|
123
|
-
export interface CustomBlockRowProps {
|
|
124
|
-
/** The renderer id the block names (`<extension>/<id>`). */
|
|
125
|
-
renderer: string;
|
|
126
|
-
/** The block's JSON data. */
|
|
127
|
-
data?: unknown;
|
|
128
|
-
/** Its markdown fallback. */
|
|
129
|
-
text: string;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* A custom command block: the extension renderer for it, else its markdown fallback.
|
|
134
|
-
*
|
|
135
|
-
* @param props - The renderer id, the data and the fallback.
|
|
136
|
-
*/
|
|
137
|
-
export const CustomBlockRow = memo(function CustomBlockRow({ renderer, data, text }: CustomBlockRowProps) {
|
|
138
|
-
const items = useExtensionItems('renderer');
|
|
139
|
-
const fallback = <TextRow text={text} streaming={false} />;
|
|
140
|
-
if (renderersFor(items, { block: renderer }).length === 0) return fallback;
|
|
141
|
-
return (
|
|
142
|
-
<ExtensionRenderer
|
|
143
|
-
for={{ block: renderer }}
|
|
144
|
-
data={{ renderer, ...(data !== undefined ? { data } : {}) }}
|
|
145
|
-
defaultView={fallback}
|
|
146
|
-
/>
|
|
147
|
-
);
|
|
148
|
-
});
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compact density's attachments strip, under the "Working" row: the images
|
|
3
|
-
* the exchange's tool calls returned (`foldAttachments`), newest first.
|
|
4
|
-
*
|
|
5
|
-
* [ newest ][ ... ][ ... ][ +N ]
|
|
6
|
-
*
|
|
7
|
-
* Up to {@link STRIP_SIZE} tiles. With more images, the last slot is the
|
|
8
|
-
* count tile: it stands for every image the strip has no room for, covered
|
|
9
|
-
* by the most recent of them.
|
|
10
|
-
*
|
|
11
|
-
* Motion (`Grow axis="x"`, the kit's motion vocabulary): a new image slides
|
|
12
|
-
* in from the left while its slot widens, pushing the others right. The
|
|
13
|
-
* tile pushed past the last slot slips under the count tile, whose number
|
|
14
|
-
* rolls up and whose cover fades to the image it just took in. Images the
|
|
15
|
-
* strip showed on its first render are already in place (a conversation
|
|
16
|
-
* opening, a row scrolled back into view), so only later ones move. With
|
|
17
|
-
* motion off, everything lands at once.
|
|
18
|
-
*
|
|
19
|
-
* Every tile opens the lightbox, which steps through all the images in the
|
|
20
|
-
* strip's order: left to right, then on into the ones the count tile holds.
|
|
21
|
-
* Cost: a tile shows a small thumbnail of its image, made once off the main
|
|
22
|
-
* thread at low priority (`thumbnails.ts`), never the full image decoded at
|
|
23
|
-
* 64px, which stalled scrolling past screenshots; the strip is a
|
|
24
|
-
* containment boundary, so a tile's slide lays out the strip alone; the
|
|
25
|
-
* fold hands it the same list until an image changes, so stream ticks skip
|
|
26
|
-
* it; the lightbox's gallery is built on click. An image that fails to load
|
|
27
|
-
* leaves the strip and the gallery, never a broken-image glyph.
|
|
28
|
-
*/
|
|
29
|
-
import { memo, useMemo, useState, type CSSProperties } from 'react';
|
|
30
|
-
|
|
31
|
-
import { type LightboxItem, useLightbox } from '../../components/Lightbox';
|
|
32
|
-
import { Grow, GrowPresence } from '../../motion/grow';
|
|
33
|
-
import { RollingText } from '../../motion/roll';
|
|
34
|
-
import type { FoldAttachment } from '../headless/transcript/fold-attachments';
|
|
35
|
-
import { useChatLabels } from '../useChatLabels';
|
|
36
|
-
import { useTranscriptActions } from './actions';
|
|
37
|
-
import { useThumbnail } from './thumbnails';
|
|
38
|
-
|
|
39
|
-
/** A tile's side, in CSS pixels (`w-16 h-16`): what its thumbnail is made for. */
|
|
40
|
-
const TILE_PX = 64;
|
|
41
|
-
/** How many slots the strip has; with more images, the last one is the count tile. */
|
|
42
|
-
const STRIP_SIZE = 4;
|
|
43
|
-
const NO_FAILURES: ReadonlySet<string> = new Set();
|
|
44
|
-
const NOTHING_HIDDEN: readonly FoldAttachment[] = [];
|
|
45
|
-
|
|
46
|
-
/** A tile's button. The focus ring is inset: the sliding slot clips sideways. */
|
|
47
|
-
const TILE =
|
|
48
|
-
'zg-tray zg-press-subtle relative block w-16 h-16 shrink-0 p-0 border-0 overflow-hidden rounded-zg-md cursor-zoom-in focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--zg-ring)]';
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The strip's slots: the images that get a tile, newest first, and the ones
|
|
52
|
-
* the count tile stands for, newest first.
|
|
53
|
-
*
|
|
54
|
-
* @param images - The images on show, oldest first.
|
|
55
|
-
*/
|
|
56
|
-
function stripLayout(images: readonly FoldAttachment[]): {
|
|
57
|
-
tiles: readonly FoldAttachment[];
|
|
58
|
-
hidden: readonly FoldAttachment[];
|
|
59
|
-
} {
|
|
60
|
-
const newest = [...images].reverse();
|
|
61
|
-
if (newest.length <= STRIP_SIZE) return { tiles: newest, hidden: NOTHING_HIDDEN };
|
|
62
|
-
return { tiles: newest.slice(0, STRIP_SIZE - 1), hidden: newest.slice(STRIP_SIZE - 1) };
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Props for {@link FoldAttachments}. */
|
|
66
|
-
export interface FoldAttachmentsProps {
|
|
67
|
-
/** The images, oldest first (`foldAttachments`). New ones arrive at the end. */
|
|
68
|
-
attachments: readonly FoldAttachment[];
|
|
69
|
-
/** Extra classes on the root element. */
|
|
70
|
-
className?: string;
|
|
71
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
72
|
-
style?: CSSProperties;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Renders the images an exchange's tool calls returned as a strip of thumbnails, newest first, the last slot counting the rest; every tile opens the lightbox. Renders nothing without images or when the app serves no tool media (`TranscriptActions.toolMediaUrl`).
|
|
77
|
-
*
|
|
78
|
-
* @param props - Component props: the `attachments` to show.
|
|
79
|
-
*/
|
|
80
|
-
export const FoldAttachments = memo(({ attachments, className, style }: FoldAttachmentsProps) => {
|
|
81
|
-
const labels = useChatLabels();
|
|
82
|
-
const { toolMediaUrl } = useTranscriptActions();
|
|
83
|
-
const lightbox = useLightbox();
|
|
84
|
-
const [failed, setFailed] = useState(NO_FAILURES);
|
|
85
|
-
// What the first render showed is already in place: only images that arrive later slide in.
|
|
86
|
-
const [initial] = useState(() => ({
|
|
87
|
-
keys: new Set(attachments.map((a) => a.key)),
|
|
88
|
-
counted: attachments.length > STRIP_SIZE,
|
|
89
|
-
}));
|
|
90
|
-
const { tiles, hidden } = useMemo(
|
|
91
|
-
() => stripLayout(failed.size > 0 ? attachments.filter((a) => !failed.has(a.key)) : attachments),
|
|
92
|
-
[attachments, failed],
|
|
93
|
-
);
|
|
94
|
-
if (!toolMediaUrl || tiles.length === 0) return null;
|
|
95
|
-
|
|
96
|
-
const src = (a: FoldAttachment) => toolMediaUrl(a.callId, a.index);
|
|
97
|
-
const fail = (key: string) => setFailed((prev) => new Set(prev).add(key));
|
|
98
|
-
// The gallery follows the strip: left to right, then the images the count tile holds.
|
|
99
|
-
const open = (index: number, origin: HTMLElement) =>
|
|
100
|
-
lightbox.open(
|
|
101
|
-
[...tiles, ...hidden].map((a): LightboxItem => ({ key: a.key, name: a.label, src: src(a) })),
|
|
102
|
-
index,
|
|
103
|
-
origin,
|
|
104
|
-
);
|
|
105
|
-
const cover = hidden[0];
|
|
106
|
-
|
|
107
|
-
return (
|
|
108
|
-
<div
|
|
109
|
-
role="group"
|
|
110
|
-
aria-label={labels.toolAttachments}
|
|
111
|
-
className={['zg-fold-attachments flex', className].filter(Boolean).join(' ')}
|
|
112
|
-
style={style}
|
|
113
|
-
data-testid="fold-attachments"
|
|
114
|
-
>
|
|
115
|
-
<GrowPresence initial={false}>
|
|
116
|
-
{tiles.map((a, i) => (
|
|
117
|
-
// The gap is inside the slot, so it opens and closes with the tile.
|
|
118
|
-
<Grow key={a.key} axis="x" appear={!initial.keys.has(a.key)}>
|
|
119
|
-
<div className="pr-1.5">
|
|
120
|
-
<button
|
|
121
|
-
type="button"
|
|
122
|
-
aria-label={labels.viewAttachment(a.label)}
|
|
123
|
-
title={a.label}
|
|
124
|
-
onClick={(event) => open(i, event.currentTarget)}
|
|
125
|
-
className={TILE}
|
|
126
|
-
>
|
|
127
|
-
<TileImage src={src(a)} onError={() => fail(a.key)} />
|
|
128
|
-
</button>
|
|
129
|
-
</div>
|
|
130
|
-
</Grow>
|
|
131
|
-
))}
|
|
132
|
-
{cover && (
|
|
133
|
-
<Grow key="more" axis="x" appear={!initial.counted}>
|
|
134
|
-
<CountTile
|
|
135
|
-
cover={cover}
|
|
136
|
-
count={hidden.length}
|
|
137
|
-
src={src(cover)}
|
|
138
|
-
onOpen={(origin) => open(tiles.length, origin)}
|
|
139
|
-
onError={() => fail(cover.key)}
|
|
140
|
-
/>
|
|
141
|
-
</Grow>
|
|
142
|
-
)}
|
|
143
|
-
</GrowPresence>
|
|
144
|
-
{lightbox.element}
|
|
145
|
-
</div>
|
|
146
|
-
);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
/** Props for {@link CountTile}. */
|
|
150
|
-
interface CountTileProps {
|
|
151
|
-
/** The most recent image the tile stands for: its cover. */
|
|
152
|
-
cover: FoldAttachment;
|
|
153
|
-
/** How many images the tile stands for. */
|
|
154
|
-
count: number;
|
|
155
|
-
/** The cover's address. */
|
|
156
|
-
src: string;
|
|
157
|
-
/** Opens the lightbox on the cover, from the tile. */
|
|
158
|
-
onOpen: (origin: HTMLElement) => void;
|
|
159
|
-
/** The cover failed to load. */
|
|
160
|
-
onError: () => void;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* The strip's last slot: "+N" over the most recent image it stands for. The
|
|
165
|
-
* number rolls as images are pushed in; a new cover fades in over the tray.
|
|
166
|
-
*/
|
|
167
|
-
function CountTile({ cover, count, src, onOpen, onError }: CountTileProps) {
|
|
168
|
-
const labels = useChatLabels();
|
|
169
|
-
// The cover it mounted with is already there; each one pushed in after it fades in.
|
|
170
|
-
const [firstCover] = useState(cover.key);
|
|
171
|
-
return (
|
|
172
|
-
<button
|
|
173
|
-
type="button"
|
|
174
|
-
aria-label={labels.showMoreAttachments(count)}
|
|
175
|
-
onClick={(event) => onOpen(event.currentTarget)}
|
|
176
|
-
className={TILE}
|
|
177
|
-
>
|
|
178
|
-
<TileImage
|
|
179
|
-
key={cover.key}
|
|
180
|
-
src={src}
|
|
181
|
-
onError={onError}
|
|
182
|
-
className={cover.key === firstCover ? undefined : 'zg-fold-attachments-cover'}
|
|
183
|
-
/>
|
|
184
|
-
<span
|
|
185
|
-
aria-hidden
|
|
186
|
-
data-testid="fold-attachments-more"
|
|
187
|
-
className="zg-scrim absolute inset-0 flex items-center justify-center text-sm font-medium tabular-nums text-white"
|
|
188
|
-
>
|
|
189
|
-
<RollingText text={labels.moreAttachments(count)} value={count} />
|
|
190
|
-
</span>
|
|
191
|
-
</button>
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/** Props for {@link TileImage}. */
|
|
196
|
-
interface TileImageProps {
|
|
197
|
-
/** The full image's address. */
|
|
198
|
-
src: string;
|
|
199
|
-
/** The image failed to load. */
|
|
200
|
-
onError: () => void;
|
|
201
|
-
/** Extra classes on the image. */
|
|
202
|
-
className?: string;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* A tile's image: its small thumbnail (`useThumbnail`), never the full image
|
|
207
|
-
* decoded at 64px. Until the thumbnail is ready the tile shows its tray.
|
|
208
|
-
*/
|
|
209
|
-
function TileImage({ src, onError, className }: TileImageProps) {
|
|
210
|
-
const thumbnail = useThumbnail(src, TILE_PX);
|
|
211
|
-
if (thumbnail === null) return null;
|
|
212
|
-
return (
|
|
213
|
-
<img
|
|
214
|
-
src={thumbnail}
|
|
215
|
-
alt=""
|
|
216
|
-
decoding="async"
|
|
217
|
-
onError={onError}
|
|
218
|
-
className={['block w-full h-full object-cover', className].filter(Boolean).join(' ')}
|
|
219
|
-
/>
|
|
220
|
-
);
|
|
221
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The live work row's status (compact density's exchange fold, while its run
|
|
3
|
-
* goes): "Retrying 2/3" during a provider retry, "Waiting for the model"
|
|
4
|
-
* once nothing has moved on screen for `RUN_WAITING_DELAY_MS`, else the
|
|
5
|
-
* fold's usual "Working". How long the status has lasted shows in a hairline
|
|
6
|
-
* chip after the words, from `RUN_STATUS_TIME_MS`. Same rule and timing as
|
|
7
|
-
* the TUI's live fold (`runFoldStatus` in `zidane/chat/pure`).
|
|
8
|
-
*
|
|
9
|
-
* The transcript hands the status to its live fold only, so the clock
|
|
10
|
-
* re-renders that one header and every settled fold keeps its element.
|
|
11
|
-
*/
|
|
12
|
-
import { memo, useEffect, useState, type CSSProperties } from 'react';
|
|
13
|
-
import {
|
|
14
|
-
formatElapsed,
|
|
15
|
-
type LiveRunStatus,
|
|
16
|
-
RUN_STATUS_TIME_MS,
|
|
17
|
-
runFoldStatus,
|
|
18
|
-
type RunFoldStatus,
|
|
19
|
-
runStatusKey,
|
|
20
|
-
} from 'zidane/chat/pure';
|
|
21
|
-
|
|
22
|
-
import { RollingText } from '../../motion/roll';
|
|
23
|
-
import { SmoothWidth } from '../../motion/size';
|
|
24
|
-
import { Presence } from '../../motion/swap';
|
|
25
|
-
|
|
26
|
-
/** How often the status clock ticks: often enough that the seconds read smoothly. */
|
|
27
|
-
const TICK_MS = 250;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Time since `key` last changed, in ms, ticking while it is set; `null`
|
|
31
|
-
* while it is `null` and until the first tick. A new key starts a new count.
|
|
32
|
-
*/
|
|
33
|
-
function useSinceMs(key: string | null): number | null {
|
|
34
|
-
const [clock, setClock] = useState<{ key: string; elapsed: number } | null>(null);
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
if (key === null) return undefined;
|
|
37
|
-
const since = Date.now();
|
|
38
|
-
const timer = setInterval(() => setClock({ key, elapsed: Date.now() - since }), TICK_MS);
|
|
39
|
-
return () => {
|
|
40
|
-
clearInterval(timer);
|
|
41
|
-
// The next status must not start from this one's clock.
|
|
42
|
-
setClock(null);
|
|
43
|
-
};
|
|
44
|
-
}, [key]);
|
|
45
|
-
return key !== null && clock?.key === key ? clock.elapsed : null;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** The live fold's status and how long it has lasted. */
|
|
49
|
-
export interface LiveFoldStatus {
|
|
50
|
-
/** What the run is doing, by the shared rule (`runFoldStatus`). */
|
|
51
|
-
status: RunFoldStatus;
|
|
52
|
-
/** Whole seconds the status has lasted, once that reaches `RUN_STATUS_TIME_MS`; `null` before and while working. */
|
|
53
|
-
elapsedSec: number | null;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const WORKING: LiveFoldStatus = { status: { kind: 'working' }, elapsedSec: null };
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* The live fold's status from its transcript's `LiveRunStatus`. Without one
|
|
60
|
-
* (a settled fold, or a transcript not opted in) the fold is working.
|
|
61
|
-
*
|
|
62
|
-
* @param source - The live run's status, set on the transcript's live fold only.
|
|
63
|
-
*/
|
|
64
|
-
export function useLiveFoldStatus(source: LiveRunStatus | undefined): LiveFoldStatus {
|
|
65
|
-
const sinceMs = useSinceMs(source ? runStatusKey(source) : null);
|
|
66
|
-
if (!source) return WORKING;
|
|
67
|
-
const status = runFoldStatus({ retry: source.retry, waitedMs: source.retry ? null : sinceMs });
|
|
68
|
-
if (status.kind === 'working') return WORKING;
|
|
69
|
-
return {
|
|
70
|
-
status,
|
|
71
|
-
elapsedSec: sinceMs !== null && sinceMs >= RUN_STATUS_TIME_MS ? Math.floor(sinceMs / 1000) : null,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/** Props for {@link FoldStatusTime}. */
|
|
76
|
-
export interface FoldStatusTimeProps {
|
|
77
|
-
/** Whole seconds the status has lasted, or `null` to hide the chip. */
|
|
78
|
-
elapsedSec: number | null;
|
|
79
|
-
/** Extra classes on the root element. */
|
|
80
|
-
className?: string;
|
|
81
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
82
|
-
style?: CSSProperties;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* How long the live fold's status has lasted, as a hairline chip after the
|
|
87
|
-
* header's words (the chip of a settled fold's outcomes). The digits roll and
|
|
88
|
-
* the chip eases to its width; it fades in when the time starts to show and
|
|
89
|
-
* out with the status, keeping its last value through the exit.
|
|
90
|
-
*
|
|
91
|
-
* @param props - Component props.
|
|
92
|
-
* @param props.elapsedSec - Whole seconds the status has lasted, or `null` to hide the chip.
|
|
93
|
-
*/
|
|
94
|
-
export const FoldStatusTime = memo(function FoldStatusTime({ elapsedSec, className, style }: FoldStatusTimeProps) {
|
|
95
|
-
const [last, setLast] = useState(elapsedSec ?? 0);
|
|
96
|
-
if (elapsedSec !== null && elapsedSec !== last) setLast(elapsedSec);
|
|
97
|
-
const sec = elapsedSec ?? last;
|
|
98
|
-
return (
|
|
99
|
-
<Presence
|
|
100
|
-
show={elapsedSec !== null}
|
|
101
|
-
className={['shrink-0 self-center', className].filter(Boolean).join(' ')}
|
|
102
|
-
style={style}
|
|
103
|
-
>
|
|
104
|
-
{/* Out of the live region: a count read aloud every second is noise. */}
|
|
105
|
-
<span aria-hidden data-testid="fold-status-time" className="zg-fold-outcomes zg-meta tabular-nums px-1.5">
|
|
106
|
-
<SmoothWidth>
|
|
107
|
-
<RollingText text={formatElapsed(sec)} value={sec} />
|
|
108
|
-
</SmoothWidth>
|
|
109
|
-
</span>
|
|
110
|
-
</Presence>
|
|
111
|
-
);
|
|
112
|
-
});
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A worker step of the exchange fold, opened: the task it was given (one
|
|
3
|
-
* quiet step opening onto the task and the settings it ran with), then its
|
|
4
|
-
* own progress folded like an exchange. Before it starts (every agent slot
|
|
5
|
-
* taken), the task and a badge saying what it waits for.
|
|
6
|
-
*/
|
|
7
|
-
import { useMemo, useState } from 'react';
|
|
8
|
-
|
|
9
|
-
import { useStaysMounted } from '../../motion/collapse';
|
|
10
|
-
import { clusterByOwner, foldWorkerRows, type Cluster, type FoldActionItem, type Row } from '../headless/transcript';
|
|
11
|
-
import { useChatLabels } from '../useChatLabels';
|
|
12
|
-
import { useModelName } from './actions';
|
|
13
|
-
import { Caret } from './frame';
|
|
14
|
-
import { useTranscriptRenderers } from './renderers';
|
|
15
|
-
|
|
16
|
-
/** Props for {@link WorkerDetails}. */
|
|
17
|
-
export interface WorkerDetailsProps {
|
|
18
|
-
/** The fold step for the worker. Its `workerRows` hold the worker's lifecycle markers and output. */
|
|
19
|
-
item: FoldActionItem;
|
|
20
|
-
/** Renders the worker's folded clusters with the transcript's row components. */
|
|
21
|
-
renderRows: (c: readonly Cluster[]) => React.ReactNode[];
|
|
22
|
-
/** Extra classes on the root element. */
|
|
23
|
-
className?: string;
|
|
24
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
25
|
-
style?: React.CSSProperties;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* A worker, opened: what it was asked (the Task step, closed by default),
|
|
30
|
-
* then its own progress folded like an exchange (`foldWorkerRows`): its
|
|
31
|
-
* calls behind one "Working" row, earlier messages stacked behind one
|
|
32
|
-
* group, its last message in full. No second "Agent" block: the fold line
|
|
33
|
-
* above already is the agent.
|
|
34
|
-
*
|
|
35
|
-
* @param props - Component props: the worker `item` and `renderRows`.
|
|
36
|
-
*/
|
|
37
|
-
export function WorkerDetails({ item, renderRows, className, style }: WorkerDetailsProps) {
|
|
38
|
-
const labels = useChatLabels();
|
|
39
|
-
const rows = item.workerRows ?? [];
|
|
40
|
-
const start = rows.find((r): r is Extract<Row, { kind: 'spawn-start' }> => r.kind === 'spawn-start');
|
|
41
|
-
const own = start?.childId ?? rows.map((r) => ('childId' in r ? r.childId : undefined)).find(Boolean);
|
|
42
|
-
const live = item.state === 'running';
|
|
43
|
-
const clusters = useMemo(
|
|
44
|
-
() => (own ? clusterByOwner(foldWorkerRows(rows, own, live)) : clusterByOwner(rows)),
|
|
45
|
-
[rows, own, live],
|
|
46
|
-
);
|
|
47
|
-
const input = item.tool?.rawInput;
|
|
48
|
-
const task = stringField(input, 'task') ?? start?.spawn?.prompt ?? start?.spawn?.task ?? start?.text ?? '';
|
|
49
|
-
return (
|
|
50
|
-
<div className={['flex flex-col', className].filter(Boolean).join(' ')} style={style}>
|
|
51
|
-
<TaskStep
|
|
52
|
-
task={task}
|
|
53
|
-
type={stringField(input, 'subagent_type')}
|
|
54
|
-
resume={stringField(input, 'resume')}
|
|
55
|
-
system={stringField(input, 'system')}
|
|
56
|
-
/>
|
|
57
|
-
{item.waitingFor ? (
|
|
58
|
-
<span
|
|
59
|
-
data-testid="worker-waiting"
|
|
60
|
-
className="zg-track-chip self-start inline-flex items-center gap-1.5 h-[22px] px-2.5 text-xs text-[var(--zg-text-muted)]"
|
|
61
|
-
>
|
|
62
|
-
<span aria-hidden className="i-ph-pause-fill text-[10px] text-[var(--zg-text-subtle)]" />
|
|
63
|
-
{labels.waitingForSlot(item.waitingFor.max)}
|
|
64
|
-
</span>
|
|
65
|
-
) : (
|
|
66
|
-
<div className="text-xs">{renderRows(clusters)}</div>
|
|
67
|
-
)}
|
|
68
|
-
</div>
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function stringField(input: Record<string, unknown> | undefined, key: string): string | undefined {
|
|
73
|
-
const v = input?.[key];
|
|
74
|
-
return typeof v === 'string' && v.trim() !== '' ? v : undefined;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* What a worker was asked, as a step of its own: one quiet line, opening
|
|
79
|
-
* onto the task as prose and the settings it ran with (model, type, whether
|
|
80
|
-
* it resumes another worker, a replaced system prompt).
|
|
81
|
-
*/
|
|
82
|
-
function TaskStep({
|
|
83
|
-
task,
|
|
84
|
-
model,
|
|
85
|
-
type,
|
|
86
|
-
resume,
|
|
87
|
-
system,
|
|
88
|
-
}: {
|
|
89
|
-
task: string;
|
|
90
|
-
model?: string;
|
|
91
|
-
type?: string;
|
|
92
|
-
resume?: string;
|
|
93
|
-
system?: string;
|
|
94
|
-
}) {
|
|
95
|
-
const labels = useChatLabels();
|
|
96
|
-
const modelName = useModelName();
|
|
97
|
-
const { Markdown } = useTranscriptRenderers();
|
|
98
|
-
const [open, setOpen] = useState(false);
|
|
99
|
-
const mounted = useStaysMounted(open);
|
|
100
|
-
const first = task.split('\n').find((line) => line.trim()) ?? '';
|
|
101
|
-
const settings: [string, string][] = [
|
|
102
|
-
...(model ? ([[labels.workerModel, modelName(model)]] as [string, string][]) : []),
|
|
103
|
-
...(type ? ([[labels.workerType, type]] as [string, string][]) : []),
|
|
104
|
-
...(resume ? ([[labels.workerContinues, resume]] as [string, string][]) : []),
|
|
105
|
-
...(system ? ([[labels.workerSystemPrompt, labels.workerSystemReplaced]] as [string, string][]) : []),
|
|
106
|
-
];
|
|
107
|
-
return (
|
|
108
|
-
<div className="pb-1.5" data-testid="worker-task">
|
|
109
|
-
<button
|
|
110
|
-
type="button"
|
|
111
|
-
onClick={() => setOpen(!open)}
|
|
112
|
-
aria-expanded={open}
|
|
113
|
-
className="group/action zg-disclosure zg-press-subtle flex items-center gap-3 w-fit max-w-full h-[22.4px] min-w-0 text-[14px] leading-[1.6] text-[var(--zg-text-muted)] -mx-1.5 px-1.5 rounded-[var(--zg-radius-sm)] text-left"
|
|
114
|
-
>
|
|
115
|
-
<span aria-hidden className="w-4 shrink-0 inline-flex items-center justify-center">
|
|
116
|
-
<span className="i-ph-note-blank text-[12px] text-[var(--zg-text-subtle)]" />
|
|
117
|
-
</span>
|
|
118
|
-
<span className="min-w-0 flex items-center gap-2">
|
|
119
|
-
<span className="shrink-0">{labels.spawnTask}</span>
|
|
120
|
-
{first && <span className="min-w-0 truncate text-[var(--zg-text-subtle)]">{first}</span>}
|
|
121
|
-
<Caret open={open} className="shrink-0" />
|
|
122
|
-
</span>
|
|
123
|
-
</button>
|
|
124
|
-
<div className="zg-collapsible" data-open={open}>
|
|
125
|
-
<div className="zg-collapsible-inner">
|
|
126
|
-
{mounted && (
|
|
127
|
-
<div className="pl-7 pt-1.5 pb-1 flex flex-col gap-2.5">
|
|
128
|
-
{/* The whole task; a long one scrolls in place instead of pushing the thread. */}
|
|
129
|
-
<div
|
|
130
|
-
data-testid="worker-task-body"
|
|
131
|
-
data-scroll-root=""
|
|
132
|
-
className="zg-tray rounded-[var(--zg-radius-md)] px-3 py-2 text-[13px] leading-relaxed text-[var(--zg-text)] max-h-[360px] overflow-y-auto overscroll-contain zg-scroll-fade-y"
|
|
133
|
-
>
|
|
134
|
-
<Markdown>{task}</Markdown>
|
|
135
|
-
</div>
|
|
136
|
-
{settings.length > 0 && (
|
|
137
|
-
<dl className="m-0 grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs">
|
|
138
|
-
{settings.map(([label, value]) => (
|
|
139
|
-
<div key={label} className="contents">
|
|
140
|
-
<dt className="text-[var(--zg-text-subtle)]">{label}</dt>
|
|
141
|
-
<dd className="m-0 min-w-0 truncate text-[var(--zg-text-muted)]">{value}</dd>
|
|
142
|
-
</div>
|
|
143
|
-
))}
|
|
144
|
-
</dl>
|
|
145
|
-
)}
|
|
146
|
-
{system && (
|
|
147
|
-
<details className="text-xs">
|
|
148
|
-
<summary className="cursor-pointer text-[var(--zg-text-subtle)]">{labels.showSystemPrompt}</summary>
|
|
149
|
-
<div className="mt-1.5 text-[13px] leading-relaxed text-[var(--zg-text-muted)]">
|
|
150
|
-
<Markdown>{system}</Markdown>
|
|
151
|
-
</div>
|
|
152
|
-
</details>
|
|
153
|
-
)}
|
|
154
|
-
</div>
|
|
155
|
-
)}
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
</div>
|
|
159
|
-
);
|
|
160
|
-
}
|