@mcp-b/react-components 0.51.1 → 0.52.0

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 (198) hide show
  1. package/dist/{CodeBlock-BMK6CW9D.js → CodeBlock-Bl-q7wMc.js} +2 -1
  2. package/dist/{CodeBlock--r6GS8YV.d.ts → CodeBlock-DJ99TQWy.d.ts} +1 -1
  3. package/dist/EmployeeChrome-C8eTGJWn.d.ts +231 -0
  4. package/dist/{FileTree-okaLnS5j.js → FileTree-DruTQ-oa.js} +1 -1
  5. package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
  6. package/dist/{ManagerOffice-5pEFpoV3.js → ManagerOffice-CMJ7laGe.js} +17 -12
  7. package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
  8. package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
  9. package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
  10. package/dist/{SetupChecklist-O6qmgwz4.js → SetupChecklist-BiWQkKEq.js} +6 -5
  11. package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
  12. package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
  13. package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
  14. package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
  15. package/dist/{WorkspaceFileView-ncZuIWhC.js → WorkspaceFileView-DXgTljKV.js} +3 -2
  16. package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
  17. package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
  18. package/dist/assets/sigvelo-logo.svg +54 -0
  19. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  20. package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
  21. package/dist/components/agents-sdk/AgentChat.js +12 -16
  22. package/dist/components/agents-sdk/AgentEvent.js +2 -2
  23. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +2 -1
  24. package/dist/components/agents-sdk/BrowserLiveScreen.js +9 -1
  25. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  26. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  27. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  28. package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
  29. package/dist/components/agents-sdk/EmployeeApp.js +47 -34
  30. package/dist/components/agents-sdk/EmployeeChat.d.ts +28 -8
  31. package/dist/components/agents-sdk/EmployeeChat.js +33 -5
  32. package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
  33. package/dist/components/agents-sdk/EmployeeChrome.js +106 -107
  34. package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
  35. package/dist/components/agents-sdk/EmployeeSchedules.js +3 -4
  36. package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
  37. package/dist/components/agents-sdk/EmployeeStartScreen.js +23 -16
  38. package/dist/components/agents-sdk/ManagerAccountActions.js +3 -4
  39. package/dist/components/agents-sdk/ManagerOffice.js +1 -2
  40. package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
  41. package/dist/components/agents-sdk/ManagerOfficeScreens.js +30 -13
  42. package/dist/components/agents-sdk/McpConnectionRequest.js +2 -2
  43. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  44. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
  45. package/dist/components/agents-sdk/McpPluginCatalog.js +6 -6
  46. package/dist/components/agents-sdk/McpServerPicker.js +5 -5
  47. package/dist/components/agents-sdk/ModelEndpointDialog.js +1 -1
  48. package/dist/components/agents-sdk/ModelSelector.js +4 -4
  49. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  50. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  51. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  52. package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
  53. package/dist/components/agents-sdk/SubagentRunPanel.js +67 -47
  54. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  55. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  56. package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
  57. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  58. package/dist/components/agents-sdk/ThinkExecutionDetail.js +2 -2
  59. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  60. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +7 -14
  61. package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
  62. package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
  63. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineActions.js +2 -2
  65. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +2 -2
  66. package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
  67. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  68. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
  69. package/dist/components/agents-sdk/ThinkThreadPicker.js +33 -20
  70. package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
  71. package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
  72. package/dist/components/agents-sdk/Workspace.d.ts +1 -1
  73. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  74. package/dist/components/agents-sdk/WorkspaceBrowser.js +3 -1
  75. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
  76. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +6 -6
  77. package/dist/components/agents-sdk/WorkspaceExecution.js +13 -10
  78. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
  79. package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
  80. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  81. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  82. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  83. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  84. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
  85. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  86. package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
  87. package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
  88. package/dist/components/agents-sdk/WorkspaceProject.js +7 -5
  89. package/dist/components/agents-sdk/WorkspaceUserScript.js +7 -5
  90. package/dist/components/ai-sdk/Activity.js +1 -1
  91. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  92. package/dist/components/ai-sdk/Approval.js +2 -2
  93. package/dist/components/ai-sdk/Artifact.d.ts +1 -1
  94. package/dist/components/ai-sdk/Artifact.js +1 -1
  95. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  96. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  97. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  98. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  99. package/dist/components/ai-sdk/ComposerLink.js +1 -1
  100. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  101. package/dist/components/ai-sdk/Context.js +1 -1
  102. package/dist/components/ai-sdk/Conversation.d.ts +1 -1
  103. package/dist/components/ai-sdk/Conversation.js +1 -1
  104. package/dist/components/ai-sdk/Goal.js +1 -1
  105. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  106. package/dist/components/ai-sdk/Message.d.ts +1 -1
  107. package/dist/components/ai-sdk/Message.js +2 -2
  108. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  109. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  110. package/dist/components/ai-sdk/Plan.js +1 -1
  111. package/dist/components/ai-sdk/PromptInput.js +7 -7
  112. package/dist/components/ai-sdk/Queue.js +1 -1
  113. package/dist/components/ai-sdk/Reasoning.js +1 -1
  114. package/dist/components/ai-sdk/Sources.js +1 -1
  115. package/dist/components/ai-sdk/Task.js +1 -1
  116. package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
  117. package/dist/components/extension/ChatGptSignInScreen.js +61 -186
  118. package/dist/components/extension/CodexModelSelector.js +4 -8
  119. package/dist/components/extension/ConversationTabPicker.js +2 -2
  120. package/dist/components/foundations/Checkbox.js +1 -1
  121. package/dist/components/foundations/Collapsible.js +1 -1
  122. package/dist/components/foundations/ContextMenu.js +1 -1
  123. package/dist/components/foundations/IconButton.d.ts +1 -1
  124. package/dist/components/foundations/IconButton.js +7 -4
  125. package/dist/components/foundations/Menubar.js +1 -1
  126. package/dist/components/foundations/SearchField.js +1 -1
  127. package/dist/components/foundations/Select.js +1 -1
  128. package/dist/components/foundations/Stepper.js +1 -1
  129. package/dist/components/foundations/Toast.js +1 -1
  130. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  131. package/dist/components/foundations/ToggleGroup.js +1 -1
  132. package/dist/components/foundations/icons.js +1 -1
  133. package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
  134. package/dist/components/general-purpose/AccountSignInDialog.js +13 -5
  135. package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
  136. package/dist/components/general-purpose/BrandLoading.js +25 -0
  137. package/dist/components/general-purpose/Commit.d.ts +1 -1
  138. package/dist/components/general-purpose/Commit.js +2 -2
  139. package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
  140. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  141. package/dist/components/general-purpose/FileTree.js +1 -1
  142. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  143. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  144. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  145. package/dist/components/general-purpose/ResponsiveSidebarShell.js +59 -27
  146. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  147. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  148. package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
  149. package/dist/components/general-purpose/StatusScreen.js +27 -3
  150. package/dist/components/general-purpose/Terminal.d.ts +2 -2
  151. package/dist/components/general-purpose/Terminal.js +2 -2
  152. package/dist/components/general-purpose/TestResults.js +1 -1
  153. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  154. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  155. package/dist/components/general-purpose/WebPreview.js +2 -2
  156. package/dist/components/nanites/AgentConnection.js +2 -2
  157. package/dist/components/nanites/AgentToolDetail.js +5 -5
  158. package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
  159. package/dist/{copy-button-Dk2vRe9j.js → copy-button-CSDuDfdP.js} +1 -1
  160. package/dist/styles/activity.css +2 -2
  161. package/dist/styles/agent-chat.css +6 -105
  162. package/dist/styles/app-root.css +9 -0
  163. package/dist/styles/app-top-bar.css +10 -4
  164. package/dist/styles/avatar.css +2 -2
  165. package/dist/styles/base.css +6 -2
  166. package/dist/styles/brand-loading.css +58 -0
  167. package/dist/styles/brand.test.ts +158 -0
  168. package/dist/styles/browser-control-overlay.css +22 -0
  169. package/dist/styles/button.css +22 -1
  170. package/dist/styles/chatgpt-sign-in-screen.css +111 -225
  171. package/dist/styles/code-block.css +5 -0
  172. package/dist/styles/codex-model-selector.css +2 -12
  173. package/dist/styles/description-list.css +9 -2
  174. package/dist/styles/employee-app.css +19 -1
  175. package/dist/styles/employee-chrome.css +35 -5
  176. package/dist/styles/file-tree.css +15 -2
  177. package/dist/styles/index.css +1 -0
  178. package/dist/styles/manager-office.css +80 -55
  179. package/dist/styles/manager-work.css +5 -11
  180. package/dist/styles/mcp-plugin-catalog.css +29 -34
  181. package/dist/styles/mcp-server-picker.css +13 -5
  182. package/dist/styles/prompt-input.css +3 -13
  183. package/dist/styles/queue.css +1 -1
  184. package/dist/styles/recipes.css +9 -2
  185. package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
  186. package/dist/styles/responsive-sidebar-shell.css +70 -25
  187. package/dist/styles/search-field.css +8 -6
  188. package/dist/styles/subagent-run.css +81 -0
  189. package/dist/styles/think-execution-workbench.css +0 -17
  190. package/dist/styles/think-full-app.css +11 -4
  191. package/dist/styles/think-thread-picker.css +16 -38
  192. package/dist/styles/workspace-concepts.css +29 -2
  193. package/dist/styles/workspace-explorer.css +6 -48
  194. package/dist/utils/structured-code.d.ts +1 -1
  195. package/dist/{workspace-assets-wW_lQLYK.js → workspace-assets-Bg7XhPsk.js} +2 -2
  196. package/package.json +2 -2
  197. package/dist/styles/extension-status.css +0 -46
  198. package/dist/{icons-CeGfXO21.js → icons-cuEtsgj9.js} +1 -1
