@tutti-os/agent-gui 0.0.216 → 0.0.217

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 (70) hide show
  1. package/README.md +6 -0
  2. package/dist/{agentFileMentionContracts-BeBex-Sf.d.ts → AgentMentionSearchContracts-y1_u9cPi.d.ts} +73 -1
  3. package/dist/{AgentRichTextReadonly-IPPNAAWG.js → AgentRichTextReadonly-WZHUIARR.js} +7 -7
  4. package/dist/agent-conversation/index.js +9 -9
  5. package/dist/agent-gui.d.ts +16 -3
  6. package/dist/agent-gui.js +23 -22
  7. package/dist/agent-message-center/index.js +6 -6
  8. package/dist/app/renderer/agentactivity.css +93 -69
  9. package/dist/{chunk-VMPPZO5C.js → chunk-2QF3RBR4.js} +4 -4
  10. package/dist/{chunk-DTP2OMCE.js → chunk-44OCOBJS.js} +9 -11
  11. package/dist/chunk-44OCOBJS.js.map +1 -0
  12. package/dist/chunk-6GX57XB5.js +135 -0
  13. package/dist/chunk-6GX57XB5.js.map +1 -0
  14. package/dist/{chunk-EZRQMJTX.js → chunk-FS7EMOVD.js} +4 -4
  15. package/dist/{chunk-6A6OVD66.js → chunk-G2KRK7Z5.js} +44 -18
  16. package/dist/chunk-G2KRK7Z5.js.map +1 -0
  17. package/dist/{chunk-YY5WM3OE.js → chunk-GDLM6FLK.js} +90 -47
  18. package/dist/chunk-GDLM6FLK.js.map +1 -0
  19. package/dist/{chunk-UERICUWM.js → chunk-GLVENTN6.js} +2 -2
  20. package/dist/{chunk-B4TM2HYJ.js → chunk-JQOQETPN.js} +5 -5
  21. package/dist/{chunk-QFYOJMEQ.js → chunk-M6WEFXPL.js} +2 -2
  22. package/dist/{chunk-AOK22J62.js → chunk-N2M4B3G3.js} +2 -2
  23. package/dist/{chunk-DLN33TPF.js → chunk-NXQGAXIE.js} +8 -8
  24. package/dist/{chunk-MOCBHFJ2.js → chunk-O4QFGCLU.js} +42 -118
  25. package/dist/chunk-O4QFGCLU.js.map +1 -0
  26. package/dist/{chunk-Z5UJC4Q3.js → chunk-PPAV2TB4.js} +3 -3
  27. package/dist/{chunk-4CHBM3G3.js → chunk-SUVMLCED.js} +5 -5
  28. package/dist/{chunk-KJA3HHUJ.js → chunk-TKECUCUW.js} +529 -291
  29. package/dist/chunk-TKECUCUW.js.map +1 -0
  30. package/dist/{chunk-P2RIZAK5.js → chunk-ZXEICU6J.js} +3 -1
  31. package/dist/chunk-ZXEICU6J.js.map +1 -0
  32. package/dist/context-mention-palette/index.d.ts +3 -3
  33. package/dist/context-mention-palette/index.js +12 -12
  34. package/dist/headerLayout-CP4ujEbo.d.ts +14 -0
  35. package/dist/i18n/index.d.ts +2 -0
  36. package/dist/i18n/index.js +2 -2
  37. package/dist/index.d.ts +77 -46
  38. package/dist/index.js +46 -39
  39. package/dist/index.js.map +1 -1
  40. package/dist/layout.d.ts +7 -0
  41. package/dist/layout.js +9 -0
  42. package/dist/layout.js.map +1 -0
  43. package/dist/mention-search.d.ts +6 -73
  44. package/dist/mention-search.js +8 -8
  45. package/dist/workbench/browser-element-context/index.js +2 -2
  46. package/dist/workbench/contribution.js +7 -6
  47. package/dist/workbench/index.d.ts +3 -1
  48. package/dist/workbench/index.js +10 -9
  49. package/dist/workbench/launch.js +2 -2
  50. package/dist/workbench/sessionTitle.js +2 -2
  51. package/dist/workbench/tool-sidebar/index.d.ts +14 -13
  52. package/dist/workbench/tool-sidebar/index.js +66 -55
  53. package/dist/workbench/tool-sidebar/index.js.map +1 -1
  54. package/package.json +23 -16
  55. package/dist/chunk-6A6OVD66.js.map +0 -1
  56. package/dist/chunk-DTP2OMCE.js.map +0 -1
  57. package/dist/chunk-KJA3HHUJ.js.map +0 -1
  58. package/dist/chunk-MOCBHFJ2.js.map +0 -1
  59. package/dist/chunk-P2RIZAK5.js.map +0 -1
  60. package/dist/chunk-YY5WM3OE.js.map +0 -1
  61. /package/dist/{AgentRichTextReadonly-IPPNAAWG.js.map → AgentRichTextReadonly-WZHUIARR.js.map} +0 -0
  62. /package/dist/{chunk-VMPPZO5C.js.map → chunk-2QF3RBR4.js.map} +0 -0
  63. /package/dist/{chunk-EZRQMJTX.js.map → chunk-FS7EMOVD.js.map} +0 -0
  64. /package/dist/{chunk-UERICUWM.js.map → chunk-GLVENTN6.js.map} +0 -0
  65. /package/dist/{chunk-B4TM2HYJ.js.map → chunk-JQOQETPN.js.map} +0 -0
  66. /package/dist/{chunk-QFYOJMEQ.js.map → chunk-M6WEFXPL.js.map} +0 -0
  67. /package/dist/{chunk-AOK22J62.js.map → chunk-N2M4B3G3.js.map} +0 -0
  68. /package/dist/{chunk-DLN33TPF.js.map → chunk-NXQGAXIE.js.map} +0 -0
  69. /package/dist/{chunk-Z5UJC4Q3.js.map → chunk-PPAV2TB4.js.map} +0 -0
  70. /package/dist/{chunk-4CHBM3G3.js.map → chunk-SUVMLCED.js.map} +0 -0
