zidane-ui 9.1.14 → 9.1.16

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.
Files changed (90) hide show
  1. package/dist/adapters/server-extensions-host.js +1 -1
  2. package/dist/adapters/server-machines-host.js +2 -2
  3. package/dist/adapters/server-settings-host.js +1 -1
  4. package/dist/appearance/AppearanceProvider.js +2 -2
  5. package/dist/appearance/headless/index.js +1 -1
  6. package/dist/approvals/headless/index.js +2 -2
  7. package/dist/chat/Transcript.js +1 -1
  8. package/dist/chat/composer/Composer.js +1 -2
  9. package/dist/chat/composer/ComposerEditor.js +1 -1
  10. package/dist/chat/composer/ConversationBadges.js +1 -1
  11. package/dist/chat/composer/use-composer-stores.js +1 -1
  12. package/dist/chat/composer/use-draft-target.js +1 -1
  13. package/dist/chat/composer/use-run-meter.js +1 -1
  14. package/dist/chat/composer/use-send-prompt.js +1 -1
  15. package/dist/chat/headless/composer/index.js +2 -2
  16. package/dist/chat/headless/composer/labels-editor.d.ts +0 -2
  17. package/dist/chat/headless/composer/labels-editor.js +0 -2
  18. package/dist/chat/headless/index.js +13 -13
  19. package/dist/chat/headless/labels.d.ts +0 -2
  20. package/dist/chat/headless/labels.js +2 -4
  21. package/dist/chat/headless/session-list.d.ts +0 -2
  22. package/dist/chat/headless/sidebar/index.js +1 -1
  23. package/dist/chat/headless/sidebar/labels.d.ts +2 -4
  24. package/dist/chat/rich-composer/RichComposer.js +1 -7
  25. package/dist/chat/rich-composer/composer-extensions.d.ts +0 -2
  26. package/dist/chat/rich-composer/composer-extensions.js +2 -2
  27. package/dist/chat/rich-composer/use-composer-editor.d.ts +0 -2
  28. package/dist/chat/rich-composer/use-composer-editor.js +1 -2
  29. package/dist/chat/transcript/script-input.d.ts +1 -1
  30. package/dist/chat/transcript/shell-block.js +1 -1
  31. package/dist/dist/{index-C6rzc-tt.d.ts → index-BZM8tu4L.d.ts} +1 -1
  32. package/dist/dist/index.d.ts +2 -2
  33. package/dist/dist/{timeout-Cz9dRF8Q.d.ts → timeout-Cyx3VGPz.d.ts} +1 -1
  34. package/dist/extensions/ExtensionSettingsPage.js +1 -1
  35. package/dist/extensions/ExtensionSettingsSection.js +1 -1
  36. package/dist/extensions/ExtensionSettingsSidebar.js +1 -1
  37. package/dist/extensions/headless/fixture-host.js +1 -1
  38. package/dist/extensions/headless/index.js +4 -4
  39. package/dist/extensions/hooks.js +1 -1
  40. package/dist/files/EditorColumn.js +1 -1
  41. package/dist/files/MediaDiff.js +1 -1
  42. package/dist/files/useEntryActions.js +1 -1
  43. package/dist/files/useOpenFiles.js +1 -1
  44. package/dist/git/BranchMenu.js +1 -1
  45. package/dist/git/MoveSessionDialog.js +1 -1
  46. package/dist/git/RemoteFolderPicker.js +1 -1
  47. package/dist/git/WherePicker.js +1 -1
  48. package/dist/git/headless/index.js +1 -1
  49. package/dist/git/useEnvironmentChoices.js +1 -1
  50. package/dist/keybindings/KeyCommands.js +1 -1
  51. package/dist/keybindings/KeybindingsProvider.js +1 -1
  52. package/dist/keybindings/headless/index.js +2 -2
  53. package/dist/keybindings/headless/overrides.js +1 -1
  54. package/dist/machines/HostSyncPanel.js +1 -1
  55. package/dist/machines/SyncOutcomeBadge.js +1 -1
  56. package/dist/machines/headless/fixture-host.js +1 -1
  57. package/dist/machines/headless/index.js +2 -2
  58. package/dist/onboarding/demos/index.js +1 -1
  59. package/dist/onboarding/index.js +3 -3
  60. package/dist/onboarding/steps/ConnectorsStep.js +1 -1
  61. package/dist/onboarding/steps/SkillsStep.js +1 -1
  62. package/dist/palette/app-sources.js +1 -1
  63. package/dist/session/ArtifactsPanel.js +1 -1
  64. package/dist/session/PlanTracker.js +1 -1
  65. package/dist/session/RemindersPanel.js +1 -1
  66. package/dist/session/headless/index.js +2 -2
  67. package/dist/settings/headless/index.js +1 -1
  68. package/dist/settings/headless/search.d.ts +1 -1
  69. package/dist/settings/sections/appearance/AppearanceSection.js +2 -2
  70. package/dist/settings/sections/claude-import/ClaudeImportDialog.js +1 -1
  71. package/dist/settings/sections/editor/EditorSection.js +1 -1
  72. package/dist/settings/sections/environments/EnvironmentsSection.js +2 -2
  73. package/dist/settings/sections/extensions/ChangeOriginDialog.js +1 -1
  74. package/dist/settings/sections/extensions/CreateExtensionDialog.js +1 -1
  75. package/dist/settings/sections/extensions/ExtensionsSection.js +1 -1
  76. package/dist/settings/sections/host-catalog/HostCatalogSection.js +1 -1
  77. package/dist/settings/sections/instructions/InstructionsSection.js +1 -1
  78. package/dist/settings/sections/mcp/McpSection.js +1 -1
  79. package/dist/settings/sections/mcp/McpServerRow.js +1 -1
  80. package/dist/settings/sections/models/ModelRows.js +2 -2
  81. package/dist/settings/sections/providers/ProvidersSection.js +1 -1
  82. package/dist/settings/sections/providers/ServerProvidersSection.js +1 -1
  83. package/dist/settings/sections/shared/catalog.js +1 -1
  84. package/dist/settings/sections/skills/SkillList.js +1 -1
  85. package/dist/settings/sections/skills/SkillsSection.js +2 -2
  86. package/dist/terminal/HostTerminalSurface.js +2 -2
  87. package/dist/workspace/WorkspaceProvider.js +1 -1
  88. package/dist/workspace/extension-tabs.js +1 -1
  89. package/dist/workspace/headless/index.js +1 -1
  90. package/package.json +2 -2