@@ -0,0 +1,67 @@
1
+ import { expect, test } from "vite-plus/test";
2
+ import "./index.css";
3
+
4
+ const frame = () => new Promise<void>((resolve) => requestAnimationFrame(() => resolve()));
5
+
6
+ test("desktop sidebar collapse interpolates the track without squeezing roster content", async () => {
7
+ const shell = document.createElement("div");
8
+ shell.className = "responsive-sidebar-shell";
9
+ shell.dataset.sidebarOpen = "true";
10
+ shell.style.cssText = "width:1280px;height:600px";
11
+ shell.innerHTML = `<div class="responsive-sidebar-shell__frame">
12
+ <div class="responsive-sidebar-shell__sidebar">Workforce</div>
13
+ <div class="responsive-sidebar-shell__main">Conversation</div>
14
+ </div>`;
15
+ document.body.append(shell);
16
+ const layout = shell.firstElementChild as HTMLElement;
17
+ const sidebar = shell.querySelector<HTMLElement>(".responsive-sidebar-shell__sidebar")!;
18
+ const main = shell.querySelector<HTMLElement>(".responsive-sidebar-shell__main")!;
19
+ try {
20
+ await frame();
21
+ const sidebarWidth = sidebar.getBoundingClientRect().width;
22
+ const mainWidth = main.getBoundingClientRect().width;
23
+ shell.dataset.sidebarOpen = "false";
24
+ await frame();
25
+ const transition = layout
26
+ .getAnimations()
27
+ .find(
28
+ (animation) =>
29
+ animation instanceof CSSTransition &&
30
+ animation.transitionProperty === "grid-template-columns",
31
+ );
32
+ expect(transition).toBeDefined();
33
+ for (const animation of [...layout.getAnimations(), ...sidebar.getAnimations()]) {
34
+ animation.pause();
35
+ animation.currentTime = Number(animation.effect!.getTiming().duration) / 2;
36
+ }
37
+ await frame();
38
+ expect(sidebar.getBoundingClientRect().width).toBe(sidebarWidth);
39
+ expect(main.getBoundingClientRect().width).toBeGreaterThan(mainWidth);
40
+ expect(main.getBoundingClientRect().width).toBeLessThan(mainWidth + sidebarWidth);
41
+ for (const animation of [...layout.getAnimations(), ...sidebar.getAnimations()])
42
+ animation.finish();
43
+ await frame();
44
+ expect(main.getBoundingClientRect().width).toBeCloseTo(mainWidth + sidebarWidth, 0);
45
+ expect(getComputedStyle(sidebar).visibility).toBe("hidden");
46
+ shell.dataset.sidebarOpen = "true";
47
+ await frame();
48
+ const reopening = layout
49
+ .getAnimations()
50
+ .find(
51
+ (animation) =>
52
+ animation instanceof CSSTransition &&
53
+ animation.transitionProperty === "grid-template-columns",
54
+ );
55
+ expect(reopening).toBeDefined();
56
+ for (const animation of [...layout.getAnimations(), ...sidebar.getAnimations()]) {
57
+ animation.pause();
58
+ animation.currentTime = Number(animation.effect!.getTiming().duration) / 2;
59
+ }
60
+ await frame();
61
+ expect(sidebar.getBoundingClientRect().width).toBe(sidebarWidth);
62
+ expect(main.getBoundingClientRect().width).toBeGreaterThan(mainWidth);
63
+ expect(main.getBoundingClientRect().width).toBeLessThan(mainWidth + sidebarWidth);
64
+ } finally {
65
+ shell.remove();
66
+ }
67
+ });
@@ -1,7 +1,5 @@
1
- /* Three planes, Ploy-style: the rail is the recessed vertical, everything
2
- beside it bar, content rests directly on the page surface, and one
3
- elevated card (a host's, e.g. the workbench) floats above it. Nothing else
4
- paints. */
1
+ /* The sidebar shares the Sigvelo canvas. Elevation separates navigation
2
+ from the conversation; selected controls carry the brand accent. */
5
3
  .responsive-sidebar-shell {
6
4
  container: responsive-sidebar-shell / inline-size;
7
5
  display: grid;
@@ -53,7 +51,8 @@
53
51
  }
