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,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* remark plugin: extension text references (`ctx.registerReferences`) in a
|
|
3
|
-
* reply become `zg-ref:ext:` links the `a` renderer paints as reference
|
|
4
|
-
* badges (`ReferenceChip`). Two places:
|
|
5
|
-
*
|
|
6
|
-
* - prose text: a match becomes a link whose text is the match;
|
|
7
|
-
* - links whose whole URL is a reference (an autolinked issue URL): the
|
|
8
|
-
* link is retargeted, carrying the original URL so the badge falls back
|
|
9
|
-
* to the plain link while unresolved.
|
|
10
|
-
*
|
|
11
|
-
* - inline code that is one reference and nothing else (`BOA-123`): the
|
|
12
|
-
* code is wrapped in the link, so it still renders as code while
|
|
13
|
-
* unresolved or when the reference names nothing.
|
|
14
|
-
*
|
|
15
|
-
* Other code, headings and html are left alone, as in `remark-refs.ts`.
|
|
16
|
-
*/
|
|
17
|
-
import { findReferences, type ReferenceProviderWire } from 'zidane/chat/pure';
|
|
18
|
-
|
|
19
|
-
interface MdNode {
|
|
20
|
-
type: string;
|
|
21
|
-
value?: string;
|
|
22
|
-
url?: string;
|
|
23
|
-
children?: MdNode[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const SKIP = new Set(['link', 'linkReference', 'inlineCode', 'code', 'heading', 'html']);
|
|
27
|
-
const PREFIX = 'zg-ref:ext:';
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* An extension reference a `zg-ref:ext:` link names.
|
|
31
|
-
*/
|
|
32
|
-
export interface ParsedReferenceUrl {
|
|
33
|
-
/** The reference's provider. */
|
|
34
|
-
providerId: string;
|
|
35
|
-
/** The reference's key. */
|
|
36
|
-
key: string;
|
|
37
|
-
/** The link's own URL, when a link was retargeted. */
|
|
38
|
-
href?: string;
|
|
39
|
-
/** The match's placeholder label (`ReferenceMatch.placeholder`). */
|
|
40
|
-
placeholder?: string;
|
|
41
|
-
/** The placeholder's GUI icon class. */
|
|
42
|
-
placeholderIcon?: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* The `zg-ref:ext:` URL for an extension reference (what the remark plugin writes).
|
|
47
|
-
*
|
|
48
|
-
* @param providerId - The provider.
|
|
49
|
-
* @param key - The key.
|
|
50
|
-
* @param href - The link's own URL, when a link was retargeted.
|
|
51
|
-
* @param placeholder - The match's placeholder label.
|
|
52
|
-
* @param placeholderIcon - The placeholder's icon class.
|
|
53
|
-
*/
|
|
54
|
-
export function referenceUrl(
|
|
55
|
-
providerId: string,
|
|
56
|
-
key: string,
|
|
57
|
-
href?: string,
|
|
58
|
-
placeholder?: string,
|
|
59
|
-
placeholderIcon?: string,
|
|
60
|
-
): string {
|
|
61
|
-
const parts = [providerId, key, href ?? '', placeholder ?? '', placeholderIcon ?? ''].map(encodeURIComponent);
|
|
62
|
-
while (parts.length > 2 && parts[parts.length - 1] === '') parts.pop();
|
|
63
|
-
return `${PREFIX}${parts.join(':')}`;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* The extension reference a `zg-ref:ext:` link names; `null` for any other URL.
|
|
68
|
-
*
|
|
69
|
-
* @param url - The link's URL.
|
|
70
|
-
*/
|
|
71
|
-
export function parseReferenceUrl(url: string | undefined): ParsedReferenceUrl | null {
|
|
72
|
-
if (!url?.startsWith(PREFIX)) return null;
|
|
73
|
-
const [providerId, key, href, placeholder, placeholderIcon] = url.slice(PREFIX.length).split(':');
|
|
74
|
-
if (!providerId || !key) return null;
|
|
75
|
-
try {
|
|
76
|
-
return {
|
|
77
|
-
providerId: decodeURIComponent(providerId),
|
|
78
|
-
key: decodeURIComponent(key),
|
|
79
|
-
...(href ? { href: decodeURIComponent(href) } : {}),
|
|
80
|
-
...(placeholder ? { placeholder: decodeURIComponent(placeholder) } : {}),
|
|
81
|
-
...(placeholderIcon ? { placeholderIcon: decodeURIComponent(placeholderIcon) } : {}),
|
|
82
|
-
};
|
|
83
|
-
} catch {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
function splitText(text: string, providers: readonly ReferenceProviderWire[]): MdNode[] {
|
|
89
|
-
const matches = findReferences(text, providers, 'assistant');
|
|
90
|
-
if (matches.length === 0) return [{ type: 'text', value: text }];
|
|
91
|
-
const nodes: MdNode[] = [];
|
|
92
|
-
let cursor = 0;
|
|
93
|
-
for (const m of matches) {
|
|
94
|
-
if (m.start > cursor) nodes.push({ type: 'text', value: text.slice(cursor, m.start) });
|
|
95
|
-
nodes.push({
|
|
96
|
-
type: 'link',
|
|
97
|
-
url: referenceUrl(m.providerId, m.key, undefined, m.placeholder, m.placeholderIcon?.gui),
|
|
98
|
-
children: [{ type: 'text', value: text.slice(m.start, m.end) }],
|
|
99
|
-
});
|
|
100
|
-
cursor = m.end;
|
|
101
|
-
}
|
|
102
|
-
if (cursor < text.length) nodes.push({ type: 'text', value: text.slice(cursor) });
|
|
103
|
-
return nodes;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** The reference that is the whole of `text`, if any. */
|
|
107
|
-
function wholeReference(text: string, providers: readonly ReferenceProviderWire[]) {
|
|
108
|
-
const matches = findReferences(text, providers, 'assistant');
|
|
109
|
-
const [only] = matches;
|
|
110
|
-
return matches.length === 1 && only && only.start === 0 && only.end === text.length ? only : null;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function visit(node: MdNode, providers: readonly ReferenceProviderWire[]): void {
|
|
114
|
-
if (!node.children) return;
|
|
115
|
-
const next: MdNode[] = [];
|
|
116
|
-
for (const child of node.children) {
|
|
117
|
-
if (child.type === 'text' && typeof child.value === 'string') {
|
|
118
|
-
next.push(...splitText(child.value, providers));
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if (child.type === 'inlineCode' && typeof child.value === 'string') {
|
|
122
|
-
const whole = wholeReference(child.value, providers);
|
|
123
|
-
if (whole) {
|
|
124
|
-
next.push({
|
|
125
|
-
type: 'link',
|
|
126
|
-
url: referenceUrl(whole.providerId, whole.key, undefined, whole.placeholder, whole.placeholderIcon?.gui),
|
|
127
|
-
children: [child],
|
|
128
|
-
});
|
|
129
|
-
continue;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (child.type === 'link' && typeof child.url === 'string' && !child.url.startsWith('zg-ref:')) {
|
|
133
|
-
const whole = wholeReference(child.url, providers);
|
|
134
|
-
if (whole) {
|
|
135
|
-
next.push({
|
|
136
|
-
...child,
|
|
137
|
-
url: referenceUrl(whole.providerId, whole.key, child.url, whole.placeholder, whole.placeholderIcon?.gui),
|
|
138
|
-
});
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (!SKIP.has(child.type)) visit(child, providers);
|
|
143
|
-
next.push(child);
|
|
144
|
-
}
|
|
145
|
-
node.children = next;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* The remark plugin: the providers' matches in prose become `zg-ref:ext:` links.
|
|
150
|
-
*
|
|
151
|
-
* @param options - The providers whose patterns match.
|
|
152
|
-
*/
|
|
153
|
-
export function remarkReferences(options: { providers: readonly ReferenceProviderWire[] }) {
|
|
154
|
-
return (tree: MdNode) => {
|
|
155
|
-
if (options.providers.length > 0) visit(tree, options.providers);
|
|
156
|
-
};
|
|
157
|
-
}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* remark plugin: turn `#123` and commit SHAs in prose into links with the
|
|
3
|
-
* `zg-ref:` scheme (`zg-ref:number:123`, `zg-ref:sha:abc1234`). The `a`
|
|
4
|
-
* renderer paints those as reference chips and resolves them against the
|
|
5
|
-
* session repo's web base. Text inside links, inline code and code blocks
|
|
6
|
-
* is left alone (those nodes aren't `text` children of prose).
|
|
7
|
-
*
|
|
8
|
-
* Dependency-free: walks mdast `children` arrays directly instead of
|
|
9
|
-
* pulling in unist-util-visit / mdast-util-find-and-replace.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
interface MdNode {
|
|
13
|
-
type: string;
|
|
14
|
-
value?: string;
|
|
15
|
-
url?: string;
|
|
16
|
-
children?: MdNode[];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** `#123` not preceded by a word char or `/` (so `owner/repo#12` and `#hash` in code stay). */
|
|
20
|
-
const NUMBER_RE = /(?<![\w/&])#(\d{1,7})\b/g;
|
|
21
|
-
/** 7–40 hex chars containing at least one digit, standing alone (rules out words like `decade`). */
|
|
22
|
-
const SHA_RE = /(?<![\w/.])(?=[0-9a-f]*\d)[0-9a-f]{7,40}(?![\w/])(?!\.\w)/g;
|
|
23
|
-
|
|
24
|
-
/** Containers whose text children we should NOT rewrite. */
|
|
25
|
-
const SKIP = new Set(['link', 'linkReference', 'inlineCode', 'code', 'heading', 'html']);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The remark plugin: `#123` and commit SHAs in prose become `zg-ref:` links (see the module comment).
|
|
29
|
-
*/
|
|
30
|
-
export function remarkRefs() {
|
|
31
|
-
return (tree: MdNode) => {
|
|
32
|
-
visit(tree);
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function visit(node: MdNode): void {
|
|
37
|
-
if (!node.children) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const next: MdNode[] = [];
|
|
41
|
-
for (const child of node.children) {
|
|
42
|
-
if (child.type === 'text' && typeof child.value === 'string') {
|
|
43
|
-
next.push(...splitText(child.value));
|
|
44
|
-
} else {
|
|
45
|
-
if (!SKIP.has(child.type)) {
|
|
46
|
-
visit(child);
|
|
47
|
-
}
|
|
48
|
-
next.push(child);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
node.children = next;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* A `#123` or SHA found in plain text.
|
|
56
|
-
*/
|
|
57
|
-
export interface RefMatch {
|
|
58
|
-
/** A number or a SHA. */
|
|
59
|
-
kind: 'number' | 'sha';
|
|
60
|
-
/** The number's digits, or the SHA. */
|
|
61
|
-
value: string;
|
|
62
|
-
/** Where it starts in the text. */
|
|
63
|
-
start: number;
|
|
64
|
-
/** Where it ends. */
|
|
65
|
-
end: number;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* The `#123`s and SHAs in a plain text, in order (outside markdown: receipts, titles).
|
|
70
|
-
*
|
|
71
|
-
* @param text - The text to scan.
|
|
72
|
-
*/
|
|
73
|
-
export function findRefs(text: string): RefMatch[] {
|
|
74
|
-
const out: RefMatch[] = [];
|
|
75
|
-
for (const m of text.matchAll(NUMBER_RE)) {
|
|
76
|
-
out.push({ kind: 'number', value: m[1], start: m.index, end: m.index + m[0].length });
|
|
77
|
-
}
|
|
78
|
-
for (const m of text.matchAll(SHA_RE)) {
|
|
79
|
-
out.push({ kind: 'sha', value: m[0], start: m.index, end: m.index + m[0].length });
|
|
80
|
-
}
|
|
81
|
-
return out.sort((a, b) => a.start - b.start);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function splitText(text: string): MdNode[] {
|
|
85
|
-
const refs = findRefs(text);
|
|
86
|
-
if (refs.length === 0) {
|
|
87
|
-
return [{ type: 'text', value: text }];
|
|
88
|
-
}
|
|
89
|
-
const nodes: MdNode[] = [];
|
|
90
|
-
let cursor = 0;
|
|
91
|
-
for (const ref of refs) {
|
|
92
|
-
if (ref.start < cursor) {
|
|
93
|
-
continue; // overlapping match (a SHA inside a number span can't happen, but be safe)
|
|
94
|
-
}
|
|
95
|
-
if (ref.start > cursor) {
|
|
96
|
-
nodes.push({ type: 'text', value: text.slice(cursor, ref.start) });
|
|
97
|
-
}
|
|
98
|
-
nodes.push({
|
|
99
|
-
type: 'link',
|
|
100
|
-
url: `zg-ref:${ref.kind}:${ref.value}`,
|
|
101
|
-
children: [{ type: 'text', value: text.slice(ref.start, ref.end) }],
|
|
102
|
-
});
|
|
103
|
-
cursor = ref.end;
|
|
104
|
-
}
|
|
105
|
-
if (cursor < text.length) {
|
|
106
|
-
nodes.push({ type: 'text', value: text.slice(cursor) });
|
|
107
|
-
}
|
|
108
|
-
return nodes;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* A ref a `zg-ref:` link or inline code names.
|
|
113
|
-
*/
|
|
114
|
-
export interface ParsedRef {
|
|
115
|
-
/** A number or a SHA. */
|
|
116
|
-
kind: 'number' | 'sha';
|
|
117
|
-
/** The number's digits, or the SHA. */
|
|
118
|
-
value: string;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* The ref a `zg-ref:` link names; `null` for any other URL.
|
|
123
|
-
*
|
|
124
|
-
* @param url - The link's URL.
|
|
125
|
-
*/
|
|
126
|
-
export function parseRefUrl(url: string | undefined): ParsedRef | null {
|
|
127
|
-
if (!url?.startsWith('zg-ref:')) {
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
const [, kind, value] = url.split(':');
|
|
131
|
-
return (kind === 'number' || kind === 'sha') && value ? { kind, value } : null;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* The number of a text that is exactly `#N` (an issue or PR), else null.
|
|
136
|
-
*
|
|
137
|
-
* @param text - The text (`#123`).
|
|
138
|
-
*/
|
|
139
|
-
export function numberRef(text: string): ParsedRef | null {
|
|
140
|
-
const m = /^#(\d{1,7})$/.exec(text);
|
|
141
|
-
return m ? { kind: 'number', value: m[1] } : null;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Inline code that is exactly an issue or PR number or a SHA becomes a ref chip too.
|
|
146
|
-
*
|
|
147
|
-
* @param raw - The inline code's text.
|
|
148
|
-
*/
|
|
149
|
-
export function classifyInlineRef(raw: string): ParsedRef | null {
|
|
150
|
-
const text = raw.trim();
|
|
151
|
-
const number = numberRef(text);
|
|
152
|
-
if (number) {
|
|
153
|
-
return number;
|
|
154
|
-
}
|
|
155
|
-
if (/^(?=[0-9a-f]*\d)[0-9a-f]{7,40}$/.test(text)) {
|
|
156
|
-
return { kind: 'sha', value: text };
|
|
157
|
-
}
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Where a ref leads on the repo's site (a PR or issue, a commit); `null` without a web base.
|
|
163
|
-
*
|
|
164
|
-
* @param ref - The ref.
|
|
165
|
-
* @param webBase - The repo's web address.
|
|
166
|
-
*/
|
|
167
|
-
export function refHref(ref: ParsedRef, webBase: string | null): string | null {
|
|
168
|
-
if (!webBase) {
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
if (ref.kind === 'sha') {
|
|
172
|
-
return `${webBase}/commit/${ref.value}`;
|
|
173
|
-
}
|
|
174
|
-
// A bare #N may be an issue or a PR; GitHub's /issues/N redirects to the PR when it is one.
|
|
175
|
-
return webBase.startsWith('https://github.com/') ? `${webBase}/issues/${ref.value}` : `${webBase}/pull/${ref.value}`;
|
|
176
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The renderer slots' context: what enclosing `TranscriptRenderersProvider`s
|
|
3
|
-
* set, without the defaults. Apart from `renderers.tsx` (which fills the
|
|
4
|
-
* gaps with the kit's markdown and highlighter) so a component that reads one
|
|
5
|
-
* slot and brings its own fallback (`ApprovalBar`) loads neither.
|
|
6
|
-
*/
|
|
7
|
-
import { createContext, useContext, useMemo, type ReactNode } from 'react';
|
|
8
|
-
|
|
9
|
-
import type { TranscriptRenderers } from './renderers';
|
|
10
|
-
|
|
11
|
-
const TranscriptRenderersContext = createContext<Partial<TranscriptRenderers>>({});
|
|
12
|
-
|
|
13
|
-
/** Props for {@link TranscriptRenderersProvider}. */
|
|
14
|
-
export interface TranscriptRenderersProviderProps {
|
|
15
|
-
/** The slots to replace. Slots left out keep the enclosing provider's renderer, or the default. */
|
|
16
|
-
value: Partial<TranscriptRenderers>;
|
|
17
|
-
/** The transcript that reads the renderers. */
|
|
18
|
-
children: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Overrides any subset of the slots; the rest keep the enclosing (or default) renderers.
|
|
23
|
-
*
|
|
24
|
-
* @param props - Provider props: the slots to override in `value` and the `children` that read them.
|
|
25
|
-
*/
|
|
26
|
-
export function TranscriptRenderersProvider({ value, children }: TranscriptRenderersProviderProps) {
|
|
27
|
-
const parent = useContext(TranscriptRenderersContext);
|
|
28
|
-
const merged = useMemo(() => ({ ...parent, ...value }), [parent, value]);
|
|
29
|
-
return <TranscriptRenderersContext.Provider value={merged}>{children}</TranscriptRenderersContext.Provider>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** The slots the enclosing providers set, defaults left out. */
|
|
33
|
-
export function useTranscriptRendererOverrides(): Partial<TranscriptRenderers> {
|
|
34
|
-
return useContext(TranscriptRenderersContext);
|
|
35
|
-
}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The transcript's renderer slots: the few pieces a row draws through an
|
|
3
|
-
* app's own services. Rows read them with `useTranscriptRenderers()`; an app
|
|
4
|
-
* swaps any of them with one `<TranscriptRenderersProvider>` around its
|
|
5
|
-
* transcript (the desktop app plugs in its file and reference badges).
|
|
6
|
-
* Without a provider the defaults below render: safe markdown, code
|
|
7
|
-
* highlighted as the desktop app highlights it (`code/HighlightedCode.tsx`,
|
|
8
|
-
* configured by a `CodeHighlightProvider`), plain inline text.
|
|
9
|
-
*
|
|
10
|
-
* Markdown a reply, a command's detail, a compaction summary
|
|
11
|
-
* CodeBlock a fenced block, a tool's input, a file it read
|
|
12
|
-
* InlineText a one-line receipt that may name files, commits, links
|
|
13
|
-
* Prompt a sent prompt's text, inside its bubble
|
|
14
|
-
* SessionTitle the session a tool call addresses, as a link
|
|
15
|
-
* attachmentLabel the icon and name a prompt's file attachment shows
|
|
16
|
-
* ToolBody a tool call's body drawn by the app (`hasToolBody` says
|
|
17
|
-
* which calls), in place of its input and output panels
|
|
18
|
-
*
|
|
19
|
-
* Under an `ExtensionsProvider`, the extensions' renderers route in on top
|
|
20
|
-
* (`extension-renderers.tsx`): a fence whose language, or a call whose tool,
|
|
21
|
-
* has one draws through it, over the slot in effect as its default.
|
|
22
|
-
*/
|
|
23
|
-
import { memo, type ComponentType, type CSSProperties, type SyntheticEvent } from 'react';
|
|
24
|
-
import type { PromptSegmentRef } from 'zidane/chat/pure';
|
|
25
|
-
|
|
26
|
-
import { HighlightedCode } from '../../code/HighlightedCode';
|
|
27
|
-
import type { ToolRowModel } from '../headless/transcript';
|
|
28
|
-
import { useChatLabels } from '../useChatLabels';
|
|
29
|
-
import { useTranscriptActions } from './actions';
|
|
30
|
-
import { Markdown } from './markdown';
|
|
31
|
-
import { PromptLines } from './prompt-lines';
|
|
32
|
-
import { useTranscriptRendererOverrides } from './renderer-slots';
|
|
33
|
-
import { useExtensionItems } from '../../extensions/ExtensionsProvider';
|
|
34
|
-
import { withExtensionRenderers } from './extension-renderers';
|
|
35
|
-
|
|
36
|
-
/** Props of the `Markdown` renderer slot. */
|
|
37
|
-
export interface MarkdownSlotProps {
|
|
38
|
-
/** The markdown source to render. */
|
|
39
|
-
children: string;
|
|
40
|
-
/** Still streaming: a renderer may re-parse only the tail. */
|
|
41
|
-
streaming?: boolean;
|
|
42
|
-
/** Extra class names for the rendered block. */
|
|
43
|
-
className?: string;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/** Props of the `CodeBlock` renderer slot. */
|
|
47
|
-
export interface CodeBlockSlotProps {
|
|
48
|
-
/** The code to show, without the closing newline. */
|
|
49
|
-
code: string;
|
|
50
|
-
/** A fence's language (`plaintext` when it names none). */
|
|
51
|
-
language: string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** Props of the `InlineText` renderer slot. */
|
|
55
|
-
export interface InlineTextSlotProps {
|
|
56
|
-
/** One line of plain text; `` `code` `` spans keep their backticks. */
|
|
57
|
-
text: string;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** Props of the `Prompt` renderer slot. */
|
|
61
|
-
export interface PromptSlotProps {
|
|
62
|
-
/** The prompt as sent; the bubble around it keeps its whitespace. */
|
|
63
|
-
text: string;
|
|
64
|
-
/** The references the composer recorded (files, skills, links, a command). */
|
|
65
|
-
refs?: readonly PromptSegmentRef[];
|
|
66
|
-
/** A command invocation (`/fix conflicts now`). */
|
|
67
|
-
command?: boolean;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/** Props of the `SessionTitle` renderer slot. */
|
|
71
|
-
export interface SessionTitleSlotProps {
|
|
72
|
-
/** The addressed session's id. */
|
|
73
|
-
id: string;
|
|
74
|
-
/** What to show until the app knows the session's title (the formatter's short id). */
|
|
75
|
-
fallback: string;
|
|
76
|
-
/**
|
|
77
|
-
* Only the session's current title as text: no link, no directory. For a
|
|
78
|
-
* title inside a control that already opens the session (a report row).
|
|
79
|
-
*/
|
|
80
|
-
plain?: boolean;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/** Props of the `ToolBody` renderer slot. */
|
|
84
|
-
export interface ToolBodySlotProps {
|
|
85
|
-
/** The tool call whose body to draw. */
|
|
86
|
-
tool: ToolRowModel;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Props of the `TextPreview` renderer slot: a text attachment opened in the lightbox. */
|
|
90
|
-
export interface TextPreviewSlotProps {
|
|
91
|
-
/** The file name. */
|
|
92
|
-
name: string;
|
|
93
|
-
/** Its MIME type, for example `text/markdown`. */
|
|
94
|
-
mediaType: string;
|
|
95
|
-
/** Its size in bytes. */
|
|
96
|
-
size: number;
|
|
97
|
-
/** Where the text is: a `data:` URL, or any URL the page can fetch. */
|
|
98
|
-
src: string;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** What a non-image attachment shows: an icon (or a short badge) and its name. */
|
|
102
|
-
export interface AttachmentLabelParts {
|
|
103
|
-
/** Icon class name, for example `i-ph-file`. */
|
|
104
|
-
icon: string;
|
|
105
|
-
/** CSS color for the icon or badge. Default: the muted text color. */
|
|
106
|
-
tone?: string;
|
|
107
|
-
/** Short badge for icon-less kinds (e.g. `TS`). */
|
|
108
|
-
badge?: string;
|
|
109
|
-
/** The attachment's display name. */
|
|
110
|
-
name: string;
|
|
111
|
-
/** Secondary text, e.g. `L61 to L69` or `comment`. */
|
|
112
|
-
detail?: string;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** The set of renderer slots a transcript draws through. Each is a component or function an app can replace with {@link TranscriptRenderersProvider}. */
|
|
116
|
-
export interface TranscriptRenderers {
|
|
117
|
-
/** Renders markdown: a reply, a command's detail, or a compaction summary. */
|
|
118
|
-
Markdown: ComponentType<MarkdownSlotProps>;
|
|
119
|
-
/** Renders a fenced block, a tool's input, or a file a tool read. */
|
|
120
|
-
CodeBlock: ComponentType<CodeBlockSlotProps>;
|
|
121
|
-
/** Renders a one-line receipt that may name files, commits, or links. */
|
|
122
|
-
InlineText: ComponentType<InlineTextSlotProps>;
|
|
123
|
-
/** Renders a sent prompt's text inside its bubble. */
|
|
124
|
-
Prompt: ComponentType<PromptSlotProps>;
|
|
125
|
-
/** Renders the session a tool call addresses, as a link. */
|
|
126
|
-
SessionTitle: ComponentType<SessionTitleSlotProps>;
|
|
127
|
-
/** Returns the icon and name to show for a prompt's file attachment, given its file name. */
|
|
128
|
-
attachmentLabel: (name: string) => AttachmentLabelParts;
|
|
129
|
-
/** Renders a text attachment in the lightbox; the kit's plain preview when absent. */
|
|
130
|
-
TextPreview?: ComponentType<TextPreviewSlotProps>;
|
|
131
|
-
/** Drawn for the calls `hasToolBody` accepts; without both, every call shows its input and output. */
|
|
132
|
-
ToolBody?: ComponentType<ToolBodySlotProps>;
|
|
133
|
-
/** Tells whether `ToolBody` draws this tool call. Used together with `ToolBody`. */
|
|
134
|
-
hasToolBody?: (tool: ToolRowModel) => boolean;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/** Props for {@link DefaultInlineText}: the {@link InlineTextSlotProps}. */
|
|
138
|
-
export type DefaultInlineTextProps = InlineTextSlotProps;
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Renders the text as is. The default `InlineText` slot.
|
|
142
|
-
*
|
|
143
|
-
* @param props - The {@link InlineTextSlotProps}.
|
|
144
|
-
*/
|
|
145
|
-
export function DefaultInlineText({ text }: DefaultInlineTextProps) {
|
|
146
|
-
return <>{text}</>;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/** Props for {@link DefaultPrompt}: the {@link PromptSlotProps}. */
|
|
150
|
-
export type DefaultPromptProps = PromptSlotProps;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* The prompt's text as typed, a block per line (`PromptLines`).
|
|
154
|
-
*
|
|
155
|
-
* @param props - The {@link PromptSlotProps}.
|
|
156
|
-
*/
|
|
157
|
-
export function DefaultPrompt({ text }: DefaultPromptProps) {
|
|
158
|
-
return <PromptLines items={[text]} />;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/** Props for {@link DefaultSessionTitle}: the {@link SessionTitleSlotProps}. */
|
|
162
|
-
export type DefaultSessionTitleProps = SessionTitleSlotProps;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* The session's id as a link that opens it (`TranscriptActions.openSession`;
|
|
166
|
-
* without it, plain text). A link inside the tool row's header button:
|
|
167
|
-
* the click is stopped before the button toggles the row, and `role=link` +
|
|
168
|
-
* Enter keeps it reachable without a nested `<button>`, which HTML forbids.
|
|
169
|
-
*
|
|
170
|
-
* @param props - The {@link SessionTitleSlotProps}.
|
|
171
|
-
*/
|
|
172
|
-
export function DefaultSessionTitle({ id, fallback, plain }: DefaultSessionTitleProps) {
|
|
173
|
-
const { openSession } = useTranscriptActions();
|
|
174
|
-
const labels = useChatLabels();
|
|
175
|
-
if (plain || !openSession) return <>{fallback}</>;
|
|
176
|
-
const open = (e: SyntheticEvent) => {
|
|
177
|
-
e.stopPropagation();
|
|
178
|
-
e.preventDefault();
|
|
179
|
-
openSession(id);
|
|
180
|
-
};
|
|
181
|
-
return (
|
|
182
|
-
<span
|
|
183
|
-
role="link"
|
|
184
|
-
tabIndex={0}
|
|
185
|
-
title={labels.openNamedSession(fallback)}
|
|
186
|
-
onClick={open}
|
|
187
|
-
onKeyDown={(e) => {
|
|
188
|
-
if (e.key === 'Enter') open(e);
|
|
189
|
-
}}
|
|
190
|
-
className="cursor-pointer hover:underline focus-visible:underline outline-none"
|
|
191
|
-
>
|
|
192
|
-
{fallback}
|
|
193
|
-
</span>
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Returns a generic file icon and the file name. The default `attachmentLabel` slot.
|
|
199
|
-
*
|
|
200
|
-
* @param name - The attachment's file name.
|
|
201
|
-
*/
|
|
202
|
-
export function defaultAttachmentLabel(name: string): AttachmentLabelParts {
|
|
203
|
-
return { icon: 'i-ph-file', name };
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/** Props for {@link DefaultMarkdown}: the {@link MarkdownSlotProps} plus the root's style. */
|
|
207
|
-
export interface DefaultMarkdownProps extends MarkdownSlotProps {
|
|
208
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
209
|
-
style?: CSSProperties;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* The kit's {@link Markdown}, its fences drawn by the `CodeBlock` slot in effect. The default
|
|
214
|
-
* `Markdown` slot.
|
|
215
|
-
*
|
|
216
|
-
* @param props - The {@link MarkdownSlotProps}.
|
|
217
|
-
*/
|
|
218
|
-
export const DefaultMarkdown = memo((props: DefaultMarkdownProps) => {
|
|
219
|
-
const { CodeBlock } = useTranscriptRenderers();
|
|
220
|
-
return <Markdown {...props} CodeBlock={CodeBlock} />;
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
/** The default renderer slots: safe markdown, highlighted code, plain inline text, and a generic attachment icon. Used when no {@link TranscriptRenderersProvider} is present. */
|
|
224
|
-
export const DEFAULT_TRANSCRIPT_RENDERERS: TranscriptRenderers = {
|
|
225
|
-
Markdown: DefaultMarkdown,
|
|
226
|
-
CodeBlock: HighlightedCode,
|
|
227
|
-
InlineText: DefaultInlineText,
|
|
228
|
-
Prompt: DefaultPrompt,
|
|
229
|
-
SessionTitle: DefaultSessionTitle,
|
|
230
|
-
attachmentLabel: defaultAttachmentLabel,
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
export { TranscriptRenderersProvider, type TranscriptRenderersProviderProps } from './renderer-slots';
|
|
234
|
-
|
|
235
|
-
// One resolved set per provider value: rows that compare slots by identity stay memoized.
|
|
236
|
-
const resolved = new WeakMap<Partial<TranscriptRenderers>, TranscriptRenderers>();
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Returns the renderer slots in effect: the defaults merged with every enclosing
|
|
240
|
-
* {@link TranscriptRenderersProvider}, and the extensions' language and tool renderers routed in.
|
|
241
|
-
*/
|
|
242
|
-
export function useTranscriptRenderers(): TranscriptRenderers {
|
|
243
|
-
const overrides = useTranscriptRendererOverrides();
|
|
244
|
-
const extensions = useExtensionItems('renderer');
|
|
245
|
-
let slots = resolved.get(overrides);
|
|
246
|
-
if (!slots) {
|
|
247
|
-
slots = { ...DEFAULT_TRANSCRIPT_RENDERERS, ...overrides };
|
|
248
|
-
resolved.set(overrides, slots);
|
|
249
|
-
}
|
|
250
|
-
return withExtensionRenderers(slots, extensions);
|
|
251
|
-
}
|