@tutti-os/agent-gui 0.0.47 → 0.0.49

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 (64) hide show
  1. package/dist/agent-conversation/index.d.ts +4 -4
  2. package/dist/agent-conversation/index.js +6 -6
  3. package/dist/agent-message-center/index.d.ts +2 -2
  4. package/dist/agent-message-center/index.js +35 -13
  5. package/dist/agent-message-center/index.js.map +1 -1
  6. package/dist/{agentConversationVM-BTMtRteS.d.ts → agentConversationVM-DSXrFL9v.d.ts} +5 -1
  7. package/dist/{agentGuiNodeTypes-B5Y6yDKy.d.ts → agentGuiNodeTypes-Bp1G8pOj.d.ts} +4 -4
  8. package/dist/app/renderer/agentactivity.css +102 -93
  9. package/dist/{chunk-7NCWSH7U.js → chunk-5HJWT6YN.js} +5 -5
  10. package/dist/{chunk-2FOBSURO.js → chunk-6KQHNUR5.js} +2 -2
  11. package/dist/{chunk-5QTC2L52.js → chunk-77UR4G7P.js} +2 -2
  12. package/dist/{chunk-HCS3HUUX.js → chunk-A2EN24OI.js} +37 -7
  13. package/dist/chunk-A2EN24OI.js.map +1 -0
  14. package/dist/{chunk-2RYZ4EBF.js → chunk-AKK7UOAS.js} +2 -2
  15. package/dist/{chunk-Q4X6Q4E6.js → chunk-AYEYXKLF.js} +2 -2
  16. package/dist/{chunk-J3SJZMI5.js → chunk-FSRS2JFR.js} +2 -2
  17. package/dist/{chunk-KACBTC7Y.js → chunk-K6SRLYC3.js} +17 -3
  18. package/dist/chunk-K6SRLYC3.js.map +1 -0
  19. package/dist/{chunk-MCH35MAX.js → chunk-Q3MOU4CD.js} +10 -6
  20. package/dist/chunk-Q3MOU4CD.js.map +1 -0
  21. package/dist/{chunk-R6GOICRO.js → chunk-QGBIGRZA.js} +56 -9
  22. package/dist/chunk-QGBIGRZA.js.map +1 -0
  23. package/dist/{chunk-XJXSR5XI.js → chunk-RJR2OZ6T.js} +125 -34
  24. package/dist/chunk-RJR2OZ6T.js.map +1 -0
  25. package/dist/{chunk-SD56WDSC.js → chunk-TG3ZXLPM.js} +42 -1
  26. package/dist/chunk-TG3ZXLPM.js.map +1 -0
  27. package/dist/{chunk-KUCWRSXU.js → chunk-TTDBLIQ3.js} +2 -2
  28. package/dist/{chunk-VE6JY2TH.js → chunk-U6JWW45G.js} +1 -1
  29. package/dist/chunk-U6JWW45G.js.map +1 -0
  30. package/dist/{chunk-ZAF4IVUT.js → chunk-XRJZCEOX.js} +462 -366
  31. package/dist/chunk-XRJZCEOX.js.map +1 -0
  32. package/dist/context-mention-palette/index.js +7 -7
  33. package/dist/i18n/index.d.ts +16 -2
  34. package/dist/i18n/index.js +2 -2
  35. package/dist/index.d.ts +290 -8
  36. package/dist/index.js +578 -830
  37. package/dist/index.js.map +1 -1
  38. package/dist/plan-decision-ops.d.ts +2 -2
  39. package/dist/queued-prompt-runtime.d.ts +4 -3
  40. package/dist/queued-prompt-runtime.js +1 -1
  41. package/dist/workbench/contribution.js +2 -2
  42. package/dist/workbench/index.js +5 -5
  43. package/dist/workbench/launch.d.ts +22 -1
  44. package/dist/workbench/launch.js +13 -3
  45. package/dist/workbench/sessionTitle.js +3 -3
  46. package/dist/workspace-agent-generated-files.d.ts +1 -1
  47. package/dist/workspace-agent-generated-files.js +3 -3
  48. package/dist/{workspaceAgentActivityListViewModel-DLnMBMoh.d.ts → workspaceAgentActivityListViewModel-B5viw5Da.d.ts} +1 -1
  49. package/package.json +12 -12
  50. package/dist/chunk-HCS3HUUX.js.map +0 -1
  51. package/dist/chunk-KACBTC7Y.js.map +0 -1
  52. package/dist/chunk-MCH35MAX.js.map +0 -1
  53. package/dist/chunk-R6GOICRO.js.map +0 -1
  54. package/dist/chunk-SD56WDSC.js.map +0 -1
  55. package/dist/chunk-VE6JY2TH.js.map +0 -1
  56. package/dist/chunk-XJXSR5XI.js.map +0 -1
  57. package/dist/chunk-ZAF4IVUT.js.map +0 -1
  58. /package/dist/{chunk-7NCWSH7U.js.map → chunk-5HJWT6YN.js.map} +0 -0
  59. /package/dist/{chunk-2FOBSURO.js.map → chunk-6KQHNUR5.js.map} +0 -0
  60. /package/dist/{chunk-5QTC2L52.js.map → chunk-77UR4G7P.js.map} +0 -0
  61. /package/dist/{chunk-2RYZ4EBF.js.map → chunk-AKK7UOAS.js.map} +0 -0
  62. /package/dist/{chunk-Q4X6Q4E6.js.map → chunk-AYEYXKLF.js.map} +0 -0
  63. /package/dist/{chunk-J3SJZMI5.js.map → chunk-FSRS2JFR.js.map} +0 -0
  64. /package/dist/{chunk-KUCWRSXU.js.map → chunk-TTDBLIQ3.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-DLnMBMoh.js';
1
+ import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-B5viw5Da.js';
2
2
 
3
3
  interface WorkspaceAgentSessionDetailMessage {
4
4
  id: string;
@@ -214,6 +214,8 @@ interface AgentPlanModeItemVM {
214
214
  plan?: string | null;
215
215
  status: string | null;
216
216
  filePath?: string | null;
217
+ options?: AgentApprovalOptionVM[];
218
+ keepPlanningOptionId?: string;
217
219
  occurredAtUnixMs: number | null;
218
220
  }
219
221
 
@@ -341,6 +343,8 @@ type AgentConversationPromptVM = AgentApprovalItemVM | {
341
343
  kind: "exit-plan";
342
344
  requestId: string;
343
345
  title: string;
346
+ options: AgentApprovalOptionVM[];
347
+ keepPlanningOptionId?: string;
344
348
  } | {
345
349
  kind: "plan-implementation";
346
350
  requestId: string;
@@ -1,7 +1,7 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
- import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, A as AgentGUINodeData, b as AgentGUIProviderTarget, m as AgentPromptContentBlock } from './types-xMz0lJWt.js';
3
- import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-DLnMBMoh.js';
4
- import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BTMtRteS.js';
2
+ import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, m as AgentPromptContentBlock, A as AgentGUINodeData, b as AgentGUIProviderTarget } from './types-xMz0lJWt.js';
3
+ import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-B5viw5Da.js';
4
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-DSXrFL9v.js';
5
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
6
6
 
7
7
  declare const APP_ERROR_CODES: readonly ["common.invalid_input", "common.approved_path_required", "common.unavailable", "common.unexpected", "session.not_found", "control_surface.unauthorized", "workspace.select_directory_failed", "workspace.select_files_failed", "workspace.ensure_directory_failed", "workspace.import_files_failed", "workspace.read_file_failed", "workspace.write_file_failed", "workspace.export_file_failed", "workspace.copy_path_failed", "workspace.host_unsupported", "workspace.runtime_artifact_unavailable", "runtime.guest_agent_lane_unavailable", "workspace.room_full", "workspace.room_delete_forbidden", "workspace.room_delete_not_found", "filesystem.create_directory_failed", "filesystem.read_file_bytes_failed", "filesystem.read_file_text_failed", "filesystem.write_file_text_failed", "filesystem.copy_entry_failed", "filesystem.move_entry_failed", "filesystem.rename_entry_failed", "filesystem.delete_entry_failed", "filesystem.read_directory_failed", "filesystem.stat_failed", "terminal.spawn_failed", "terminal.write_failed", "terminal.resize_failed", "terminal.close_failed", "terminal.attach_failed", "terminal.detach_failed", "terminal.snapshot_failed", "agent.list_models_failed", "agent.launch_failed", "agent.read_last_message_failed", "agent.provider_session_not_found", "agent.resume_session_not_local", "agent.resume_session_resolve_failed", "agent.settings_require_new_session", "task.suggest_title_failed", "persistence.unavailable", "persistence.quota_exceeded", "persistence.payload_too_large", "persistence.io_failed", "persistence.invalid_state", "persistence.invalid_node_id", "update.get_state_failed", "update.configure_failed", "update.check_failed", "update.download_failed", "update.install_failed", "PACKAGE_DOWNLOAD_INTERRUPTED", "PACKAGE_DOWNLOAD_HTTP_STATUS", "PACKAGE_DOWNLOAD_INVALID", "PACKAGE_DOWNLOAD_DISK_ERROR"];
@@ -611,4 +611,4 @@ interface AgentGUINodeViewModel {
611
611
  inlineNotice: AgentGUIInlineNotice | null;
612
612
  }
613
613
 
614
- export type { AgentGUINodeViewModel as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIProviderSkillOption as a, AgentGUIQueuedPromptVM as b, AgentHostApi as c, AgentHostApplyWorkspaceGitPatchInput as d, AgentHostInputApi as e, AgentHostRuntimeApi as f, AgentHostSelectFilesInput as g, AgentProbeProvider as h, AgentProbeSnapshot as i, AgentProviderProbeListInput as j, AgentProviderProbeListResult as k, AgentUsageQuota as l, AgentUsageSnapshot as m, WriteWorkspaceAgentReadStateInput as n };
614
+ export type { AgentComposerDraft as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIComposerSettingsVM as a, AgentGUINodeViewModel as b, AgentGUIProviderSkillOption as c, AgentGUIQueuedPromptVM as d, AgentHostApi as e, AgentHostApplyWorkspaceGitPatchInput as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentProbeProvider as j, AgentProbeSnapshot as k, AgentProviderProbeListInput as l, AgentProviderProbeListResult as m, AgentSessionCommand as n, AgentUsageQuota as o, AgentUsageSnapshot as p, WriteWorkspaceAgentReadStateInput as q };
@@ -119,11 +119,11 @@
119
119
  z-index: 100301;
120
120
  display: flex;
121
121
  align-items: center;
122
- gap: 4px;
123
- height: 40px;
124
- padding: 0 6px;
122
+ gap: 2px;
123
+ height: 32px;
124
+ padding: 0 2px;
125
125
  border-radius: 999px;
126
- background: color-mix(in srgb, var(--background-panel) 78%, black 22%);
126
+ background: var(--background-fronted);
127
127
  box-shadow:
128
128
  0 18px 40px color-mix(in srgb, black 26%, transparent),
129
129
  0 0 0 1px color-mix(in srgb, white 12%, transparent);
@@ -168,9 +168,10 @@
168
168
 
169
169
  .tsh-zoom-dialog__zoom-controls button {
170
170
  justify-content: center;
171
- width: 30px;
172
- height: 30px;
171
+ width: 28px;
172
+ height: 28px;
173
173
  padding: 0;
174
+ border-radius: 999px;
174
175
  }
175
176
 
176
177
  .tsh-zoom-dialog__zoom-controls button:disabled {
@@ -183,8 +184,8 @@
183
184
  padding: 0 4px;
184
185
  text-align: center;
185
186
  font-size: 12px;
186
- line-height: 30px;
187
- color: var(--text-secondary);
187
+ line-height: 28px;
188
+ color: var(--text-primary);
188
189
  font-variant-numeric: tabular-nums;
189
190
  }
190
191
 
@@ -208,11 +209,14 @@
208
209
 
209
210
  .tsh-zoom-dialog__icon-button:hover,
210
211
  .tsh-zoom-dialog__image-actions button:hover,
211
- .tsh-zoom-dialog__zoom-controls button:not(:disabled):hover,
212
212
  .tsh-image-context-menu button:hover {
213
213
  background: color-mix(in srgb, var(--background-panel) 82%, white 12%);
214
214
  }
215
215
 
216
+ .tsh-zoom-dialog__zoom-controls button:not(:disabled):hover {
217
+ background: color-mix(in srgb, var(--background-panel) 86%, black 8%);
218
+ }
219
+
216
220
  .workspace-agents-status-panel {
217
221
  --workspace-agents-status-panel-chrome-gap: 8px;
218
222
  --workspace-room-top-bar-safe-area: 52px;
@@ -1497,6 +1501,46 @@ aside.workspace-agents-status-panel
1497
1501
  color: var(--agent-turn-summary-path);
1498
1502
  }
1499
1503
 
1504
+ .agent-turn-summary-card__path-directory,
1505
+ .agent-turn-summary-card__path-file {
1506
+ min-width: 0;
1507
+ overflow: hidden;
1508
+ text-overflow: ellipsis;
1509
+ }
1510
+
1511
+ .agent-turn-summary-card__path-directory {
1512
+ flex: 0 1 auto;
1513
+ }
1514
+
1515
+ .agent-turn-summary-card__path-file {
1516
+ flex: 0 0 auto;
1517
+ max-width: 100%;
1518
+ }
1519
+
1520
+ .agent-path-tail-label {
1521
+ display: flex;
1522
+ min-width: 0;
1523
+ max-width: 100%;
1524
+ overflow: hidden;
1525
+ white-space: nowrap;
1526
+ }
1527
+
1528
+ .agent-path-tail-label__directory,
1529
+ .agent-path-tail-label__file {
1530
+ min-width: 0;
1531
+ overflow: hidden;
1532
+ text-overflow: ellipsis;
1533
+ }
1534
+
1535
+ .agent-path-tail-label__directory {
1536
+ flex: 0 1 auto;
1537
+ }
1538
+
1539
+ .agent-path-tail-label__file {
1540
+ flex: 0 0 auto;
1541
+ max-width: 100%;
1542
+ }
1543
+
1500
1544
  .workspace-agents-status-panel__detail-turn-summary
1501
1545
  .workspace-agents-status-panel__detail-tool-diff-added {
1502
1546
  color: var(--state-success);
@@ -2418,8 +2462,8 @@ aside.workspace-agents-status-panel
2418
2462
  .agent-gui-node__empty-hero-body
2419
2463
  > .agent-gui-chrome__session-chrome
2420
2464
  > .agent-gui-chrome__card {
2421
- margin-right: 24px;
2422
- margin-left: 24px;
2465
+ margin-right: 12px;
2466
+ margin-left: 12px;
2423
2467
  }
2424
2468
 
2425
2469
  .agent-gui-node__empty-hero-body
@@ -2495,24 +2539,19 @@ aside.workspace-agents-status-panel
2495
2539
  animation: agent-gui-chrome-card-enter 260ms
2496
2540
  var(--agent-gui-chrome-card-spring);
2497
2541
  box-sizing: border-box;
2498
- height: var(--agent-gui-chrome-card-collapsed-height, 36px);
2542
+ height: auto;
2543
+ min-height: 36px;
2499
2544
  overflow: hidden;
2500
2545
  transform: translateY(0) scaleY(1);
2501
2546
  transform-origin: bottom center;
2502
2547
  transition:
2503
- height 300ms var(--agent-gui-chrome-card-spring),
2504
- padding-top 260ms var(--agent-gui-chrome-card-spring),
2505
- padding-bottom 260ms var(--agent-gui-chrome-card-spring),
2506
2548
  border-radius 220ms cubic-bezier(0.16, 1, 0.3, 1),
2507
2549
  transform 280ms var(--agent-gui-chrome-card-spring);
2508
- will-change: height, transform;
2550
+ will-change: transform;
2509
2551
  }
2510
2552
 
2511
2553
  @keyframes agent-gui-chrome-card-enter {
2512
2554
  from {
2513
- height: 0;
2514
- padding-top: 0;
2515
- padding-bottom: 0;
2516
2555
  opacity: 0;
2517
2556
  transform: translateY(6px) scaleY(0.96);
2518
2557
  }
@@ -2535,30 +2574,15 @@ aside.workspace-agents-status-panel
2535
2574
  grid-template-columns: minmax(0, 1fr) auto;
2536
2575
  align-items: center;
2537
2576
  min-height: 36px;
2538
- padding: 4px 16px;
2539
- cursor: pointer;
2577
+ padding: 6px 16px;
2578
+ cursor: default;
2540
2579
  }
2541
2580
 
2542
2581
  .agent-gui-chrome__card--warning .agent-gui-chrome__icon,
2543
- .agent-gui-chrome__card--warning .agent-gui-chrome__message,
2544
- .agent-gui-chrome__card--warning .agent-gui-chrome__expand-cue {
2582
+ .agent-gui-chrome__card--warning .agent-gui-chrome__message {
2545
2583
  color: var(--agent-gui-warning, var(--cove-label-orange));
2546
2584
  }
2547
2585
 
2548
- .agent-gui-chrome__card[data-expandable="false"] {
2549
- cursor: default;
2550
- }
2551
-
2552
- .agent-gui-chrome__card--warning[data-expanded="true"],
2553
- .agent-gui-chrome__card--danger[data-expanded="true"],
2554
- .agent-gui-chrome__card--muted[data-expanded="true"],
2555
- .agent-gui-chrome__card--connecting[data-expanded="true"] {
2556
- height: var(--agent-gui-chrome-card-expanded-height, 220px);
2557
- align-items: start;
2558
- padding-top: 8px;
2559
- padding-bottom: 8px;
2560
- }
2561
-
2562
2586
  .agent-gui-chrome__card--warning .agent-gui-chrome__actions button,
2563
2587
  .agent-gui-chrome__card--warning .agent-gui-chrome__danger-ghost-button {
2564
2588
  color: var(--agent-gui-warning, var(--cove-label-orange));
@@ -2597,9 +2621,9 @@ aside.workspace-agents-status-panel
2597
2621
  border-bottom-left-radius: 0;
2598
2622
  align-items: center;
2599
2623
  min-height: 36px;
2600
- padding: 4px 16px;
2624
+ padding: 6px 16px;
2601
2625
  background: var(--transparency-block);
2602
- cursor: pointer;
2626
+ cursor: default;
2603
2627
  }
2604
2628
 
2605
2629
  .agent-gui-chrome__card--connecting {
@@ -2612,8 +2636,8 @@ aside.workspace-agents-status-panel
2612
2636
  color: var(--accent);
2613
2637
  align-items: center;
2614
2638
  min-height: 36px;
2615
- padding: 4px 16px;
2616
- cursor: pointer;
2639
+ padding: 6px 16px;
2640
+ cursor: default;
2617
2641
  background:
2618
2642
  linear-gradient(
2619
2643
  color-mix(in srgb, var(--accent) 8%, transparent),
@@ -2632,7 +2656,7 @@ aside.workspace-agents-status-panel
2632
2656
  .agent-gui-chrome__card--danger {
2633
2657
  border-color: color-mix(
2634
2658
  in srgb,
2635
- var(--status-danger, var(--state-danger)) 16%,
2659
+ var(--status-danger, var(--state-danger)) 28%,
2636
2660
  transparent
2637
2661
  );
2638
2662
  border-bottom: 0;
@@ -2640,25 +2664,24 @@ aside.workspace-agents-status-panel
2640
2664
  border-top-right-radius: 8px;
2641
2665
  border-bottom-right-radius: 0;
2642
2666
  border-bottom-left-radius: 0;
2643
- background: var(--on-danger);
2667
+ background: color-mix(
2668
+ in srgb,
2669
+ var(--status-danger, var(--state-danger)) 10%,
2670
+ var(--background-fronted)
2671
+ );
2644
2672
  grid-template-columns: minmax(0, 1fr) auto;
2645
2673
  align-items: center;
2646
2674
  min-height: 36px;
2647
- padding: 4px 16px;
2648
- cursor: pointer;
2675
+ padding: 6px 16px;
2676
+ cursor: default;
2649
2677
  }
2650
2678
 
2651
2679
  .agent-gui-chrome__card[data-has-inline-actions="true"] {
2652
2680
  padding-right: 4px;
2653
2681
  }
2654
2682
 
2655
- .agent-gui-chrome__card[data-has-inline-actions="true"][data-expanded="true"] {
2656
- padding-right: 4px;
2657
- }
2658
-
2659
2683
  .agent-gui-chrome__card--danger .agent-gui-chrome__icon,
2660
- .agent-gui-chrome__card--danger .agent-gui-chrome__message,
2661
- .agent-gui-chrome__card--danger .agent-gui-chrome__expand-cue {
2684
+ .agent-gui-chrome__card--danger .agent-gui-chrome__message {
2662
2685
  color: var(--status-danger, var(--state-danger));
2663
2686
  }
2664
2687
 
@@ -2695,41 +2718,6 @@ aside.workspace-agents-status-panel
2695
2718
  color: currentColor;
2696
2719
  }
2697
2720
 
2698
- .agent-gui-chrome__expand-cue {
2699
- flex: 0 0 auto;
2700
- width: 16px;
2701
- height: 16px;
2702
- color: currentColor;
2703
- opacity: 0;
2704
- transform: translateY(1px) rotate(-90deg);
2705
- transform-origin: center;
2706
- transition:
2707
- opacity 120ms ease,
2708
- transform 260ms
2709
- var(--agent-gui-chrome-card-spring, cubic-bezier(0.22, 1.18, 0.36, 1));
2710
- will-change: transform;
2711
- }
2712
-
2713
- .agent-gui-chrome__expand-cue[data-visible="false"] {
2714
- visibility: hidden;
2715
- }
2716
-
2717
- .agent-gui-chrome__card[data-expandable="true"]:hover
2718
- .agent-gui-chrome__expand-cue[data-visible="true"],
2719
- .agent-gui-chrome__card[data-expandable="true"]:focus-visible
2720
- .agent-gui-chrome__expand-cue[data-visible="true"],
2721
- .agent-gui-chrome__card[data-expandable="true"]:focus-within
2722
- .agent-gui-chrome__expand-cue[data-visible="true"],
2723
- .agent-gui-chrome__card[data-expanded="true"]
2724
- .agent-gui-chrome__expand-cue[data-visible="true"] {
2725
- opacity: 1;
2726
- }
2727
-
2728
- .agent-gui-chrome__card[data-expanded="true"]
2729
- .agent-gui-chrome__expand-cue[data-visible="true"] {
2730
- transform: translateY(1px) rotate(0deg);
2731
- }
2732
-
2733
2721
  .agent-gui-chrome__title {
2734
2722
  color: var(--agent-gui-text-secondary, var(--text-secondary));
2735
2723
  font-size: 13px;
@@ -2749,6 +2737,31 @@ aside.workspace-agents-status-panel
2749
2737
  line-height: 20px;
2750
2738
  }
2751
2739
 
2740
+ .agent-gui-chrome__card--warning
2741
+ .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2742
+ .agent-gui-chrome__card--danger
2743
+ .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2744
+ .agent-gui-chrome__card--muted
2745
+ .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2746
+ .agent-gui-chrome__card--connecting
2747
+ .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message) {
2748
+ display: -webkit-box;
2749
+ overflow: hidden;
2750
+ text-overflow: clip;
2751
+ white-space: normal;
2752
+ -webkit-box-orient: vertical;
2753
+ -webkit-line-clamp: 2;
2754
+ }
2755
+
2756
+ .agent-gui-chrome__message-tooltip {
2757
+ max-width: min(560px, calc(100vw - 32px));
2758
+ max-height: min(40vh, 260px);
2759
+ overflow: auto;
2760
+ overflow-wrap: anywhere;
2761
+ text-align: left;
2762
+ white-space: pre-wrap;
2763
+ }
2764
+
2752
2765
  .agent-gui-chrome__notice-message {
2753
2766
  display: flex;
2754
2767
  align-items: center;
@@ -2799,12 +2812,6 @@ aside.workspace-agents-status-panel
2799
2812
  flex: 0 0 auto;
2800
2813
  }
2801
2814
 
2802
- .agent-gui-chrome__card[data-expanded="true"] .agent-gui-chrome__message {
2803
- overflow: visible;
2804
- text-overflow: clip;
2805
- white-space: normal;
2806
- }
2807
-
2808
2815
  .agent-gui-chrome__actions,
2809
2816
  .agent-gui-chrome__meta-row {
2810
2817
  display: flex;
@@ -5090,6 +5097,7 @@ button.agent-gui-node__conversation-section-toggle:hover
5090
5097
  gap: 6px;
5091
5098
  align-items: center;
5092
5099
  min-width: 0;
5100
+ margin-bottom: 12px;
5093
5101
  padding: 2px 6px 0 22px;
5094
5102
  }
5095
5103
 
@@ -6005,7 +6013,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6005
6013
  margin-left:auto has no free space to absorb and the message text would butt
6006
6014
  directly against "Set up". Space the message and action explicitly. */
6007
6015
  column-gap: 6px;
6008
- pointer-events: auto;
6016
+ pointer-events: none;
6009
6017
  }
6010
6018
 
6011
6019
  .agent-gui-node__detail-header + .agent-gui-node__provider-setup-notice {
@@ -6022,6 +6030,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6022
6030
  font: inherit;
6023
6031
  text-decoration: underline;
6024
6032
  cursor: pointer;
6033
+ pointer-events: auto;
6025
6034
  -webkit-app-region: no-drag;
6026
6035
  }
6027
6036
 
@@ -3,23 +3,23 @@ import {
3
3
  managedAgentRoundedIconUrl,
4
4
  userAvatarPlaceholderUrl,
5
5
  workspaceAgentActivityStatusLabel
6
- } from "./chunk-Q4X6Q4E6.js";
6
+ } from "./chunk-AYEYXKLF.js";
7
7
  import {
8
8
  normalizeAgentSessionMentionTitle
9
- } from "./chunk-2FOBSURO.js";
9
+ } from "./chunk-6KQHNUR5.js";
10
10
  import {
11
11
  resolveAgentMentionFileThumbnailUrl,
12
12
  resolveAgentMentionFileVisualKind
13
13
  } from "./chunk-LUGELG5V.js";