54
52
 
55
53
  .responsive-sidebar-shell__sidebar-leading {
56
- min-block-size: var(--sigvelo-density-compact-control-height);
54
+ min-block-size: var(--sigvelo-layout-chrome);
55
+ box-sizing: border-box;
57
56
  display: flex;
58
57
  align-items: center;
59
58
  padding-block: var(--sigvelo-spacing-1);
@@ -63,9 +62,10 @@
63
62
  .responsive-sidebar-shell__sidebar {
64
63
  grid-column: 1;
65
64
  grid-row: 1;
66
- /* One rail tone everywhere: the recessed step below the page. The compact
67
- overlay drawer below carries its own raised material regardless. */
68
- background: var(--responsive-sidebar-shell-sidebar-surface, var(--sigvelo-color-surface-under));
65
+ position: relative;
66
+ z-index: var(--sigvelo-z-chrome);
67
+ background: var(--responsive-sidebar-shell-sidebar-surface, var(--sigvelo-color-canvas));
68
+ box-shadow: var(--sigvelo-elevation-floating);
69
69
  }
70
70
 
71
71
  .responsive-sidebar-shell__main {
@@ -142,10 +142,6 @@
142
142
  z-index: var(--sigvelo-z-panel);
143
143
  }
144
144
 
145
- .responsive-sidebar-shell[data-sidebar-open="false"] > .responsive-sidebar-shell__frame {
146
- grid-template-columns: var(--sigvelo-layout-track-fill);
147
- }
148
-
149
145
  .responsive-sidebar-shell[data-sidebar-open="false"]
150
146
  > .responsive-sidebar-shell__frame
151
147
  > .responsive-sidebar-shell__sidebar {
@@ -157,10 +153,30 @@
157
153
  pointer-events: none;
158
154
  }
159
155
 
160
- .responsive-sidebar-shell[data-sidebar-open="false"]
161
- > .responsive-sidebar-shell__frame
162
- > .responsive-sidebar-shell__main {
163
- grid-column: 1;
156
+ /* Keep both tracks throughout a desktop collapse so grid interpolation works.
157
+ The roster slides at its full width instead of rewrapping into a shrinking rail. */
158
+ @container responsive-sidebar-shell (inline-size > 56rem) {
159
+ .responsive-sidebar-shell__sidebar {
160
+ position: absolute;
161
+ inset-block: 0;
162
+ inset-inline-start: 0;
163
+ inline-size: var(--responsive-sidebar-shell-sidebar-size, var(--sigvelo-layout-sidebar));
164
+ translate: 0 0;
165
+ visibility: visible;
166
+ transition:
167
+ translate var(--sigvelo-motion-duration-layout) var(--sigvelo-motion-ease-change),
168
+ visibility var(--sigvelo-motion-duration-layout);
169
+ }
170
+
171
+ .responsive-sidebar-shell[data-sidebar-open="false"] > .responsive-sidebar-shell__frame {
172
+ grid-template-columns: 0px var(--sigvelo-layout-track-fill);
173
+ }
174
+
175
+ /* The shell already animates available width. A second size transition on
176
+ its conversation would trail behind that motion on every animation frame. */
177
+ .responsive-sidebar-shell__main .think-full-app__chat-surface {
178
+ transition: none;
179
+ }
164
180
  }
165
181
 
166
182
  /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
@@ -171,6 +187,7 @@
171
187
  );
172
188
 
173
189
  grid-template-columns: var(--sigvelo-layout-track-fill);
190
+ transition: none;
174
191
  }