package/README.md CHANGED
@@ -144,6 +144,12 @@ package renders fixed-size circular loading slots. In the `ready` state, each
144
144
  participant requires a non-empty `name`; `avatarUrl` is optional and the shared
145
145
  UI System `Avatar` falls back to the name's initial.
146
146
 
147
+ Participant headers are turn-scoped. Agent GUI renders at most one header for
148
+ each speaker in a presentation turn, even when thinking, tool progress, or
149
+ turn-work disclosure splits that turn into multiple message rows. A completed
150
+ collapsed turn anchors the Agent header to visible reply content instead of the
151
+ hidden work section.
152
+
147
153
  The host owns identity lookup and lifecycle. Agent GUI owns placement, sizing,
148
154
  loading treatment, image fallback, and left/right message alignment. The
149
155
  contract is presentation-only and must not be copied into canonical Session,
@@ -1,3 +1,8 @@
1
+ import { AgentContextMentionProvider } from './context-mention-provider.js';
2
+ import { MentionPaletteGroup, MentionPaletteState } from '@tutti-os/ui-rich-text/at-panel';
3
+
4
+ type RuntimeDiagnosticsDetailValue = string | number | boolean | null;
5
+
1
6
  type AgentFileMentionKind = "file" | "directory" | "unknown";
2
7
  type AgentMentionFileNavigationAction = "agent-generated-folder" | "agent-generated-folder-back" | "workspace-folder" | "workspace-folder-back";
3
8
  type AgentMentionScope = "my_sessions" | "collab_sessions";
@@ -118,4 +123,71 @@ interface AgentMentionCustomItem {
118
123
  }
119
124
  type AgentContextMentionItem = AgentMentionFileItem | AgentMentionAgentTargetItem | AgentMentionSessionItem | AgentMentionWorkspaceAppItem | AgentMentionWorkspaceReferenceItem | AgentMentionWorkspaceAppFactoryItem | AgentMentionWorkspaceIssueItem | AgentMentionCustomItem;
120
125
 
121
- export type { AgentContextMentionItem as A };
126
+ type AgentMentionProviderDiagnosticStatus = "success" | "timeout" | "error" | "missing";
127
+ interface AgentMentionProviderQueryDiagnostic {
128
+ durationMs: number;
129
+ errorKind?: string;
130
+ providerId: string;
131
+ resultCount: number;
132
+ status: AgentMentionProviderDiagnosticStatus;
133
+ }
134
+ interface AgentMentionSearchDiagnosticLog {
135
+ debounceMs: number;
136
+ durationMs: number;
137
+ errorKind?: string;
138
+ event: "agent_gui.mention_search";
139
+ filter: AgentMentionFilterId;
140
+ groupCount: number;
141
+ itemCount: number;
142
+ mode: "browse" | "results";
143
+ providerResults: AgentMentionProviderQueryDiagnostic[];
144
+ providerTimeoutMs: number;
145
+ queryLength: number;
146
+ requestId: number;
147
+ status: "ready" | "error";
148
+ workspaceId: string;
149
+ }
150
+
151
+ type AgentMentionFilterId = "session" | "file" | "issue" | "agent" | "app";
152
+ type AgentMentionStaticGroupId = "apps" | "agents" | "files" | "opened_files" | "agent_generated_files" | "my_sessions" | "collab_sessions" | "issues";
153
+ type AgentMentionIssueTopicGroupId = `issue-topic:${string}`;
154
+ type AgentMentionProvenanceGroupId = `agent:${string}`;
155
+ type AgentMentionMemberGroupId = `member:${string}`;
156
+ type AgentMentionGroupId = AgentMentionStaticGroupId | AgentMentionIssueTopicGroupId | AgentMentionProvenanceGroupId | AgentMentionMemberGroupId;
157
+ type AgentMentionRawGroupId = Exclude<AgentMentionStaticGroupId, "files" | "my_sessions" | "collab_sessions"> | "sessions";
158
+ type AgentMentionRawGroups = Record<AgentMentionRawGroupId, AgentContextMentionItem[]>;
159
+ type AgentMentionTotalCounts = Partial<Record<AgentMentionGroupId, number>>;
160
+ interface AgentMentionIssueTopicGroup {
161
+ id: `issue-topic:${string}`;
162
+ providerGroupId: string;
163
+ label: string;
164
+ items: AgentContextMentionItem[];
165
+ totalCount: number;
166
+ nextPageToken: string | null;
167
+ loadMoreStatus: "idle" | "loading" | "error";
168
+ loadMoreError: string | null;
169
+ }
170
+ interface AgentMentionBrowseCategory {
171
+ id: AgentMentionFilterId;
172
+ label: string;
173
+ }
174
+ type AgentMentionGroup = MentionPaletteGroup<AgentContextMentionItem>;
175
+ type AgentMentionSearchState = MentionPaletteState<AgentContextMentionItem>;
176
+ interface AgentMentionSearchControllerOptions {
177
+ contextMentionProviders?: readonly AgentContextMentionProvider[];
178
+ debounceMs?: number;
179
+ fileLimit?: number;
180
+ issueLimit?: number;
181
+ browseCacheTtlMs?: number;
182
+ providerTimeoutMs?: number;
183
+ diagnosticInfoLogger?: (payload: AgentMentionSearchDiagnosticLog) => void;
184
+ diagnosticNow?: () => number;
185
+ diagnosticSlowThresholdMs?: number;
186
+ }
187
+ type AgentMentionSearchListener = (state: AgentMentionSearchState) => void;
188
+ interface AgentMentionLifecycleDiagnosticLog {
189
+ event: "browse.open" | "browse.preload" | "browse.cache" | "browse.fetch.start" | "browse.fetch.dedupe" | "browse.fetch.success" | "browse.fetch.error" | "browse.apply.skipped";
190
+ details: Record<string, RuntimeDiagnosticsDetailValue>;
191
+ }
192
+
193
+ export type { AgentContextMentionItem as A, RuntimeDiagnosticsDetailValue as R, AgentMentionBrowseCategory as a, AgentMentionFilterId as b, AgentMentionGroup as c, AgentMentionGroupId as d, AgentMentionIssueTopicGroup as e, AgentMentionLifecycleDiagnosticLog as f, AgentMentionProviderQueryDiagnostic as g, AgentMentionRawGroups as h, AgentMentionSearchControllerOptions as i, AgentMentionSearchDiagnosticLog as j, AgentMentionSearchListener as k, AgentMentionSearchState as l, AgentMentionTotalCounts as m };
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  AgentRichTextReadonly
3
- } from "./chunk-DLN33TPF.js";
4
- import "./chunk-B4TM2HYJ.js";
5
- import "./chunk-3V5OCA2M.js";
6
- import "./chunk-FGLQZ6I4.js";
3
+ } from "./chunk-NXQGAXIE.js";
7
4
  import "./chunk-LQMIEH4C.js";
