zidane-ui 9.1.13 → 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 (290) hide show
  1. package/dist/adapters/index.d.ts +2 -2
  2. package/dist/adapters/index.js +2 -2
  3. package/dist/adapters/live.d.ts +29 -3
  4. package/dist/adapters/live.js +9 -1
  5. package/dist/adapters/server-composer-host.js +17 -2
  6. package/dist/adapters/server-extensions-host.d.ts +0 -1
  7. package/dist/adapters/server-extensions-host.js +4 -15
  8. package/dist/adapters/server-git-host.js +7 -16
  9. package/dist/adapters/server-host.js +181 -43
  10. package/dist/adapters/server-machines-host.d.ts +2 -0
  11. package/dist/adapters/server-machines-host.js +22 -23
  12. package/dist/adapters/server-onboarding-host.d.ts +1 -1
  13. package/dist/adapters/server-onboarding-host.js +3 -4
  14. package/dist/adapters/server-session-host.js +22 -3
  15. package/dist/adapters/server-settings-accounts.js +2 -2
  16. package/dist/adapters/server-settings-host.js +2 -2
  17. package/dist/adapters/server-settings-performance.js +7 -9
  18. package/dist/adapters/server-settings-sections.js +13 -14
  19. package/dist/adapters/server-sidebar-host.js +2 -2
  20. package/dist/adapters/sse-host.js +68 -3
  21. package/dist/adapters/sse-protocol.d.ts +12 -2
  22. package/dist/adapters/sse-protocol.js +4 -2
  23. package/dist/app/AppHostProvider.js +4 -3
  24. package/dist/app/ModalProvider.d.ts +13 -3
  25. package/dist/app/ModalProvider.js +103 -24
  26. package/dist/app/NoticeStack.d.ts +33 -0
  27. package/dist/app/NoticeStack.js +90 -0
  28. package/dist/app/index.d.ts +3 -2
  29. package/dist/app/index.js +3 -2
  30. package/dist/chat/SessionFilterMenu.d.ts +1 -1
  31. package/dist/chat/SessionFilterMenu.js +2 -1
  32. package/dist/chat/composer/Composer.js +10 -8
  33. package/dist/chat/composer/ModelChainList.js +17 -8
  34. package/dist/chat/composer/ModelChainTooltip.js +5 -2
  35. package/dist/chat/composer/use-draft-target.d.ts +20 -1
  36. package/dist/chat/composer/use-draft-target.js +121 -5
  37. package/dist/chat/composer/use-new-session-defaults.d.ts +5 -1
  38. package/dist/chat/composer/use-new-session-defaults.js +17 -4
  39. package/dist/chat/headless/chip-labels.d.ts +1 -0
  40. package/dist/chat/headless/chip-labels.js +1 -0
  41. package/dist/chat/headless/composer/labels-editor.d.ts +0 -2
  42. package/dist/chat/headless/composer/labels-editor.js +0 -2
  43. package/dist/chat/headless/draft-target.d.ts +21 -1
  44. package/dist/chat/headless/fixture-host.js +17 -2
  45. package/dist/chat/headless/host.d.ts +3 -3
  46. package/dist/chat/headless/index.d.ts +9 -9
  47. package/dist/chat/headless/index.js +2 -2
  48. package/dist/chat/headless/labels.d.ts +13 -6
  49. package/dist/chat/headless/labels.js +10 -9
  50. package/dist/chat/headless/session-list.d.ts +20 -8
  51. package/dist/chat/headless/session-list.js +1 -0
  52. package/dist/chat/headless/sidebar/directory.d.ts +56 -14
  53. package/dist/chat/headless/sidebar/directory.js +149 -70
  54. package/dist/chat/headless/sidebar/index.d.ts +3 -3
  55. package/dist/chat/headless/sidebar/index.js +2 -2
  56. package/dist/chat/headless/sidebar/labels.d.ts +15 -8
  57. package/dist/chat/headless/sidebar/types.d.ts +3 -1
  58. package/dist/chat/headless/sidebar/view.d.ts +13 -5
  59. package/dist/chat/headless/sidebar/view.js +31 -11
  60. package/dist/chat/headless/streams/actions.d.ts +5 -3
  61. package/dist/chat/headless/streams/actions.js +3 -2
  62. package/dist/chat/headless/streams/index.d.ts +3 -3
  63. package/dist/chat/headless/streams/merge.d.ts +6 -10
  64. package/dist/chat/headless/streams/merge.js +7 -21
  65. package/dist/chat/headless/streams/session-streams.d.ts +29 -4
  66. package/dist/chat/headless/streams/session-streams.js +86 -0
  67. package/dist/chat/headless/streams/store.d.ts +162 -16
  68. package/dist/chat/headless/streams/store.js +334 -38
  69. package/dist/chat/headless/streams/types.d.ts +10 -7
  70. package/dist/chat/headless/transcript-labels.d.ts +1 -0
  71. package/dist/chat/interactions/PlanCard.js +10 -3
  72. package/dist/chat/interactions/QuestionForm.js +7 -3
  73. package/dist/chat/interactions/card-ui.d.ts +5 -3
  74. package/dist/chat/interactions/card-ui.js +9 -7
  75. package/dist/chat/rich-composer/RichComposer.js +1 -7
  76. package/dist/chat/rich-composer/composer-extensions.d.ts +0 -2
  77. package/dist/chat/rich-composer/composer-extensions.js +2 -2
  78. package/dist/chat/rich-composer/use-composer-editor.d.ts +0 -2
  79. package/dist/chat/rich-composer/use-composer-editor.js +1 -2
  80. package/dist/chat/sidebar/SessionSidebar.js +5 -5
  81. package/dist/chat/sidebar/SidebarFilterMenu.js +3 -1
  82. package/dist/chat/sidebar/SidebarFrame.d.ts +4 -0
  83. package/dist/chat/sidebar/SidebarFrame.js +27 -9
  84. package/dist/chat/sidebar/SidebarGroupHeader.js +1 -1
  85. package/dist/chat/sidebar/SidebarHostProvider.d.ts +8 -5
  86. package/dist/chat/sidebar/SidebarHostProvider.js +13 -9
  87. package/dist/chat/sidebar/SidebarToggleButton.js +7 -3
  88. package/dist/chat/sidebar/index.d.ts +2 -2
  89. package/dist/chat/sidebar/session-menu.js +4 -4
  90. package/dist/chat/sidebar/useSaveViewAsSpace.js +2 -2
  91. package/dist/chat/testing/contract.js +2 -2
  92. package/dist/chat/transcript/AuthFailureCard.js +11 -8
  93. package/dist/chat/transcript/BadgeMenu.js +13 -2
  94. package/dist/chat/transcript/MermaidDiagram.js +7 -3
  95. package/dist/chat/transcript/fold.d.ts +4 -0
  96. package/dist/chat/transcript/fold.js +53 -22
  97. package/dist/chat/transcript/script-input.d.ts +1 -1
  98. package/dist/chat/transcript/shell-block.js +7 -3
  99. package/dist/chat/transcript/useStickToBottom.js +12 -0
  100. package/dist/components/BrowserSignIn.js +23 -21
  101. package/dist/components/Form.d.ts +6 -4
  102. package/dist/components/Form.js +16 -8
  103. package/dist/components/LoadError.d.ts +4 -2
  104. package/dist/components/LoadError.js +13 -9
  105. package/dist/components/Notice.d.ts +29 -0
  106. package/dist/components/Notice.js +63 -0
  107. package/dist/components/PanelEmpty.d.ts +1 -1
  108. package/dist/components/PanelEmpty.js +4 -2
  109. package/dist/components/Restricted.d.ts +1 -1
  110. package/dist/components/palette/PaletteList.js +8 -1
  111. package/dist/components/palette/PalettePanel.js +14 -6
  112. package/dist/core.css +24 -5
  113. package/dist/dist/{index-Bq87OcGy.d.ts → index-BZM8tu4L.d.ts} +28 -3
  114. package/dist/dist/index.d.ts +2 -2
  115. package/dist/dist/{timeout-B5pO5I5a.d.ts → timeout-Cyx3VGPz.d.ts} +1 -1
  116. package/dist/extensions/ExtensionSettingsPage.js +1 -4
  117. package/dist/extensions/ExtensionSettingsSection.js +4 -3
  118. package/dist/extensions/ExtensionSettingsSidebar.js +2 -6
  119. package/dist/extensions/SettingsWireForm.d.ts +1 -7
  120. package/dist/extensions/SettingsWireForm.js +7 -5
  121. package/dist/extensions/headless/fixture-host.d.ts +1 -5
  122. package/dist/extensions/headless/fixture-host.js +1 -4
  123. package/dist/extensions/headless/host.d.ts +1 -11
  124. package/dist/extensions/headless/index.d.ts +3 -3
  125. package/dist/extensions/headless/index.js +2 -2
  126. package/dist/extensions/headless/select.d.ts +1 -11
  127. package/dist/extensions/headless/select.js +1 -18
  128. package/dist/files/EditorColumn.js +12 -1
  129. package/dist/files/TreeColumn.js +13 -20
  130. package/dist/files/useOpenFiles.js +2 -0
  131. package/dist/git/BranchMenu.js +5 -3
  132. package/dist/git/ImportRepoDialog.js +18 -9
  133. package/dist/git/MoveSessionDialog.js +15 -7
  134. package/dist/git/RemoteFolderPicker.js +34 -16
  135. package/dist/git/SyncChip.js +17 -17
  136. package/dist/git/WherePicker.d.ts +16 -1
  137. package/dist/git/WherePicker.js +80 -36
  138. package/dist/git/headless/environment.d.ts +33 -3
  139. package/dist/git/headless/environment.js +33 -5
  140. package/dist/git/headless/index.d.ts +2 -2
  141. package/dist/git/headless/index.js +2 -2
  142. package/dist/git/headless/labels.d.ts +15 -2
  143. package/dist/git/headless/labels.js +17 -4
  144. package/dist/git/useEnvironmentChoices.d.ts +3 -1
  145. package/dist/git/useEnvironmentChoices.js +6 -3
  146. package/dist/index.d.ts +2 -1
  147. package/dist/index.js +2 -1
  148. package/dist/labels.d.ts +5 -0
  149. package/dist/labels.js +5 -0
  150. package/dist/machines/AddMachineDialog.d.ts +34 -0
  151. package/dist/machines/AddMachineDialog.js +464 -0
  152. package/dist/machines/Banners.d.ts +33 -4
  153. package/dist/machines/Banners.js +64 -3
  154. package/dist/machines/DaemonMenu.js +27 -4
  155. package/dist/machines/HostCapabilities.d.ts +1 -3
  156. package/dist/machines/HostCapabilities.js +24 -45
  157. package/dist/machines/HostSyncPanel.js +123 -129
  158. package/dist/machines/HostsSection.d.ts +4 -1
  159. package/dist/machines/HostsSection.js +30 -7
  160. package/dist/machines/MachinesExplainer.d.ts +17 -0
  161. package/dist/machines/MachinesExplainer.js +71 -0
  162. package/dist/machines/MachinesProvider.d.ts +14 -2
  163. package/dist/machines/MachinesProvider.js +35 -1
  164. package/dist/machines/ServerAddedCard.d.ts +31 -0
  165. package/dist/machines/ServerAddedCard.js +72 -0
  166. package/dist/machines/ServerCard.js +91 -215
  167. package/dist/machines/ServerMachinesPanel.d.ts +2 -2
  168. package/dist/machines/ServerMachinesPanel.js +184 -323
  169. package/dist/machines/ServerUpdatePanel.js +51 -40
  170. package/dist/machines/ShareThisComputerForm.d.ts +19 -0
  171. package/dist/machines/ShareThisComputerForm.js +133 -0
  172. package/dist/machines/TokensPanel.d.ts +5 -3
  173. package/dist/machines/TokensPanel.js +98 -78
  174. package/dist/machines/headless/fixture-host.d.ts +19 -3
  175. package/dist/machines/headless/fixture-host.js +42 -5
  176. package/dist/machines/headless/fixtures.js +4 -6
  177. package/dist/machines/headless/host.d.ts +40 -19
  178. package/dist/machines/headless/index.d.ts +3 -3
  179. package/dist/machines/headless/index.js +2 -2
  180. package/dist/machines/headless/labels.d.ts +63 -20
  181. package/dist/machines/headless/labels.js +88 -25
  182. package/dist/machines/headless/messages.js +8 -0
  183. package/dist/machines/headless/stores.d.ts +9 -2
  184. package/dist/machines/headless/stores.js +28 -1
  185. package/dist/machines/index.d.ts +7 -3
  186. package/dist/machines/index.js +8 -4
  187. package/dist/machines/testing/contract.d.ts +15 -3
  188. package/dist/machines/testing/contract.js +68 -14
  189. package/dist/motion/grow.d.ts +8 -1
  190. package/dist/motion/grow.js +10 -4
  191. package/dist/onboarding/demos/index.js +1 -1
  192. package/dist/onboarding/headless/labels.d.ts +13 -0
  193. package/dist/onboarding/headless/labels.js +8 -0
  194. package/dist/onboarding/index.js +3 -3
  195. package/dist/onboarding/sources/SourceBrowser.js +11 -7
  196. package/dist/onboarding/steps/ConnectorsStep.js +1 -1
  197. package/dist/onboarding/steps/ImportStep.js +4 -1
  198. package/dist/onboarding/steps/ReadyStep.js +9 -2
  199. package/dist/onboarding/steps/SkillsStep.js +1 -1
  200. package/dist/onboarding/steps/connect/KeyForm.js +6 -2
  201. package/dist/onboarding/steps/connect/ProviderPanel.js +6 -2
  202. package/dist/onboarding/steps/connect/ProviderReady.js +25 -20
  203. package/dist/onboarding/steps/tasks.js +17 -14
  204. package/dist/server/sse-handler.js +141 -19
  205. package/dist/session/ArtifactsPanel.js +39 -17
  206. package/dist/session/PlanTracker.js +12 -7
  207. package/dist/session/ProjectHome.js +13 -11
  208. package/dist/session/RemindersPanel.js +34 -16
  209. package/dist/session/RunningWorkDialog.js +6 -2
  210. package/dist/session/SecretsPanel.js +29 -10
  211. package/dist/session/SessionDetailsDialog.d.ts +1 -1
  212. package/dist/session/SessionDetailsDialog.js +18 -10
  213. package/dist/session/SideChat.js +10 -7
  214. package/dist/session/TurnDetailsDialog.js +19 -5
  215. package/dist/session/UsagePanel.js +10 -4
  216. package/dist/session/headless/host.d.ts +2 -0
  217. package/dist/session/headless/labels.d.ts +19 -1
  218. package/dist/session/headless/labels.js +15 -1
  219. package/dist/session/headless/queue.js +2 -1
  220. package/dist/session/headless/reminder-labels.d.ts +4 -0
  221. package/dist/session/headless/reminder-labels.js +4 -0
  222. package/dist/settings/SettingsRestricted.d.ts +1 -1
  223. package/dist/settings/SettingsRestricted.js +4 -4
  224. package/dist/settings/SettingsShell.d.ts +7 -0
  225. package/dist/settings/SettingsShell.js +6 -1
  226. package/dist/settings/headless/fixture-performance.d.ts +1 -1
  227. package/dist/settings/headless/host.d.ts +2 -2
  228. package/dist/settings/headless/labels.d.ts +3 -3
  229. package/dist/settings/headless/labels.js +3 -3
  230. package/dist/settings/headless/performance.d.ts +3 -4
  231. package/dist/settings/headless/search.d.ts +1 -1
  232. package/dist/settings/index.d.ts +2 -1
  233. package/dist/settings/index.js +2 -1
  234. package/dist/settings/sections/editor/EditorSection.js +7 -4
  235. package/dist/settings/sections/editor/labels.d.ts +1 -0
  236. package/dist/settings/sections/editor/labels.js +1 -0
  237. package/dist/settings/sections/environments/EnvironmentsSection.js +19 -12
  238. package/dist/settings/sections/environments/labels.d.ts +1 -0
  239. package/dist/settings/sections/environments/labels.js +2 -1
  240. package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +1 -3
  241. package/dist/settings/sections/extensions/ExtensionConfigRows.js +20 -19
  242. package/dist/settings/sections/extensions/ExtensionOptionsSection.js +2 -1
  243. package/dist/settings/sections/extensions/options-labels.d.ts +2 -1
  244. package/dist/settings/sections/extensions/options-labels.js +2 -1
  245. package/dist/settings/sections/index.d.ts +2 -1
  246. package/dist/settings/sections/index.js +2 -1
  247. package/dist/settings/sections/logs/LogsSection.d.ts +2 -2
  248. package/dist/settings/sections/logs/LogsSection.js +2 -2
  249. package/dist/settings/sections/mcp/McpSection.d.ts +1 -1
  250. package/dist/settings/sections/mcp/McpSection.js +12 -6
  251. package/dist/settings/sections/mcp/McpServerRow.js +20 -13
  252. package/dist/settings/sections/mcp/labels.d.ts +8 -2
  253. package/dist/settings/sections/mcp/labels.js +8 -2
  254. package/dist/settings/sections/models/ModelRows.js +1 -1
  255. package/dist/settings/sections/models/NewChatPlaceRow.d.ts +26 -0
  256. package/dist/settings/sections/models/NewChatPlaceRow.js +78 -0
  257. package/dist/settings/sections/models/SpacesDefaultsSection.js +15 -3
  258. package/dist/settings/sections/models/labels.d.ts +7 -0
  259. package/dist/settings/sections/models/labels.js +7 -0
  260. package/dist/settings/sections/models/model-test.js +7 -4
  261. package/dist/settings/sections/performance/PerformanceSection.js +16 -6
  262. package/dist/settings/sections/performance/labels.d.ts +1 -1
  263. package/dist/settings/sections/performance/labels.js +1 -1
  264. package/dist/settings/sections/providers/ProvidersSection.d.ts +1 -1
  265. package/dist/settings/sections/providers/ProvidersSection.js +14 -7
  266. package/dist/settings/sections/providers/ServerProvidersSection.d.ts +1 -1
  267. package/dist/settings/sections/providers/ServerProvidersSection.js +11 -5
  268. package/dist/settings/sections/providers/labels.d.ts +2 -2
  269. package/dist/settings/sections/providers/labels.js +2 -2
  270. package/dist/settings/sections/skills/SkillList.js +1 -1
  271. package/dist/settings/sections/skills/SkillsSection.js +1 -1
  272. package/dist/settings/testing/performance.contract.js +8 -12
  273. package/dist/styles.css +32 -3
  274. package/dist/terminal/HostTerminalSurface.js +15 -5
  275. package/dist/terminal/TerminalPanel.js +30 -17
  276. package/dist/terminal/TerminalSurface.js +11 -4
  277. package/dist/terminal/headless/labels.d.ts +5 -0
  278. package/dist/terminal/headless/labels.js +5 -0
  279. package/dist/terminal/headless/store.d.ts +1 -1
  280. package/dist/terminal/headless/store.js +6 -3
  281. package/dist/workspace/LayoutBudget.d.ts +5 -1
  282. package/dist/workspace/LayoutBudget.js +14 -1
  283. package/dist/workspace/PanelContentView.d.ts +1 -1
  284. package/dist/workspace/PanelContentView.js +17 -6
  285. package/dist/workspace/WorkspaceProvider.js +3 -2
  286. package/dist/workspace/headless/labels.d.ts +1 -0
  287. package/dist/workspace/headless/labels.js +1 -0
  288. package/package.json +3 -3
  289. package/src/styles/motion.css +8 -0
  290. package/src/styles/primitives.css +7 -0