175
192
 
176
193
  .responsive-sidebar-shell__sidebar,
@@ -179,10 +196,14 @@
179
196
  grid-row: 1;
180
197
  }
181
198
 
182
- .responsive-sidebar-shell__sidebar {
183
- position: relative;
199
+ .responsive-sidebar-shell[data-sidebar-open]
200
+ > .responsive-sidebar-shell__frame
201
+ > .responsive-sidebar-shell__sidebar {
202
+ position: absolute;
184
203
  z-index: calc(var(--sigvelo-z-chrome) + 3);
185
- inset-inline-start: 50%;
204
+ inset-inline: 0;
205
+ inset-block-start: calc(var(--responsive-sidebar-compact-bar-size) + var(--sigvelo-spacing-1));
206
+ inset-block-end: auto;
186
207
  inline-size: min(calc(100cqi - var(--sigvelo-layout-gutter)), 34rem);
187
208
  max-inline-size: none;
188
209
  block-size: auto;
@@ -192,14 +213,15 @@
192
213
  );
193
214
  align-self: start;
194
215
  /* Sit under the title trigger. Covering it ate the click that closes it. */
195
- margin-block-start: calc(var(--responsive-sidebar-compact-bar-size) + var(--sigvelo-spacing-1));
216
+ margin-block: 0;
217
+ margin-inline: auto;
196
218
  overflow: hidden;
197
219
  border-radius: var(--sigvelo-radius-lg);
198
- background-color: var(--sigvelo-color-surface-raised);
220
+ background-color: var(--responsive-sidebar-shell-sidebar-surface, var(--sigvelo-color-canvas));
199
221
  box-shadow: var(--sigvelo-elevation-overlay);
200
222
  visibility: visible;
201
223
  opacity: 1;
202
- translate: -50% 0;
224
+ translate: 0 0;
203
225
  scale: 1;
204
226
  transform-origin: top center;
205
227
  transition:
@@ -222,15 +244,25 @@
222
244
  display: none;
223
245
  }
224
246
 
247
+ .responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"]
248
+ .responsive-sidebar-shell__toggle--sidebar-fallback {
249
+ display: inline-flex;
250
+ }
251
+
225
252
  /* The closed-sidebar fallback has a deliberately specific wide-layout
226
253
  selector above. When the compact title owns drawer disclosure, beat that
227
254
  selector explicitly so the bar never presents two controls for one action. */
228
- .responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"][data-sidebar-open="false"]
255
+ .responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"][data-sidebar-open]
229
256
  [data-compact-leading]
230
257
  .responsive-sidebar-shell__toggle--sidebar-fallback {
231
258
  display: none;
232
259
  }
233
260
 
261
+ .responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"]
262
+ .responsive-sidebar-shell__sidebar {
263
+ grid-template-rows: minmax(0, 1fr);
264
+ }
265
+
234
266
  .responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"]