5
+ import "./chunk-JQOQETPN.js";
6
+ import "./chunk-3V5OCA2M.js";
8
7
  import "./chunk-M6HTOCQK.js";
9
- import "./chunk-UERICUWM.js";
8
+ import "./chunk-GLVENTN6.js";
10
9
  import "./chunk-5BJYO6X3.js";
11
10
  import "./chunk-AFUVWWQY.js";
12
- import "./chunk-P2RIZAK5.js";
11
+ import "./chunk-ZXEICU6J.js";
12
+ import "./chunk-FGLQZ6I4.js";
13
13
  import "./chunk-D2JUDUYY.js";
14
14
  import "./chunk-QNE2ZPPV.js";
15
15
  import "./chunk-O433KXLK.js";
16
16
  export {
17
17
  AgentRichTextReadonly
18
18
  };
19
- //# sourceMappingURL=AgentRichTextReadonly-IPPNAAWG.js.map
19
+ //# sourceMappingURL=AgentRichTextReadonly-WZHUIARR.js.map
@@ -7,26 +7,26 @@ import {
7
7
  reconcileProjectedAgentConversationVM,
8
8
  serializeAgentConversationForClipboard,
9
9
  useProjectedAgentConversation
10
- } from "../chunk-YY5WM3OE.js";
11
- import "../chunk-DLN33TPF.js";
10
+ } from "../chunk-GDLM6FLK.js";
11
+ import "../chunk-NXQGAXIE.js";
12
+ import "../chunk-PPAV2TB4.js";
13
+ import "../chunk-LQMIEH4C.js";
12
14
  import "../chunk-N4HLBSMJ.js";
13
15
  import "../chunk-XJ34OIEQ.js";
14
- import "../chunk-B4TM2HYJ.js";
16
+ import "../chunk-JQOQETPN.js";
15
17
  import "../chunk-JDVP33S5.js";
16
18
  import "../chunk-3V5OCA2M.js";
17
- import "../chunk-FGLQZ6I4.js";
18
- import "../chunk-Z5UJC4Q3.js";
19
- import "../chunk-LQMIEH4C.js";
20
- import "../chunk-QFYOJMEQ.js";
19
+ import "../chunk-M6WEFXPL.js";
21
20
  import "../chunk-M6HTOCQK.js";
22
21
  import "../chunk-F5UR6EJG.js";
23
22
  import {
24
23
  translate
25
- } from "../chunk-UERICUWM.js";
24
+ } from "../chunk-GLVENTN6.js";
26
25
  import "../chunk-5BJYO6X3.js";
27
26
  import "../chunk-AFUVWWQY.js";
28
- import "../chunk-P2RIZAK5.js";
29
27
  import "../chunk-MIJXEELH.js";
28
+ import "../chunk-ZXEICU6J.js";
29
+ import "../chunk-FGLQZ6I4.js";
30
30
  import "../chunk-D2JUDUYY.js";