@@ -1,8 +1,8 @@
1
1
  import { writable } from "../chat/headless/store.js";
2
- import { ExtensionsHostError } from "../extensions/headless/host.js";
3
2
  import { createServerWebviewSources } from "./extension-modules.js";
4
3
  import { createDialogQueue } from "../extensions/headless/dialog-queue.js";
5
4
  import { createUiEffectChannel } from "../extensions/headless/effect-channel.js";
5
+ import { ExtensionsHostError } from "../extensions/headless/host.js";
6
6
  import { EXTENSION_TOKENS } from "../extensions/headless/wire.js";
7
7
  import { ServerCallError, ServerConnectionError, createExtensionsClient } from "zidane/ipc/browser";
8
8
  //#region src/adapters/server-extensions-host.ts
@@ -1,7 +1,7 @@
1
- import { machinesError } from "../machines/headless/host.js";
2
- import { createMachineLists, createOnlineMachines, lazyReadable } from "../machines/headless/stores.js";
3
1
  import { closableClient } from "./closable-client.js";
2
+ import { machinesError } from "../machines/headless/host.js";
4
3
  import { createPresenceStore } from "../machines/headless/presence.js";
4
+ import { createMachineLists, createOnlineMachines, lazyReadable } from "../machines/headless/stores.js";
5
5
  import { createHostSyncReads } from "../machines/headless/sync.js";
6
6
  import { serverOAuthFlow } from "./server-oauth-flow.js";
7
7
  import { formatJoinString } from "zidane/ipc/browser";
@@ -1,6 +1,6 @@
1
1
  import { writable } from "../chat/headless/store.js";
2
- import { DEFAULT_SETTINGS } from "../settings/headless/catalog.js";
3
2
  import { closableClient } from "./closable-client.js";
3
+ import { DEFAULT_SETTINGS } from "../settings/headless/catalog.js";
4
4
  import { serverSettingsSections } from "./server-settings-sections.js";
5
5
  import { serverSettingsAccounts } from "./server-settings-accounts.js";
6
6
  import { serverSettingsModels } from "./server-settings-models.js";
@@ -3,11 +3,11 @@ import { shikiThemeFor } from "../code/shiki-theme.js";
3
3
  import { derivePalette } from "../theme/derive.js";
4
4
  import { seedFromTheme } from "../theme/from-theme.js";
5
5
  import { BUILTIN_THEMES, DEFAULT_THEME, resolveTheme } from "../theme/themes.js";
6
+ import { DEFAULT_APPEARANCE, activeThemeId, resolveMotion } from "./headless/prefs.js";
7
+ import { fontsToCssVars } from "./headless/fonts.js";
6
8
  import { constant, useReadable } from "../chat/headless/store.js";
7
9
  import { codeThemeTypeOf } from "../code/code-themes.js";
8
10
  import { applyPalette } from "./apply.js";
9
- import { fontsToCssVars } from "./headless/fonts.js";
10
- import { DEFAULT_APPEARANCE, activeThemeId, resolveMotion } from "./headless/prefs.js";
11
11
  import { jsx } from "react/jsx-runtime";
12
12
  import { createContext, useContext, useEffect, useMemo, useState, useSyncExternalStore } from "react";
13
13
  //#region src/appearance/AppearanceProvider.tsx
@@ -1,5 +1,5 @@
1
- import { CURATED_FONTS, FONT_STACKS, availableCuratedFonts, cssFamily, fontStack, fontsToCssVars, guessKind, isFontAvailable, queryInstalledFonts } from "./fonts.js";
2
1
  import { DEFAULT_APPEARANCE, LIMITS, activeThemeId, parseAppearance, resolveMotion, stepInterfaceScale } from "./prefs.js";
3
2
  import { APPEARANCE_STORAGE_KEY, BOOT_SNAPSHOT_KEY, createStorageAppearancePrefs, createStorageBoot } from "./storage.js";
3
+ import { CURATED_FONTS, FONT_STACKS, availableCuratedFonts, cssFamily, fontStack, fontsToCssVars, guessKind, isFontAvailable, queryInstalledFonts } from "./fonts.js";
4
4
  import { zoomKeyCommands } from "./zoom-commands.js";
5
5
  export { APPEARANCE_STORAGE_KEY, BOOT_SNAPSHOT_KEY, CURATED_FONTS, DEFAULT_APPEARANCE, FONT_STACKS, LIMITS, activeThemeId, availableCuratedFonts, createStorageAppearancePrefs, createStorageBoot, cssFamily, fontStack, fontsToCssVars, guessKind, isFontAvailable, parseAppearance, queryInstalledFonts, resolveMotion, stepInterfaceScale, zoomKeyCommands };
@@ -1,6 +1,6 @@
1
- import { createApprovalHeads } from "./heads.js";
2
- import { DEFAULT_APPROVALS_LABELS } from "./labels.js";
3
1
  import { createPendingApprovals } from "./pending.js";
4
2
  import { createSafelist } from "./safelist.js";
3
+ import { createApprovalHeads } from "./heads.js";
4
+ import { DEFAULT_APPROVALS_LABELS } from "./labels.js";
5
5
  import { FILE_EDIT_TOOLS, allowDecision, approvalPath, approvalPreview, initialHunkMask, isFileEditApproval } from "./preview.js";
6
6
  export { DEFAULT_APPROVALS_LABELS, FILE_EDIT_TOOLS, allowDecision, approvalPath, approvalPreview, createApprovalHeads, createPendingApprovals, createSafelist, initialHunkMask, isFileEditApproval };
@@ -1,10 +1,10 @@
1
+ import { firstRowId } from "./headless/transcript/rows.js";
1
2
  import { useExtensionItems } from "../extensions/ExtensionsProvider.js";
2
3
  import { LinkSessionScope } from "../extensions/links.js";