235
267
  .responsive-sidebar-shell__sidebar-leading {
236
268
  display: none;
@@ -242,7 +274,7 @@
242
274
 
243
275
  .responsive-sidebar-shell__title-trigger {
244
276
  inline-size: auto;
245
- max-inline-size: min(22rem, 58vw);
277
+ max-inline-size: 100%;
246
278
  min-inline-size: 0;
247
279
  min-block-size: var(--sigvelo-density-compact-control-height);
248
280
  display: inline-flex;
@@ -282,7 +314,7 @@
282
314
  > .responsive-sidebar-shell__sidebar {
283
315
  visibility: hidden;
284
316
  opacity: 0;
285
- translate: -50% calc(var(--sigvelo-motion-distance-sm) * -1);
317
+ translate: 0 calc(var(--sigvelo-motion-distance-sm) * -1);
286
318
  scale: 0.97;
287
319
  transition-timing-function: var(--sigvelo-motion-ease-exit);
288
320
  }
@@ -310,3 +342,16 @@
310
342
  outline-offset: -0.25rem;
311
343
  }
312
344
  }
345
+
346
+ /* Panel controls follow available main-column width, independently of the
347
+ drawer breakpoint. Keep a way back when an open desktop rail uses space. */
348
+ .responsive-sidebar-shell__main[data-content-compact="true"]
349
+ .responsive-sidebar-shell__compact-leading {
350
+ display: contents;
351
+ }
352
+
353
+ .responsive-sidebar-shell__main[data-content-compact="true"]
354
+ [data-compact-leading="custom"]
355
+ .responsive-sidebar-shell__toggle {
356
+ display: none;
357
+ }
@@ -1,10 +1,12 @@
1
1
  .search-field {
2
- --sigvelo-recipe-control-height: var(--sigvelo-control-height-md);
3
- --sigvelo-recipe-control-padding-inline: var(--sigvelo-control-padding-inline-md);
4
- --sigvelo-recipe-control-font-size: var(--sigvelo-control-text-md);
5
- --sigvelo-recipe-control-line-height: var(--sigvelo-control-line-height-md);
6
- --sigvelo-recipe-control-icon-size: var(--sigvelo-control-icon-size-md);
7
- --sigvelo-recipe-control-radius: var(--sigvelo-radius-full);
2
+ --sigvelo-recipe-control-height: var(--sigvelo-density-compact-control-height);
3
+ --sigvelo-recipe-control-padding-inline: var(--sigvelo-density-compact-control-padding-inline);
4
+ --sigvelo-recipe-control-font-size: var(--sigvelo-density-compact-control-font-size);
5
+ --sigvelo-recipe-control-line-height: var(--sigvelo-density-compact-control-line-height);
6
+ --sigvelo-recipe-control-icon-size: var(--sigvelo-density-compact-control-icon-size);
7
+ --sigvelo-recipe-control-radius: var(--sigvelo-radius-sm);
8
+ --sigvelo-recipe-focus-shadow: var(--sigvelo-recipe-focus-shadow-inset);
9
+ --sigvelo-focus-offset: -2px;
8
10
  }
9
11
 
10
12
  .search-field__control {
@@ -61,6 +61,81 @@
61
61
  box-shadow: none;
62
62
  }
63
63
 
64
+ /* Delegated work sits in a quiet, bordered card above the composer,
65
+ matching its width while keeping a small separation between the surfaces. */
66
+ .agent-chat__prompt-tray[data-subagent-run-panel] {
67
+ --prompt-input-tray-overlap: 0px;
68
+
69
+ inline-size: min(
70
+ 100%,
71
+ var(--agent-chat-content-max-inline-size, var(--sigvelo-measure-wide-block))
72
+ );
73
+ margin-block-end: var(--sigvelo-spacing-2);
74
+ padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-1);
75
+ border-radius: var(--sigvelo-radius-xl);
76
+ background: var(--sigvelo-color-surface-raised);
77
+ border: var(--sigvelo-border-width) var(--sigvelo-border-style)
78
+ var(--sigvelo-color-neutral-border-subtle);
79
+ box-shadow: none;
80
+ }
81
+
82
+ .subagent-run__panel-header {
83
+ display: flex;
84
+ flex-wrap: wrap;
85
+ align-items: center;
86
+ gap: var(--sigvelo-spacing-1);
87
+ min-inline-size: 0;
88
+ }
89
+
90
+ .subagent-run__panel-header > .queue__section-trigger {
91
+ flex: 1 1 9rem;
92
+ min-inline-size: 0;
93
+ }
94
+
95
+ .subagent-run__completed-toggle {
96
+ flex: 0 0 auto;
97
+ max-inline-size: 100%;
98
+ margin-inline-start: auto;
99
+ }
100
+
101
+ @media (any-pointer: coarse) {
102
+ .subagent-run__panel-header > .queue__section-trigger,
103
+ .subagent-run__completed-toggle {
104
+ min-block-size: var(--sigvelo-spacing-11);
105
+ }
106
+ }
107
+
108
+ [data-subagent-run-panel] .queue__item + .queue__item {
109
+ box-shadow: inset 0 var(--sigvelo-border-width) 0 var(--sigvelo-color-neutral-border-subtle);
110
+ }
111
+
112
+ [data-subagent-run-panel] .subagent-run__selector[data-surface="plain"] {
113
+ font-size: min(var(--sigvelo-text-compact), var(--sigvelo-text-prose));
114
+ }
115
+
116
+ [data-subagent-run-panel] .subagent-run__title {
117
+ font-weight: var(--sigvelo-font-weight-normal);
118
+ }
119
+
120
+ [data-subagent-run-panel] .subagent-run__status {
121
+ font-size: min(var(--sigvelo-text-xs), var(--sigvelo-text-prose));
122
+ }
123
+
124
+ [data-subagent-run-panel] .queue__section-trigger {
125
+ min-block-size: var(--sigvelo-control-height-xs);
126
+ font-weight: var(--sigvelo-font-weight-normal);
127
+ text-transform: none;
128
+ letter-spacing: normal;
129
+ }
130
+
131
+ [data-subagent-run-panel] .queue__section-trigger:focus-visible {
132
+ box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
133
+ }
134
+
135
+ [data-subagent-run-panel] .queue__section-content {
136
+ gap: var(--sigvelo-spacing-1);
137
+ }
138
+
64
139
  /* A delegated row is two text lines (name over status). The shared compact
65
140
  queue caps its viewport at whole rows of --queue-row-block-size, so the
66
141
  row measure has to say what the row actually is. */