31
31
  import "../chunk-QNE2ZPPV.js";
32
32
  import "../chunk-O433KXLK.js";
@@ -6,7 +6,7 @@ import { l as AgentHostAgentSessionComposerSettings, p as AgentHostUnactivateAge
6
6
  import { A as AgentComposerDraft, i as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, j as AgentSlashCommandCapability, c as AgentGUINodeViewModel, a as AgentComposerDraftFile, k as AgentUsageQuota, g as AgentHostInputApi } from './agentGuiNodeTypes-DW7T--Y8.js';
7
7
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
9
- import { A as AgentContextMentionItem } from './agentFileMentionContracts-BeBex-Sf.js';
9
+ import { A as AgentContextMentionItem, b as AgentMentionFilterId } from './AgentMentionSearchContracts-y1_u9cPi.js';
10
10
  import { A as AgentGuiI18nLocale } from './runtime-Dwf44VKc.js';
11
11
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
12
12
  import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
@@ -18,6 +18,10 @@ import { WorkspaceUserProject } from '@tutti-os/workspace-user-project/contracts
18
18
  import { ReferenceProvenanceFilterSnapshot, ReferenceProvenanceFilterController } from '@tutti-os/workspace-file-reference/react';
19
19
  import { RichTextMentionService } from '@tutti-os/ui-rich-text/service';
20
20
  import './planImplementationPresentation-BxVOLt6A.js';
21
+ import './context-mention-provider.js';
22
+ import '@tutti-os/ui-rich-text/types';
23
+ import '@tutti-os/workspace-external-core/contracts';
24
+ import '@tutti-os/ui-rich-text/at-panel';
21
25
  import '@tutti-os/workspace-issue-manager/core';
22
26
 
23
27
  declare const APP_UPDATE_POLICIES: readonly ["off", "prompt", "auto"];
@@ -612,6 +616,9 @@ interface AgentComposerReferenceProvenanceFilter {
612
616
  snapshot: ReferenceProvenanceFilterSnapshot;
613
617
  controller: Pick<ReferenceProvenanceFilterController, "reset" | "toggle" | "toggleAll">;
614
618
  }
619
+ interface AgentComposerReferenceProvenanceFilters {
620
+ byFilter: Record<AgentMentionFilterId, AgentComposerReferenceProvenanceFilter>;
621
+ }
615
622
  interface AgentComposerSubmitOptions {
616
623
  requiredSettingsPatch?: AgentActivitySubmitSettingsPatch;
617
624
  capabilityRefs?: readonly AgentComposerCapabilityReference[];
@@ -956,7 +963,7 @@ interface AgentComposerProps {
956
963
  path: string;
957
964
  } | null>;
958
965
  onRequestGitBranches?: AgentComposerGitBranchLoader | null;
959
- referenceProvenanceFilter?: AgentComposerReferenceProvenanceFilter | null;
966
+ referenceProvenanceFilters?: AgentComposerReferenceProvenanceFilters | null;
960
967
  }
961
968
  type AgentComposerCapabilitySettingsTarget = Exclude<AgentSlashCommandCapability["capability"], "tutti">;
962
969
  interface AgentComposerCapabilityMenuState {
@@ -1449,7 +1456,12 @@ interface AgentGUINodeFrameLayout {
1449
1456
  /** Host-projected presentation visibility. Independent from node focus. */
1450
1457
  isVisible?: boolean;
1451
1458
  embedded?: boolean;
1452
- conversationRailAutoCollapseWidthPx?: number | null;
1459
+ /**
1460
+ * Standalone windows preserve the middle conversation width and collapse
1461
+ * the conversation Rail before it can be compressed. Other surfaces retain
1462
+ * the default responsive policy.
1463
+ */
1464
+ conversationRailAutoCollapseMode?: "preserve-middle-content";
1453
1465
  }
1454
1466
  type AgentGUISessionActionRequest = AgentGuiWorkbenchSessionActionRequest;
1455
1467
  interface AgentGUINodeRuntimeRequests {
@@ -1529,6 +1541,7 @@ interface AgentGUINodeHostActions {
1529
1541
  onConversationRailLayoutChange?: (layout: AgentGUIConversationRailLayout) => void;
1530
1542
  }
1531
1543
  interface AgentGUINodeRenderSlots {
1544
+ projectDirectoryPickerHeaderActions?: ReferenceSourcePickerProps["renderHeaderActions"];
1532
1545
  providerRailEmpty?: AgentGUIAgentsEmptyRenderer;
1533
1546
  providerUnavailableState?: AgentGUIProviderUnavailableStateRenderer;
1534
1547
  sidebarFooter?: (ctx: AgentGUISidebarFooterContext) => ReactNode;
package/dist/agent-gui.js CHANGED
@@ -1,45 +1,46 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-KJA3HHUJ.js";
3
+ } from "./chunk-TKECUCUW.js";
4
4
  import "./chunk-LB4AGT7B.js";
5
5
  import "./chunk-A4WCTHWS.js";
6
- import "./chunk-MOCBHFJ2.js";
7
- import "./chunk-VMPPZO5C.js";
6
+ import "./chunk-O4QFGCLU.js";
7
+ import "./chunk-2QF3RBR4.js";
8
8
  import "./chunk-KDN6SLJM.js";
9
- import "./chunk-4CHBM3G3.js";
10
- import "./chunk-CBMWHQ7P.js";
9
+ import "./chunk-SUVMLCED.js";
11
10
  import "./chunk-MGSRWYRN.js";
12
- import "./chunk-YY5WM3OE.js";
13
- import "./chunk-DLN33TPF.js";
11
+ import "./chunk-CBMWHQ7P.js";
12
+ import "./chunk-FS7EMOVD.js";
13
+ import "./chunk-EVQ4JY3N.js";
14
+ import "./chunk-GDLM6FLK.js";
15
+ import "./chunk-NXQGAXIE.js";
16
+ import "./chunk-PPAV2TB4.js";
17
+ import "./chunk-LQMIEH4C.js";
18
+ import "./chunk-FMTWYOHM.js";
14
19
  import "./chunk-N4HLBSMJ.js";
15
20
  import "./chunk-UP3ZDYTN.js";
16
21
  import "./chunk-GUFEHWUX.js";
17
- import "./chunk-DTP2OMCE.js";
22
+ import "./chunk-44OCOBJS.js";
23
+ import "./chunk-N2M4B3G3.js";
18
24
  import "./chunk-3MVSOLX3.js";
19
25
  import "./chunk-G7DS23D4.js";
20
- import "./chunk-6A6OVD66.js";
26
+ import "./chunk-6GX57XB5.js";
27
+ import "./chunk-G2KRK7Z5.js";
21
28
  import "./chunk-VMPA46ET.js";
29
+ import "./chunk-YMXYBG7U.js";
22
30
  import "./chunk-XJ34OIEQ.js";
23
- import "./chunk-B4TM2HYJ.js";
31
+ import "./chunk-JQOQETPN.js";
24
32
  import "./chunk-JDVP33S5.js";
25
33
  import "./chunk-3V5OCA2M.js";
26
- import "./chunk-RMQREVJY.js";
27
- import "./chunk-FGLQZ6I4.js";
28
- import "./chunk-EZRQMJTX.js";
29
- import "./chunk-EVQ4JY3N.js";
30
- import "./chunk-Z5UJC4Q3.js";
31
- import "./chunk-LQMIEH4C.js";
32
- import "./chunk-FMTWYOHM.js";
33
- import "./chunk-AOK22J62.js";
34
- import "./chunk-YMXYBG7U.js";
35
- import "./chunk-QFYOJMEQ.js";
34
+ import "./chunk-M6WEFXPL.js";
36
35
  import "./chunk-M6HTOCQK.js";
37
36
  import "./chunk-F5UR6EJG.js";
38
- import "./chunk-UERICUWM.js";
37
+ import "./chunk-GLVENTN6.js";
39
38
  import "./chunk-5BJYO6X3.js";
40
39
  import "./chunk-AFUVWWQY.js";
41
- import "./chunk-P2RIZAK5.js";
42
40
  import "./chunk-MIJXEELH.js";
41
+ import "./chunk-ZXEICU6J.js";
42
+ import "./chunk-RMQREVJY.js";
43
+ import "./chunk-FGLQZ6I4.js";
43
44
  import "./chunk-D2JUDUYY.js";
44
45
  import "./chunk-QNE2ZPPV.js";
45
46
  import "./chunk-O433KXLK.js";
@@ -8,7 +8,7 @@ import {
8
8
  isPromptRequestIdTitle,
9
9
  latestPlanTurnId,
10
10
  planImplementationPromptFromPlanTurn
11
- } from "../chunk-EZRQMJTX.js";
11
+ } from "../chunk-FS7EMOVD.js";
12
12
  import {
13
13
  useEngineSelector
14
14
  } from "../chunk-EVQ4JY3N.js";
@@ -21,7 +21,7 @@ import {
21
21
  isExitPlanSwitchModeInput,
22
22
  normalizeAgentApprovalPurpose,
23
23
  normalizeAskUserQuestions
24
- } from "../chunk-Z5UJC4Q3.js";
24
+ } from "../chunk-PPAV2TB4.js";
25
25
  import {
26
26
  cn
27
27
  } from "../chunk-LQMIEH4C.js";
@@ -29,13 +29,13 @@ import "../chunk-FMTWYOHM.js";
29
29
  import {
30
30
  userAvatarPlaceholderUrl,
31
31
  workspaceAgentActivityStatusLabel
32
- } from "../chunk-AOK22J62.js";
32
+ } from "../chunk-N2M4B3G3.js";
33
33
  import {
34
34
  resolveWorkspaceAgentSessionSortTimeUnixMs
35
35
  } from "../chunk-YMXYBG7U.js";