14
14
  import {
15
15
  getOptionalAgentHostApi
16
- } from "./chunk-VE6JY2TH.js";
16
+ } from "./chunk-U6JWW45G.js";
17
17
  import {
18
18
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
19
19
  } from "./chunk-JM24HADP.js";
20
20
  import {
21
21
  translate
22
- } from "./chunk-5QTC2L52.js";
22
+ } from "./chunk-77UR4G7P.js";
23
23
 
24
24
  // agent-gui/agentGuiNode/agentMentionAgentGeneratedFilesPresentation.ts
25
25
  var AGENT_GENERATED_FOLDER_MIN_FILES = 2;
@@ -2134,4 +2134,4 @@ export {
2134
2134
  AgentFileMentionPalette,
2135
2135
  AgentContextMentionPalette
2136
2136
  };
2137
- //# sourceMappingURL=chunk-7NCWSH7U.js.map
2137
+ //# sourceMappingURL=chunk-5HJWT6YN.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  translate,
7
7
  useTranslation
8
- } from "./chunk-5QTC2L52.js";
8
+ } from "./chunk-77UR4G7P.js";
9
9
 
10
10
  // agent-gui/agentGuiNode/agentRichText/agentFileMentionExtension.ts
11
11
  import { mergeAttributes, Node } from "@tiptap/core";