@@ -262,6 +337,12 @@
262
337
  }
263
338
 
264
339
  @media (forced-colors: active) {
340
+ .agent-chat__prompt-tray[data-subagent-run-panel] {
341
+ border: var(--sigvelo-border-width) var(--sigvelo-border-style) CanvasText;
342
+ background: Canvas;
343
+ box-shadow: none;
344
+ }
345
+
265
346
  .subagent-run__selector {
266
347
  border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
267
348
  }
@@ -59,29 +59,12 @@
59
59
 
60
60
  /* Roster column cap (the Ploy number) so full-page routes don't stretch rows
61
61
  across the whole viewport; narrow hosts are unaffected. */
62
- .think-execution-workbench__list-header,
63
62
  .think-execution-workbench__list,
64
63
  .think-execution-workbench__empty {
65
64
  inline-size: min(100%, var(--sigvelo-layout-content));
66
65
  margin-inline: auto;
67
66
  }
68
67
 
69
- .think-execution-workbench__list-header {
70
- display: flex;
71
- align-items: center;
72
- justify-content: space-between;
73
- gap: var(--sigvelo-layout-cluster);
74
- min-block-size: var(--sigvelo-control-height-lg);
75
- padding-inline: var(--sigvelo-layout-gutter);
76
- }
77
-
78
- .think-execution-workbench__list-header h3 {
79
- margin: 0;
80
- font-size: var(--sigvelo-text-compact);
81
- font-weight: var(--sigvelo-font-weight-semibold);
82
- line-height: var(--sigvelo-leading-tight);
83
- }
84
-
85
68
  /* Same hairline-bounded band the routine library gives its empty run section. */
86
69
  .think-execution-workbench__empty {
87
70
  --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-layout-stack);
@@ -62,7 +62,7 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
62
62
  margin-inline-start: var(--sigvelo-layout-gap);
63
63
  overflow: hidden;
64
64
  border-radius: var(--sigvelo-radius-xl);
65
- background: var(--sigvelo-color-surface-raised);
65
+ background: var(--sigvelo-color-surface);
66
66
  box-shadow: var(--sigvelo-elevation-floating);
67
67
  }
68
68
 
@@ -91,8 +91,10 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
91
91
  translate: -50% -50%;
92
92
  }
93
93
 
94
+ /* Collapse based on available content width, including when a desktop
95
+ sidebar leaves too little space for both conversation and workbench. */
94
96
  @container think-full-app (inline-size <= 56rem) {
95
- .think-full-app__view-scope {
97
+ .think-full-app .think-full-app__view-scope {
96
98
  grid-template-columns: var(--sigvelo-layout-track-fill);
97
99
  margin: 0;
98
100
  overflow: hidden;
@@ -111,7 +113,7 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
111
113
  display: none;
112
114
  }
113
115
 
114
- .think-full-app__aside {
116
+ .think-full-app .think-full-app__aside {
115
117
  grid-column: 1;
116
118
  margin: 0;
117
119
  border: 0;
@@ -120,7 +122,7 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
120
122
  box-shadow: none;
121
123
  }
122
124
 
123
- .think-full-app__resizer {
125
+ .think-full-app .think-full-app__resizer {
124
126
  display: none;
125
127
  }
126
128
  }
@@ -135,3 +137,8 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
135
137
  box-shadow: none;
136
138
  }
137
139
  }
140
+
141
+ /* Hidden feature views retain the conversation runtime and queued work. */
142
+ .think-full-app[hidden] {
143
+ display: none;
144
+ }
@@ -4,7 +4,7 @@
4
4
  block-size: 100%;
5
5
  min-block-size: 0;
6
6
  display: grid;
7
- grid-template-rows: auto auto var(--sigvelo-layout-track-fill) auto;
7
+ grid-template-rows: auto auto var(--sigvelo-layout-track-fill);
8
8
  overflow: hidden;
9
9
  border-inline-end: 0;
10
10
  padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2) var(--sigvelo-spacing-2);
@@ -30,16 +30,15 @@
30
30
  min-inline-size: 0;
31
31
  margin: 0;
32
32
  flex: 1 1 auto;