36
36
  import {
37
37
  workspaceAgentProviderLabel
38
- } from "../chunk-QFYOJMEQ.js";
38
+ } from "../chunk-M6WEFXPL.js";
39
39
  import {
40
40
  managedAgentRoundedIconUrl
41
41
  } from "../chunk-M6HTOCQK.js";
@@ -44,13 +44,13 @@ import {
44
44
  AgentGuiI18nProvider,
45
45
  getActiveUiLanguage,
46
46
  useTranslation
47
- } from "../chunk-UERICUWM.js";
47
+ } from "../chunk-GLVENTN6.js";
48
48
  import "../chunk-5BJYO6X3.js";
49
49
  import "../chunk-AFUVWWQY.js";
50
- import "../chunk-P2RIZAK5.js";
51
50
  import {
52
51
  normalizeAgentTitleText
53
52
  } from "../chunk-MIJXEELH.js";
53
+ import "../chunk-ZXEICU6J.js";
54
54
  import "../chunk-D2JUDUYY.js";
55
55
  import "../chunk-QNE2ZPPV.js";
56
56
  import "../chunk-O433KXLK.js";
@@ -4619,7 +4619,7 @@ aside.workspace-agents-status-panel
4619
4619
  --background-session-sidepanel,
4620
4620
  rgb(244 245 247)
