zidane-ui 9.1.13 → 9.1.14

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 (309) 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 +5 -16
  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 +24 -25
  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 +3 -3
  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/appearance/AppearanceProvider.js +2 -2
  31. package/dist/appearance/headless/index.js +1 -1
  32. package/dist/approvals/headless/index.js +2 -2
  33. package/dist/chat/SessionFilterMenu.d.ts +1 -1
  34. package/dist/chat/SessionFilterMenu.js +2 -1
  35. package/dist/chat/Transcript.js +1 -1
  36. package/dist/chat/composer/Composer.js +9 -6
  37. package/dist/chat/composer/ComposerEditor.js +1 -1
  38. package/dist/chat/composer/ConversationBadges.js +1 -1
  39. package/dist/chat/composer/ModelChainList.js +17 -8
  40. package/dist/chat/composer/ModelChainTooltip.js +5 -2
  41. package/dist/chat/composer/use-composer-stores.js +1 -1
  42. package/dist/chat/composer/use-draft-target.d.ts +20 -1
  43. package/dist/chat/composer/use-draft-target.js +122 -6
  44. package/dist/chat/composer/use-new-session-defaults.d.ts +5 -1
  45. package/dist/chat/composer/use-new-session-defaults.js +17 -4
  46. package/dist/chat/composer/use-run-meter.js +1 -1
  47. package/dist/chat/composer/use-send-prompt.js +1 -1
  48. package/dist/chat/headless/chip-labels.d.ts +1 -0
  49. package/dist/chat/headless/chip-labels.js +1 -0
  50. package/dist/chat/headless/composer/index.js +2 -2
  51. package/dist/chat/headless/draft-target.d.ts +21 -1
  52. package/dist/chat/headless/fixture-host.js +17 -2
  53. package/dist/chat/headless/host.d.ts +3 -3
  54. package/dist/chat/headless/index.d.ts +9 -9
  55. package/dist/chat/headless/index.js +15 -15
  56. package/dist/chat/headless/labels.d.ts +13 -4
  57. package/dist/chat/headless/labels.js +8 -5
  58. package/dist/chat/headless/session-list.d.ts +20 -6
  59. package/dist/chat/headless/session-list.js +1 -0
  60. package/dist/chat/headless/sidebar/directory.d.ts +56 -14
  61. package/dist/chat/headless/sidebar/directory.js +149 -70
  62. package/dist/chat/headless/sidebar/index.d.ts +3 -3
  63. package/dist/chat/headless/sidebar/index.js +3 -3
  64. package/dist/chat/headless/sidebar/labels.d.ts +15 -6
  65. package/dist/chat/headless/sidebar/types.d.ts +3 -1
  66. package/dist/chat/headless/sidebar/view.d.ts +13 -5
  67. package/dist/chat/headless/sidebar/view.js +31 -11
  68. package/dist/chat/headless/streams/actions.d.ts +5 -3
  69. package/dist/chat/headless/streams/actions.js +3 -2
  70. package/dist/chat/headless/streams/index.d.ts +3 -3
  71. package/dist/chat/headless/streams/merge.d.ts +6 -10
  72. package/dist/chat/headless/streams/merge.js +7 -21
  73. package/dist/chat/headless/streams/session-streams.d.ts +29 -4
  74. package/dist/chat/headless/streams/session-streams.js +86 -0
  75. package/dist/chat/headless/streams/store.d.ts +162 -16
  76. package/dist/chat/headless/streams/store.js +334 -38
  77. package/dist/chat/headless/streams/types.d.ts +10 -7
  78. package/dist/chat/headless/transcript-labels.d.ts +1 -0
  79. package/dist/chat/interactions/PlanCard.js +10 -3
  80. package/dist/chat/interactions/QuestionForm.js +7 -3
  81. package/dist/chat/interactions/card-ui.d.ts +5 -3
  82. package/dist/chat/interactions/card-ui.js +9 -7
  83. package/dist/chat/sidebar/SessionSidebar.js +5 -5
  84. package/dist/chat/sidebar/SidebarFilterMenu.js +3 -1
  85. package/dist/chat/sidebar/SidebarFrame.d.ts +4 -0
  86. package/dist/chat/sidebar/SidebarFrame.js +27 -9
  87. package/dist/chat/sidebar/SidebarGroupHeader.js +1 -1
  88. package/dist/chat/sidebar/SidebarHostProvider.d.ts +8 -5
  89. package/dist/chat/sidebar/SidebarHostProvider.js +13 -9
  90. package/dist/chat/sidebar/SidebarToggleButton.js +7 -3
  91. package/dist/chat/sidebar/index.d.ts +2 -2
  92. package/dist/chat/sidebar/session-menu.js +4 -4
  93. package/dist/chat/sidebar/useSaveViewAsSpace.js +2 -2
  94. package/dist/chat/testing/contract.js +2 -2
  95. package/dist/chat/transcript/AuthFailureCard.js +11 -8
  96. package/dist/chat/transcript/BadgeMenu.js +13 -2
  97. package/dist/chat/transcript/MermaidDiagram.js +7 -3
  98. package/dist/chat/transcript/fold.d.ts +4 -0
  99. package/dist/chat/transcript/fold.js +53 -22
  100. package/dist/chat/transcript/script-input.d.ts +1 -1
  101. package/dist/chat/transcript/shell-block.js +8 -4
  102. package/dist/chat/transcript/useStickToBottom.js +12 -0
  103. package/dist/components/BrowserSignIn.js +23 -21
  104. package/dist/components/Form.d.ts +6 -4
  105. package/dist/components/Form.js +16 -8
  106. package/dist/components/LoadError.d.ts +4 -2
  107. package/dist/components/LoadError.js +13 -9
  108. package/dist/components/Notice.d.ts +29 -0
  109. package/dist/components/Notice.js +63 -0
  110. package/dist/components/PanelEmpty.d.ts +1 -1
  111. package/dist/components/PanelEmpty.js +4 -2
  112. package/dist/components/Restricted.d.ts +1 -1
  113. package/dist/components/palette/PaletteList.js +8 -1
  114. package/dist/components/palette/PalettePanel.js +14 -6
  115. package/dist/core.css +24 -5
  116. package/dist/dist/{index-Bq87OcGy.d.ts → index-C6rzc-tt.d.ts} +28 -3
  117. package/dist/dist/index.d.ts +2 -2
  118. package/dist/dist/{timeout-B5pO5I5a.d.ts → timeout-Cz9dRF8Q.d.ts} +1 -1
  119. package/dist/extensions/ExtensionSettingsPage.js +2 -5
  120. package/dist/extensions/ExtensionSettingsSection.js +5 -4
  121. package/dist/extensions/ExtensionSettingsSidebar.js +3 -7
  122. package/dist/extensions/SettingsWireForm.d.ts +1 -7
  123. package/dist/extensions/SettingsWireForm.js +7 -5
  124. package/dist/extensions/headless/fixture-host.d.ts +1 -5
  125. package/dist/extensions/headless/fixture-host.js +2 -5
  126. package/dist/extensions/headless/host.d.ts +1 -11
  127. package/dist/extensions/headless/index.d.ts +3 -3
  128. package/dist/extensions/headless/index.js +6 -6
  129. package/dist/extensions/headless/select.d.ts +1 -11
  130. package/dist/extensions/headless/select.js +1 -18
  131. package/dist/extensions/hooks.js +1 -1
  132. package/dist/files/EditorColumn.js +13 -2
  133. package/dist/files/MediaDiff.js +1 -1
  134. package/dist/files/TreeColumn.js +13 -20
  135. package/dist/files/useEntryActions.js +1 -1
  136. package/dist/files/useOpenFiles.js +3 -1
  137. package/dist/git/BranchMenu.js +6 -4
  138. package/dist/git/ImportRepoDialog.js +18 -9
  139. package/dist/git/MoveSessionDialog.js +16 -8
  140. package/dist/git/RemoteFolderPicker.js +35 -17
  141. package/dist/git/SyncChip.js +17 -17
  142. package/dist/git/WherePicker.d.ts +16 -1
  143. package/dist/git/WherePicker.js +81 -37
  144. package/dist/git/headless/environment.d.ts +33 -3
  145. package/dist/git/headless/environment.js +33 -5
  146. package/dist/git/headless/index.d.ts +2 -2
  147. package/dist/git/headless/index.js +2 -2
  148. package/dist/git/headless/labels.d.ts +15 -2
  149. package/dist/git/headless/labels.js +17 -4
  150. package/dist/git/useEnvironmentChoices.d.ts +3 -1
  151. package/dist/git/useEnvironmentChoices.js +7 -4
  152. package/dist/index.d.ts +2 -1
  153. package/dist/index.js +2 -1
  154. package/dist/keybindings/KeyCommands.js +1 -1
  155. package/dist/keybindings/KeybindingsProvider.js +1 -1
  156. package/dist/keybindings/headless/index.js +2 -2
  157. package/dist/keybindings/headless/overrides.js +1 -1
  158. package/dist/labels.d.ts +5 -0
  159. package/dist/labels.js +5 -0
  160. package/dist/machines/AddMachineDialog.d.ts +34 -0
  161. package/dist/machines/AddMachineDialog.js +464 -0
  162. package/dist/machines/Banners.d.ts +33 -4
  163. package/dist/machines/Banners.js +64 -3
  164. package/dist/machines/DaemonMenu.js +27 -4
  165. package/dist/machines/HostCapabilities.d.ts +1 -3
  166. package/dist/machines/HostCapabilities.js +24 -45
  167. package/dist/machines/HostSyncPanel.js +124 -130
  168. package/dist/machines/HostsSection.d.ts +4 -1
  169. package/dist/machines/HostsSection.js +30 -7
  170. package/dist/machines/MachinesExplainer.d.ts +17 -0
  171. package/dist/machines/MachinesExplainer.js +71 -0
  172. package/dist/machines/MachinesProvider.d.ts +14 -2
  173. package/dist/machines/MachinesProvider.js +35 -1
  174. package/dist/machines/ServerAddedCard.d.ts +31 -0
  175. package/dist/machines/ServerAddedCard.js +72 -0
  176. package/dist/machines/ServerCard.js +91 -215
  177. package/dist/machines/ServerMachinesPanel.d.ts +2 -2
  178. package/dist/machines/ServerMachinesPanel.js +184 -323
  179. package/dist/machines/ServerUpdatePanel.js +51 -40
  180. package/dist/machines/ShareThisComputerForm.d.ts +19 -0
  181. package/dist/machines/ShareThisComputerForm.js +133 -0
  182. package/dist/machines/SyncOutcomeBadge.js +1 -1
  183. package/dist/machines/TokensPanel.d.ts +5 -3
  184. package/dist/machines/TokensPanel.js +98 -78
  185. package/dist/machines/headless/fixture-host.d.ts +19 -3
  186. package/dist/machines/headless/fixture-host.js +43 -6
  187. package/dist/machines/headless/fixtures.js +4 -6
  188. package/dist/machines/headless/host.d.ts +40 -19
  189. package/dist/machines/headless/index.d.ts +3 -3
  190. package/dist/machines/headless/index.js +3 -3
  191. package/dist/machines/headless/labels.d.ts +63 -20
  192. package/dist/machines/headless/labels.js +88 -25
  193. package/dist/machines/headless/messages.js +8 -0
  194. package/dist/machines/headless/stores.d.ts +9 -2
  195. package/dist/machines/headless/stores.js +28 -1
  196. package/dist/machines/index.d.ts +7 -3
  197. package/dist/machines/index.js +8 -4
  198. package/dist/machines/testing/contract.d.ts +15 -3
  199. package/dist/machines/testing/contract.js +68 -14
  200. package/dist/motion/grow.d.ts +8 -1
  201. package/dist/motion/grow.js +10 -4
  202. package/dist/onboarding/headless/labels.d.ts +13 -0
  203. package/dist/onboarding/headless/labels.js +8 -0
  204. package/dist/onboarding/sources/SourceBrowser.js +11 -7
  205. package/dist/onboarding/steps/ImportStep.js +4 -1
  206. package/dist/onboarding/steps/ReadyStep.js +9 -2
  207. package/dist/onboarding/steps/connect/KeyForm.js +6 -2
  208. package/dist/onboarding/steps/connect/ProviderPanel.js +6 -2
  209. package/dist/onboarding/steps/connect/ProviderReady.js +25 -20
  210. package/dist/onboarding/steps/tasks.js +17 -14
  211. package/dist/palette/app-sources.js +1 -1
  212. package/dist/server/sse-handler.js +141 -19
  213. package/dist/session/ArtifactsPanel.js +40 -18
  214. package/dist/session/PlanTracker.js +13 -8
  215. package/dist/session/ProjectHome.js +13 -11
  216. package/dist/session/RemindersPanel.js +35 -17
  217. package/dist/session/RunningWorkDialog.js +6 -2
  218. package/dist/session/SecretsPanel.js +29 -10
  219. package/dist/session/SessionDetailsDialog.d.ts +1 -1
  220. package/dist/session/SessionDetailsDialog.js +18 -10
  221. package/dist/session/SideChat.js +10 -7
  222. package/dist/session/TurnDetailsDialog.js +19 -5
  223. package/dist/session/UsagePanel.js +10 -4
  224. package/dist/session/headless/host.d.ts +2 -0
  225. package/dist/session/headless/index.js +2 -2
  226. package/dist/session/headless/labels.d.ts +19 -1
  227. package/dist/session/headless/labels.js +15 -1
  228. package/dist/session/headless/queue.js +2 -1
  229. package/dist/session/headless/reminder-labels.d.ts +4 -0
  230. package/dist/session/headless/reminder-labels.js +4 -0
  231. package/dist/settings/SettingsRestricted.d.ts +1 -1
  232. package/dist/settings/SettingsRestricted.js +4 -4
  233. package/dist/settings/SettingsShell.d.ts +7 -0
  234. package/dist/settings/SettingsShell.js +6 -1
  235. package/dist/settings/headless/fixture-performance.d.ts +1 -1
  236. package/dist/settings/headless/host.d.ts +2 -2
  237. package/dist/settings/headless/index.js +1 -1
  238. package/dist/settings/headless/labels.d.ts +3 -3
  239. package/dist/settings/headless/labels.js +3 -3
  240. package/dist/settings/headless/performance.d.ts +3 -4
  241. package/dist/settings/headless/search.d.ts +1 -1
  242. package/dist/settings/index.d.ts +2 -1
  243. package/dist/settings/index.js +2 -1
  244. package/dist/settings/sections/appearance/AppearanceSection.js +2 -2
  245. package/dist/settings/sections/claude-import/ClaudeImportDialog.js +1 -1
  246. package/dist/settings/sections/editor/EditorSection.js +8 -5
  247. package/dist/settings/sections/editor/labels.d.ts +1 -0
  248. package/dist/settings/sections/editor/labels.js +1 -0
  249. package/dist/settings/sections/environments/EnvironmentsSection.js +21 -14
  250. package/dist/settings/sections/environments/labels.d.ts +1 -0
  251. package/dist/settings/sections/environments/labels.js +2 -1
  252. package/dist/settings/sections/extensions/ChangeOriginDialog.js +1 -1
  253. package/dist/settings/sections/extensions/CreateExtensionDialog.js +1 -1
  254. package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +1 -3
  255. package/dist/settings/sections/extensions/ExtensionConfigRows.js +20 -19
  256. package/dist/settings/sections/extensions/ExtensionOptionsSection.js +2 -1
  257. package/dist/settings/sections/extensions/ExtensionsSection.js +1 -1
  258. package/dist/settings/sections/extensions/options-labels.d.ts +2 -1
  259. package/dist/settings/sections/extensions/options-labels.js +2 -1
  260. package/dist/settings/sections/host-catalog/HostCatalogSection.js +1 -1
  261. package/dist/settings/sections/index.d.ts +2 -1
  262. package/dist/settings/sections/index.js +2 -1
  263. package/dist/settings/sections/instructions/InstructionsSection.js +1 -1
  264. package/dist/settings/sections/logs/LogsSection.d.ts +2 -2
  265. package/dist/settings/sections/logs/LogsSection.js +2 -2
  266. package/dist/settings/sections/mcp/McpSection.d.ts +1 -1
  267. package/dist/settings/sections/mcp/McpSection.js +13 -7
  268. package/dist/settings/sections/mcp/McpServerRow.js +21 -14
  269. package/dist/settings/sections/mcp/labels.d.ts +8 -2
  270. package/dist/settings/sections/mcp/labels.js +8 -2
  271. package/dist/settings/sections/models/ModelRows.js +1 -1
  272. package/dist/settings/sections/models/NewChatPlaceRow.d.ts +26 -0
  273. package/dist/settings/sections/models/NewChatPlaceRow.js +78 -0
  274. package/dist/settings/sections/models/SpacesDefaultsSection.js +15 -3
  275. package/dist/settings/sections/models/labels.d.ts +7 -0
  276. package/dist/settings/sections/models/labels.js +7 -0
  277. package/dist/settings/sections/models/model-test.js +7 -4
  278. package/dist/settings/sections/performance/PerformanceSection.js +16 -6
  279. package/dist/settings/sections/performance/labels.d.ts +1 -1
  280. package/dist/settings/sections/performance/labels.js +1 -1
  281. package/dist/settings/sections/providers/ProvidersSection.d.ts +1 -1
  282. package/dist/settings/sections/providers/ProvidersSection.js +15 -8
  283. package/dist/settings/sections/providers/ServerProvidersSection.d.ts +1 -1
  284. package/dist/settings/sections/providers/ServerProvidersSection.js +12 -6
  285. package/dist/settings/sections/providers/labels.d.ts +2 -2
  286. package/dist/settings/sections/providers/labels.js +2 -2
  287. package/dist/settings/sections/shared/catalog.js +1 -1
  288. package/dist/settings/sections/skills/SkillsSection.js +1 -1
  289. package/dist/settings/testing/performance.contract.js +8 -12
  290. package/dist/styles.css +32 -3
  291. package/dist/terminal/HostTerminalSurface.js +17 -7
  292. package/dist/terminal/TerminalPanel.js +30 -17
  293. package/dist/terminal/TerminalSurface.js +11 -4
  294. package/dist/terminal/headless/labels.d.ts +5 -0
  295. package/dist/terminal/headless/labels.js +5 -0
  296. package/dist/terminal/headless/store.d.ts +1 -1
  297. package/dist/terminal/headless/store.js +6 -3
  298. package/dist/workspace/LayoutBudget.d.ts +5 -1
  299. package/dist/workspace/LayoutBudget.js +14 -1
  300. package/dist/workspace/PanelContentView.d.ts +1 -1
  301. package/dist/workspace/PanelContentView.js +17 -6
  302. package/dist/workspace/WorkspaceProvider.js +4 -3
  303. package/dist/workspace/extension-tabs.js +1 -1
  304. package/dist/workspace/headless/index.js +1 -1
  305. package/dist/workspace/headless/labels.d.ts +1 -0
  306. package/dist/workspace/headless/labels.js +1 -0
  307. package/package.json +3 -3
  308. package/src/styles/motion.css +8 -0
  309. package/src/styles/primitives.css +7 -0