33
- color: var(--sigvelo-color-text);
33
+ color: var(--sigvelo-color-text-muted);
34
34
  font-size: var(--sigvelo-text-compact);
35
- font-weight: var(--sigvelo-font-weight-semibold);
35
+ font-weight: var(--sigvelo-font-weight-normal);
36
+ text-transform: uppercase;
37
+ letter-spacing: var(--sigvelo-tracking-wide);
36
38
  line-height: var(--sigvelo-text-compact-leading);
37
39
  }
38
40
 
39
41
  .think-thread-picker__search {
40
- --sigvelo-recipe-control-height: var(--sigvelo-density-compact-control-height);
41
- --sigvelo-recipe-control-radius: var(--sigvelo-radius-sm);
42
-
43
42
  padding: 0 0 var(--sigvelo-spacing-2);
44
43
  }
45
44
 
@@ -138,15 +137,15 @@
138
137
  }
139
138
 
140
139
  .think-thread-picker__thread[aria-current="page"] {
141
- background: color-mix(in oklab, var(--sigvelo-color-neutral-bg-subtle), transparent 18%);
142
- color: var(--sigvelo-color-text);
140
+ background: var(--sigvelo-color-primary-bg-subtle);
141
+ color: var(--sigvelo-color-primary-text-on-subtle);
143
142
  font-weight: var(--sigvelo-font-weight-semibold);
144
143
  }
145
144
 
146
145
  .think-thread-picker__thread[aria-current="page"]:hover:not([data-disabled]),
147
146
  .think-thread-picker__item:hover
148
147
  .think-thread-picker__thread[aria-current="page"]:not([data-disabled]) {
149
- background: color-mix(in oklab, var(--sigvelo-color-neutral-bg-subtle), transparent 18%);
148
+ background: var(--sigvelo-color-primary-bg-subtle);
150
149
  }
151
150
 
152
151
  .think-thread-picker__item:hover
@@ -282,24 +281,18 @@
282
281
  margin: var(--sigvelo-spacing-2);
283
282
  }
284
283
 
285
- .think-thread-picker__footer {
286
- display: flex;
287
- padding: var(--sigvelo-spacing-0-5) var(--sigvelo-spacing-1)
288
- calc(var(--sigvelo-spacing-0-5) + env(safe-area-inset-bottom, 0px));
289
- border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
290
- var(--sigvelo-color-neutral-border-subtle);
291
- }
292
-
293
284
  .think-thread-picker__create {
294
- inline-size: 100%;
295
- justify-content: flex-start;
296
- border: 0;
297
- background: transparent;
298
- box-shadow: none;
285
+ flex: 0 0 auto;
286
+ inline-size: var(--sigvelo-density-compact-control-height);
287
+ block-size: var(--sigvelo-density-compact-control-height);
288
+ padding: var(--sigvelo-spacing-1);
289
+ color: var(--sigvelo-color-text-muted);
299
290
  }
300
291
 
301
292
  .think-thread-picker__create svg {
302
293
  flex: 0 0 auto;
294
+ inline-size: var(--sigvelo-density-compact-control-icon-size);
295
+ block-size: var(--sigvelo-density-compact-control-icon-size);
303
296
  }
304
297
 
305
298
  /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
@@ -308,25 +301,10 @@
308
301
  block-size: auto;
309
302
  max-block-size: inherit;
310
303
  grid-template-rows: auto auto auto;
304
+ align-content: start;
311
305
  padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2) var(--sigvelo-spacing-2);
312
306
  }
313
307
 
314
- .think-thread-picker__header {
315
- display: none;
316
- }
317
-
318
- .think-thread-picker__search {
319
- --sigvelo-recipe-control-height: var(--sigvelo-density-compact-control-height);
320
- --sigvelo-recipe-control-font-size: var(--sigvelo-density-compact-control-font-size);
321
- --sigvelo-recipe-control-icon-size: var(--sigvelo-density-compact-control-icon-size);
322
-
323
- padding: 0 0 var(--sigvelo-spacing-2);
324
- }
325
-
326
- .think-thread-picker__search .field__control:focus-visible {
327
- box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
328
- }
329
-
330
308
  .think-thread-picker__nav,
331
309
  .think-thread-picker__scroll,
332
310
  .think-thread-picker__viewport {
@@ -4,8 +4,9 @@
4
4
  min-inline-size: 0;
5
5
  min-block-size: 0;
6
6
  block-size: 100%;
7
- overflow: auto;
8
- padding: var(--sigvelo-layout-gutter);
7
+ display: flex;
8
+ flex-direction: column;
9
+ overflow: hidden;
9
10
  color: var(--sigvelo-color-text);
10
11
  background: var(--sigvelo-color-canvas);
11
12
  }
@@ -26,3 +27,29 @@
26
27
  color: CanvasText;
27
28
  }
28
29
  }