4621
4621
  );
4622
- --agent-gui-detail-padding-x: 32px;
4622
+ --agent-gui-detail-padding-x: 48px;
4623
4623
  width: 100%;
4624
4624
  height: 100%;
4625
4625
  container: agent-gui-node / inline-size;
@@ -4678,16 +4678,13 @@ aside.workspace-agents-status-panel
4678
4678
  transition: none;
4679
4679
  }
4680
4680
 
4681
- .workbench-window[data-window-header-layout="overlay"],
4682
- .workbench-window[data-agent-gui-standalone-window="true"] {
4681
+ .workbench-window[data-window-header-layout="overlay"] {
4683
4682
  --agent-gui-workbench-header-height: 44px;
4684
4683
 
4685
4684
  grid-template-rows: minmax(0, 1fr);
4686
4685
  }
4687
4686
 
4688
4687
  .workbench-window[data-window-header-layout="overlay"]
4689
- .workbench-window__header,
4690
- .workbench-window[data-agent-gui-standalone-window="true"]
4691
4688
  .workbench-window__header {
4692
4689
  position: absolute !important;
4693
4690
  top: 0 !important;
@@ -4716,19 +4713,12 @@ aside.workspace-agents-status-panel
4716
4713
  cursor: grabbing !important;
4717
4714
  }
4718
4715
 
4719
- .workbench-window[data-agent-gui-standalone-window="true"]
4716
+ .workbench-window[data-window-header-layout="overlay"]
4720
4717
  .workbench-window__header {
4721
4718
  z-index: calc(var(--z-panel) + 1);
4722
4719
  }
4723
4720
 
4724
- .workbench-window[data-agent-gui-standalone-window="true"]
4725
- .agent-gui-workbench-header::after {
4726
- display: none;
4727
- }
4728
-
4729
- .workbench-window[data-window-header-layout="overlay"] .workbench-window__body,
4730
- .workbench-window[data-agent-gui-standalone-window="true"]
4731
- .workbench-window__body {
4721
+ .workbench-window[data-window-header-layout="overlay"] .workbench-window__body {
4732
4722
  grid-row: 1;
4733
4723
  overflow: hidden;
4734
4724
  }
@@ -4796,8 +4786,6 @@ aside.workspace-agents-status-panel
4796
4786
  }
4797
4787
 
4798
4788
  .workbench-window[data-window-header-layout="overlay"]
4799
- .agent-gui-node__provider-rail-panel,
4800
- .workbench-window[data-agent-gui-standalone-window="true"]
4801
4789
  .agent-gui-node__provider-rail-panel {
4802
4790
  padding-top: var(--agent-gui-workbench-header-height);
4803
4791
  }
@@ -4807,28 +4795,20 @@ aside.workspace-agents-status-panel
4807
4795
  toolbar has no such wrapper, so fold the same 2px into its offset to keep the
4808
4796
  search field top aligned with the provider tiles. */
4809
4797
  .workbench-window[data-window-header-layout="overlay"]
4810
- .agent-gui-node__rail-toolbar,
4811
- .workbench-window[data-agent-gui-standalone-window="true"]
4812
4798
  .agent-gui-node__rail-toolbar {
4813
4799
  padding-top: calc(var(--agent-gui-workbench-header-height) + 2px);
4814
4800
  }
4815
4801
 
4816
4802
  .workbench-window[data-window-header-layout="overlay"]
4817
- .agent-gui-node__detail-panel,
4818
- .workbench-window[data-agent-gui-standalone-window="true"]
4819
4803
  .agent-gui-node__detail-panel {
4820
4804
  position: relative;
4821
4805
  }
4822
4806
 
4823
- .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__detail,
4824
- .workbench-window[data-agent-gui-standalone-window="true"]
4825
- .agent-gui-node__detail {
4807
+ .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__detail {
4826
4808
  padding-top: var(--agent-gui-workbench-header-height);
4827
4809
  }
4828
4810
 
4829
4811
  .workbench-window[data-window-header-layout="overlay"]
4830
- .agent-gui-node__timeline-with-composer,
4831
- .workbench-window[data-agent-gui-standalone-window="true"]
4832
4812
  .agent-gui-node__timeline-with-composer {
4833
4813
  padding-top: 20px;
4834
4814
  }
@@ -4890,12 +4870,6 @@ aside.workspace-agents-status-panel
4890
4870
  --agent-gui-workbench-header-title-max-width: calc(100% - 32px);
4891
4871
  --agent-gui-workbench-header-text: var(--text-primary);
4892
4872
  --agent-gui-workbench-header-muted: var(--text-secondary);
4893
- --agent-gui-workbench-header-divider: color-mix(
4894
- in srgb,
4895
- var(--text-primary) 4%,
4896
- transparent
4897
- );
4898
-
4899
4873
  position: relative;
4900
4874
  display: grid;
4901
4875
  width: 100%;
@@ -4913,17 +4887,6 @@ aside.workspace-agents-status-panel
4913
4887
  user-select: none;
4914
4888
  }
4915
4889
 
4916
- .agent-gui-workbench-header[data-agent-gui-workbench-header-has-session="true"]::after {
4917
- position: absolute;
4918
- right: 0;
4919
- bottom: 0;
4920
- left: var(--agent-gui-workbench-header-rail-width);
4921
- height: 1px;
4922
- background: var(--agent-gui-workbench-header-divider);
4923
- content: "";
4924
- pointer-events: none;
4925
- }
4926
-
4927
4890
  .agent-gui-workbench-header:active {
4928
4891
  cursor: grabbing;
4929
4892
  }
@@ -4932,10 +4895,6 @@ aside.workspace-agents-status-panel
4932
4895
  grid-template-columns: minmax(0, 0px) minmax(0, 1fr);
4933
4896
  }