@@ -1224,4 +1224,4 @@ export {
1224
1224
  mentionItemToAttrs,
1225
1225
  attrsToMentionItem
1226
1226
  };
1227
- //# sourceMappingURL=chunk-2FOBSURO.js.map
1227
+ //# sourceMappingURL=chunk-6KQHNUR5.js.map
@@ -6,7 +6,7 @@ import {
6
6
  setCurrentAgentGuiI18nRuntime,
7
7
  translate,
8
8
  translateInUiLanguage
9
- } from "./chunk-KACBTC7Y.js";
9
+ } from "./chunk-K6SRLYC3.js";
10
10
 
11
11
  // i18n/index.ts
12
12
  import React, {
@@ -68,4 +68,4 @@ export {
68
68
  AgentGuiI18nProvider,
69
69
  useTranslation
70
70
  };
71
- //# sourceMappingURL=chunk-5QTC2L52.js.map
71
+ //# sourceMappingURL=chunk-77UR4G7P.js.map
@@ -7,17 +7,17 @@ import {
7
7
  AgentGUIConversation_styles_default,
8
8
  MessageSquareMoreIcon,
9
9
  extractAgentMcpToolTarget
10
- } from "./chunk-XJXSR5XI.js";
10
+ } from "./chunk-RJR2OZ6T.js";
11
11
  import {
12
12
  Spinner
13
- } from "./chunk-Q4X6Q4E6.js";
13
+ } from "./chunk-AYEYXKLF.js";
14
14
  import {
15
15
  getOptionalAgentHostApi,
16
16
  useOptionalAgentHostApi
17
- } from "./chunk-VE6JY2TH.js";
17
+ } from "./chunk-U6JWW45G.js";
18
18
  import {
19
19
  translate
20
- } from "./chunk-5QTC2L52.js";
20
+ } from "./chunk-77UR4G7P.js";
21
21
 