30
+
31
+ .workspace-concept-panel__header {
32
+ display: flex;
33
+ align-items: center;
34
+ flex: none;
35
+ min-block-size: var(--sigvelo-layout-chrome);
36
+ padding-inline: var(--sigvelo-layout-gutter);
37
+ border-block-end: var(--sigvelo-border-width) var(--sigvelo-border-style)
38
+ var(--sigvelo-color-neutral-border-subtle);
39
+ }
40
+
41
+ .workspace-concept-panel__title {
42
+ margin: 0;
43
+ color: var(--sigvelo-color-primary-text);
44
+ font-size: var(--sigvelo-density-compact-control-font-size);
45
+ font-weight: var(--sigvelo-font-weight-semibold);
46
+ line-height: var(--sigvelo-leading-tight);
47
+ letter-spacing: var(--sigvelo-tracking-tight);
48
+ }
49
+
50
+ .workspace-concept-panel__body {
51
+ flex: 1;
52
+ min-block-size: 0;
53
+ overflow: auto;
54
+ padding: var(--sigvelo-layout-gutter);
55
+ }
@@ -126,48 +126,14 @@
126
126
 
127
127
  .workspace-explorer__tree {
128
128
  flex: 1;
129
- min-block-size: 0;
130
- border: 0;
131
- border-radius: 0;
132
- background: transparent;
133
- padding-block: var(--sigvelo-spacing-1);
134
- padding-inline: var(--sigvelo-spacing-1-5);
135
- }
136
-
137
- .workspace-explorer__tree .file-tree__node {
138
- min-block-size: var(--sigvelo-density-compact-control-height);
139
- gap: var(--sigvelo-density-compact-control-gap);
140
- padding-block: var(--sigvelo-spacing-0-5);
141
- padding-inline-end: var(--sigvelo-spacing-1-5);
142
- border-radius: var(--sigvelo-radius-sm);
143
- color: var(--sigvelo-color-text-muted);
144
- font-size: var(--sigvelo-density-compact-control-font-size);
145
- line-height: var(--sigvelo-leading-snug);
146
129
  }
147
130
 
148
- .workspace-explorer__tree :is(.file-tree__chevron, .file-tree__icon) svg {
149
- inline-size: var(--sigvelo-density-compact-control-icon-size);
150
- block-size: var(--sigvelo-density-compact-control-icon-size);
151
- }
152
-
153
- .workspace-explorer__tree .file-tree__chevron {
154
- inline-size: var(--sigvelo-density-compact-control-icon-size);
155
- }
156
-
157
- .workspace-explorer__tree .file-tree__node--folder .file-tree__icon {
158
- color: currentColor;
159
- }
160
-
161
- .workspace-explorer__tree .file-tree__node[data-selected] {
162
- background-color: var(--sigvelo-color-neutral-bg-subtle);
163
- color: var(--sigvelo-color-text);
164
- font-weight: var(--sigvelo-font-weight-normal);
165
- }
166
-
167
- .workspace-explorer__tree .file-tree__node:is([data-focused], :focus-visible) {
168
- outline: none;
169
- background-color: var(--sigvelo-color-neutral-bg-subtle);
170
- box-shadow: inset 0 0 0 var(--sigvelo-border-width) var(--sigvelo-color-neutral-border-muted);
131
+ /* The outer workbench control owns back navigation when the panel is compact. */
132
+ .responsive-sidebar-shell:has([data-workbench-back])
133
+ > .responsive-sidebar-shell__frame
134
+ > .responsive-sidebar-shell__main[data-content-compact="true"]
135
+ [data-workspace-back] {
136
+ display: none;
171
137
  }
172
138
 
173
139
  .workspace-explorer__empty {
@@ -502,14 +468,6 @@
502
468
  }
503
469
 
504
470
  @media (forced-colors: active) {
505
- .workspace-explorer__tree .file-tree__node:is([data-focused], :focus-visible) {
506
- outline: var(--sigvelo-focus-ring-forced);
507
- outline-offset: -2px;
508
- background-color: Canvas;
509
- color: CanvasText;
510
- box-shadow: none;
511
- }
512
-
513
471
  .workspace-explorer__image-trigger,
514
472
  .workspace-explorer__pdf,
515
473
  .workspace-media-lightbox .yarl__button {
@@ -1,4 +1,4 @@
1
- import { O as CodeBlockLanguage } from "../CodeBlock--r6GS8YV.js";
1
+ import { O as CodeBlockLanguage } from "../CodeBlock-DJ99TQWy.js";
2
2
 
3
3
  //#region src/utils/structured-code.d.ts
4
4
  interface StructuredCodeDisplay {
@@ -1,12 +1,12 @@
1
1
  import { composerLinkHref } from "./utils/composer-link.js";
2
2
  import { canRequestFavicon, inferFaviconUrl } from "./utils/favicon.js";
3
- import { Q as TrashIcon, S as FileIcon } from "./icons-CeGfXO21.js";
3
+ import { Q as TrashIcon, S as FileIcon } from "./icons-cuEtsgj9.js";
4
4
  import { Button } from "./components/foundations/Button.js";
5
5
  import { Tooltip } from "./components/foundations/Tooltip.js";
6
6
  import { IconButton } from "./components/foundations/IconButton.js";
7
7
  import { ComposerLink } from "./components/ai-sdk/ComposerLink.js";
8
- import { AlertDialog } from "./components/foundations/AlertDialog.js";
9
8
  import { AppIcon } from "./components/foundations/AppIcon.js";
9
+ import { AlertDialog } from "./components/foundations/AlertDialog.js";
10
10
  import * as React from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
12
  //#region src/components/_internal/workspace-delete.tsx