4934
4897
 
4935
- .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"]::after {
4936
- left: 0;
4937
- }
4938
-
4939
4898
  .agent-gui-workbench-header__primary {
4940
4899
  display: flex;
4941
4900
  box-sizing: border-box;
@@ -4957,10 +4916,11 @@ aside.workspace-agents-status-panel
4957
4916
  }
4958
4917
 
4959
4918
  /*
4960
- * The standalone window's tool actions belong to native-window chrome, so
4961
- * collapsing the conversation rail must not pull them into the 720px content
4962
- * cap. Let the primary row span the window and keep the same trailing inset as
4963
- * the expanded detail row.
4919
+ * Tool-sidebar actions belong to the single Agent window header regardless of
4920
+ * whether that header is owned by the native window or an embedding host.
4921
+ * Collapsing the conversation rail must not pull them into the 720px content
4922
+ * cap. Let the primary row span the host header and keep the same trailing
4923
+ * inset as the expanded detail row.
4964
4924
  *
4965
4925
  * The tool actions are absolutely positioned against the window's right edge,
4966
4926
  * so they no longer occupy space in the flex row. In the collapsed primary row
@@ -4970,7 +4930,7 @@ aside.workspace-agents-status-panel
4970
4930
  * trailing padding on the row itself so the title flex-grows and truncates
4971
4931
  * before it can reach them, regardless of what precedes it.
4972
4932
  */
4973
- .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"][data-agent-gui-workbench-header-collapsed="true"]
4933
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"][data-agent-gui-workbench-header-collapsed="true"]
4974
4934
  .agent-gui-workbench-header__primary {
4975
4935
  width: 100%;
4976
4936
  padding-inline-end: calc(
@@ -4979,18 +4939,18 @@ aside.workspace-agents-status-panel
4979
4939
  );
4980
4940
  }
4981
4941
 
4982
- .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4942
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"]
4983
4943
  .agent-gui-workbench-header__secondary-accessory {
4984
4944
  padding-right: 0;
4985
4945
  }
4986
4946
 
4987
- /* Keep the standalone tool header on the same right edge as its body panel.
4947
+ /* Keep the tool header on the same right edge as its body panel.
4988
4948
  The body panel is right-anchored independently of the Agent header's rail
4989
4949
  grid; leaving this accessory in the grid makes its left edge drift when the
4990
4950
  panel expands to the available width. */
4991
- .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4951
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"]
4992
4952
  .agent-gui-workbench-header__secondary-accessory:has(
4993
- [data-standalone-agent-tool-sidebar-header="true"]
4953
+ [data-agent-tool-sidebar-header="true"]
4994
4954
  ) {
4995
4955
  position: absolute;
4996
4956
  top: 0;
@@ -4999,13 +4959,13 @@ aside.workspace-agents-status-panel
4999
4959
  }
5000
4960
 
5001
4961
  /*
5002
- * In the collapsed empty state there is no session title to anchor the control
5003
- * cluster, so the detached-window button's margin-left:auto would strand the
5004
- * icons at the far window edge. Drop the auto push so those window controls sit
5005
- * as a compact group right after the traffic lights instead. Secondary tool
5006
- * actions retain their own right alignment across the full header width.
4962
+ * The detached-window button pushes the detail controls to the far edge while
4963
+ * the conversation rail is expanded. Once the rail collapses, every primary
4964
+ * control and the session title share one full-width row, so keep that group
4965
+ * anchored immediately after the traffic lights. Secondary tool actions retain
4966
+ * their own right alignment across the full header width.
5007
4967
  */
5008
- .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"][data-agent-gui-workbench-header-has-session="false"]
4968
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"]
5009
4969
  .agent-gui-workbench-header__detached-window {
5010
4970
  margin-left: 0;
5011
4971
  }
@@ -5321,9 +5281,9 @@ aside.workspace-agents-status-panel
5321
5281
  pointer-events: auto;
5322
5282
  }
5323
5283
 
5324
- .workbench-window[data-agent-gui-standalone-window="true"]
5284
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"]
5325
5285
  .agent-gui-workbench-header__session-title,