@@ -5,21 +5,26 @@ import { useImportRepo } from "../../git/ImportRepoDialog.js";
5
5
  import { useEnvironmentChoices } from "../../git/useEnvironmentChoices.js";
6
6
  import { draftFolderPath, draftLocalFolder, recentHostFolders, recentLocalFolders } from "../headless/draft-target.js";
7
7
  import { useEffect, useMemo, useState } from "react";
8
- import { LOCAL_HOST_KEY } from "zidane/chat/pure";
8
+ import { LOCAL_HOST_KEY, placeEnvironmentKind, placeOfPick } from "zidane/chat/pure";
9
9
  //#region src/chat/composer/use-draft-target.ts
10
+ const OFFLINE_WAITS = { offlineWaits: true };
10
11
  /**
11
12
  * The new-chat draft's target, reset with the draft.
12
13
  *
13
14
  * @param options - The open session and the app's folder, sessions and servers.
14
15
  */
15
16
  function useDraftTarget(options) {
16
- const { session, defaultFolder, setDefaultFolder, sessions, servers, onLocalFolder, request } = options;
17
+ const { session, defaultFolder, setDefaultFolder, sessions, servers, onLocalFolder, request, place } = options;
17
18
  const isNewSession = session == null;
18
19
  const recentFolders = useMemo(() => recentLocalFolders(sessions), [sessions]);
19
20
  const [folderlessDraft, setFolderlessDraft] = useState(false);
20
21
  const [environment, setEnvironment] = useState(null);
21
22
  const [hostId, setHostId] = useState(LOCAL_HOST_KEY);
22
23
  const [remoteFolder, setRemoteFolder] = useState(null);
24
+ const [requestedMachineFolder, setRequestedMachineFolder] = useState(null);
25
+ const [appliedPlace, setAppliedPlace] = useState(null);
26
+ const [placeIssue, setPlaceIssue] = useState(null);
27
+ const [placeCheck, setPlaceCheck] = useState(null);
23
28
  const server = isNewSession && hostId !== LOCAL_HOST_KEY ? servers.find((host) => host.id === hostId) : void 0;
24
29
  const [error, setError] = useState(null);
25
30
  const sessionId = session?.id;
@@ -42,9 +47,39 @@ function useDraftTarget(options) {
42
47
  setEnvironment(null);
43
48
  setError(null);
44
49
  }
50
+ if (newSession) setAppliedPlace(null);
51
+ }
52
+ const placeSaved = !place || place.hostId === LOCAL_HOST_KEY || servers.some((host) => host.id === place.hostId);
53
+ const placeKey = `${place ? JSON.stringify(place) : ""}\u0000${placeSaved}`;
54
+ if (isNewSession && appliedPlace !== placeKey) {
55
+ setAppliedPlace(placeKey);
56
+ const target = place && placeSaved ? place.hostId : LOCAL_HOST_KEY;
57
+ const kind = place && placeSaved ? placeEnvironmentKind(place) : void 0;
58
+ setHostId(target);
59
+ setResetKeys((keys) => ({
60
+ ...keys,
61
+ hostId: target
62
+ }));
63
+ setEnvironment(kind ? {
64
+ kind,
65
+ branch: ""
66
+ } : null);
67
+ setRemoteFolder(target !== LOCAL_HOST_KEY && !place?.machine ? place?.folder ?? null : null);
68
+ setRequestedMachineFolder(kind && place?.machine && place.folder ? {
69
+ kind,
70
+ folder: place.folder
71
+ } : null);
72
+ setPlaceIssue(place && !placeSaved ? {
73
+ kind: "unsaved",
74
+ hostName: place.hostName ?? place.hostId,
75
+ ...place.hostUrl ? { hostUrl: place.hostUrl } : {}
76
+ } : null);
77
+ setPlaceCheck(target !== LOCAL_HOST_KEY && (place?.machine || place?.folder) ? {
78
+ ...place.machine ? { machine: place.machine } : {},
79
+ ...place.folder ? { folder: place.folder } : {}
80
+ } : null);
45
81
  }