22
22
  // shared/agentConversation/approvalOptionPresentation.ts
23
23
  function approvalOptionDisplayLabel(option, intent = {}) {
@@ -630,12 +630,20 @@ function ExitPlanPromptSurface({
630
630
  );
631
631
  const trimmed = feedback.trim();
632
632
  const continueLabel = trimmed === "" ? labels.stayInPlan : labels.sendFeedback;
633
+ const modes = prompt.options.length > 0 ? prompt.options.map((option) => {
634
+ const known = labels.planModes.find((mode) => mode.id === option.id);
635
+ return {
636
+ id: option.id,
637
+ label: known?.label ?? option.label,
638
+ description: known?.description ?? option.description ?? ""
639
+ };
640
+ }) : labels.planModes;
633
641
  useEffect(() => {
634
642
  setSubmittingOptionId(null);
635
643
  }, [prompt.requestId]);
636
644
  return /* @__PURE__ */ jsx("section", { className: interactivePromptClassName(embedded), children: /* @__PURE__ */ jsxs("div", { className: interactivePromptCardClassName(edgeGlow), children: [
637
645
  /* @__PURE__ */ jsx("div", { className: AgentGUIConversation_styles_default.interactivePromptLead, children: stripPromptTitlePunctuation(labels.planLead) }),
638
- /* @__PURE__ */ jsx("div", { className: AgentGUIConversation_styles_default.interactivePromptOptions, children: labels.planModes.map((mode) => {
646
+ /* @__PURE__ */ jsx("div", { className: AgentGUIConversation_styles_default.interactivePromptOptions, children: modes.map((mode) => {
639
647
  const showSpinner = submittingOptionId === mode.id;
640
648
  return /* @__PURE__ */ jsxs(
641
649
  "button",
@@ -682,13 +690,35 @@ function ExitPlanPromptSurface({
682
690
  disabled: isSubmitting,
683
691
  onClick: () => onSubmit({
684
692
  requestId: prompt.requestId,
693
+ // The runtime models exit-plan as an approval that requires
694
+ // an option id, so "keep planning" submits its `plan` option
695
+ // id (when present) rather than a bare deny. `action: deny`
696
+ // is kept so the controller doesn't flip plan mode off.
685
697
  action: "deny",
698
+ ...prompt.keepPlanningOptionId ? { optionId: prompt.keepPlanningOptionId } : {},
686
699
  payload: trimmed ? { denyMessage: trimmed } : void 0
687
700
  }),
688
701
  children: continueLabel
689
702
  }
690
703
  ) })
691
- ] }) : null
704
+ ] }) : (
705
+ // Compact (deck): no textarea, but keep declining reachable — the deck
706
+ // must still let the user keep planning (refining/feedback is deferred
707
+ // to the conversation via the card's "open conversation" jump).
708
+ /* @__PURE__ */ jsx("div", { className: AgentGUIConversation_styles_default.interactivePromptActions, children: /* @__PURE__ */ jsx(
709
+ "button",
710
+ {
711
+ type: "button",
712
+ disabled: isSubmitting,
713
+ onClick: () => onSubmit({
714
+ requestId: prompt.requestId,
715
+ action: "deny",
716
+ ...prompt.keepPlanningOptionId ? { optionId: prompt.keepPlanningOptionId } : {}
717
+ }),
718
+ children: labels.stayInPlan
719
+ }
720
+ ) })
721
+ )
692
722
  ] }) });
693
723
  }
694
724
  function PlanImplementationSurface({
@@ -1120,4 +1150,4 @@ export {
1120
1150
  isPromptRequestIdTitle,
1121
1151
  AgentInteractivePromptSurface
1122
1152
  };
1123
- //# sourceMappingURL=chunk-HCS3HUUX.js.map
1153
+ //# sourceMappingURL=chunk-A2EN24OI.js.map