3
4
  import { CvRow, TranscriptSettling } from "./transcript/LazyRow.js";
4
5
  import { MarkdownDiagrams } from "./transcript/markdown.js";
5
6
  import { useTranscriptActions } from "./transcript/actions.js";
6
7
  import { RowIconsContext } from "./transcript/frame.js";
7
- import { firstRowId } from "./headless/transcript/rows.js";
8
8
  import { ExtensionSlot } from "../extensions/ExtensionSlot.js";
9
9
  import { rowTurnIds, stopForRow } from "./headless/transcript/select-stops.js";
10
10
  import { rowCvStyle, rowEstimatePx } from "./transcript/row-estimate.js";
@@ -22,8 +22,7 @@ const Composer = forwardRef(function Composer(props, ref) {
22
22
  const labels = useChatLabels();
23
23
  const propsRef = useRef(props);
24
24
  propsRef.current = props;
25
- const runningPlaceholder = (props.delivery ?? "queue") === "steer" ? labels.composerPlaceholderSteer : labels.composerPlaceholderQueue;
26
- const placeholder = props.placeholder ?? (running ? runningPlaceholder : labels.composerPlaceholder);
25
+ const placeholder = props.placeholder ?? labels.composerPlaceholder;
27
26
  const placeholderRef = useRef(placeholder);
28
27
  placeholderRef.current = placeholder;
29
28
  const nameRef = useRef(props.ariaLabel ?? labels.composerLabel);
@@ -2,8 +2,8 @@ import { plainTextToDocJson } from "./prompt-history-nav.js";
2
2
  import { suggestionExtension } from "./suggestion-extension.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { useLayoutEffect } from "react";
5
- import { EditorContent, useEditor } from "@tiptap/react";
6
5
  import Placeholder from "@tiptap/extension-placeholder";
6
+ import { EditorContent, useEditor } from "@tiptap/react";
7
7
  import StarterKit from "@tiptap/starter-kit";
8
8
  //#region src/chat/composer/ComposerEditor.tsx
9
9
  /**
@@ -1,8 +1,8 @@
1
+ import { remindersSummary } from "../../session/headless/schedules.js";
1
2
  import { useComposerLabels } from "./ComposerHostProvider.js";
2
3
  import { useExtensionItems, useExtensionsHost } from "../../extensions/ExtensionsProvider.js";
3
4
  import { useSessionHost, useSessionPlans, useSessionQueue, useSessionRunningWork, useSessionSchedules } from "../../session/SessionProvider.js";
4
5
  import { slotItems } from "../../extensions/headless/select.js";
5
- import { remindersSummary } from "../../session/headless/schedules.js";
6
6
  import { ComposerBadges } from "./ComposerBadges.js";
7
7
  import { mergeBadgeOrder, orderComposerBadges } from "./badge-order.js";
8
8
  import { usePendingInteractions } from "../interactions/hooks.js";
@@ -1,6 +1,6 @@
1
- import { useComposerHost } from "./ComposerHostProvider.js";
2
1
  import { IDLE_RESOURCE } from "../../app/headless/resource.js";
3
2
  import { createModelPickerPrefs } from "../headless/composer/model-picker-prefs.js";
3
+ import { useComposerHost } from "./ComposerHostProvider.js";
4
4
  import { modelKnobsOf } from "../headless/composer/model-knobs.js";
5
5
  import { modelNamesOf } from "../headless/composer/model-names.js";
6
6
  import { useEffect, useMemo, useSyncExternalStore } from "react";
@@ -1,5 +1,5 @@
1
- import { useGitHost } from "../../git/GitProvider.js";
2
1
  import { resolveDraftDescriptor } from "../../git/headless/environment.js";
2
+ import { useGitHost } from "../../git/GitProvider.js";
3
3
  import { resolveRemoteClone } from "../../git/headless/remote-clone.js";
4
4
  import { useImportRepo } from "../../git/ImportRepoDialog.js";
5
5
  import { useEnvironmentChoices } from "../../git/useEnvironmentChoices.js";
@@ -1,5 +1,5 @@
1
- import { useComposerHost } from "./ComposerHostProvider.js";
2
1
  import { EMPTY_RUN_METER } from "../headless/composer/run-meter.js";
2
+ import { useComposerHost } from "./ComposerHostProvider.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  //#region src/chat/composer/use-run-meter.ts
5
5
  /**
@@ -1,8 +1,8 @@
1
+ import { newSessionRequest, sendPrompt } from "../headless/send-flow.js";
1
2
  import { useChatHost } from "../ChatProvider.js";
2
3
  import { useComposerHost, useComposerLabels } from "./ComposerHostProvider.js";
3
4
  import { useGitHost } from "../../git/GitProvider.js";
4
5
  import { useSessionHost } from "../../session/SessionProvider.js";
5
- import { newSessionRequest, sendPrompt } from "../headless/send-flow.js";
6
6
  import { useSessionStreamActions } from "../SessionStreamsProvider.js";
7
7
  import { usePromptHistory } from "./PromptHistoryProvider.js";
8
8
  import { useState, useSyncExternalStore } from "react";
@@ -1,8 +1,8 @@
1
+ import { DEFAULT_MODEL_PICKER_PREFS, MODEL_PICKER_STORAGE_KEY, createModelPickerPrefs, parseModelPickerPrefs } from "./model-picker-prefs.js";
2
+ import { EMPTY_RUN_METER, createRunMeter } from "./run-meter.js";
1
3
  import { DEFAULT_COMPOSER_CHROME_LABELS } from "./labels-chrome.js";
2
4
  import { DEFAULT_COMPOSER_LABELS } from "./labels.js";
3
5
  import { findCommand } from "./commands.js";
4
- import { DEFAULT_MODEL_PICKER_PREFS, MODEL_PICKER_STORAGE_KEY, createModelPickerPrefs, parseModelPickerPrefs } from "./model-picker-prefs.js";
5
- import { EMPTY_RUN_METER, createRunMeter } from "./run-meter.js";
6
6
  import { composeLiveCost, formatSessionCostLabel } from "./live-cost.js";
7
7
  import { createModelKnobs, modelKnobsOf } from "./model-knobs.js";
8
8
  import { createModelNames, modelNamesOf, namerFor } from "./model-names.js";
@@ -18,8 +18,6 @@ declare const DEFAULT_COMPOSER_EDITOR_LABELS: {
18
18
  placeholderShell: string;
19
19
  placeholderSearch: string;
20
20
  placeholderChat: string;
21
- placeholderSteer: string;
22
- placeholderQueue: string;
23
21
  /** The `#` popover's scope (its Tab hint). */
24
22
  chatScopeProject: string;
25
23
  chatScopeAll: string;
@@ -18,8 +18,6 @@ const DEFAULT_COMPOSER_EDITOR_LABELS = {
18
18
  placeholderShell: "Run a shell command…",
19
19
  placeholderSearch: "Search this conversation…",
20
20
  placeholderChat: "Chat with Zidane…",
21
- placeholderSteer: "Enter adds it to the run. Alt+Enter sends it when the run ends.",
22
- placeholderQueue: "Enter sends it when the run ends. Alt+Enter adds it to the run.",
23
21
  /** The `#` popover's scope (its Tab hint). */
24
22
  chatScopeProject: "This project",
25
23
  chatScopeAll: "All projects",
@@ -1,4 +1,16 @@
1
1
  import { constant, useReadable, writable } from "./store.js";
2
+ import { pairToolEvents } from "./transcript/pairing.js";
3
+ import { firstRowId, parseBashExitMeta } from "./transcript/rows.js";
4
+ import { collapseEvents, inheritRowIdentity, refusedSpawn, toolFailed } from "./transcript/collapse.js";
5
+ import { mergeLiveTail } from "./streams/merge.js";
6
+ import { mergePromptPreviews, missingPreviewData } from "./streams/prompt-previews.js";
7
+ import { defaultFrameScheduler } from "./streams/scheduler.js";
8
+ import { SessionStreamStore } from "./streams/store.js";
9
+ import { NO_PROVIDER_ERROR, newSessionRequest, promptAttachments, promptRefs, sendPrompt, shellCommandOf, wireOriginal } from "./send-flow.js";
10
+ import { LIVE_BLOCK_RUN_LINES, createChatBlockRuns } from "./block-runs.js";
11
+ import { DEFAULT_MODEL_PICKER_PREFS, MODEL_PICKER_STORAGE_KEY, createModelPickerPrefs, parseModelPickerPrefs } from "./composer/model-picker-prefs.js";
12
+ import { EMPTY_RUN_METER, createRunMeter } from "./composer/run-meter.js";
13
+ import { SMOOTH_TICK_MS, drainBucket, safeSurrogateSlice, tickBucket } from "./smooth-stream.js";
2
14
  import { DEFAULT_COMPOSER_CHROME_LABELS } from "./composer/labels-chrome.js";
3
15
  import { DEFAULT_COMPOSER_LABELS } from "./composer/labels.js";
4
16
  import { DEFAULT_CHAT_LABELS, secretExpiryWords } from "./labels.js";
@@ -12,18 +24,6 @@ import { beginChipWork, chipWorkBusy, resetChipWorkForTests, whenChipsSettle } f
12
24
  import { createPathResolver } from "./path-resolver.js";
13
25
  import { REFERENCES_STORAGE_KEY, createReferenceStore } from "./reference-store.js";
14
26
  import { CHUNK_THRESHOLD, openFenceOf, splitMarkdown, withoutPartialFence } from "./markdown-chunks.js";
15
- import { pairToolEvents } from "./transcript/pairing.js";
16
- import { firstRowId, parseBashExitMeta } from "./transcript/rows.js";
17
- import { collapseEvents, inheritRowIdentity, refusedSpawn, toolFailed } from "./transcript/collapse.js";
18
- import { mergeLiveTail } from "./streams/merge.js";
19
- import { mergePromptPreviews, missingPreviewData } from "./streams/prompt-previews.js";
20
- import { defaultFrameScheduler } from "./streams/scheduler.js";
21
- import { SessionStreamStore } from "./streams/store.js";
22
- import { NO_PROVIDER_ERROR, newSessionRequest, promptAttachments, promptRefs, sendPrompt, shellCommandOf, wireOriginal } from "./send-flow.js";
23
- import { LIVE_BLOCK_RUN_LINES, createChatBlockRuns } from "./block-runs.js";
24
- import { DEFAULT_MODEL_PICKER_PREFS, MODEL_PICKER_STORAGE_KEY, createModelPickerPrefs, parseModelPickerPrefs } from "./composer/model-picker-prefs.js";
25
- import { EMPTY_RUN_METER, createRunMeter } from "./composer/run-meter.js";
26
- import { SMOOTH_TICK_MS, drainBucket, safeSurrogateSlice, tickBucket } from "./smooth-stream.js";
27
27
  import { hostReachable, hostStatusLabel } from "./hosts.js";
28
28
  import { batchThinkingRuns, batchToolRuns, clusterByOwner } from "./transcript/batch.js";
29
29
  import { foldActionItems, toolAction } from "./transcript/fold-actions.js";
@@ -46,9 +46,9 @@ import { defaultModelPatch, effortPickerTarget, rememberedDefaultModel } from ".
46
46
  import { secretTimeLeft, secretTimeLeftIso } from "./secrets.js";
47
47
  import { wireAttachmentsToChat } from "./composer/draft-sync.js";
48
48
  import { promptDraftOf } from "./turn-prompt.js";
49
- import { pinSession, pinnedSessions } from "./sidebar/pinned-sessions.js";
50
49
  import { COMMON_EMOJI, MAIN_SESSION_ICON_KEY, PROJECT_ICONS_KEY, firstGrapheme, isProjectIcon, parseProjectIcons } from "./sidebar/project-icons.js";
51
50
  import { DEFAULT_SIDEBAR_LABELS } from "./sidebar/labels.js";
51
+ import { pinSession, pinnedSessions } from "./sidebar/pinned-sessions.js";
52
52
  import { caretEffectivelyAtStart, composeSubmitText, decodeHistoryEntry, encodeHistoryDraft, exitsModeOnKey, modeForTypedChar, unsentDraft } from "./composer-modes.js";
53
53
  import { createDraftScopeStore, draftScopeOf } from "./draft-scope.js";
54
54
  import { VIEW_CHOICE } from "./sidebar/types.js";
@@ -218,8 +218,6 @@ declare const DEFAULT_CHAT_LABELS: {
218
218
  loadingEarlierHistory: string;
219
219
  composerLabel: string;
220
220
  composerPlaceholder: string;
221
- composerPlaceholderSteer: string;
222
- composerPlaceholderQueue: string;
223
221
  sendMessage: string;
224
222
  composerSendFailed: string;
225
223
  sendHint: string;
@@ -252,17 +252,15 @@ const DEFAULT_CHAT_LABELS = {
252
252
  loadingEarlierHistory: "Loading earlier history…",
253
253
  composerLabel: "Message",
254
254
  composerPlaceholder: "Message the agent…",
255
- composerPlaceholderSteer: "Enter adds it to the run. Alt+Enter sends it when the run ends.",
256
- composerPlaceholderQueue: "Enter sends it when the run ends. Alt+Enter adds it to the run.",
257
255
  sendMessage: "Send message",
258
256
  composerSendFailed: "Couldn't send your message.",
259
257
  sendHint: "Send (Enter)",
260
258
  stopRun: "Stop",
261
259
  stopHint: "Stop the run (Esc)",
262
260
  steerMessage: "Steer the run",
263
- steerHint: "Add to the run (Enter). Alt+Enter sends it when the run ends.",
261
+ steerHint: "Add to the running turn (Enter)",
264
262
  queueMessage: "Queue message",
265
- queueHint: "Send when the run ends (Enter). Alt+Enter adds it to the run.",
263
+ queueHint: "Send when the run ends (Enter)",
266
264
  attachFile: "Attach file",
267
265
  removeAttachment: (name) => `Remove ${name}`,
268
266
  attachments: "Attachments",
@@ -298,8 +298,6 @@ declare function dateBucket(at: number, now: number, labels?: {
298
298
  loadingEarlierHistory: string;
299
299
  composerLabel: string;
300
300
  composerPlaceholder: string;
301
- composerPlaceholderSteer: string;
302
- composerPlaceholderQueue: string;
303
301
  sendMessage: string;
304
302
  composerSendFailed: string;
305
303
  sendHint: string;
@@ -1,7 +1,7 @@
1
1
  import { createRunEstimates, pickRunEstimate } from "./estimates.js";
2
- import { pinSession, pinnedSessions } from "./pinned-sessions.js";
3
2
  import { COMMON_EMOJI, MAIN_SESSION_ICON_KEY, PROJECT_ICONS_KEY, firstGrapheme, isProjectIcon, parseProjectIcons } from "./project-icons.js";
4
3
  import { DEFAULT_SIDEBAR_LABELS } from "./labels.js";
4
+ import { pinSession, pinnedSessions } from "./pinned-sessions.js";
5
5
  import { VIEW_CHOICE } from "./types.js";
6
6
  import { CHATS_BUCKET, buildHostSidebarRows, buildQuerySidebarRows, buildSidebarRows, groupsByFolder, isProjectMember, itemRows, nestSidebarRows, partitionMainSession, projectPathOf, repoGroups } from "./rows.js";
7
7
  import { PINNED_PROJECTS_KEY, parsePinnedProjects, withPinnedProject } from "./pinned-projects.js";
@@ -1,6 +1,6 @@
1
1
  import { SecretTimeLeft } from "../secrets.js";
2
- import { u as AuthFailure } from "../../../dist/timeout-Cz9dRF8Q.js";
3
- import { tw as SecretTtl } from "../../../dist/index-C6rzc-tt.js";
2
+ import { u as AuthFailure } from "../../../dist/timeout-Cyx3VGPz.js";
3
+ import { tw as SecretTtl } from "../../../dist/index-BZM8tu4L.js";
4
4
  import "../../../dist/index.js";
5
5
  import "../index.js";
6
6
  //#region src/chat/headless/sidebar/labels.d.ts
@@ -300,8 +300,6 @@ declare const DEFAULT_SIDEBAR_LABELS: {
300
300
  loadingEarlierHistory: string;
301
301
  composerLabel: string;
302
302
  composerPlaceholder: string;
303
- composerPlaceholderSteer: string;
304
- composerPlaceholderQueue: string;
305
303
  sendMessage: string;
306
304
  composerSendFailed: string;
307
305
  sendHint: string;
@@ -68,11 +68,6 @@ function RichComposer({ disabled, folderPath, fileRoot, activeSessionId = null,
68
68
  const history = usePromptHistory();
69
69
  const [historyStatus, setHistoryStatus] = useState(null);
70
70
  const editorRef = useRef(null);
71
- const runningPlaceholder = running ? messageDelivery === "steer" ? labels.placeholderSteer : labels.placeholderQueue : null;
72
- const runningPlaceholderRef = useRef(runningPlaceholder);
73
- useLayoutEffect(() => {
74
- runningPlaceholderRef.current = runningPlaceholder;
75
- });
76
71
  const liveEditor = () => {
77
72
  const ed = editorRef.current;
78
73
  return ed && !ed.isDestroyed ? ed : null;
@@ -157,7 +152,6 @@ function RichComposer({ disabled, folderPath, fileRoot, activeSessionId = null,
157
152
  history,
158
153
  activeSessionId,
159
154
  hostId,
160
- runningPlaceholderRef,
161
155
  send: (alternate) => send(alternate),
162
156
  onSearchNavigate,
163
157
  applyMode,
@@ -295,7 +289,7 @@ function RichComposer({ disabled, folderPath, fileRoot, activeSessionId = null,
295
289
  useEffect(() => {
296
290
  const ed = editorRef.current;
297
291
  if (ed && !ed.isDestroyed) ed.view.dispatch(ed.state.tr);
298
- }, [composerMode, runningPlaceholder]);
292
+ }, [composerMode]);
299
293
  useEffect(() => {
300
294
  if (modeRef.current === "search") liveEditor()?.commands.clearContent(true);
301
295
  live.current.applyMode("normal");
@@ -32,8 +32,6 @@ interface ComposerExtensionsContext {
32
32
  modeRef: RefObject<ComposerMode>;
33
33
  /** Re-evaluate the ghost after a gate input flipped without an edit. */
34
34
  ghostGateChangedRef: RefObject<() => void>;
35
- /** The placeholder while a run works (what Enter and Alt+Enter do), `null` otherwise. */
36
- runningPlaceholderRef: RefObject<string | null>;
37
35
  labels: ComposerLabels;
38
36
  }
39
37
  /** The editor's extensions. */
@@ -28,7 +28,7 @@ const MentionChat = Mention.extend({ name: "mentionChat" });
28
28
  const MAX_RESULTS = 8;
29
29
  /** The editor's extensions. */
30
30
  function composerExtensions(ctx) {
31
- const { disabled, folderPath, extensionCompletionProviders, extensionItems, sources, filesProvider, slashSource, chatsProvider, chatScopeRef, mentionPopovers, promptGhost, modeRef, ghostGateChangedRef, runningPlaceholderRef, labels } = ctx;
31
+ const { disabled, folderPath, extensionCompletionProviders, extensionItems, sources, filesProvider, slashSource, chatsProvider, chatScopeRef, mentionPopovers, promptGhost, modeRef, ghostGateChangedRef, labels } = ctx;
32
32
  const chatScopeLabel = (scope) => scope === "project" ? labels.chatScopeProject : labels.chatScopeAll;
33
33
  return [
34
34
  StarterKit.configure({
@@ -54,7 +54,7 @@ function composerExtensions(ctx) {
54
54
  if (promptGhost.painted()) return "";
55
55
  if (modeRef.current === "shell") return labels.placeholderShell;
56
56
  if (modeRef.current === "search") return labels.placeholderSearch;
57
- return runningPlaceholderRef.current ?? labels.placeholderChat;
57
+ return labels.placeholderChat;
58
58
  }
59
59
  }),
60
60
  Mention.configure({
@@ -23,8 +23,6 @@ interface ComposerEditorOptions {
23
23
  /** The live editor (the one this hook returns, once pinned). */
24
24
  editorRef: RefObject<Editor | null>;
25
25
  modeRef: RefObject<ComposerMode>;
26
- /** The placeholder while a run works, `null` otherwise. */
27
- runningPlaceholderRef: RefObject<string | null>;
28
26
  /** The inline ghost on display. */
29
27
  ghostRef: RefObject<InlineGhost | null>;
30
28
  /** True while a history recall's own transactions run (no ghost for them). */
@@ -18,7 +18,7 @@ import { useEditor } from "@tiptap/react";
18
18
  * state through the refs it passes.
19
19
  */
20
20
  function useComposerEditor(options) {
21
- const { disabled, folderPath, extensionCompletionProviders, sources, skillsProvider, mentionPopovers, promptGhost, modeRef, runningPlaceholderRef, ghostGateChangedRef } = options;
21
+ const { disabled, folderPath, extensionCompletionProviders, sources, skillsProvider, mentionPopovers, promptGhost, modeRef, ghostGateChangedRef } = options;
22
22
  const completions = useComposerHost().completions;
23
23
  const labels = useComposerLabels();
24
24
  const latest = useRef(options);
@@ -85,7 +85,6 @@ function useComposerEditor(options) {
85
85
  promptGhost,
86
86
  modeRef,
87
87
  ghostGateChangedRef,
88
- runningPlaceholderRef,
89
88
  labels
90
89
  }),
91
90
  editable: !disabled,
@@ -1,6 +1,6 @@
1
1
  import { ToolRowModel } from "../headless/transcript/rows.js";
2
2
  import "../headless/transcript/index.js";
3
- import { iT as ScriptProgress } from "../../dist/index-C6rzc-tt.js";
3
+ import { iT as ScriptProgress } from "../../dist/index-BZM8tu4L.js";
4
4
  //#region src/chat/transcript/script-input.d.ts
5
5
  /**
6
6
  * A tool row's progress and how it ended, as `ToolInput` takes them for a Codemode script.
@@ -4,6 +4,7 @@ import { Notice } from "../../components/Notice.js";
4
4
  import { Grow, GrowPresence } from "../../motion/grow.js";
5
5
  import { SmoothHeight } from "../../motion/size.js";
6
6
  import { constant, useReadable } from "../headless/store.js";
7
+ import "../headless/block-runs.js";
7
8
  import { useOptionalChatHost } from "../ChatProvider.js";
8
9
  import { useChatLabels } from "../useChatLabels.js";
9
10
  import { relativeTime } from "../headless/session-list.js";
@@ -12,7 +13,6 @@ import { useTranscriptActions } from "./actions.js";
12
13
  import { AnsiText } from "./AnsiText.js";
13
14
  import { LiveOutput } from "./LiveOutput.js";
14
15
  import { ToolTiming } from "./tool-parts.js";
15
- import "../headless/block-runs.js";
16
16
  import { pushComposerAttachment, textAttachment } from "../composer/composer-bus.js";
17
17
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
18
  import { Suspense, lazy, useLayoutEffect, useMemo, useRef, useState } from "react";
@@ -6,7 +6,7 @@ import "../node_modules/.bun/@earendil-works_pi-ai@1.3.0_bff1df87cb190f90/node_m
6
6
  import "../node_modules/.bun/@anthropic-ai_sdk@0.104.2_fff7ddf946fac095/node_modules/@anthropic-ai/sdk/index.js";
7
7
  import "../node_modules/.bun/@anthropic-ai_sdk@0.104.2_fff7ddf946fac095/node_modules/@anthropic-ai/sdk/resources2.js";
8
8
  import { ReactNode } from "react";
9
- //#region ../dist/index-C6rzc-tt.d.ts
9
+ //#region ../dist/index-BZM8tu4L.d.ts
10
10
  //#endregion
11
11
  //#region src/thinking-levels.d.ts
12
12
  /**
@@ -1,6 +1,6 @@
1
- import { d as AuthFailureKind, u as AuthFailure } from "./timeout-Cz9dRF8Q.js";
1
+ import { d as AuthFailureKind, u as AuthFailure } from "./timeout-Cyx3VGPz.js";
2
2
  import "./types-2HrgolQz.js";
3
3
  import "./oauth-callback-page-DMxIgurj.js";
4
- import { Ab as SessionQueryAll, Cb as SessionFieldName, Db as SessionGroupOrder, Eb as SessionGroupBy, Fb as SessionQueryNot, Lb as SessionSort, Sb as SessionCondition, bb as QueryBound, jb as SessionQueryAny, kb as SessionQuery, rz as ThinkingLevel, wb as SessionFieldPath, xb as QueryValue, yb as FacetPath } from "./index-C6rzc-tt.js";
4
+ import { Ab as SessionQueryAll, Cb as SessionFieldName, Db as SessionGroupOrder, Eb as SessionGroupBy, Fb as SessionQueryNot, Lb as SessionSort, Sb as SessionCondition, bb as QueryBound, jb as SessionQueryAny, kb as SessionQuery, rz as ThinkingLevel, wb as SessionFieldPath, xb as QueryValue, yb as FacetPath } from "./index-BZM8tu4L.js";
5
5
  import "./index-f-XWIoYo.js";
6
6
  import "./sandbox-B4OW6oNx.js";
@@ -1,4 +1,4 @@
1
- //#region ../dist/timeout-Cz9dRF8Q.d.ts
1
+ //#region ../dist/timeout-Cyx3VGPz.d.ts
2
2
  /**
3
3
  * Why a sign-in stopped working:
4
4
  * - `expired`: the refresh failed for a reason that signing in again fixes.
@@ -1,8 +1,8 @@
1
1
  import { constant, useReadable } from "../chat/headless/store.js";
2
+ import { extensionsErrorOf } from "./headless/host.js";
2
3
  import { useExtensionsLabels } from "./useExtensionsLabels.js";
3
4
  import { ExtensionComponent } from "./ExtensionComponent.js";
4
5
  import { useExtensionItems, useExtensionsHost } from "./ExtensionsProvider.js";
5
- import { extensionsErrorOf } from "./headless/host.js";
6
6
  import { settingsValues } from "./headless/select.js";
7
7
  import { SettingsWireForm } from "./SettingsWireForm.js";
8
8
  import { jsx } from "react/jsx-runtime";
@@ -1,8 +1,8 @@
1
1
  import { Notice } from "../components/Notice.js";
2
2
  import { useReadable } from "../chat/headless/store.js";
3
+ import { extensionsErrorOf } from "./headless/host.js";
3
4
  import { useExtensionsLabels } from "./useExtensionsLabels.js";
4
5
  import { useExtensionsHost } from "./ExtensionsProvider.js";
5
- import { extensionsErrorOf } from "./headless/host.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { useState } from "react";
8
8
  //#region src/extensions/ExtensionSettingsSection.tsx
@@ -1,9 +1,9 @@
1
1
  import { Tray } from "../components/Surface.js";
2
2
  import { ROW_BUTTON_CLASS, RowText } from "../components/Form.js";
3
3
  import { constant, useReadable } from "../chat/headless/store.js";
4
+ import { extensionsErrorOf } from "./headless/host.js";
4
5
  import { useExtensionsLabels } from "./useExtensionsLabels.js";
5
6
  import { useExtensionsHost } from "./ExtensionsProvider.js";
6
- import { extensionsErrorOf } from "./headless/host.js";
7
7
  import { settingsValues } from "./headless/select.js";
8
8
  import { SettingsPanel, SettingsPanelBody, useSettingsSection } from "../settings/section.js";
9
9
  import { SettingsWireForm } from "./SettingsWireForm.js";
@@ -1,7 +1,7 @@
1
1
  import { writable } from "../../chat/headless/store.js";
2
- import { ExtensionsHostError } from "./host.js";
3
2
  import { createDialogQueue } from "./dialog-queue.js";
4
3
  import { createUiEffectChannel } from "./effect-channel.js";
4
+ import { ExtensionsHostError } from "./host.js";
5
5
  import { EXTENSION_TOKENS } from "./wire.js";
6
6
  //#region src/extensions/headless/fixture-host.ts
7
7
  /**
@@ -1,10 +1,10 @@
1
+ import { createDialogQueue } from "./dialog-queue.js";
2
+ import { createUiEffectChannel } from "./effect-channel.js";
3
+ import { ExtensionsHostError, extensionsErrorOf } from "./host.js";
4
+ import { EXTENSION_TOKENS, SLOT_NAMES } from "./wire.js";
1
5
  import { createEffectRouter } from "./effect-router.js";
2
6
  import { DEFAULT_EXTENSIONS_LABELS } from "./labels.js";
3
- import { ExtensionsHostError, extensionsErrorOf } from "./host.js";
4
7
  import { WEBVIEW_RPC_NOT_ALLOWED, WEBVIEW_RPC_REQUEST, WEBVIEW_RPC_RESULT, WEBVIEW_RPC_UNAVAILABLE, createWebviewRpcBridge, isWebviewRpcRequest } from "./webview-bridge.js";
5
8
  import { openInNewTab, routeLink } from "./links.js";
6
9
  import { TITLEBAR_ITEMS_PER_EXTENSION, clampSettingNumber, filterSelectOptions, groupSelectOptions, isSettingLocked, qualifyPanelId, rendererMatches, renderersFor, settingValue, settingsValues, slotIsActionable, slotItems, titlebarItems } from "./select.js";
7
- import { createDialogQueue } from "./dialog-queue.js";
8
- import { createUiEffectChannel } from "./effect-channel.js";
9
- import { EXTENSION_TOKENS, SLOT_NAMES } from "./wire.js";
10
10
  export { DEFAULT_EXTENSIONS_LABELS, EXTENSION_TOKENS, ExtensionsHostError, SLOT_NAMES, TITLEBAR_ITEMS_PER_EXTENSION, WEBVIEW_RPC_NOT_ALLOWED, WEBVIEW_RPC_REQUEST, WEBVIEW_RPC_RESULT, WEBVIEW_RPC_UNAVAILABLE, clampSettingNumber, createDialogQueue, createEffectRouter, createUiEffectChannel, createWebviewRpcBridge, extensionsErrorOf, filterSelectOptions, groupSelectOptions, isSettingLocked, isWebviewRpcRequest, openInNewTab, qualifyPanelId, rendererMatches, renderersFor, routeLink, settingValue, settingsValues, slotIsActionable, slotItems, titlebarItems };
@@ -1,7 +1,7 @@
1
1
  import { constant, useReadable } from "../chat/headless/store.js";
2
+ import { ExtensionsHostError } from "./headless/host.js";
2
3
  import { useExtensionScope } from "./ExtensionComponent.js";
3
4
  import { useExtensionEffectRouter, useExtensionsHost } from "./ExtensionsProvider.js";
4
- import { ExtensionsHostError } from "./headless/host.js";
5
5
  import { isSettingLocked, settingValue } from "./headless/select.js";
6
6
  import { useCallback, useEffect, useMemo, useRef } from "react";
7
7
  //#region src/extensions/hooks.ts
@@ -1,8 +1,8 @@
1
1
  import { Breadcrumb } from "../components/Breadcrumb.js";
2
2
  import { IconToggle } from "../components/IconToggle.js";
3
3
  import { PanelEmpty, PanelLoading } from "../components/PanelEmpty.js";
4
- import { useFilesHost } from "./FilesProvider.js";
5
4
  import { mediaSiblings, mediaTypeOfPath } from "./headless/media.js";
5
+ import { useFilesHost } from "./FilesProvider.js";
6
6
  import { absolutePath } from "./file-actions.js";
7
7
  import { useFilesLabels } from "./useFilesLabels.js";
8
8
  import { useLsp } from "./useLsp.js";
@@ -1,5 +1,5 @@
1
- import { useFilesHost } from "./FilesProvider.js";
2
1
  import { mediaTypeOfPath } from "./headless/media.js";
2
+ import { useFilesHost } from "./FilesProvider.js";
3
3
  import { useFilesLabels } from "./useFilesLabels.js";
4
4
  import { MediaView } from "./MediaView.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { useOptionalConfirm } from "../app/useConfirm.js";
2
1
  import { droppedItems, entryRefusalText, inFolder, nameOf, parentOf, topLevelPaths } from "./headless/entries.js";
2
+ import { useOptionalConfirm } from "../app/useConfirm.js";
3
3
  import { useCallback, useMemo, useRef, useState } from "react";
4
4
  //#region src/files/useEntryActions.ts
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { useFilesHost } from "./FilesProvider.js";
2
1
  import { isUnder, movedPath } from "./headless/entries.js";
2
+ import { useFilesHost } from "./FilesProvider.js";
3
3
  import { filesRootOf } from "./headless/view.js";
4
4
  import { folderBuffers } from "./drafts-store.js";
5
5
  import { editedPath, sameFile, statusDelta } from "./headless/workspace-diff.js";
@@ -4,11 +4,11 @@ import { Notice } from "../components/Notice.js";
4
4
  import { Tooltip } from "../components/Tooltip.js";
5
5
  import { MenuNote } from "../components/Menu.js";
6
6
  import { FloatingSurface } from "../components/floating/FloatingSurface.js";
7
+ import { environmentKindIcon } from "./headless/environment.js";
7
8
  import { gitErrorText } from "./headless/labels.js";
8
9
  import { useGitHost, useGitLabels } from "./GitProvider.js";
9
10
  import { useLinkRouter } from "../extensions/links.js";
10
11
  import { relativeTime } from "../chat/headless/session-list.js";
11
- import { environmentKindIcon } from "./headless/environment.js";
12
12
  import { ageIsDuration, clockTime, compactCount, readPullRequests, switcherCacheOf, switcherCreates, switcherKey, switcherSections } from "./headless/switcher.js";
13
13
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
14
  import { memo, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
@@ -5,10 +5,10 @@ import { errorMessage } from "../components/report-error.js";
5
5
  import { MenuNote, MenuRow } from "../components/Menu.js";
6
6
  import { compactPath } from "../path.js";
7
7
  import { useDisplayPath } from "../hooks/useDisplayPath.js";
8
+ import { environmentKindIcon } from "./headless/environment.js";
8
9
  import { gitErrorText } from "./headless/labels.js";
9
10
  import { useGitHost, useGitLabels } from "./GitProvider.js";
10
11
  import { useOptionalModal } from "../app/ModalProvider.js";
11
- import { environmentKindIcon } from "./headless/environment.js";
12
12
  import { RemoteFolderBrowser } from "./RemoteFolderPicker.js";
13
13
  import { leavesWorktree, moveChoices, moveListingCwd } from "./headless/move.js";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -3,9 +3,9 @@ import { Notice } from "../components/Notice.js";
3
3
  import { errorMessage } from "../components/report-error.js";
4
4
  import { Menu, MenuNote, MenuRow, MenuSection, MenuSeparator, focusMenuRow } from "../components/Menu.js";
5
5
  import { Popover } from "../components/floating/Popover.js";
6
+ import { folderName } from "./headless/environment.js";
6
7
  import { gitErrorText } from "./headless/labels.js";
7
8
  import { useGitHost, useGitLabels } from "./GitProvider.js";
8
- import { folderName } from "./headless/environment.js";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
10
  import { useEffect, useRef, useState } from "react";
11
11
  //#region src/git/RemoteFolderPicker.tsx
@@ -2,8 +2,8 @@ import { Tooltip } from "../components/Tooltip.js";
2
2
  import { MetaChip } from "../components/Form.js";
3
3
  import { MenuNote, MenuRow, MenuSection, MenuSeparator, handleMenuKeyDown } from "../components/Menu.js";
4
4
  import { Popover } from "../components/floating/Popover.js";
5
- import { useGitLabels } from "./GitProvider.js";
6
5
  import { environmentBaseKind, environmentKindIcon, machinesOf, resolveDraftDescriptor } from "./headless/environment.js";
6
+ import { useGitLabels } from "./GitProvider.js";
7
7
  import { hostReachable, hostStatusLabel } from "../chat/headless/hosts.js";
8
8
  import { HostBadge } from "../chat/HostBadge.js";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";