5326
- .workbench-window[data-agent-gui-standalone-window="true"]
5286
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"]
5327
5287
  .agent-gui-workbench-header__detail-title {
5328
5288
  box-sizing: border-box;
5329
5289
  width: auto;
@@ -5342,7 +5302,7 @@ aside.workspace-agents-status-panel
5342
5302
  * max-width here so the reservation is not counted twice, which would strand
5343
5303
  * the title far short of the actions.
5344
5304
  */
5345
- .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"][data-agent-gui-workbench-header-collapsed="true"]
5305
+ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"][data-agent-gui-workbench-header-collapsed="true"]
5346
5306
  .agent-gui-workbench-header__session-title {
5347
5307
  max-width: 100%;
5348
5308
  }
@@ -5606,8 +5566,6 @@ aside.workspace-agents-status-panel
5606
5566
  }
5607
5567
 
5608
5568
  .workbench-window[data-window-header-layout="overlay"]
5609
- .agent-gui-node__provider-rail-panel::after,
5610
- .workbench-window[data-agent-gui-standalone-window="true"]
5611
5569
  .agent-gui-node__provider-rail-panel::after {
5612
5570
  top: var(--agent-gui-workbench-header-height);
5613
5571
  }
@@ -5672,7 +5630,9 @@ aside.workspace-agents-status-panel
5672
5630
  align-items: center;
5673
5631
  gap: 10px;
5674
5632
  min-width: 0;
5675
- padding: 2px 16px 16px;
5633
+ /* Right inset mirrors the conversation list's 4px padding + 8px native
5634
+ scrollbar gutter so the toolbar controls end flush with the row edges. */
5635
+ padding: 2px 12px 16px 12px;
5676
5636
  }
5677
5637
 
5678
5638
  .agent-gui-node__project-rail-header {
@@ -6012,7 +5972,10 @@ aside.workspace-agents-status-panel
6012
5972
  min-height: 0;
6013
5973
  overflow-x: hidden;
6014
5974
  overflow-y: auto;
6015
- padding: 0 10px 18px 12px;
5975
+ /* Right inset stays 4px because the always-visible native scrollbar already
5976
+ reserves an 8px gutter, keeping the visual right inset at 12px like the
5977
+ left side. */
5978
+ padding: 0 4px 18px 12px;
6016
5979
  }
6017
5980
 
6018
5981
  .agent-gui-node__conversation-section {
@@ -6976,7 +6939,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6976
6939
  --agent-message-locator-dot-size: 6px;
6977
6940
  --agent-message-locator-hit-size: 36px;
6978
6941
  --agent-message-locator-center-offset: 18px;
6979
- --agent-message-locator-inline-shift: 4px;
6942
+ --agent-message-locator-inline-shift: 8px;
6980
6943
  --agent-message-locator-scrollbar-gap: 8px;
6981
6944
  --agent-message-locator-visible-height: 100vh;
6982
6945
  --agent-message-locator-visible-top-offset: 0px;
@@ -10889,3 +10852,64 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
10889
10852
  font-size: 11px;
10890
10853
  line-height: 1.5;
10891
10854
  }
10855
+
10856
+ /* Tutti intensity slider: stars pour out of the handle towards the left end
10857
+ of the track. The stream container is sized from React (track start to the
10858
+ handle's left edge); per-star duration/delay/drift come from CSS vars so a
10859
+ fixed pool can run continuously while intensity changes only toggle
10860
+ visibility. Stacking: the stream sits above the track (z-index 1) and below
10861
+ the handle (the slider thumb rules raise it to z-index 2). */
10862
+ .agent-gui-intensity-star-stream {
10863
+ position: absolute;
10864
+ z-index: 1;
10865
+ top: 50%;
10866
+ left: 0;
10867
+ width: max(0px, var(--agent-gui-star-stream-width, 0px));
10868
+ height: 28px;
10869
+ transform: translateY(calc(-50% - 2px));
10870
+ overflow: hidden;
10871
+ pointer-events: none;
10872
+ }
10873
+
10874
+ .agent-gui-intensity-star-stream__star {
10875
+ position: absolute;
10876
+ left: 100%;
10877
+ opacity: 0;
10878
+ filter: drop-shadow(0 0 3px currentColor) drop-shadow(0 0 6px currentColor);
10879
+ animation: agent-gui-intensity-star-stream-flow
10880
+ var(--agent-gui-star-duration, 2s) linear infinite;
10881
+ animation-delay: var(--agent-gui-star-delay, 0s);
10882
+ }
10883
+
10884
+ @keyframes agent-gui-intensity-star-stream-flow {
10885
+ 0% {
10886
+ left: 100%;
10887
+ opacity: 0;
10888
+ transform: translateY(0) scale(0.5);
10889
+ }
10890
+
10891
+ 10% {
10892
+ opacity: 0.95;
10893
+ }
10894
+
10895
+ 50% {
10896
+ transform: translateY(var(--agent-gui-star-drift, 0px)) scale(1);
10897
+ }
10898
+
10899
+ 85% {
10900
+ opacity: 0.95;
10901
+ }
10902
+
10903
+ 100% {
10904
+ left: -16px;
10905
+ opacity: 0;
10906
+ transform: translateY(0) scale(0.6);
10907
+ }
10908
+ }
10909
+
10910
+ @media (prefers-reduced-motion: reduce) {
10911
+ .agent-gui-intensity-star-stream__star {
10912
+ animation: none;
10913
+ opacity: 0;
10914
+ }
10915
+ }