46
82
  const [appliedRequest, setAppliedRequest] = useState(0);
47
- const [requestedMachineFolder, setRequestedMachineFolder] = useState(null);
48
83
  if (isNewSession && request && request.seq !== appliedRequest) {
49
84
  setAppliedRequest(request.seq);
50
85
  setHostId(request.hostId);
@@ -63,6 +98,8 @@ function useDraftTarget(options) {
63
98
  folder: request.machineFolder
64
99
  } : null);
65
100
  setError(null);
101
+ setPlaceCheck(null);
102
+ setPlaceIssue(null);
66
103
  }
67
104
  if (hostId !== LOCAL_HOST_KEY && !servers.some((host) => host.id === hostId)) setHostId(LOCAL_HOST_KEY);
68
105
  const folderState = {
@@ -72,7 +109,7 @@ function useDraftTarget(options) {
72
109
  defaultFolder
73
110
  };
74
111
  const folderPath = draftFolderPath(folderState);
75
- const environmentChoices = useEnvironmentChoices(isNewSession ? server ? remoteFolder ?? "" : folderPath ?? "" : null, server?.id);
112
+ const environmentChoices = useEnvironmentChoices(isNewSession ? server ? remoteFolder ?? "" : folderPath ?? "" : null, server?.id, OFFLINE_WAITS);
76
113
  const descriptor = isNewSession ? resolveDraftDescriptor(environmentChoices, environment) : void 0;
77
114
  const machine = descriptor?.machine;
78
115
  const [machineFolder, setMachineFolder] = useState(null);
@@ -85,6 +122,18 @@ function useDraftTarget(options) {
85
122
  setMachineFolder(requested?.folder ?? null);
86
123
  if (requested) setRequestedMachineFolder(null);
87
124
  }
125
+ if (isNewSession && placeCheck?.machine && server && environmentChoices.length > 0) {
126
+ if (!environmentChoices.some((d) => d.machine?.name === placeCheck.machine)) {
127
+ setEnvironment(null);
128
+ setRequestedMachineFolder(null);
129
+ setPlaceIssue({
130
+ kind: "machine-gone",
131
+ machine: placeCheck.machine,
132
+ hostName: server.name
133
+ });
134
+ setPlaceCheck(null);
135
+ } else if (!placeCheck.folder) setPlaceCheck(null);
136
+ }
88
137
  const localFolder = draftLocalFolder({
89
138
  ...folderState,
90
139
  onMachine: Boolean(machine)
@@ -125,6 +174,38 @@ function useDraftTarget(options) {
125
174
  };
126
175
  }, [rootKey, listFolders]);
127
176
  const remoteRootListing = rootKey && rootRead?.key === rootKey ? rootRead.root : null;
177
+ const checkHost = isNewSession && server && placeCheck?.folder && (!placeCheck.machine || machine) ? server.id : null;
178
+ const checkMachine = checkHost && placeCheck?.machine ? machine?.id ?? null : null;
179
+ const checkFolder = checkHost ? placeCheck?.folder ?? null : null;
180
+ useEffect(() => {
181
+ if (!checkHost || !checkFolder || !listFolders) return void 0;
182
+ let cancelled = false;
183
+ listFolders({
184
+ hostId: checkHost,
185
+ ...checkMachine ? { machineId: checkMachine } : {},
186
+ path: checkFolder
187
+ }).then((listed) => {
188
+ if (cancelled) return;
189
+ setPlaceCheck(null);
190
+ if (listed.ok) return;
191
+ if (checkMachine) setMachineFolder(null);
192
+ else setRemoteFolder(null);
193
+ setPlaceIssue({
194
+ kind: "folder-gone",
195
+ folder: checkFolder
196
+ });
197
+ }).catch(() => {
198
+ if (!cancelled) setPlaceCheck(null);
199
+ });
200
+ return () => {
201
+ cancelled = true;
202
+ };
203
+ }, [
204
+ checkHost,
205
+ checkMachine,
206
+ checkFolder,
207
+ listFolders
208
+ ]);
128
209
  const cloneSource = server && canClone && !folderlessDraft ? defaultFolder : null;
129
210
  const [originRead, setOriginRead] = useState(null);
130
211
  useEffect(() => {
@@ -148,7 +229,25 @@ function useDraftTarget(options) {
148
229
  const origin = cloneSource && originRead?.key === cloneSource ? originRead.origin : null;
149
230
  const remoteClone = remoteFolder === null && remoteRootListing && origin ? resolveRemoteClone(origin, remoteRootListing) : null;
150
231
  const [cloning, setCloning] = useState(false);
151
- const serverFolders = useMemo(() => server ? recentHostFolders(sessions, server.id) : [], [server, sessions]);
232
+ const serverId = server?.id;
233
+ const serverFolders = useMemo(() => serverId ? recentHostFolders(sessions, serverId) : [], [serverId, sessions]);
234
+ const serverName = server?.name;
235
+ const serverUrl = server?.url;
236
+ const pickedKind = descriptor?.kind;
237
+ const pickedFolder = machine ? machineFolder : server ? remoteFolder : folderPath;
238
+ const here = useMemo(() => placeOfPick({
239
+ hostId: serverId ?? LOCAL_HOST_KEY,
240
+ ...serverName ? { hostName: serverName } : {},
241
+ ...serverUrl ? { hostUrl: serverUrl } : {},
242
+ ...pickedKind ? { kind: pickedKind } : {},
243
+ folder: pickedFolder
244
+ }), [
245
+ serverId,
246
+ serverName,
247
+ serverUrl,
248
+ pickedKind,
249
+ pickedFolder
250
+ ]);
152
251
  const pickLocal = (folder) => {
153
252
  setFolderlessDraft(false);
154
253
  setDefaultFolder(folder);
@@ -171,6 +270,20 @@ function useDraftTarget(options) {
171
270
  },
172
271
  ...server ? { server } : {},
173
272
  setHostId,
273
+ setPlace: (nextHost, kind) => {
274
+ setError(null);
275
+ setEnvironment({
276
+ kind,
277
+ branch: ""
278
+ });
279
+ if (nextHost === hostId) return;
280
+ setHostId(nextHost);
281
+ setResetKeys((keys) => ({
282
+ ...keys,
283
+ hostId: nextHost
284
+ }));
285
+ setRemoteFolder(null);
286
+ },
174
287
  remoteFolder,
175
288
  setRemoteFolder,
176
289
  serverFolders,
@@ -189,6 +302,9 @@ function useDraftTarget(options) {
189
302
  machineFolder,
190
303
  setMachineFolder,
191
304
  machineHost,
305
+ placeIssue,
306
+ dismissPlaceIssue: () => setPlaceIssue(null),
307
+ here,
192
308
  error,
193
309
  setError
194
310
  };
@@ -1,5 +1,5 @@
1
1
  import { ModelPickRef } from "../headless/composer/models.js";
2
- import { SessionKnobs } from "zidane/chat/pure";
2
+ import { NewChatPlace, NewChatPlaceSource, SessionKnobs } from "zidane/chat/pure";
3
3
  import { Settings } from "zidane/chat";
4
4
  //#region src/chat/composer/use-new-session-defaults.d.ts
5
5
  /** Where the default model comes from. */
@@ -22,6 +22,10 @@ interface NewSessionDefaults {
22
22
  defaultAccount: string | null;
23
23
  /** Where the model comes from, `null` until resolved. */
24
24
  modelSource: NewSessionModelSource | null;
25
+ /** Where new chats start (the space's, else the global one); `null`: this computer. */
26
+ place: NewChatPlace | null;
27
+ /** Whose place {@link NewSessionDefaults.place} is. */
28
+ placeSource: NewChatPlaceSource | null;
25
29
  /** Sets the folder and remembers it (`null`: none, nothing remembered). */
26
30
  setDefaultFolder: (path: string | null) => void;
27
31
  /** Picks the agent for this chat (`null`: back to the space's). */
@@ -2,13 +2,15 @@ import { useComposerHost } from "./ComposerHostProvider.js";
2
2
  import { settledResource } from "../headless/composer/remember-model-pick.js";
3
3
  import { defaultModelPatch, rememberedDefaultModel } from "../headless/composer/new-session-defaults.js";
4
4
  import { useCallback, useEffect, useMemo, useState } from "react";
5
- import { DEFAULT_MODEL_PICK, defaultSessionAgent, defaultSessionKnobs, defaultSessionModel, formatModelSetting, parseModelSetting } from "zidane/chat/pure";
5
+ import { DEFAULT_MODEL_PICK, LOCAL_HOST_KEY, defaultSessionAgent, defaultSessionKnobs, defaultSessionModel, formatModelSetting, newChatPlace, parseModelSetting } from "zidane/chat/pure";
6
6
  //#region src/chat/composer/use-new-session-defaults.ts
7
7
  /**
8
8
  * What a new session starts with: the folder (the one last used,
9
9
  * `ComposerHost.folders`), the agent, the model pick and its knobs. The
10
10
  * space's settings preset wins; else the model the host remembers
11
- * (`ComposerHost.prefs`), else the built-in default.
11
+ * (`ComposerHost.prefs`), else the built-in default. Where it runs is the
12
+ * space's place, else the global one (`newChatPlace`); a place on this
13
+ * computer with a folder opens there instead of the folder last used.
12
14
  */
13
15
  const UNRESOLVED = {
14
16
  providerKey: null,
@@ -39,6 +41,15 @@ function useNewSessionDefaults(settings, spaceId) {
39
41
  const newSessionKnobs = useMemo(() => defaultSessionKnobs(settings, spaceId), [settings, spaceId]);
40
42
  const presetKey = preset ? formatModelSetting(preset) : null;
41
43
  const defaultAgentId = agentPick ?? defaultSessionAgent(settings, spaceId) ?? "build";
44
+ const resolvedPlace = useMemo(() => newChatPlace(settings, spaceId), [settings, spaceId]);
45
+ const placeKey = resolvedPlace ? JSON.stringify(resolvedPlace) : "";
46
+ const placed = useMemo(() => resolvedPlace ?? null, [placeKey]);
47
+ const placeFolder = placed?.place.hostId === LOCAL_HOST_KEY ? placed.place.folder ?? null : null;
48
+ const [shownPlaceFolder, setShownPlaceFolder] = useState(null);
49
+ if (placeFolder !== shownPlaceFolder) {
50
+ setShownPlaceFolder(placeFolder);
51
+ if (placeFolder) setDefaultFolderState(placeFolder);
52
+ }
42
53
  const presetModel = useMemo(() => {
43
54
  const parsed = parseModelSetting(presetKey ?? void 0);
44
55
  return parsed ? {
@@ -101,12 +112,12 @@ function useNewSessionDefaults(settings, spaceId) {
101
112
  if (!folders) return void 0;
102
113
  let cancelled = false;
103
114
  folders.lastUsed().then((last) => {
104
- if (!cancelled) setDefaultFolderState(last);
115
+ if (!cancelled && !placeFolder) setDefaultFolderState(last);
105
116
  }).catch(() => void 0);
106
117
  return () => {
107
118
  cancelled = true;
108
119
  };
109
- }, [folders]);
120
+ }, [folders, placeFolder]);
110
121
  useEffect(() => {
111
122
  if (!defaultFolder || !locationOf) return void 0;
112
123
  let cancelled = false;
@@ -133,6 +144,8 @@ function useNewSessionDefaults(settings, spaceId) {
133
144
  defaultModelId: model.modelId,
134
145
  defaultAccount: model.account,
135
146
  modelSource: model.source,
147
+ place: placed?.place ?? null,
148
+ placeSource: placed?.source ?? null,
136
149
  setDefaultFolder,
137
150
  setDefaultAgentId,
138
151
  setDefaultModel
@@ -33,6 +33,7 @@ declare const CHIP_LABELS: {
33
33
  interactionAnsweredBy: (who: string) => string;
34
34
  badgePathUnavailable: string;
35
35
  badgeNoComposer: string;
36
+ badgeActionFailed: string;
36
37
  badgeCopied: string;
37
38
  badgeOpenIn: (app: string) => string;
38
39
  badgeOpenInBrowserPane: string;
@@ -33,6 +33,7 @@ const CHIP_LABELS = {
33
33
  interactionAnsweredBy: (who) => `Answered by ${who}`,
34
34
  badgePathUnavailable: "Path unavailable.",
35
35
  badgeNoComposer: "No chat to add to here",
36
+ badgeActionFailed: "That action didn't work.",
36
37
  badgeCopied: "Copied",
37
38
  badgeOpenIn: (app) => `Open in ${app}`,
38
39
  badgeOpenInBrowserPane: "Open in browser pane"
@@ -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",
@@ -4,6 +4,26 @@
4
4
  * offers, the folder it is in, and when that folder makes the window's draft
5
5
  * scope. The app keeps the picks (they reset with the draft) and feeds them in.
6
6
  */
7
+ /**
8
+ * Why a new chat cannot start where its default place says. The draft shows it:
9
+ *
10
+ * - `unsaved`: the place names a server this device has not saved (settings synced from another device).
11
+ * The draft starts on this computer.
12
+ * - `machine-gone`: the machine is no longer one of the server's. The draft starts on the server itself.
13
+ * - `folder-gone`: the folder is not there any more. The draft starts in the usual folder.
14
+ */
15
+ type DraftPlaceIssue = {
16
+ kind: 'unsaved';
17
+ hostName: string;
18
+ hostUrl?: string;
19
+ } | {
20
+ kind: 'machine-gone';
21
+ machine: string;
22
+ hostName: string;
23
+ } | {
24
+ kind: 'folder-gone';
25
+ folder: string;
26
+ };
7
27
  /** A session row as {@link recentLocalFolders} reads it. */
8
28
  interface DraftFolderSource {
9
29
  /** The session's folder (`''`: none). */
@@ -55,4 +75,4 @@ declare function draftFolderPath(state: DraftFolderState): string | null;
55
75
  */
56
76
  declare function draftLocalFolder(state: DraftFolderState): string | null;
57
77
  //#endregion
58
- export { DraftFolderSource, DraftFolderState, draftFolderPath, draftLocalFolder, recentHostFolders, recentLocalFolders };
78
+ export { DraftFolderSource, DraftFolderState, DraftPlaceIssue, draftFolderPath, draftLocalFolder, recentHostFolders, recentLocalFolders };
@@ -29,8 +29,23 @@ function createFixtureHost(fixture, options = {}) {
29
29
  return t;
30
30
  };
31
31
  const changed = /* @__PURE__ */ new Set();
32
+ /** The session's row as `query` lists it, or its deletion. */
32
33
  const announce = (id) => {
33
- for (const listener of [...changed]) listener(id);
34
+ const session = list.get().find((s) => s.id === id);
35
+ const spaceId = spaceOf.get(id);
36
+ const change = session ? {
37
+ op: "update",
38
+ sessionId: id,
39
+ row: {
40
+ ...session,
41
+ cwd: session.group ?? "",
42
+ ...spaceId ? { spaceId } : {}
43
+ }
44
+ } : {
45
+ op: "delete",
46
+ sessionId: id
47
+ };
48
+ for (const listener of [...changed]) listener(change);
34
49
  };
35
50
  const patch = (id, change) => {
36
51
  list.set((all) => all.map((s) => s.id === id ? {
@@ -96,7 +111,7 @@ function createFixtureHost(fixture, options = {}) {
96
111
  },
97
112
  onChanged(listener) {
98
113
  changed.add(listener);
99
- return () => changed.delete(listener);
114
+ return () => void changed.delete(listener);
100
115
  },
101
116
  views: {
102
117
  getViews: async () => ({ ...views }),
@@ -1,7 +1,7 @@
1
1
  import { Readable } from "./store.js";
2
2
  import { SessionArchiveFilter, SidebarListSession } from "./sidebar/types.js";
3
3
  import { SidebarViewsHost } from "./sidebar/view.js";
4
- import { SessionRemoval } from "./sidebar/directory.js";
4
+ import { SessionRemoval, SessionRowChange } from "./sidebar/directory.js";
5
5
  import { ChatBadgeActions, ChatChipDetails, ChatPaths, ChatReferences, ChatSearchSync, ChatSiteIcons } from "./transcript-host.js";
6
6
  import { ChatBlockRuns } from "./block-runs.js";
7
7
  import { PromptSegmentRef } from "zidane/chat/pure";
@@ -211,8 +211,8 @@ interface ChatHost {
211
211
  search?(query: string, filter?: {
212
212
  archive?: SessionArchiveFilter;
213
213
  }): Promise<readonly SessionSearchHit[]>;
214
- /** Fires (possibly in bursts) with a session whose row changed: created, renamed, moved, archived, deleted. */
215
- onChanged?(listener: (sessionId: string) => void): () => void;
214
+ /** Fires with each session row change (created, renamed, moved, archived, run, deleted), its new row included. */
215
+ onChanged?(listener: (change: SessionRowChange<SidebarListSession>) => void): () => void;
216
216
  /**
217
217
  * Fires with a session's facets when extensions computed new ones (`sessions:facets`): every value, keyed
218
218
  * `<extensionId>.<key>`. Absent: facets change with the next read.
@@ -1,9 +1,9 @@
1
1
  import { Readable, Writable, constant, useReadable, writable } from "./store.js";
2
2
  import { SessionNotification, SessionNotificationStore, createNotificationStore } from "./sidebar/notifications.js";
3
3
  import { SessionActivityFilter, SessionArchiveFilter, SidebarExtensionView, SidebarGroupBy, SidebarListSession, SidebarOrigin, SidebarSortBy, SidebarView, VIEW_CHOICE } from "./sidebar/types.js";
4
- import { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SidebarLastSessions, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, SpaceSwitcherPrefs, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews } from "./sidebar/view.js";
4
+ import { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SIDEBAR_VIEW_VERSION, SidebarLastSessions, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, SpaceSwitcherPrefs, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews } from "./sidebar/view.js";
5
5
  import { AGENT_GROUPING, MAX_ROW_CHIPS, NO_SIDEBAR_CONTRIBUTIONS, SidebarContributionStores, SidebarContributions, SidebarGrouping, SidebarItemEntry, SidebarQueryLayer, SidebarRowChip, SidebarRowDecoration, SidebarSpace, claimChildSessions, clearedViewFilters, createDecorator, extensionSpaceOf, filterQueryOf, filtersForSpace, itemsForSpace, mergeSidebarSpaces, nextSavedViewName, resolveGrouping, resolveSort, sidebarContributionsOf, spaceMembership, switcherSpaces, viewFilterOf, viewFiltersOn } from "./sidebar/query.js";
6
- import { DirectoryServer, DirectorySettings, ProjectInSpace, SessionDirectory, SessionDirectoryOptions, SessionDirectorySource, SessionDirectoryState, SessionDirectoryStreams, SessionRef, SessionRemoval, availableProjectsOf, createSessionDirectory, filterDirectorySessions, projectKeyOf, sessionRefsOf } from "./sidebar/directory.js";
6
+ import { DirectoryServer, DirectorySettings, ProjectInSpace, RuntimeNow, RuntimeOrigin, SessionDirectory, SessionDirectoryOptions, SessionDirectorySource, SessionDirectoryState, SessionDirectoryStreams, SessionRef, SessionRemoval, SessionRowChange, availableProjectsOf, createSessionDirectory, filterDirectorySessions, projectKeyOf, sessionRefsOf } from "./sidebar/directory.js";
7
7
  import { ChatBadgeActions, ChatChipDetails, ChatCommandFacts, ChatCommit, ChatContextFacts, ChatPaths, ChatReferences, ChatReferencesChange, ChatResolvedPath, ChatSearchState, ChatSearchSync, ChatSessionFacts, ChatSiteIcons, ChatSkillFacts } from "./transcript-host.js";
8
8
  import { ChatBlockRunOptions, ChatBlockRunTransport, ChatBlockRuns, LIVE_BLOCK_RUN_LINES, LiveBlockRun, createChatBlockRuns } from "./block-runs.js";
9
9
  import { ChatAttachment, ChatAttachmentOriginal, ChatEvent, ChatHost, ChatInteraction, ChatModel, ChatModelProvider, ChatSession, ChatSessionStatus, SendInput, SessionSearchHit, Transcript, TranscriptState } from "./host.js";
@@ -19,6 +19,11 @@ import { ChatLabels, DEFAULT_CHAT_LABELS, secretExpiryWords } from "./labels.js"
19
19
  import { HostStatus, HostView, hostReachable, hostStatusLabel } from "./hosts.js";
20
20
  import { SessionBadgesEntry, SessionBadgesSource, SessionBadgesStore, createSessionBadges } from "./sidebar/badges.js";
21
21
  import { SessionWindowMode, SidebarEnvironmentHost, SidebarHost } from "./sidebar/host.js";
22
+ import { DeltaBucket, SMOOTH_TICK_MS, drainBucket, safeSurrogateSlice, tickBucket } from "./smooth-stream.js";
23
+ import { OtherStreamSignal, SessionFallbackModel, SessionPageState, SessionRetryState, SessionStreamPage, SessionStreamSignal } from "./streams/types.js";
24
+ import { DrainPlan } from "./streams/pacer.js";
25
+ import { FrameScheduler, defaultFrameScheduler } from "./streams/scheduler.js";
26
+ import { PendingEcho, SessionStreamStore, SessionStreamStoreOptions, SessionStreamWrite } from "./streams/store.js";
22
27
  import { ComposerMode, caretEffectivelyAtStart, composeSubmitText, decodeHistoryEntry, encodeHistoryDraft, exitsModeOnKey, modeForTypedChar, unsentDraft } from "./composer-modes.js";
23
28
  import { beginChipWork, chipWorkBusy, resetChipWorkForTests, whenChipsSettle } from "./chip-settle.js";
24
29
  import { commandRef, shortUrl, urlRefs } from "./badge-refs.js";
@@ -29,7 +34,6 @@ import { ChipViewLabels, commandName, commandView, commitView, sessionForToken,
29
34
  import { createSiteIcons, siteOrigin } from "./site-icons.js";
30
35
  import { CalendarOptions, ListableSession, PROJECT_GROUP_CAP, RELATIVE_TIME_DATE_AFTER_DAYS, SessionGroupBy, SessionListOptions, SessionListRow, SessionSortBy, buildSessionRows, compareSessions, dateBucket, filterSessions, formatElapsedShort, relativeTime } from "./session-list.js";
31
36
  import { CHUNK_THRESHOLD, OpenFence, openFenceOf, splitMarkdown, withoutPartialFence } from "./markdown-chunks.js";
32
- import { DeltaBucket, SMOOTH_TICK_MS, drainBucket, safeSurrogateSlice, tickBucket } from "./smooth-stream.js";
33
37
  import { PromptOrigin } from "./prompt-origin.js";
34
38
  import { BashExitMeta, Cluster, DotVariant, ExchangeFoldStats, GroupCluster, Owned, Row, SpawnMeta, ToolRowModel, firstRowId, parseBashExitMeta } from "./transcript/rows.js";
35
39
  import { collapseEvents, inheritRowIdentity, refusedSpawn, toolFailed } from "./transcript/collapse.js";
@@ -42,10 +46,6 @@ import { RunFailure, failureTooltip, markRunFailures } from "./transcript/run-fa
42
46
  import { AuthCardPlan, AuthFixes, AuthSettingsTarget, authFailureDetails, createAuthFixes, isAuthFixed, planAuthCard } from "./transcript/auth-failure.js";
43
47
  import { SelectStops, computeSelectStops, rowTurnIds, stopForRow } from "./transcript/select-stops.js";
44
48
  import "./transcript/index.js";
45
- import { FrameScheduler, defaultFrameScheduler } from "./streams/scheduler.js";
46
- import { OtherStreamSignal, SessionFallbackModel, SessionPageState, SessionRetryState, SessionStreamPage, SessionStreamSignal } from "./streams/types.js";
47
- import { DrainPlan } from "./streams/pacer.js";
48
- import { SessionStreamStore, SessionStreamStoreOptions, SessionStreamWrite } from "./streams/store.js";
49
49
  import { LoadEarlierOptions, SessionStreams, SessionStreamsOptions, createSessionStreams } from "./streams/session-streams.js";
50
50
  import { mergeLiveTail } from "./streams/merge.js";
51
51
  import { mergePromptPreviews, missingPreviewData } from "./streams/prompt-previews.js";
@@ -53,7 +53,7 @@ import { SessionStreamActions, createSessionStreamActions } from "./streams/acti
53
53
  import { selectEditEvents, stableSelection } from "./streams/selectors.js";
54
54
  import "./streams/index.js";
55
55
  import { NO_PROVIDER_ERROR, NewSessionDefaults, NewSessionRequest, SendAttachment, SendDraft, SendFlowDeps, SendPromptAttachment, SendRequest, newSessionRequest, promptAttachments, promptRefs, sendPrompt, shellCommandOf, wireOriginal } from "./send-flow.js";
56
- import { DraftFolderSource, DraftFolderState, draftFolderPath, draftLocalFolder, recentHostFolders, recentLocalFolders } from "./draft-target.js";
56
+ import { DraftFolderSource, DraftFolderState, DraftPlaceIssue, draftFolderPath, draftLocalFolder, recentHostFolders, recentLocalFolders } from "./draft-target.js";
57
57
  import { DraftScope, DraftScopeState, DraftScopeStore, DraftScopeStoreOptions, createDraftScopeStore, draftScopeOf } from "./draft-scope.js";
58
58
  import { TurnPromptDraft, promptDraftOf } from "./turn-prompt.js";
59
59
  import { DEFAULT_SIDEBAR_LABELS, SidebarLabels } from "./sidebar/labels.js";
@@ -79,4 +79,4 @@ import { EffortPickerTarget, defaultModelPatch, effortPickerTarget, rememberedDe
79
79
  import { ConversationBadge, ConversationBadgeData, ConversationBadgeInput, InboxSummary, MAX_EXTENSION_COMPOSER_BADGES, conversationBadges, resolveBadgePanel } from "./composer/conversation-badges.js";
80
80
  import { ModelNames, ModelNamesProvider, ModelNamesStore, createModelNames, modelNamesOf, namerFor } from "./composer/model-names.js";
81
81
  import "./composer/index.js";
82
- export { AGENT_GROUPING, type AuthCardPlan, type AuthFixes, type AuthSettingsTarget, type BashExitMeta, BuildQuerySidebarRowsOptions, BuildSidebarRowsOptions, CHATS_BUCKET, CHUNK_THRESHOLD, COMMON_EMOJI, CalendarOptions, ChatAttachment, ChatAttachmentOriginal, ChatBadgeActions, ChatBlockRunOptions, ChatBlockRunTransport, ChatBlockRuns, ChatChipDetails, ChatCommandFacts, ChatCommit, ChatContextFacts, ChatEvent, ChatHost, ChatInteraction, ChatLabels, ChatModel, ChatModelProvider, ChatPaths, ChatReferences, ChatReferencesChange, ChatResolvedPath, ChatSearchState, ChatSearchSync, ChatSession, ChatSessionFacts, ChatSessionStatus, ChatSiteIcons, ChatSkillFacts, ChipResolution, ChipViewLabels, type Cluster, type CommandArgSuggestionSummary, type CommandSummary, CompactionProgress, CompactionProgressStore, CompactionSignal, ComposerAgentProfile, ComposerAgents, ComposerAttachment, ComposerAutocomplete, ComposerCacheImpact, ComposerCacheImpactChange, ComposerChromeLabels, ComposerCommandArgs, ComposerCompletions, ComposerContext, ComposerContextBreakdown, ComposerContextStatus, ComposerControls, ComposerCostStatus, ComposerDraftAttachmentsListener, ComposerDrafts, ComposerEffort, ComposerExtensionItem, ComposerExtensionProvider, ComposerFolderLocation, ComposerFolders, ComposerHost, ComposerLabels, type ComposerListScope, type ComposerLists, ComposerMode, ComposerModelEntry, ComposerModelOption, ComposerModels, ComposerPrefs, ComposerPrefsState, ComposerPromptSuggestion, ComposerRememberedModel, ComposerRunProgress, ComposerRuns, ComposerScope, ComposerSessionView, ComposerSharedGhost, ComposerSuggestions, ConversationBadge, ConversationBadgeData, ConversationBadgeInput, DEFAULT_CHAT_LABELS, DEFAULT_COMPOSER_CHROME_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_MODEL_PICKER_PREFS, DEFAULT_SIDEBAR_LABELS, DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, DeltaBucket, DirectoryServer, DirectorySettings, DotStateInput, type DotVariant, DraftFolderSource, DraftFolderState, DraftScope, DraftScopeState, DraftScopeStore, DraftScopeStoreOptions, type DrainPlan, EMPTY_RUN_METER, EffortPickerTarget, type ExchangeFoldStats, FileChip, FileChipKind, type FileEntry, type FoldActionItem, type FoldActionState, type FrameScheduler, type GroupCluster, HostStatus, HostView, ImageModelRow, InboxSummary, LIVE_BLOCK_RUN_LINES, type LazyList, ListableSession, LiveBlockRun, LiveCostStatus, LiveStreamProgress, type LoadEarlierOptions, MAIN_SESSION_ICON_KEY, MAX_EXTENSION_COMPOSER_BADGES, MAX_ROW_CHIPS, MODEL_PICKER_STORAGE_KEY, ModelCatalogRow, ModelKnobs, ModelKnobsMemory, ModelKnobsStore, ModelNames, ModelNamesProvider, ModelNamesStore, ModelPickRef, ModelPickerPrefs, ModelPickerPrefsStorage, ModelPickerPrefsStore, NO_PROVIDER_ERROR, NO_SIDEBAR_CONTRIBUTIONS, NewSessionDefaults, NewSessionRequest, OpenFence, type OtherStreamSignal, type Owned, PINNED_PROJECTS_KEY, PROJECT_GROUP_CAP, PROJECT_ICONS_KEY, type PairingResult, PathResolver, PathResolverOptions, PinsBySpace, ProjectIcon, ProjectIconMap, ProjectInSpace, type PromptAttachment, type PromptOrigin, REFERENCES_STORAGE_KEY, RELATIVE_TIME_DATE_AFTER_DAYS, Readable, ReferenceStore, ReferenceStoreOptions, ReferenceViewEntry, type ResourceSnapshot, type Row, RunEstimatesRow, RunEstimatesSignal, RunEstimatesStore, type RunFailure, RunMeter, RunMeterRow, RunMeterSignal, RunMeterState, SESSION_HISTORY_LIMIT, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SMOOTH_TICK_MS, SecretTimeLeft, type SelectStops, SendAttachment, SendDraft, SendFlowDeps, SendInput, SendPromptAttachment, SendRequest, SessionActivity, SessionActivityFilter, SessionActivitySignal, SessionActivityStore, SessionArchiveFilter, SessionBadgesEntry, SessionBadgesSource, SessionBadgesStore, SessionDirectory, SessionDirectoryOptions, SessionDirectorySource, SessionDirectoryState, SessionDirectoryStreams, type SessionFallbackModel, SessionGroupBy, SessionHistory, SessionHistoryDirection, SessionHistoryOptions, SessionHistoryPage, SessionHistoryState, SessionHistoryStore, SessionListOptions, SessionListRow, SessionNotification, SessionNotificationStore, type SessionPageState, SessionRef, SessionRemoval, type SessionRetryState, SessionSearchHit, SessionSortBy, type SessionStreamActions, type SessionStreamPage, type SessionStreamSignal, SessionStreamStore, type SessionStreamStoreOptions, type SessionStreamWrite, type SessionStreams, type SessionStreamsOptions, SessionWindowMode, SetDefaultModel, SharedDraft, SharedDraftAttachmentsChange, SharedDraftChange, SidebarContributionStores, SidebarContributions, SidebarDotState, SidebarEnvironmentHost, SidebarExtensionView, SidebarGroupBy, SidebarGrouping, SidebarHost, SidebarItemEntry, SidebarLabels, SidebarLastSessions, SidebarListRow, SidebarListSession, SidebarNode, SidebarOrigin, SidebarQueryLayer, SidebarRowChip, SidebarRowDecoration, SidebarSortBy, SidebarSpace, SidebarView, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, type SkillConfig, SpaceSwitcherPrefs, type SpawnMeta, type ToolPairing, type ToolRowModel, Transcript, TranscriptState, TurnPromptDraft, VIEW_CHOICE, Writable, activityLabel, authFailureDetails, availableProjectsOf, batchThinkingRuns, batchToolRuns, beginChipWork, buildHostSidebarRows, buildQuerySidebarRows, buildSessionRows, buildSidebarRows, caretEffectivelyAtStart, chipForPath, chipWorkBusy, claimChildSessions, classifyInlineCode, clearedViewFilters, clusterByOwner, collapseEvents, commandName, commandRef, commandView, commitModelPick, commitView, compareSessions, composeLiveCost, composeSubmitText, computeSelectStops, constant, conversationBadges, createAuthFixes, createChatBlockRuns, createCompactionProgress, createComposerLists, createDecorator, createDraftScopeStore, createModelKnobs, createModelNames, createModelPickerPrefs, createNotificationStore, createPathResolver, createReferenceStore, createRunEstimates, createRunMeter, createSessionActivity, createSessionBadges, createSessionDirectory, createSessionHistory, createSessionStreamActions, createSessionStreams, createSidebarViews, createSiteIcons, dateBucket, decodeHistoryEntry, defaultFrameScheduler, defaultModelPatch, deleteSessionPrompt, deriveDotState, dockRunReceipts, dotVariantFor, draftFolderPath, draftLocalFolder, draftScopeOf, drainBucket, effortPickerTarget, encodeHistoryDraft, environmentKindLabel, environmentSummaryText, exitsModeOnKey, extensionSpaceOf, failureTooltip, filterDirectorySessions, filterQueryOf, filterSessions, filtersForSpace, findCommand, findLastStreamingRow, firstGrapheme, firstRowId, foldActionItems, foldExchanges, foldWorkerRows, formatElapsedShort, formatSessionCostLabel, groupsByFolder, hostReachable, hostStatusLabel, inheritRowIdentity, isAuthFixed, isProjectIcon, isProjectMember, itemRows, itemsForSpace, lastModelChainOf, markRunFailures, mergeLiveTail, mergePromptPreviews, mergeSidebarSpaces, missingPreviewData, modeForTypedChar, modelKnobsOf, modelNamesOf, namerFor, nestSidebarRows, nestToolCalls, nestedCallVisible, newSessionRequest, nextSavedViewName, openFenceOf, pairToolEvents, parseBashExitMeta, parseModelPickerPrefs, parsePinnedProjects, parseProjectIcons, parseSessionHistory, parseSidebarView, parseSwitcherPrefs, partitionMainSession, pickRunEstimate, pinSession, pinnedSessions, planAuthCard, positionSuffix, projectKeyOf, projectPathOf, promptAttachments, promptDraftOf, promptRefs, readSidebarViews, recentHostFolders, recentLocalFolders, reduceActivity, reduceCompaction, refusedSpawn, relativeTime, rememberableChain, rememberedDefaultModel, rememberedPick, repoGroups, resetChipWorkForTests, resolveBadgePanel, resolveChipPath, resolveGrouping, resolveSort, rowTurnIds, runsInRemoteSandbox, safeSurrogateSlice, secretExpiryWords, secretTimeLeft, secretTimeLeftIso, selectEditEvents, sendPrompt, sessionForToken, sessionRefsOf, sessionView, settledResource, shellCommandOf, shortUrl, sidebarContributionsOf, siteOrigin, skillName, skillView, spaceMembership, splitMarkdown, stableSelection, stopForRow, switcherSpaces, tickBucket, toolAction, toolFailed, unsentDraft, urlRefs, useReadable, viewFilterOf, viewFiltersOn, whenChipsSettle, wireAttachmentsToChat, wireOriginal, withPinnedProject, withoutPartialFence, writable };
82
+ export { AGENT_GROUPING, type AuthCardPlan, type AuthFixes, type AuthSettingsTarget, type BashExitMeta, BuildQuerySidebarRowsOptions, BuildSidebarRowsOptions, CHATS_BUCKET, CHUNK_THRESHOLD, COMMON_EMOJI, CalendarOptions, ChatAttachment, ChatAttachmentOriginal, ChatBadgeActions, ChatBlockRunOptions, ChatBlockRunTransport, ChatBlockRuns, ChatChipDetails, ChatCommandFacts, ChatCommit, ChatContextFacts, ChatEvent, ChatHost, ChatInteraction, ChatLabels, ChatModel, ChatModelProvider, ChatPaths, ChatReferences, ChatReferencesChange, ChatResolvedPath, ChatSearchState, ChatSearchSync, ChatSession, ChatSessionFacts, ChatSessionStatus, ChatSiteIcons, ChatSkillFacts, ChipResolution, ChipViewLabels, type Cluster, type CommandArgSuggestionSummary, type CommandSummary, CompactionProgress, CompactionProgressStore, CompactionSignal, ComposerAgentProfile, ComposerAgents, ComposerAttachment, ComposerAutocomplete, ComposerCacheImpact, ComposerCacheImpactChange, ComposerChromeLabels, ComposerCommandArgs, ComposerCompletions, ComposerContext, ComposerContextBreakdown, ComposerContextStatus, ComposerControls, ComposerCostStatus, ComposerDraftAttachmentsListener, ComposerDrafts, ComposerEffort, ComposerExtensionItem, ComposerExtensionProvider, ComposerFolderLocation, ComposerFolders, ComposerHost, ComposerLabels, type ComposerListScope, type ComposerLists, ComposerMode, ComposerModelEntry, ComposerModelOption, ComposerModels, ComposerPrefs, ComposerPrefsState, ComposerPromptSuggestion, ComposerRememberedModel, ComposerRunProgress, ComposerRuns, ComposerScope, ComposerSessionView, ComposerSharedGhost, ComposerSuggestions, ConversationBadge, ConversationBadgeData, ConversationBadgeInput, DEFAULT_CHAT_LABELS, DEFAULT_COMPOSER_CHROME_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_MODEL_PICKER_PREFS, DEFAULT_SIDEBAR_LABELS, DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, DeltaBucket, DirectoryServer, DirectorySettings, DotStateInput, type DotVariant, DraftFolderSource, DraftFolderState, DraftPlaceIssue, DraftScope, DraftScopeState, DraftScopeStore, DraftScopeStoreOptions, type DrainPlan, EMPTY_RUN_METER, EffortPickerTarget, type ExchangeFoldStats, FileChip, FileChipKind, type FileEntry, type FoldActionItem, type FoldActionState, type FrameScheduler, type GroupCluster, HostStatus, HostView, ImageModelRow, InboxSummary, LIVE_BLOCK_RUN_LINES, type LazyList, ListableSession, LiveBlockRun, LiveCostStatus, LiveStreamProgress, type LoadEarlierOptions, MAIN_SESSION_ICON_KEY, MAX_EXTENSION_COMPOSER_BADGES, MAX_ROW_CHIPS, MODEL_PICKER_STORAGE_KEY, ModelCatalogRow, ModelKnobs, ModelKnobsMemory, ModelKnobsStore, ModelNames, ModelNamesProvider, ModelNamesStore, ModelPickRef, ModelPickerPrefs, ModelPickerPrefsStorage, ModelPickerPrefsStore, NO_PROVIDER_ERROR, NO_SIDEBAR_CONTRIBUTIONS, NewSessionDefaults, NewSessionRequest, OpenFence, type OtherStreamSignal, type Owned, PINNED_PROJECTS_KEY, PROJECT_GROUP_CAP, PROJECT_ICONS_KEY, type PairingResult, PathResolver, PathResolverOptions, type PendingEcho, PinsBySpace, ProjectIcon, ProjectIconMap, ProjectInSpace, type PromptAttachment, type PromptOrigin, REFERENCES_STORAGE_KEY, RELATIVE_TIME_DATE_AFTER_DAYS, Readable, ReferenceStore, ReferenceStoreOptions, ReferenceViewEntry, type ResourceSnapshot, type Row, RunEstimatesRow, RunEstimatesSignal, RunEstimatesStore, type RunFailure, RunMeter, RunMeterRow, RunMeterSignal, RunMeterState, RuntimeNow, RuntimeOrigin, SESSION_HISTORY_LIMIT, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SIDEBAR_VIEW_VERSION, SMOOTH_TICK_MS, SecretTimeLeft, type SelectStops, SendAttachment, SendDraft, SendFlowDeps, SendInput, SendPromptAttachment, SendRequest, SessionActivity, SessionActivityFilter, SessionActivitySignal, SessionActivityStore, SessionArchiveFilter, SessionBadgesEntry, SessionBadgesSource, SessionBadgesStore, SessionDirectory, SessionDirectoryOptions, SessionDirectorySource, SessionDirectoryState, SessionDirectoryStreams, type SessionFallbackModel, SessionGroupBy, SessionHistory, SessionHistoryDirection, SessionHistoryOptions, SessionHistoryPage, SessionHistoryState, SessionHistoryStore, SessionListOptions, SessionListRow, SessionNotification, SessionNotificationStore, type SessionPageState, SessionRef, SessionRemoval, type SessionRetryState, SessionRowChange, SessionSearchHit, SessionSortBy, type SessionStreamActions, type SessionStreamPage, type SessionStreamSignal, SessionStreamStore, type SessionStreamStoreOptions, type SessionStreamWrite, type SessionStreams, type SessionStreamsOptions, SessionWindowMode, SetDefaultModel, SharedDraft, SharedDraftAttachmentsChange, SharedDraftChange, SidebarContributionStores, SidebarContributions, SidebarDotState, SidebarEnvironmentHost, SidebarExtensionView, SidebarGroupBy, SidebarGrouping, SidebarHost, SidebarItemEntry, SidebarLabels, SidebarLastSessions, SidebarListRow, SidebarListSession, SidebarNode, SidebarOrigin, SidebarQueryLayer, SidebarRowChip, SidebarRowDecoration, SidebarSortBy, SidebarSpace, SidebarView, SidebarViewMap, SidebarViewRecord, SidebarViews, SidebarViewsHost, SidebarViewsOptions, SidebarViewsStorage, type SkillConfig, SpaceSwitcherPrefs, type SpawnMeta, type ToolPairing, type ToolRowModel, Transcript, TranscriptState, TurnPromptDraft, VIEW_CHOICE, Writable, activityLabel, authFailureDetails, availableProjectsOf, batchThinkingRuns, batchToolRuns, beginChipWork, buildHostSidebarRows, buildQuerySidebarRows, buildSessionRows, buildSidebarRows, caretEffectivelyAtStart, chipForPath, chipWorkBusy, claimChildSessions, classifyInlineCode, clearedViewFilters, clusterByOwner, collapseEvents, commandName, commandRef, commandView, commitModelPick, commitView, compareSessions, composeLiveCost, composeSubmitText, computeSelectStops, constant, conversationBadges, createAuthFixes, createChatBlockRuns, createCompactionProgress, createComposerLists, createDecorator, createDraftScopeStore, createModelKnobs, createModelNames, createModelPickerPrefs, createNotificationStore, createPathResolver, createReferenceStore, createRunEstimates, createRunMeter, createSessionActivity, createSessionBadges, createSessionDirectory, createSessionHistory, createSessionStreamActions, createSessionStreams, createSidebarViews, createSiteIcons, dateBucket, decodeHistoryEntry, defaultFrameScheduler, defaultModelPatch, deleteSessionPrompt, deriveDotState, dockRunReceipts, dotVariantFor, draftFolderPath, draftLocalFolder, draftScopeOf, drainBucket, effortPickerTarget, encodeHistoryDraft, environmentKindLabel, environmentSummaryText, exitsModeOnKey, extensionSpaceOf, failureTooltip, filterDirectorySessions, filterQueryOf, filterSessions, filtersForSpace, findCommand, findLastStreamingRow, firstGrapheme, firstRowId, foldActionItems, foldExchanges, foldWorkerRows, formatElapsedShort, formatSessionCostLabel, groupsByFolder, hostReachable, hostStatusLabel, inheritRowIdentity, isAuthFixed, isProjectIcon, isProjectMember, itemRows, itemsForSpace, lastModelChainOf, markRunFailures, mergeLiveTail, mergePromptPreviews, mergeSidebarSpaces, missingPreviewData, modeForTypedChar, modelKnobsOf, modelNamesOf, namerFor, nestSidebarRows, nestToolCalls, nestedCallVisible, newSessionRequest, nextSavedViewName, openFenceOf, pairToolEvents, parseBashExitMeta, parseModelPickerPrefs, parsePinnedProjects, parseProjectIcons, parseSessionHistory, parseSidebarView, parseSwitcherPrefs, partitionMainSession, pickRunEstimate, pinSession, pinnedSessions, planAuthCard, positionSuffix, projectKeyOf, projectPathOf, promptAttachments, promptDraftOf, promptRefs, readSidebarViews, recentHostFolders, recentLocalFolders, reduceActivity, reduceCompaction, refusedSpawn, relativeTime, rememberableChain, rememberedDefaultModel, rememberedPick, repoGroups, resetChipWorkForTests, resolveBadgePanel, resolveChipPath, resolveGrouping, resolveSort, rowTurnIds, runsInRemoteSandbox, safeSurrogateSlice, secretExpiryWords, secretTimeLeft, secretTimeLeftIso, selectEditEvents, sendPrompt, sessionForToken, sessionRefsOf, sessionView, settledResource, shellCommandOf, shortUrl, sidebarContributionsOf, siteOrigin, skillName, skillView, spaceMembership, splitMarkdown, stableSelection, stopForRow, switcherSpaces, tickBucket, toolAction, toolFailed, unsentDraft, urlRefs, useReadable, viewFilterOf, viewFiltersOn, whenChipsSettle, wireAttachmentsToChat, wireOriginal, withPinnedProject, withoutPartialFence, writable };
@@ -57,7 +57,7 @@ import { PINNED_PROJECTS_KEY, parsePinnedProjects, withPinnedProject } from "./s
57
57
  import { activityLabel, createSessionActivity, reduceActivity } from "./sidebar/activity.js";
58
58
  import { createCompactionProgress, reduceCompaction } from "./sidebar/compaction.js";
59
59
  import { createSessionBadges } from "./sidebar/badges.js";
60
- import { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews } from "./sidebar/view.js";
60
+ import { DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SIDEBAR_VIEW_VERSION, createSidebarViews, parseSidebarView, parseSwitcherPrefs, readSidebarViews } from "./sidebar/view.js";
61
61
  import { SESSION_HISTORY_LIMIT, createSessionHistory, parseSessionHistory } from "./sidebar/history.js";
62
62
  import { createNotificationStore } from "./sidebar/notifications.js";
63
63
  import { AGENT_GROUPING, MAX_ROW_CHIPS, NO_SIDEBAR_CONTRIBUTIONS, claimChildSessions, clearedViewFilters, createDecorator, extensionSpaceOf, filterQueryOf, filtersForSpace, itemsForSpace, mergeSidebarSpaces, nextSavedViewName, resolveGrouping, resolveSort, sidebarContributionsOf, spaceMembership, switcherSpaces, viewFilterOf, viewFiltersOn } from "./sidebar/query.js";
@@ -65,4 +65,4 @@ import { availableProjectsOf, createSessionDirectory, filterDirectorySessions, p
65
65
  import { deriveDotState } from "./sidebar/dot-state.js";
66
66
  import { deleteSessionPrompt, environmentKindLabel, environmentSummaryText, runsInRemoteSandbox } from "./sidebar/environment.js";
67
67
  import { createComposerLists } from "./composer/composer-sources.js";
68
- export { AGENT_GROUPING, CHATS_BUCKET, CHUNK_THRESHOLD, COMMON_EMOJI, DEFAULT_CHAT_LABELS, DEFAULT_COMPOSER_CHROME_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_MODEL_PICKER_PREFS, DEFAULT_SIDEBAR_LABELS, DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, EMPTY_RUN_METER, LIVE_BLOCK_RUN_LINES, MAIN_SESSION_ICON_KEY, MAX_EXTENSION_COMPOSER_BADGES, MAX_ROW_CHIPS, MODEL_PICKER_STORAGE_KEY, NO_PROVIDER_ERROR, NO_SIDEBAR_CONTRIBUTIONS, PINNED_PROJECTS_KEY, PROJECT_GROUP_CAP, PROJECT_ICONS_KEY, REFERENCES_STORAGE_KEY, RELATIVE_TIME_DATE_AFTER_DAYS, SESSION_HISTORY_LIMIT, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SMOOTH_TICK_MS, SessionStreamStore, VIEW_CHOICE, activityLabel, authFailureDetails, availableProjectsOf, batchThinkingRuns, batchToolRuns, beginChipWork, buildHostSidebarRows, buildQuerySidebarRows, buildSessionRows, buildSidebarRows, caretEffectivelyAtStart, chipForPath, chipWorkBusy, claimChildSessions, classifyInlineCode, clearedViewFilters, clusterByOwner, collapseEvents, commandName, commandRef, commandView, commitModelPick, commitView, compareSessions, composeLiveCost, composeSubmitText, computeSelectStops, constant, conversationBadges, createAuthFixes, createChatBlockRuns, createCompactionProgress, createComposerLists, createDecorator, createDraftScopeStore, createModelKnobs, createModelNames, createModelPickerPrefs, createNotificationStore, createPathResolver, createReferenceStore, createRunEstimates, createRunMeter, createSessionActivity, createSessionBadges, createSessionDirectory, createSessionHistory, createSessionStreamActions, createSessionStreams, createSidebarViews, createSiteIcons, dateBucket, decodeHistoryEntry, defaultFrameScheduler, defaultModelPatch, deleteSessionPrompt, deriveDotState, dockRunReceipts, dotVariantFor, draftFolderPath, draftLocalFolder, draftScopeOf, drainBucket, effortPickerTarget, encodeHistoryDraft, environmentKindLabel, environmentSummaryText, exitsModeOnKey, extensionSpaceOf, failureTooltip, filterDirectorySessions, filterQueryOf, filterSessions, filtersForSpace, findCommand, findLastStreamingRow, firstGrapheme, firstRowId, foldActionItems, foldExchanges, foldWorkerRows, formatElapsedShort, formatSessionCostLabel, groupsByFolder, hostReachable, hostStatusLabel, inheritRowIdentity, isAuthFixed, isProjectIcon, isProjectMember, itemRows, itemsForSpace, lastModelChainOf, markRunFailures, mergeLiveTail, mergePromptPreviews, mergeSidebarSpaces, missingPreviewData, modeForTypedChar, modelKnobsOf, modelNamesOf, namerFor, nestSidebarRows, nestToolCalls, nestedCallVisible, newSessionRequest, nextSavedViewName, openFenceOf, pairToolEvents, parseBashExitMeta, parseModelPickerPrefs, parsePinnedProjects, parseProjectIcons, parseSessionHistory, parseSidebarView, parseSwitcherPrefs, partitionMainSession, pickRunEstimate, pinSession, pinnedSessions, planAuthCard, positionSuffix, projectKeyOf, projectPathOf, promptAttachments, promptDraftOf, promptRefs, readSidebarViews, recentHostFolders, recentLocalFolders, reduceActivity, reduceCompaction, refusedSpawn, relativeTime, rememberableChain, rememberedDefaultModel, rememberedPick, repoGroups, resetChipWorkForTests, resolveBadgePanel, resolveChipPath, resolveGrouping, resolveSort, rowTurnIds, runsInRemoteSandbox, safeSurrogateSlice, secretExpiryWords, secretTimeLeft, secretTimeLeftIso, selectEditEvents, sendPrompt, sessionForToken, sessionRefsOf, sessionView, settledResource, shellCommandOf, shortUrl, sidebarContributionsOf, siteOrigin, skillName, skillView, spaceMembership, splitMarkdown, stableSelection, stopForRow, switcherSpaces, tickBucket, toolAction, toolFailed, unsentDraft, urlRefs, useReadable, viewFilterOf, viewFiltersOn, whenChipsSettle, wireAttachmentsToChat, wireOriginal, withPinnedProject, withoutPartialFence, writable };
68
+ export { AGENT_GROUPING, CHATS_BUCKET, CHUNK_THRESHOLD, COMMON_EMOJI, DEFAULT_CHAT_LABELS, DEFAULT_COMPOSER_CHROME_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_MODEL_PICKER_PREFS, DEFAULT_SIDEBAR_LABELS, DEFAULT_SIDEBAR_VIEW, DEFAULT_SWITCHER_PREFS, EMPTY_RUN_METER, LIVE_BLOCK_RUN_LINES, MAIN_SESSION_ICON_KEY, MAX_EXTENSION_COMPOSER_BADGES, MAX_ROW_CHIPS, MODEL_PICKER_STORAGE_KEY, NO_PROVIDER_ERROR, NO_SIDEBAR_CONTRIBUTIONS, PINNED_PROJECTS_KEY, PROJECT_GROUP_CAP, PROJECT_ICONS_KEY, REFERENCES_STORAGE_KEY, RELATIVE_TIME_DATE_AFTER_DAYS, SESSION_HISTORY_LIMIT, SIDEBAR_SPACE_KEY, SIDEBAR_SWITCHER_KEY, SIDEBAR_VIEW_KEY, SIDEBAR_VIEW_VERSION, SMOOTH_TICK_MS, SessionStreamStore, VIEW_CHOICE, activityLabel, authFailureDetails, availableProjectsOf, batchThinkingRuns, batchToolRuns, beginChipWork, buildHostSidebarRows, buildQuerySidebarRows, buildSessionRows, buildSidebarRows, caretEffectivelyAtStart, chipForPath, chipWorkBusy, claimChildSessions, classifyInlineCode, clearedViewFilters, clusterByOwner, collapseEvents, commandName, commandRef, commandView, commitModelPick, commitView, compareSessions, composeLiveCost, composeSubmitText, computeSelectStops, constant, conversationBadges, createAuthFixes, createChatBlockRuns, createCompactionProgress, createComposerLists, createDecorator, createDraftScopeStore, createModelKnobs, createModelNames, createModelPickerPrefs, createNotificationStore, createPathResolver, createReferenceStore, createRunEstimates, createRunMeter, createSessionActivity, createSessionBadges, createSessionDirectory, createSessionHistory, createSessionStreamActions, createSessionStreams, createSidebarViews, createSiteIcons, dateBucket, decodeHistoryEntry, defaultFrameScheduler, defaultModelPatch, deleteSessionPrompt, deriveDotState, dockRunReceipts, dotVariantFor, draftFolderPath, draftLocalFolder, draftScopeOf, drainBucket, effortPickerTarget, encodeHistoryDraft, environmentKindLabel, environmentSummaryText, exitsModeOnKey, extensionSpaceOf, failureTooltip, filterDirectorySessions, filterQueryOf, filterSessions, filtersForSpace, findCommand, findLastStreamingRow, firstGrapheme, firstRowId, foldActionItems, foldExchanges, foldWorkerRows, formatElapsedShort, formatSessionCostLabel, groupsByFolder, hostReachable, hostStatusLabel, inheritRowIdentity, isAuthFixed, isProjectIcon, isProjectMember, itemRows, itemsForSpace, lastModelChainOf, markRunFailures, mergeLiveTail, mergePromptPreviews, mergeSidebarSpaces, missingPreviewData, modeForTypedChar, modelKnobsOf, modelNamesOf, namerFor, nestSidebarRows, nestToolCalls, nestedCallVisible, newSessionRequest, nextSavedViewName, openFenceOf, pairToolEvents, parseBashExitMeta, parseModelPickerPrefs, parsePinnedProjects, parseProjectIcons, parseSessionHistory, parseSidebarView, parseSwitcherPrefs, partitionMainSession, pickRunEstimate, pinSession, pinnedSessions, planAuthCard, positionSuffix, projectKeyOf, projectPathOf, promptAttachments, promptDraftOf, promptRefs, readSidebarViews, recentHostFolders, recentLocalFolders, reduceActivity, reduceCompaction, refusedSpawn, relativeTime, rememberableChain, rememberedDefaultModel, rememberedPick, repoGroups, resetChipWorkForTests, resolveBadgePanel, resolveChipPath, resolveGrouping, resolveSort, rowTurnIds, runsInRemoteSandbox, safeSurrogateSlice, secretExpiryWords, secretTimeLeft, secretTimeLeftIso, selectEditEvents, sendPrompt, sessionForToken, sessionRefsOf, sessionView, settledResource, shellCommandOf, shortUrl, sidebarContributionsOf, siteOrigin, skillName, skillView, spaceMembership, splitMarkdown, stableSelection, stopForRow, switcherSpaces, tickBucket, toolAction, toolFailed, unsentDraft, urlRefs, useReadable, viewFilterOf, viewFiltersOn, whenChipsSettle, wireAttachmentsToChat, wireOriginal, withPinnedProject, withoutPartialFence, writable };
@@ -99,7 +99,7 @@ declare const DEFAULT_CHAT_LABELS: {
99
99
  authSignedInRetrying: string;
100
100
  authFixed: string;
101
101
  authTryAgain: string;
102
- authFailed: (message: string) => string;
102
+ authSignInFailed: string;
103
103
  sessionEventLabel: (title: string, verb: string, needsAttention: boolean) => string;
104
104
  clickToAnswer: string;
105
105
  openSession: string;
@@ -160,7 +160,7 @@ declare const DEFAULT_CHAT_LABELS: {
160
160
  /** Copy button of a diagram frame. */
161
161
  copyDiagramSource: string;
162
162
  /** Under a fence that could not be drawn; `at` is `line 3, column 7` or empty. */
163
- diagramError: (message: string, at: string) => string;
163
+ diagramNotDrawn: (at: string) => string;
164
164
  /** Where a diagram error is. */
165
165
  diagramErrorAt: (line: number, column: number) => string;
166
166
  stopCommand: string;
@@ -190,7 +190,7 @@ declare const DEFAULT_CHAT_LABELS: {
190
190
  /** The output kept only its end. */
191
191
  blockRunTruncated: string;
192
192
  /** The panel when the block could not run. */
193
- blockRunFailed: (reason: string) => string;
193
+ blockRunError: string;
194
194
  /** After a failed run: it may have wanted input, which a terminal gives. */
195
195
  blockRunNeedsTerminal: string;
196
196
  working: string;
@@ -218,9 +218,8 @@ 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;
222
+ composerSendFailed: string;
224
223
  sendHint: string;
225
224
  stopRun: string;
226
225
  stopHint: string;
@@ -265,7 +264,7 @@ declare const DEFAULT_CHAT_LABELS: {
265
264
  modelsJumpToProvider: string;
266
265
  modelsJumpHint: (provider: string, digit: number | null) => string;
267
266
  modelsLoading: string;
268
- modelsLoadFailed: (error: string) => string;
267
+ modelsLoadError: string;
269
268
  modelsNoProviders: string;
270
269
  modelsNoMatch: (query: string) => string;
271
270
  modelsTypeAnId: string;
@@ -322,6 +321,7 @@ declare const DEFAULT_CHAT_LABELS: {
322
321
  inboxRecent: string;
323
322
  inboxPreviousSession: string;
324
323
  unsupportedInteraction: (tool: string) => string;
324
+ answerSendFailed: string;
325
325
  planRejectNote: string;
326
326
  planReviseNote: string;
327
327
  planRejectPlaceholder: string;
@@ -386,6 +386,7 @@ declare const DEFAULT_CHAT_LABELS: {
386
386
  filterSorts: {
387
387
  recency: string;
388
388
  createdTime: string;
389
+ lastUserMessage: string;
389
390
  alphabetical: string;
390
391
  };
391
392
  filterAllProjects: string;
@@ -477,6 +478,7 @@ declare const DEFAULT_CHAT_LABELS: {
477
478
  interactionAnsweredBy: (who: string) => string;
478
479
  badgePathUnavailable: string;
479
480
  badgeNoComposer: string;
481
+ badgeActionFailed: string;
480
482
  badgeCopied: string;
481
483
  badgeOpenIn: (app: string) => string;
482
484
  badgeOpenInBrowserPane: string;
@@ -512,6 +514,9 @@ declare const DEFAULT_CHAT_LABELS: {
512
514
  previous: string;
513
515
  next: string;
514
516
  loading: string;
517
+ noticeDetails: string;
518
+ noticeStack: string;
519
+ noticeDismiss: string;
515
520
  filePath: (path: string) => string;
516
521
  rename: string;
517
522
  current: string;
@@ -529,6 +534,7 @@ declare const DEFAULT_CHAT_LABELS: {
529
534
  modalBack: string;
530
535
  screenBack: (screen: string) => string;
531
536
  screenBackKey: string;
537
+ screenNavBack: (screen: string) => string;
532
538
  paletteLabel: string;
533
539
  paletteFilter: string;
534
540
  paletteBack: string;
@@ -592,6 +598,7 @@ declare const DEFAULT_CHAT_LABELS: {
592
598
  openInNewTab: string;
593
599
  terminal: string;
594
600
  terminalLoadFailed: (message: string) => string;
601
+ terminalStartFailed: string;
595
602
  terminalExited: (code: number) => string;
596
603
  };
597
604
  /** The shape of the chat label dictionary: every key of {@link DEFAULT_CHAT_LABELS}. Some values are functions that build a string. */