@@ -1,25 +1,30 @@
1
- import { resolveDraftDescriptor } from "../../git/headless/environment.js";
2
1
  import { useGitHost } from "../../git/GitProvider.js";
2
+ import { resolveDraftDescriptor } from "../../git/headless/environment.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";
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
@@ -1,5 +1,5 @@
1
- import { EMPTY_RUN_METER } from "../headless/composer/run-meter.js";
2
1
  import { useComposerHost } from "./ComposerHostProvider.js";
2
+ import { EMPTY_RUN_METER } from "../headless/composer/run-meter.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";
2
1
  import { useChatHost } from "../ChatProvider.js";
3
2
  import { useComposerHost, useComposerLabels } from "./ComposerHostProvider.js";
4
3
  import { useGitHost } from "../../git/GitProvider.js";
5
4
  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";
@@ -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"
@@ -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";
3
1
  import { DEFAULT_COMPOSER_CHROME_LABELS } from "./labels-chrome.js";
4
2
  import { DEFAULT_COMPOSER_LABELS } from "./labels.js";
5
3
  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";
@@ -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 };
@@ -1,16 +1,4 @@
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";
14
2
  import { DEFAULT_COMPOSER_CHROME_LABELS } from "./composer/labels-chrome.js";
15
3
  import { DEFAULT_COMPOSER_LABELS } from "./composer/labels.js";
16
4
  import { DEFAULT_CHAT_LABELS, secretExpiryWords } from "./labels.js";
@@ -24,6 +12,18 @@ import { beginChipWork, chipWorkBusy, resetChipWorkForTests, whenChipsSettle } f
24
12
  import { createPathResolver } from "./path-resolver.js";
25
13
  import { REFERENCES_STORAGE_KEY, createReferenceStore } from "./reference-store.js";
26
14
  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";
49
50
  import { COMMON_EMOJI, MAIN_SESSION_ICON_KEY, PROJECT_ICONS_KEY, firstGrapheme, isProjectIcon, parseProjectIcons } from "./sidebar/project-icons.js";
50
51
  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";
@@ -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 };