@tutti-os/agent-gui 0.0.42 → 0.0.44

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 (29) hide show
  1. package/dist/agent-conversation/index.js +4 -4
  2. package/dist/agent-message-center/index.js +4 -4
  3. package/dist/app/renderer/agentactivity.css +17 -3
  4. package/dist/{chunk-XTFRVACA.js → chunk-25VZHG6G.js} +22 -7
  5. package/dist/chunk-25VZHG6G.js.map +1 -0
  6. package/dist/{chunk-3WZWZHAJ.js → chunk-64OSXJRE.js} +2 -2
  7. package/dist/{chunk-3PVSIL3H.js → chunk-GMLK2EFU.js} +4 -4
  8. package/dist/{chunk-LKOPLDPM.js → chunk-IGXC7NRW.js} +51 -3
  9. package/dist/chunk-IGXC7NRW.js.map +1 -0
  10. package/dist/{chunk-42WP3P5C.js → chunk-J4MU53PH.js} +2 -2
  11. package/dist/{chunk-5U4SXENC.js → chunk-SF2PE7M6.js} +16 -5
  12. package/dist/{chunk-5U4SXENC.js.map → chunk-SF2PE7M6.js.map} +1 -1
  13. package/dist/{chunk-5LVFYNIP.js → chunk-ZORA4UAT.js} +2 -2
  14. package/dist/{chunk-OLZP2EFK.js → chunk-ZTQKIJ5J.js} +2 -2
  15. package/dist/context-mention-palette/index.d.ts +2 -1
  16. package/dist/context-mention-palette/index.js +5 -5
  17. package/dist/i18n/index.d.ts +50 -2
  18. package/dist/i18n/index.js +1 -1
  19. package/dist/index.js +1007 -450
  20. package/dist/index.js.map +1 -1
  21. package/dist/workspace-agent-generated-files.js +2 -2
  22. package/package.json +12 -12
  23. package/dist/chunk-LKOPLDPM.js.map +0 -1
  24. package/dist/chunk-XTFRVACA.js.map +0 -1
  25. /package/dist/{chunk-3WZWZHAJ.js.map → chunk-64OSXJRE.js.map} +0 -0
  26. /package/dist/{chunk-3PVSIL3H.js.map → chunk-GMLK2EFU.js.map} +0 -0
  27. /package/dist/{chunk-42WP3P5C.js.map → chunk-J4MU53PH.js.map} +0 -0
  28. /package/dist/{chunk-5LVFYNIP.js.map → chunk-ZORA4UAT.js.map} +0 -0
  29. /package/dist/{chunk-OLZP2EFK.js.map → chunk-ZTQKIJ5J.js.map} +0 -0
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ import {
23
23
  AgentInteractivePromptSurface,
24
24
  approvalOptionDisplayLabel,
25
25
  formatAgentSessionMentionText
26
- } from "./chunk-3PVSIL3H.js";
26
+ } from "./chunk-GMLK2EFU.js";
27
27
  import {
28
28
  PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
29
29
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
@@ -48,13 +48,13 @@ import {
48
48
  skillDescriptionForDisplay,
49
49
  skillTriggerForPrefix,
50
50
  useProjectedAgentConversation
51
- } from "./chunk-XTFRVACA.js";
51
+ } from "./chunk-25VZHG6G.js";
52
52
  import {
53
53
  AgentMessageMarkdown,
54
54
  ZoomableImage,
55
55
  cn,
56
56
  resolveWorkspaceLinkAction
57
- } from "./chunk-OLZP2EFK.js";
57
+ } from "./chunk-ZTQKIJ5J.js";
58
58
  import {
59
59
  AGENT_MENTION_FILTER_TAB_ORDER,
60
60
  AgentFileMentionPalette,
@@ -62,7 +62,7 @@ import {
62
62
  DEFAULT_AGENT_MENTION_FILTER,
63
63
  agentMentionItemKey,
64
64
  preloadAgentMentionBrowse
65
- } from "./chunk-5U4SXENC.js";
65
+ } from "./chunk-SF2PE7M6.js";
66
66
  import {
67
67
  WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN,
68
68
  buildWorkspaceAgentActivityListViewModel,
@@ -72,13 +72,13 @@ import {
72
72
  isWorkspaceAgentUntitledTask,
73
73
  mergeWorkspaceAgentActivityDurableAndOverlayMessages,
74
74
  selectWorkspaceAgentActivityOverlayMessages
75
- } from "./chunk-5LVFYNIP.js";
75
+ } from "./chunk-ZORA4UAT.js";
76
76
  import {
77
77
  MANAGED_AGENT_ICON_FALLBACK_URL,
78
78
  MANAGED_AGENT_ICON_URLS,
79
79
  Spinner,
80
80
  normalizeManagedAgentProvider
81
- } from "./chunk-42WP3P5C.js";
81
+ } from "./chunk-J4MU53PH.js";
82
82
  import "./chunk-MTFSQWZ6.js";
83
83
  import {
84
84
  resolveWorkspaceAgentSessionSortTimeUnixMs
@@ -89,7 +89,7 @@ import {
89
89
  mentionItemToAttrs,
90
90
  normalizeAgentSessionMentionTitle,
91
91
  parseMentionItemFromHref
92
- } from "./chunk-3WZWZHAJ.js";
92
+ } from "./chunk-64OSXJRE.js";
93
93
  import "./chunk-Y35GDLP2.js";
94
94
  import {
95
95
  AgentActivityHostProvider,
@@ -118,7 +118,7 @@ import {
118
118
  getActiveUiLanguage,
119
119
  translate,
120
120
  useTranslation
121
- } from "./chunk-LKOPLDPM.js";
121
+ } from "./chunk-IGXC7NRW.js";
122
122
  import "./chunk-LUGELG5V.js";
123
123
  import "./chunk-PJP5BUU6.js";
124
124
 
@@ -13232,6 +13232,72 @@ function useAgentGUINodeController({
13232
13232
  agentActivityRuntime,
13233
13233
  removeConversations
13234
13234
  ]);
13235
+ const finalizeConversationBatchDeletion = useCallback4(
13236
+ (targetIds) => {
13237
+ for (const id of targetIds) {
13238
+ activatedConversationIdsRef.current.delete(id);
13239
+ deleteAgentSessionView(sessionViewRef(id));
13240
+ }
13241
+ if (conversationListQuery) {
13242
+ for (const id of targetIds) {
13243
+ markLocalDeletedAgentGUIConversation({
13244
+ query: conversationListQuery,
13245
+ agentSessionId: id
13246
+ });
13247
+ }
13248
+ scheduleAgentGUIConversationListProjection(
13249
+ conversationListQuery,
13250
+ "local-delete"
13251
+ );
13252
+ }
13253
+ setTransientConversation(
13254
+ (current) => current && targetIds.has(current.id) ? null : current
13255
+ );
13256
+ setDraftBySessionId(
13257
+ (current) => omitConversationLocalState(current, targetIds)
13258
+ );
13259
+ setQueuedPromptsBySessionId(
13260
+ (current) => omitConversationLocalState(current, targetIds)
13261
+ );
13262
+ setSendNextQueuedPromptIdBySessionId(
13263
+ (current) => omitConversationLocalState(current, targetIds)
13264
+ );
13265
+ setFailedQueuedPromptIdBySessionId(
13266
+ (current) => omitConversationLocalState(current, targetIds)
13267
+ );
13268
+ setQueuedPromptRetryBlockBySessionId(
13269
+ (current) => omitConversationLocalState(current, targetIds)
13270
+ );
13271
+ const nextConversations = conversationsRef.current.filter(
13272
+ (conversation2) => !targetIds.has(conversation2.id)
13273
+ );
13274
+ const currentActiveId = activeConversationIdRef.current;
13275
+ if (currentActiveId && targetIds.has(currentActiveId)) {
13276
+ const nextActive = nextConversations[0]?.id ?? null;
13277
+ if (nextActive) {
13278
+ markSelectedConversationDetailPending(nextActive);
13279
+ setIntent({ tag: "active", id: nextActive });
13280
+ } else {
13281
+ clearSelectedConversationNotFoundRetry();
13282
+ setIsLoadingMessages(false);
13283
+ setIntent({ tag: "home" });
13284
+ }
13285
+ activeConversationIdRef.current = nextActive;
13286
+ setActiveConversationId(nextActive);
13287
+ persistActiveConversation(nextActive);
13288
+ }
13289
+ removeConversations([...targetIds]);
13290
+ },
13291
+ [
13292
+ conversationListQuery,
13293
+ clearSelectedConversationNotFoundRetry,
13294
+ markSelectedConversationDetailPending,
13295
+ persistActiveConversation,
13296
+ sessionViewRef,
13297
+ setTransientConversation,
13298
+ removeConversations
13299
+ ]
13300
+ );
13235
13301
  const confirmDeleteProjectConversations = useCallback4(
13236
13302
  (path) => {
13237
13303
  const normalizedPath = normalizeProjectConversationPath(path);
@@ -13290,59 +13356,7 @@ function useAgentGUINodeController({
13290
13356
  });
13291
13357
  })
13292
13358
  ).then(() => {
13293
- for (const id of targetIds) {
13294
- activatedConversationIdsRef.current.delete(id);
13295
- deleteAgentSessionView(sessionViewRef(id));
13296
- }
13297
- if (conversationListQuery) {
13298
- for (const id of targetIds) {
13299
- markLocalDeletedAgentGUIConversation({
13300
- query: conversationListQuery,
13301
- agentSessionId: id
13302
- });
13303
- }
13304
- scheduleAgentGUIConversationListProjection(
13305
- conversationListQuery,
13306
- "local-delete"
13307
- );
13308
- }
13309
- setTransientConversation(
13310
- (current) => current && targetIds.has(current.id) ? null : current
13311
- );
13312
- setDraftBySessionId(
13313
- (current) => omitConversationLocalState(current, targetIds)
13314
- );
13315
- setQueuedPromptsBySessionId(
13316
- (current) => omitConversationLocalState(current, targetIds)
13317
- );
13318
- setSendNextQueuedPromptIdBySessionId(
13319
- (current) => omitConversationLocalState(current, targetIds)
13320
- );
13321
- setFailedQueuedPromptIdBySessionId(
13322
- (current) => omitConversationLocalState(current, targetIds)
13323
- );
13324
- setQueuedPromptRetryBlockBySessionId(
13325
- (current) => omitConversationLocalState(current, targetIds)
13326
- );
13327
- const nextConversations = conversationsRef.current.filter(
13328
- (conversation2) => !targetIds.has(conversation2.id)
13329
- );
13330
- const currentActiveId = activeConversationIdRef.current;
13331
- if (currentActiveId && targetIds.has(currentActiveId)) {
13332
- const nextActive = nextConversations[0]?.id ?? null;
13333
- if (nextActive) {
13334
- markSelectedConversationDetailPending(nextActive);
13335
- setIntent({ tag: "active", id: nextActive });
13336
- } else {
13337
- clearSelectedConversationNotFoundRetry();
13338
- setIsLoadingMessages(false);
13339
- setIntent({ tag: "home" });
13340
- }
13341
- activeConversationIdRef.current = nextActive;
13342
- setActiveConversationId(nextActive);
13343
- persistActiveConversation(nextActive);
13344
- }
13345
- removeConversations([...targetIds]);
13359
+ finalizeConversationBatchDeletion(targetIds);
13346
13360
  setPendingDeleteProjectConversations(null);
13347
13361
  }).catch((error) => {
13348
13362
  const message = getAgentGUIErrorMessage(error);
@@ -13376,6 +13390,7 @@ function useAgentGUINodeController({
13376
13390
  agentActivityRuntime,
13377
13391
  conversationListQuery,
13378
13392
  clearSelectedConversationNotFoundRetry,
13393
+ finalizeConversationBatchDeletion,
13379
13394
  isDeletingProjectConversations,
13380
13395
  markSelectedConversationDetailPending,
13381
13396
  pendingDeleteProjectConversations,
@@ -13386,6 +13401,78 @@ function useAgentGUINodeController({
13386
13401
  workspaceId
13387
13402
  ]
13388
13403
  );
13404
+ const confirmDeleteConversations = useCallback4(
13405
+ (agentSessionIds) => {
13406
+ if (isDeletingProjectConversations) {
13407
+ return;
13408
+ }
13409
+ const targetIds = new Set(
13410
+ agentSessionIds.map((id) => id.trim()).filter((id) => id !== "")
13411
+ );
13412
+ const targetConversations = conversationsRef.current.filter(
13413
+ (conversation2) => targetIds.has(conversation2.id)
13414
+ );
13415
+ if (targetConversations.length === 0) {
13416
+ return;
13417
+ }
13418
+ setIsDeletingProjectConversations(true);
13419
+ setDetailError(null);
13420
+ setListError(null);
13421
+ const activeDeletedConversationId = activeConversationIdRef.current;
13422
+ if (activeDeletedConversationId && targetIds.has(activeDeletedConversationId)) {
13423
+ clearSelectedConversationNotFoundRetry();
13424
+ setIsLoadingMessages(true);
13425
+ setAgentSessionViewMessagesLoading(
13426
+ sessionViewRef(activeDeletedConversationId),
13427
+ true
13428
+ );
13429
+ }
13430
+ void Promise.all(
13431
+ targetConversations.map(async (conversation2) => {
13432
+ await activation.unactivate(conversation2.id);
13433
+ await agentActivityRuntime.deleteSession({
13434
+ workspaceId,
13435
+ agentSessionId: conversation2.id
13436
+ });
13437
+ })
13438
+ ).then(() => {
13439
+ finalizeConversationBatchDeletion(targetIds);
13440
+ }).catch((error) => {
13441
+ const message = getAgentGUIErrorMessage(error);
13442
+ reportAgentGUIRuntimeError({
13443
+ error,
13444
+ phase: "delete_conversation",
13445
+ provider: dataRef.current.provider,
13446
+ runtime: agentActivityRuntime,
13447
+ workspaceId,
13448
+ context: {
13449
+ conversationCount: targetConversations.length
13450
+ }
13451
+ });
13452
+ setListError(message);
13453
+ toast.error(message);
13454
+ setDetailError(message);
13455
+ if (activeDeletedConversationId && activeConversationIdRef.current === activeDeletedConversationId) {
13456
+ setIsLoadingMessages(false);
13457
+ setAgentSessionViewMessagesLoading(
13458
+ sessionViewRef(activeDeletedConversationId),
13459
+ false
13460
+ );
13461
+ }
13462
+ }).finally(() => {
13463
+ setIsDeletingProjectConversations(false);
13464
+ });
13465
+ },
13466
+ [
13467
+ activation,
13468
+ agentActivityRuntime,
13469
+ clearSelectedConversationNotFoundRetry,
13470
+ finalizeConversationBatchDeletion,
13471
+ isDeletingProjectConversations,
13472
+ sessionViewRef,
13473
+ workspaceId
13474
+ ]
13475
+ );
13389
13476
  const toggleConversationPinned = useCallback4(
13390
13477
  (agentSessionId, pinned) => {
13391
13478
  const normalizedAgentSessionId = agentSessionId.trim();
@@ -14064,6 +14151,9 @@ function useAgentGUINodeController({
14064
14151
  const stableRequestDeleteProjectConversations = useStableControllerEventCallback(requestDeleteProjectConversations);
14065
14152
  const stableCancelDeleteProjectConversations = useStableControllerEventCallback(cancelDeleteProjectConversations);
14066
14153
  const stableConfirmDeleteProjectConversations = useStableControllerEventCallback(confirmDeleteProjectConversations);
14154
+ const stableConfirmDeleteConversations = useStableControllerEventCallback(
14155
+ confirmDeleteConversations
14156
+ );
14067
14157
  const stableToggleConversationPinned = useStableControllerEventCallback(
14068
14158
  toggleConversationPinned
14069
14159
  );
@@ -14107,6 +14197,7 @@ function useAgentGUINodeController({
14107
14197
  requestDeleteProjectConversations: stableRequestDeleteProjectConversations,
14108
14198
  cancelDeleteProjectConversations: stableCancelDeleteProjectConversations,
14109
14199
  confirmDeleteProjectConversations: stableConfirmDeleteProjectConversations,
14200
+ confirmDeleteConversations: stableConfirmDeleteConversations,
14110
14201
  toggleConversationPinned: stableToggleConversationPinned,
14111
14202
  requestDeleteConversation: stableRequestDeleteConversation,
14112
14203
  retryActivation: stableRetryActivation,
@@ -14119,6 +14210,7 @@ function useAgentGUINodeController({
14119
14210
  stableCancelDeleteConversation,
14120
14211
  stableCancelDeleteProjectConversations,
14121
14212
  stableConfirmDeleteConversation,
14213
+ stableConfirmDeleteConversations,
14122
14214
  stableConfirmDeleteProjectConversations,
14123
14215
  stableContinueInNewConversation,
14124
14216
  stableCreateConversation,
@@ -14443,13 +14535,7 @@ import {
14443
14535
  } from "react";
14444
14536
  import { useSnapshot } from "valtio";
14445
14537
  import { proxy as proxy2 } from "valtio/vanilla";
14446
- import {
14447
- ChevronRight as ChevronRight2,
14448
- ExternalLink,
14449
- Info,
14450
- Settings,
14451
- Wrench
14452
- } from "lucide-react";
14538
+ import { ChevronRight as ChevronRight2, ExternalLink, Info as Info2, Wrench } from "lucide-react";
14453
14539
 
14454
14540
  // app/renderer/components/ui/popover.tsx
14455
14541
  import {
@@ -14583,6 +14669,30 @@ function UnavailableChatIcon(props) {
14583
14669
  );
14584
14670
  }
14585
14671
 
14672
+ // app/renderer/components/icons/EnvironmentLinedIcon.tsx
14673
+ import { jsx as jsx15 } from "react/jsx-runtime";
14674
+ function EnvironmentLinedIcon(props) {
14675
+ "use memo";
14676
+ return /* @__PURE__ */ jsx15(
14677
+ "svg",
14678
+ {
14679
+ width: "24",
14680
+ height: "24",
14681
+ viewBox: "0 0 24 24",
14682
+ fill: "none",
14683
+ xmlns: "http://www.w3.org/2000/svg",
14684
+ ...props,
14685
+ children: /* @__PURE__ */ jsx15(
14686
+ "path",
14687
+ {
14688
+ d: "M2.0094 19.0001C2.56169 19.0001 3.0094 19.4478 3.0094 20.0001C3.0094 20.5523 2.56169 21.0001 2.0094 21.0001H1.99964C1.44752 20.9999 0.999635 20.5522 0.999635 20.0001C0.999635 19.4479 1.44752 19.0002 1.99964 19.0001H2.0094ZM1.01624 15.8174C1.1173 15.2748 1.63961 14.9161 2.18225 15.0166C3.37336 15.2385 4.47004 15.8162 5.32679 16.6729C6.18355 17.5297 6.76118 18.6263 6.98304 19.8174C7.08384 20.3602 6.72504 20.8824 6.18226 20.9835C5.63962 21.084 5.11731 20.7253 5.01624 20.1827C4.86826 19.3888 4.48377 18.658 3.91272 18.087C3.34169 17.516 2.61086 17.1314 1.81702 16.9834C1.27446 16.8822 0.915501 16.3601 1.01624 15.8174ZM2.1051 11.0059C4.37989 11.2473 6.50315 12.2614 8.12074 13.8789C9.73833 15.4965 10.7524 17.6197 10.9938 19.8946C11.052 20.4438 10.6543 20.9359 10.1051 20.9942C9.55607 21.0523 9.06377 20.6546 9.0055 20.1055C8.81236 18.2857 8.00074 16.5871 6.70667 15.293C5.41262 13.999 3.71397 13.1873 1.89417 12.9942C1.34517 12.9357 0.947265 12.4436 1.00549 11.8946C1.06376 11.3455 1.55606 10.9478 2.1051 11.0059ZM19.9997 3C20.7952 3 21.5582 3.31641 22.1208 3.87891C22.6834 4.44152 22.9997 5.20436 22.9997 6.00001V18.0001C22.9997 18.7957 22.6834 19.5585 22.1208 20.1212C21.5582 20.6837 20.7952 21.0001 19.9997 21.0001H13.9996C13.4475 20.9999 12.9996 20.5522 12.9996 20.0001C12.9996 19.4479 13.4475 19.0002 13.9996 19.0001H19.9997C20.2648 19.0001 20.5192 18.8945 20.7067 18.7071C20.8942 18.5195 20.9997 18.2653 20.9997 18.0001V6.00001C20.9997 5.73479 20.8942 5.48051 20.7067 5.29298C20.5192 5.10555 20.2648 5.00001 19.9997 5.00001H3.99964C3.73455 5.0001 3.48006 5.10552 3.29261 5.29298C3.10518 5.4805 2.99964 5.73488 2.99964 6.00001V8.00002C2.99964 8.5523 2.55192 9.00002 1.99964 9.00002C1.44752 8.99983 0.999635 8.55218 0.999635 8.00002V6.00001C0.999635 5.20444 1.31605 4.4415 1.87854 3.87891C2.44107 3.31638 3.20412 3.0001 3.99964 3H19.9997Z",
14689
+ fill: "currentColor"
14690
+ }
14691
+ )
14692
+ }
14693
+ );
14694
+ }
14695
+
14586
14696
  // app/renderer/components/StatusDot.tsx
14587
14697
  import { StatusDot } from "@tutti-os/ui-system";
14588
14698
 
@@ -14932,7 +15042,7 @@ var styles = {
14932
15042
  var RoomIssueNode_styles_default = styles;
14933
15043
 
14934
15044
  // agent-gui/RoomIssueNode/TaskSearchField.tsx
14935
- import { jsx as jsx15, jsxs as jsxs5 } from "react/jsx-runtime";
15045
+ import { jsx as jsx16, jsxs as jsxs5 } from "react/jsx-runtime";
14936
15046
  function TaskSearchField({
14937
15047
  ariaLabel,
14938
15048
  className,
@@ -14952,7 +15062,7 @@ function TaskSearchField({
14952
15062
  className: `${RoomIssueNode_styles_default.searchField} ${className ?? ""}`.trim(),
14953
15063
  "data-has-value": searchInput.value ? "true" : "false",
14954
15064
  children: [
14955
- /* @__PURE__ */ jsx15(
15065
+ /* @__PURE__ */ jsx16(
14956
15066
  Input,
14957
15067
  {
14958
15068
  type: "search",
@@ -14975,7 +15085,7 @@ function TaskSearchField({
14975
15085
  "data-testid": dataTestId
14976
15086
  }
14977
15087
  ),
14978
- searchInput.value ? /* @__PURE__ */ jsx15(
15088
+ searchInput.value ? /* @__PURE__ */ jsx16(
14979
15089
  "button",
14980
15090
  {
14981
15091
  type: "button",
@@ -14983,7 +15093,7 @@ function TaskSearchField({
14983
15093
  "aria-label": clearAriaLabel ?? t("common.clear"),
14984
15094
  onMouseDown: (event) => event.preventDefault(),
14985
15095
  onClick: searchInput.clearValue,
14986
- children: /* @__PURE__ */ jsx15(CloseLinedIcon, { "aria-hidden": "true" })
15096
+ children: /* @__PURE__ */ jsx16(CloseLinedIcon, { "aria-hidden": "true" })
14987
15097
  }
14988
15098
  ) : null
14989
15099
  ]
@@ -15022,7 +15132,7 @@ import {
15022
15132
  useAnimation,
15023
15133
  useReducedMotion
15024
15134
  } from "framer-motion";
15025
- import { jsx as jsx16, jsxs as jsxs6 } from "react/jsx-runtime";
15135
+ import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
15026
15136
  var CAST_VARIANTS = {
15027
15137
  normal: { opacity: 1 },
15028
15138
  animate: (custom) => ({
@@ -15090,7 +15200,7 @@ var CastIcon = forwardRef2(
15090
15200
  },
15091
15201
  [onMouseLeave, stopAnimation]
15092
15202
  );
15093
- return /* @__PURE__ */ jsx16(
15203
+ return /* @__PURE__ */ jsx17(
15094
15204
  "div",
15095
15205
  {
15096
15206
  className: cn("inline-flex items-center justify-center", className),
@@ -15110,8 +15220,8 @@ var CastIcon = forwardRef2(
15110
15220
  width: size,
15111
15221
  xmlns: "http://www.w3.org/2000/svg",
15112
15222
  children: [
15113
- /* @__PURE__ */ jsx16("path", { d: "M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6" }),
15114
- /* @__PURE__ */ jsx16(
15223
+ /* @__PURE__ */ jsx17("path", { d: "M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6" }),
15224
+ /* @__PURE__ */ jsx17(
15115
15225
  motion.path,
15116
15226
  {
15117
15227
  animate: controls,
@@ -15120,7 +15230,7 @@ var CastIcon = forwardRef2(
15120
15230
  variants: CAST_VARIANTS
15121
15231
  }
15122
15232
  ),
15123
- /* @__PURE__ */ jsx16(
15233
+ /* @__PURE__ */ jsx17(
15124
15234
  motion.path,
15125
15235
  {
15126
15236
  animate: controls,
@@ -15129,7 +15239,7 @@ var CastIcon = forwardRef2(
15129
15239
  variants: CAST_VARIANTS
15130
15240
  }
15131
15241
  ),
15132
- /* @__PURE__ */ jsx16(
15242
+ /* @__PURE__ */ jsx17(
15133
15243
  motion.line,
15134
15244
  {
15135
15245
  animate: controls,
@@ -15179,7 +15289,7 @@ var styles2 = {
15179
15289
  var AgentGUIChrome_styles_default = styles2;
15180
15290
 
15181
15291
  // agent-gui/agentGuiNode/AgentSessionChrome.tsx
15182
- import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
15292
+ import { Fragment as Fragment2, jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
15183
15293
  function splitTrailingEllipsis(message) {
15184
15294
  const match = message.match(/^(.*?)(\.{3}|…)\s*$/);
15185
15295
  if (!match) {
@@ -15193,9 +15303,9 @@ function splitTrailingEllipsis(message) {
15193
15303
  function LoadingEllipsis() {
15194
15304
  "use memo";
15195
15305
  return /* @__PURE__ */ jsxs7("span", { className: "tsh-inline-loading-ellipsis", "aria-hidden": "true", children: [
15196
- /* @__PURE__ */ jsx17("span", {}),
15197
- /* @__PURE__ */ jsx17("span", {}),
15198
- /* @__PURE__ */ jsx17("span", {})
15306
+ /* @__PURE__ */ jsx18("span", {}),
15307
+ /* @__PURE__ */ jsx18("span", {}),
15308
+ /* @__PURE__ */ jsx18("span", {})
15199
15309
  ] });
15200
15310
  }
15201
15311
  function AgentChromeNotice({
@@ -15208,7 +15318,7 @@ function AgentChromeNotice({
15208
15318
  }) {
15209
15319
  "use memo";
15210
15320
  const fullMessage = description ? `${title} ${description}` : title;
15211
- return /* @__PURE__ */ jsx17("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx17(
15321
+ return /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx18(
15212
15322
  "section",
15213
15323
  {
15214
15324
  className: cn(
@@ -15219,16 +15329,16 @@ function AgentChromeNotice({
15219
15329
  "data-expanded": "false",
15220
15330
  role,
15221
15331
  "data-testid": testId,
15222
- children: /* @__PURE__ */ jsx17("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
15223
- icon ? /* @__PURE__ */ jsx17("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: icon }) : null,
15332
+ children: /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
15333
+ icon ? /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: icon }) : null,
15224
15334
  /* @__PURE__ */ jsxs7(
15225
15335
  "p",
15226
15336
  {
15227
15337
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
15228
15338
  title: fullMessage,
15229
15339
  children: [
15230
- /* @__PURE__ */ jsx17("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
15231
- description ? /* @__PURE__ */ jsx17("span", { className: AgentGUIChrome_styles_default.chromeNoticeDescription, children: description }) : null
15340
+ /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: title }),
15341
+ description ? /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeNoticeDescription, children: description }) : null
15232
15342
  ]
15233
15343
  }
15234
15344
  )
@@ -15377,7 +15487,7 @@ function AgentSessionChrome({
15377
15487
  event.stopPropagation();
15378
15488
  };
15379
15489
  return /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: [
15380
- visibleAuth ? /* @__PURE__ */ jsx17(
15490
+ visibleAuth ? /* @__PURE__ */ jsx18(
15381
15491
  "section",
15382
15492
  {
15383
15493
  ref: authCardRef,
@@ -15389,7 +15499,7 @@ function AgentSessionChrome({
15389
15499
  onKeyDown: handleExpandableCardKeyDown("auth"),
15390
15500
  children: /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
15391
15501
  /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
15392
- /* @__PURE__ */ jsx17(
15502
+ /* @__PURE__ */ jsx18(
15393
15503
  "p",
15394
15504
  {
15395
15505
  ref: authMessageRef,
@@ -15398,7 +15508,7 @@ function AgentSessionChrome({
15398
15508
  children: visibleAuth.message
15399
15509
  }
15400
15510
  ),
15401
- /* @__PURE__ */ jsx17(
15511
+ /* @__PURE__ */ jsx18(
15402
15512
  ChevronDown,
15403
15513
  {
15404
15514
  "aria-hidden": "true",
@@ -15411,7 +15521,7 @@ function AgentSessionChrome({
15411
15521
  )
15412
15522
  ] }),
15413
15523
  /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeInlineActions, children: [
15414
- onAuthLogin ? /* @__PURE__ */ jsx17(
15524
+ onAuthLogin ? /* @__PURE__ */ jsx18(
15415
15525
  Button2,
15416
15526
  {
15417
15527
  type: "button",
@@ -15424,7 +15534,7 @@ function AgentSessionChrome({
15424
15534
  children: labels.authLogin ?? labels.retryActivation
15425
15535
  }
15426
15536
  ) : null,
15427
- /* @__PURE__ */ jsx17(
15537
+ /* @__PURE__ */ jsx18(
15428
15538
  Button2,
15429
15539
  {
15430
15540
  type: "button",
@@ -15442,9 +15552,9 @@ function AgentSessionChrome({
15442
15552
  }
15443
15553
  ) : null,
15444
15554
  chrome.approval ? /* @__PURE__ */ jsxs7("section", { className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardAction), children: [
15445
- /* @__PURE__ */ jsx17("div", { className: AgentGUIChrome_styles_default.chromeTitle, children: labels.approvalRequired }),
15446
- /* @__PURE__ */ jsx17("p", { className: AgentGUIChrome_styles_default.chromeMessage, children: chrome.approval.title }),
15447
- /* @__PURE__ */ jsx17("div", { className: AgentGUIChrome_styles_default.chromeActions, children: chrome.approval.options.map((option) => /* @__PURE__ */ jsx17(
15555
+ /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.chromeTitle, children: labels.approvalRequired }),
15556
+ /* @__PURE__ */ jsx18("p", { className: AgentGUIChrome_styles_default.chromeMessage, children: chrome.approval.title }),
15557
+ /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.chromeActions, children: chrome.approval.options.map((option) => /* @__PURE__ */ jsx18(
15448
15558
  "button",
15449
15559
  {
15450
15560
  type: "button",
@@ -15458,7 +15568,7 @@ function AgentSessionChrome({
15458
15568
  option.id
15459
15569
  )) })
15460
15570
  ] }) : null,
15461
- visibleRecovery ? /* @__PURE__ */ jsx17(
15571
+ visibleRecovery ? /* @__PURE__ */ jsx18(
15462
15572
  "section",
15463
15573
  {
15464
15574
  ref: recoveryCardRef,
@@ -15476,7 +15586,7 @@ function AgentSessionChrome({
15476
15586
  onKeyDown: handleExpandableCardKeyDown("recovery"),
15477
15587
  children: /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
15478
15588
  /* @__PURE__ */ jsxs7("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
15479
- visibleRecovery.kind === "activating" ? /* @__PURE__ */ jsx17(
15589
+ visibleRecovery.kind === "activating" ? /* @__PURE__ */ jsx18(
15480
15590
  CastIcon,
15481
15591
  {
15482
15592
  active: true,
@@ -15486,7 +15596,7 @@ function AgentSessionChrome({
15486
15596
  size: 16
15487
15597
  }
15488
15598
  ) : null,
15489
- /* @__PURE__ */ jsx17(
15599
+ /* @__PURE__ */ jsx18(
15490
15600
  "p",
15491
15601
  {
15492
15602
  ref: recoveryMessageRef,
@@ -15494,12 +15604,12 @@ function AgentSessionChrome({
15494
15604
  "aria-label": visibleRecovery.kind === "activating" ? recoveryMessage : void 0,
15495
15605
  title: recoveryMessage,
15496
15606
  children: visibleRecovery.kind === "activating" ? /* @__PURE__ */ jsxs7(Fragment2, { children: [
15497
- /* @__PURE__ */ jsx17("span", { className: "tsh-inline-loading-label", children: activatingMessage.label }),
15498
- activatingMessage.ellipsis ? /* @__PURE__ */ jsx17(LoadingEllipsis, {}) : null
15607
+ /* @__PURE__ */ jsx18("span", { className: "tsh-inline-loading-label", children: activatingMessage.label }),
15608
+ activatingMessage.ellipsis ? /* @__PURE__ */ jsx18(LoadingEllipsis, {}) : null
15499
15609
  ] }) : recoveryMessage
15500
15610
  }
15501
15611
  ),
15502
- /* @__PURE__ */ jsx17(
15612
+ /* @__PURE__ */ jsx18(
15503
15613
  ChevronDown,
15504
15614
  {
15505
15615
  "aria-hidden": "true",
@@ -15511,7 +15621,7 @@ function AgentSessionChrome({
15511
15621
  }
15512
15622
  )
15513
15623
  ] }),
15514
- /* @__PURE__ */ jsx17("div", { className: AgentGUIChrome_styles_default.chromeInlineActions, children: visibleRecovery.kind === "failed" && visibleRecovery.followupAction === "continue-in-new-conversation" ? /* @__PURE__ */ jsx17(
15624
+ /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.chromeInlineActions, children: visibleRecovery.kind === "failed" && visibleRecovery.followupAction === "continue-in-new-conversation" ? /* @__PURE__ */ jsx18(
15515
15625
  Button2,
15516
15626
  {
15517
15627
  type: "button",
@@ -15524,7 +15634,7 @@ function AgentSessionChrome({
15524
15634
  },
15525
15635
  children: labels.continueInNewConversation
15526
15636
  }
15527
- ) : visibleRecovery.kind === "failed" && visibleRecovery.canRetry !== false ? /* @__PURE__ */ jsx17(
15637
+ ) : visibleRecovery.kind === "failed" && visibleRecovery.canRetry !== false ? /* @__PURE__ */ jsx18(
15528
15638
  Button2,
15529
15639
  {
15530
15640
  type: "button",
@@ -15546,7 +15656,7 @@ function AgentSessionChrome({
15546
15656
 
15547
15657
  // agent-gui/agentGuiNode/AgentGoalBanner.tsx
15548
15658
  import { Target } from "lucide-react";
15549
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
15659
+ import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
15550
15660
  var TERMINAL_GOAL_STATUSES = /* @__PURE__ */ new Set(["complete", "completed", "done"]);
15551
15661
  function normalizeGoalStatus(status) {
15552
15662
  return (status ?? "").trim().toLowerCase();
@@ -15557,7 +15667,7 @@ function isGoalBannerVisible(objective, status) {
15557
15667
  }
15558
15668
  return !TERMINAL_GOAL_STATUSES.has(normalizeGoalStatus(status));
15559
15669
  }
15560
- function statusLabel(status, labels) {
15670
+ function goalStatusLabel(status, labels) {
15561
15671
  switch (normalizeGoalStatus(status)) {
15562
15672
  case "paused":
15563
15673
  return labels.statusPaused;
@@ -15575,6 +15685,15 @@ function statusLabel(status, labels) {
15575
15685
  return labels.statusActive;
15576
15686
  }
15577
15687
  }
15688
+ function describeGoal(input) {
15689
+ const trimmedObjective = input.objective.trim();
15690
+ const detailParts = [goalStatusLabel(input.status, input.labels)];
15691
+ if (typeof input.tokenBudget === "number" && input.tokenBudget > 0) {
15692
+ const used = typeof input.tokensUsed === "number" && input.tokensUsed >= 0 ? input.tokensUsed : 0;
15693
+ detailParts.push(input.labels.budgetUsage(used, input.tokenBudget));
15694
+ }
15695
+ return `${trimmedObjective} \xB7 ${detailParts.join(" \xB7 ")}`;
15696
+ }
15578
15697
  function AgentGoalBanner({
15579
15698
  objective,
15580
15699
  status,
@@ -15583,15 +15702,15 @@ function AgentGoalBanner({
15583
15702
  labels
15584
15703
  }) {
15585
15704
  "use memo";
15586
- const trimmedObjective = objective.trim();
15587
- const detailParts = [statusLabel(status, labels)];
15588
- if (typeof tokenBudget === "number" && tokenBudget > 0) {
15589
- const used = typeof tokensUsed === "number" && tokensUsed >= 0 ? tokensUsed : 0;
15590
- detailParts.push(labels.budgetUsage(used, tokenBudget));
15591
- }
15592
- const description = `${trimmedObjective} \xB7 ${detailParts.join(" \xB7 ")}`;
15705
+ const description = describeGoal({
15706
+ objective,
15707
+ status,
15708
+ tokenBudget,
15709
+ tokensUsed,
15710
+ labels
15711
+ });
15593
15712
  const fullMessage = `${labels.goalLabel} ${description}`;
15594
- return /* @__PURE__ */ jsx18("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx18(
15713
+ return /* @__PURE__ */ jsx19("div", { className: AgentGUIChrome_styles_default.sessionChrome, children: /* @__PURE__ */ jsx19(
15595
15714
  "section",
15596
15715
  {
15597
15716
  className: cn(AgentGUIChrome_styles_default.chromeCard, AgentGUIChrome_styles_default.chromeCardMuted),
@@ -15601,20 +15720,20 @@ function AgentGoalBanner({
15601
15720
  "data-testid": "agent-gui-goal-banner",
15602
15721
  children: /* @__PURE__ */ jsxs8("div", { className: AgentGUIChrome_styles_default.chromeMetaRow, children: [
15603
15722
  /* @__PURE__ */ jsxs8("div", { className: AgentGUIChrome_styles_default.chromeMessageSlot, children: [
15604
- /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx18(Target, { "aria-hidden": true, className: "size-3.5" }) }),
15723
+ /* @__PURE__ */ jsx19("span", { className: AgentGUIChrome_styles_default.chromeIcon, children: /* @__PURE__ */ jsx19(Target, { "aria-hidden": true, className: "size-3.5" }) }),
15605
15724
  /* @__PURE__ */ jsxs8(
15606
15725
  "p",
15607
15726
  {
15608
15727
  className: cn(AgentGUIChrome_styles_default.chromeMessage, AgentGUIChrome_styles_default.chromeNoticeMessage),
15609
15728
  title: fullMessage,
15610
15729
  children: [
15611
- /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: labels.goalLabel }),
15612
- /* @__PURE__ */ jsx18("span", { className: AgentGUIChrome_styles_default.chromeNoticeDescription, children: description })
15730
+ /* @__PURE__ */ jsx19("span", { className: AgentGUIChrome_styles_default.chromeNoticeTitle, children: labels.goalLabel }),
15731
+ /* @__PURE__ */ jsx19("span", { className: AgentGUIChrome_styles_default.chromeNoticeDescription, children: description })
15613
15732
  ]
15614
15733
  }
15615
15734
  )
15616
15735
  ] }),
15617
- /* @__PURE__ */ jsx18(
15736
+ /* @__PURE__ */ jsx19(
15618
15737
  "span",
15619
15738
  {
15620
15739
  className: AgentGUIChrome_styles_default.chromeGoalHint,
@@ -15649,7 +15768,7 @@ import {
15649
15768
 
15650
15769
  // agent-gui/agentGuiNode/AgentComposer.tsx
15651
15770
  import { AddIcon, Select as Select2, SelectTrigger as SelectTrigger2 } from "@tutti-os/ui-system";
15652
- import { ListChecks, X } from "lucide-react";
15771
+ import { ListChecks as ListChecks2, Target as Target3, X } from "lucide-react";
15653
15772
  import {
15654
15773
  createMentionPaletteStateAdapter,
15655
15774
  makeAtPanelKeyDown,
@@ -15944,6 +16063,9 @@ function resolveSlashCommandSelectionEffect({
15944
16063
  if (isLocalTogglePlanCommand(provider, commandName)) {
15945
16064
  return { kind: "togglePlanMode" };
15946
16065
  }
16066
+ if (isGoalModeCommand(commandName)) {
16067
+ return { kind: "activateGoalMode" };
16068
+ }
15947
16069
  if (isLocalToggleSpeedCommand(provider, commandName)) {
15948
16070
  return { kind: "toggleSpeed" };
15949
16071
  }
@@ -16031,6 +16153,9 @@ function resolveSlashCommandSubmitEffect({
16031
16153
  function isLocalTogglePlanCommand(provider, commandName) {
16032
16154
  return isACPProvider(provider) && ACP_LOCAL_TOGGLE_PLAN_COMMANDS.has(commandName.trim().toLowerCase());
16033
16155
  }
16156
+ function isGoalModeCommand(commandName) {
16157
+ return commandName.trim().toLowerCase() === "goal";
16158
+ }
16034
16159
  function isReviewPickerCommand(provider, commandName) {
16035
16160
  return providerSlashPolicy(provider)?.reviewPickerCommands.has(commandName) ?? false;
16036
16161
  }
@@ -16086,12 +16211,25 @@ function filterUnavailableSlashCommands(commands, input) {
16086
16211
 
16087
16212
  // agent-gui/agentGuiNode/AgentSlashCommandPalette.tsx
16088
16213
  import { Fragment as Fragment3, useEffect as useEffect6, useRef as useRef7 } from "react";
16089
- import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
16214
+ import {
16215
+ Globe,
16216
+ Info,
16217
+ ListChecks,
16218
+ Minimize2,
16219
+ Monitor,
16220
+ Search,
16221
+ Target as Target2,
16222
+ ZapIcon
16223
+ } from "lucide-react";
16224
+ import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
16090
16225
  var paletteStyles = {
16091
16226
  palette: "nodrag agent-gui-node__mention-palette flex h-full min-h-0 flex-col gap-1 overflow-y-auto px-1 pb-1 pt-2 [-webkit-app-region:no-drag]",
16092
- option: "nodrag relative flex min-h-9 w-full min-w-0 cursor-pointer select-none items-center gap-1.5 overflow-hidden rounded-[6px] border-0 bg-transparent px-2.5 py-2 text-left text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 [-webkit-app-region:no-drag] focus-visible:outline-none active:bg-[var(--transparency-active)] data-[highlighted]:bg-[var(--transparency-block)] data-[highlighted]:text-[var(--text-primary)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
16093
- copy: "flex min-w-0 flex-1 items-baseline gap-1 overflow-hidden leading-[16px]",
16094
- name: "min-w-0 max-w-[48%] shrink-0 truncate text-[11px] font-semibold text-[var(--text-primary)]",
16227
+ option: "nodrag relative flex min-h-9 w-full min-w-0 cursor-pointer select-none items-center gap-2 overflow-hidden rounded-[6px] border-0 bg-transparent px-2.5 py-2 text-left text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 [-webkit-app-region:no-drag] focus-visible:outline-none active:bg-[var(--transparency-active)] data-[highlighted]:bg-[var(--transparency-block)] data-[highlighted]:text-[var(--text-primary)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
16228
+ icon: "flex w-3 shrink-0 items-center justify-center self-center text-[var(--text-secondary)]",
16229
+ copy: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden leading-[16px]",
16230
+ name: "flex min-w-0 max-w-[48%] shrink-0 items-center gap-1 overflow-hidden",
16231
+ primaryName: "min-w-0 truncate text-[11px] font-semibold text-[var(--text-primary)]",
16232
+ secondaryName: "shrink-0 text-[10px] font-normal text-[var(--text-secondary)]",
16095
16233
  descriptionText: "min-w-0 flex-1 truncate text-[11px] font-normal text-[var(--text-secondary)]",
16096
16234
  groupHeader: "select-none px-2.5 pb-0.5 text-[11px] font-normal text-[var(--text-secondary)]",
16097
16235
  groupHeaderFirst: "pt-1.5",
@@ -16131,10 +16269,11 @@ function AgentSlashCommandPalette({
16131
16269
  firstEntryIndexByType.set(groupType, index);
16132
16270
  }
16133
16271
  });
16134
- return /* @__PURE__ */ jsx19("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: entries.map((entry, index) => {
16272
+ return /* @__PURE__ */ jsx20("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: entries.map((entry, index) => {
16135
16273
  const isHighlighted = index === highlightedIndex;
16136
16274
  const groupType = entryGroupType(entry);
16137
- const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx19(
16275
+ const entryIcon = slashPaletteEntryIcon(entry);
16276
+ const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx20(
16138
16277
  "div",
16139
16278
  {
16140
16279
  "aria-hidden": "true",
@@ -16183,11 +16322,15 @@ function AgentSlashCommandPalette({
16183
16322
  onSelectSkill(entry.skill);
16184
16323
  },
16185
16324
  children: [
16325
+ entryIcon ? /* @__PURE__ */ jsx20("span", { "aria-hidden": "true", className: paletteStyles.icon, children: entryIcon }) : null,
16186
16326
  /* @__PURE__ */ jsxs9("span", { className: paletteStyles.copy, children: [
16187
- /* @__PURE__ */ jsx19("span", { className: paletteStyles.name, children: entry.label }),
16188
- entry.description ? /* @__PURE__ */ jsx19("span", { className: paletteStyles.descriptionText, children: entry.description }) : null
16327
+ /* @__PURE__ */ jsxs9("span", { className: paletteStyles.name, children: [
16328
+ /* @__PURE__ */ jsx20("span", { className: paletteStyles.primaryName, children: entry.type === "command" ? entry.primaryLabel ?? entry.label : entry.label }),
16329
+ entry.type === "command" && entry.secondaryLabel ? /* @__PURE__ */ jsx20("span", { className: paletteStyles.secondaryName, children: entry.secondaryLabel }) : null
16330
+ ] }),
16331
+ entry.description ? /* @__PURE__ */ jsx20("span", { className: paletteStyles.descriptionText, children: entry.description }) : null
16189
16332
  ] }),
16190
- entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx19(
16333
+ entry.type === "capability" && entry.settingsLabel && onSelectCapabilitySettings ? /* @__PURE__ */ jsx20(
16191
16334
  "button",
16192
16335
  {
16193
16336
  "aria-label": entry.settingsAriaLabel ?? entry.settingsLabel,
@@ -16239,6 +16382,31 @@ function labelForEntryGroupType(groupType, labels) {
16239
16382
  return labels.skillsGroupLabel;
16240
16383
  }
16241
16384
  }
16385
+ var SLASH_PALETTE_ICON_CLASS = "size-3";
16386
+ function slashPaletteEntryIcon(entry) {
16387
+ if (entry.type === "capability") {
16388
+ return entry.capability.capability === "computerUse" ? /* @__PURE__ */ jsx20(Monitor, { className: SLASH_PALETTE_ICON_CLASS }) : /* @__PURE__ */ jsx20(Globe, { className: SLASH_PALETTE_ICON_CLASS });
16389
+ }
16390
+ if (entry.type !== "command") {
16391
+ return null;
16392
+ }
16393
+ switch (entry.command.name.trim().toLowerCase()) {
16394
+ case "compact":
16395
+ return /* @__PURE__ */ jsx20(Minimize2, { className: SLASH_PALETTE_ICON_CLASS });
16396
+ case "fast":
16397
+ return /* @__PURE__ */ jsx20(ZapIcon, { className: SLASH_PALETTE_ICON_CLASS });
16398
+ case "goal":
16399
+ return /* @__PURE__ */ jsx20(Target2, { className: SLASH_PALETTE_ICON_CLASS });
16400
+ case "plan":
16401
+ return /* @__PURE__ */ jsx20(ListChecks, { className: SLASH_PALETTE_ICON_CLASS });
16402
+ case "review":
16403
+ return /* @__PURE__ */ jsx20(Search, { className: SLASH_PALETTE_ICON_CLASS });
16404
+ case "status":
16405
+ return /* @__PURE__ */ jsx20(Info, { className: SLASH_PALETTE_ICON_CLASS });
16406
+ default:
16407
+ return null;
16408
+ }
16409
+ }
16242
16410
 
16243
16411
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
16244
16412
  import {
@@ -16384,7 +16552,7 @@ var styles3 = {
16384
16552
  var AgentGUINode_styles_default = styles3;
16385
16553
 
16386
16554
  // agent-gui/agentGuiNode/AgentQueuedPromptPanel.tsx
16387
- import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
16555
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
16388
16556
  var EMPTY_WORKSPACE_APP_ICONS = [];
16389
16557
  function queuedPromptImages(queuedPrompt) {
16390
16558
  return agentPromptContentImageBlocks(
@@ -16511,9 +16679,9 @@ function AgentQueuedPromptPanel({
16511
16679
  onKeyDown: handleKeyDown,
16512
16680
  children: [
16513
16681
  /* @__PURE__ */ jsxs10("div", { className: AgentGUINode_styles_default.composerQueuedPromptHeader, children: [
16514
- /* @__PURE__ */ jsx20("span", { className: AgentGUINode_styles_default.composerQueuedPromptLabel, children: labels.queuedLabel }),
16515
- /* @__PURE__ */ jsx20("span", { className: AgentGUINode_styles_default.composerQueuedPromptCount, children: queuedPrompts.length }),
16516
- canExpand ? /* @__PURE__ */ jsx20(
16682
+ /* @__PURE__ */ jsx21("span", { className: AgentGUINode_styles_default.composerQueuedPromptLabel, children: labels.queuedLabel }),
16683
+ /* @__PURE__ */ jsx21("span", { className: AgentGUINode_styles_default.composerQueuedPromptCount, children: queuedPrompts.length }),
16684
+ canExpand ? /* @__PURE__ */ jsx21(
16517
16685
  ChevronRight,
16518
16686
  {
16519
16687
  "aria-hidden": "true",
@@ -16524,7 +16692,7 @@ function AgentQueuedPromptPanel({
16524
16692
  }
16525
16693
  ) : null
16526
16694
  ] }),
16527
- /* @__PURE__ */ jsx20(
16695
+ /* @__PURE__ */ jsx21(
16528
16696
  "div",
16529
16697
  {
16530
16698
  ref: queuedPromptListRef,
@@ -16543,8 +16711,8 @@ function AgentQueuedPromptPanel({
16543
16711
  "data-testid": `agent-gui-composer-queued-prompt-${queuedPrompt.id}`,
16544
16712
  "data-draining": isDraining ? "true" : "false",
16545
16713
  children: [
16546
- /* @__PURE__ */ jsx20("div", { className: AgentGUINode_styles_default.composerQueuedPromptMain, children: /* @__PURE__ */ jsxs10("div", { className: AgentGUINode_styles_default.composerQueuedPromptBody, title, children: [
16547
- displayText ? /* @__PURE__ */ jsx20(
16714
+ /* @__PURE__ */ jsx21("div", { className: AgentGUINode_styles_default.composerQueuedPromptMain, children: /* @__PURE__ */ jsxs10("div", { className: AgentGUINode_styles_default.composerQueuedPromptBody, title, children: [
16715
+ displayText ? /* @__PURE__ */ jsx21(
16548
16716
  "div",
16549
16717
  {
16550
16718
  ref: queuedPrompts.length === 1 ? singlePromptTextRef : void 0,
@@ -16554,7 +16722,7 @@ function AgentQueuedPromptPanel({
16554
16722
  event.stopPropagation();
16555
16723
  }
16556
16724
  },
16557
- children: /* @__PURE__ */ jsx20(
16725
+ children: /* @__PURE__ */ jsx21(
16558
16726
  AgentMessageMarkdown,
16559
16727
  {
16560
16728
  content: displayText,
@@ -16566,7 +16734,7 @@ function AgentQueuedPromptPanel({
16566
16734
  )
16567
16735
  }
16568
16736
  ) : null,
16569
- images.length > 0 ? /* @__PURE__ */ jsx20("div", { className: AgentGUINode_styles_default.composerQueuedPromptImages, children: images.slice(0, 3).map((image, index) => /* @__PURE__ */ jsx20(
16737
+ images.length > 0 ? /* @__PURE__ */ jsx21("div", { className: AgentGUINode_styles_default.composerQueuedPromptImages, children: images.slice(0, 3).map((image, index) => /* @__PURE__ */ jsx21(
16570
16738
  "img",
16571
16739
  {
16572
16740
  alt: "",
@@ -16577,42 +16745,42 @@ function AgentQueuedPromptPanel({
16577
16745
  )) }) : null
16578
16746
  ] }) }),
16579
16747
  /* @__PURE__ */ jsxs10("div", { className: AgentGUINode_styles_default.composerQueuedPromptActions, children: [
16580
- /* @__PURE__ */ jsx20(
16748
+ /* @__PURE__ */ jsx21(
16581
16749
  CanvasNodeGhostIconButton,
16582
16750
  {
16583
16751
  "aria-label": labels.sendQueuedPromptNext,
16584
16752
  disabled: isDraining,
16585
16753
  onClick: () => onSendQueuedPromptNext(queuedPrompt.id),
16586
- children: /* @__PURE__ */ jsx20(CanvasNodeGuideLinedIcon, { "aria-hidden": "true" })
16754
+ children: /* @__PURE__ */ jsx21(CanvasNodeGuideLinedIcon, { "aria-hidden": "true" })
16587
16755
  }
16588
16756
  ),
16589
- /* @__PURE__ */ jsx20(
16757
+ /* @__PURE__ */ jsx21(
16590
16758
  CanvasNodeGhostIconButton,
16591
16759
  {
16592
16760
  "aria-label": labels.deleteQueuedPrompt,
16593
16761
  disabled: isDraining,
16594
16762
  onClick: () => onRemoveQueuedPrompt(queuedPrompt.id),
16595
- children: /* @__PURE__ */ jsx20(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
16763
+ children: /* @__PURE__ */ jsx21(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
16596
16764
  }
16597
16765
  ),
16598
16766
  /* @__PURE__ */ jsxs10(DropdownMenu, { children: [
16599
- /* @__PURE__ */ jsx20(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx20(
16767
+ /* @__PURE__ */ jsx21(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx21(
16600
16768
  CanvasNodeGhostIconButton,
16601
16769
  {
16602
16770
  "aria-label": labels.queuedPromptMoreActions,
16603
16771
  disabled: isDraining,
16604
16772
  stopsEventPropagation: false,
16605
16773
  onClick: (event) => event.stopPropagation(),
16606
- children: /* @__PURE__ */ jsx20(CanvasNodeMoreLinedIcon, { "aria-hidden": "true" })
16774
+ children: /* @__PURE__ */ jsx21(CanvasNodeMoreLinedIcon, { "aria-hidden": "true" })
16607
16775
  }
16608
16776
  ) }),
16609
- /* @__PURE__ */ jsx20(
16777
+ /* @__PURE__ */ jsx21(
16610
16778
  DropdownMenuContent,
16611
16779
  {
16612
16780
  align: "end",
16613
16781
  className: AgentGUINode_styles_default.composerMenuContent,
16614
16782
  sideOffset: 8,
16615
- children: /* @__PURE__ */ jsx20(
16783
+ children: /* @__PURE__ */ jsx21(
16616
16784
  DropdownMenuItem,
16617
16785
  {
16618
16786
  className: AgentGUINode_styles_default.composerMenuItem,
@@ -16626,7 +16794,7 @@ function AgentQueuedPromptPanel({
16626
16794
  onSelect: () => {
16627
16795
  handleEditQueuedPromptSelect(queuedPrompt.id);
16628
16796
  },
16629
- children: /* @__PURE__ */ jsx20("span", { children: labels.editQueuedPrompt })
16797
+ children: /* @__PURE__ */ jsx21("span", { children: labels.editQueuedPrompt })
16630
16798
  }
16631
16799
  )
16632
16800
  }
@@ -16652,7 +16820,7 @@ import {
16652
16820
  useMemo as useMemo5,
16653
16821
  useState as useState7
16654
16822
  } from "react";
16655
- import { ChevronDown as ChevronDown2, ZapIcon } from "lucide-react";
16823
+ import { ChevronDown as ChevronDown2, ZapIcon as ZapIcon2 } from "lucide-react";
16656
16824
  import {
16657
16825
  WorkspaceUserProjectSelect,
16658
16826
  resolveWorkspaceUserProjectSelectLabels
@@ -17010,7 +17178,7 @@ function optionsWithSelectedValue(options, selectedValue) {
17010
17178
  }
17011
17179
 
17012
17180
  // agent-gui/agentGuiNode/AgentComposerSettingsMenus.tsx
17013
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
17181
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
17014
17182
  function basenameProjectPath(path) {
17015
17183
  const normalized = path.trim().replaceAll("\\", "/").replace(/\/+$/, "");
17016
17184
  return normalized.split("/").filter(Boolean).at(-1) ?? path;
@@ -17062,7 +17230,7 @@ function AgentProjectDropdown({
17062
17230
  className: "workspace-user-project-trigger-label",
17063
17231
  "data-workspace-user-project-trigger-label": "true",
17064
17232
  children: [
17065
- selectedPath ? /* @__PURE__ */ jsx21(FolderIcon, { "aria-hidden": true, className: "shrink-0", size: 15 }) : /* @__PURE__ */ jsx21(
17233
+ selectedPath ? /* @__PURE__ */ jsx22(FolderIcon, { "aria-hidden": true, className: "shrink-0", size: 15 }) : /* @__PURE__ */ jsx22(
17066
17234
  NoWorkspaceLinedIcon,
17067
17235
  {
17068
17236
  "aria-hidden": true,
@@ -17071,16 +17239,16 @@ function AgentProjectDropdown({
17071
17239
  size: 15
17072
17240
  }
17073
17241
  ),
17074
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate", children: triggerLabel })
17242
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate", children: triggerLabel })
17075
17243
  ]
17076
17244
  }
17077
17245
  ),
17078
- /* @__PURE__ */ jsx21(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17246
+ /* @__PURE__ */ jsx22(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17079
17247
  ]
17080
17248
  }
17081
17249
  );
17082
17250
  }
17083
- return /* @__PURE__ */ jsx21(
17251
+ return /* @__PURE__ */ jsx22(
17084
17252
  WorkspaceUserProjectSelect,
17085
17253
  {
17086
17254
  api: userProjectApi,
@@ -17100,7 +17268,7 @@ function AgentProjectDropdown({
17100
17268
  i18n,
17101
17269
  labels,
17102
17270
  projectLocked: Boolean(composerSettings.projectLocked),
17103
- renderAddProjectIcon: () => /* @__PURE__ */ jsx21(
17271
+ renderAddProjectIcon: () => /* @__PURE__ */ jsx22(
17104
17272
  NewWorkspaceLinedIcon,
17105
17273
  {
17106
17274
  "aria-hidden": true,
@@ -17164,15 +17332,15 @@ function AgentPermissionModeDropdown({
17164
17332
  "aria-label": labels.permissionLabel,
17165
17333
  "data-permission-tone": triggerTone,
17166
17334
  children: [
17167
- /* @__PURE__ */ jsx21("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx21("span", { className: "truncate", children: triggerLabel }) }),
17168
- /* @__PURE__ */ jsx21(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17335
+ /* @__PURE__ */ jsx22("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx22("span", { className: "truncate", children: triggerLabel }) }),
17336
+ /* @__PURE__ */ jsx22(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17169
17337
  ]
17170
17338
  }
17171
17339
  );
17172
17340
  if (previewMode) {
17173
17341
  return trigger;
17174
17342
  }
17175
- const selectTrigger = /* @__PURE__ */ jsx21(
17343
+ const selectTrigger = /* @__PURE__ */ jsx22(
17176
17344
  SelectTrigger,
17177
17345
  {
17178
17346
  className: cn2(
@@ -17183,7 +17351,7 @@ function AgentPermissionModeDropdown({
17183
17351
  ),
17184
17352
  "aria-label": labels.permissionLabel,
17185
17353
  "data-permission-tone": triggerTone,
17186
- children: /* @__PURE__ */ jsx21("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx21("span", { className: "truncate", children: triggerLabel }) })
17354
+ children: /* @__PURE__ */ jsx22("span", { className: "flex min-w-0 flex-1 items-center", children: /* @__PURE__ */ jsx22("span", { className: "truncate", children: triggerLabel }) })
17187
17355
  }
17188
17356
  );
17189
17357
  return /* @__PURE__ */ jsxs11(
@@ -17200,11 +17368,11 @@ function AgentPermissionModeDropdown({
17200
17368
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
17201
17369
  // for disabled triggers) so hover/focus reliably surfaces the hint.
17202
17370
  /* @__PURE__ */ jsxs11(Tooltip2, { children: [
17203
- /* @__PURE__ */ jsx21(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx21("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
17204
- /* @__PURE__ */ jsx21(TooltipContent2, { side: "top", children: labels.loadingOptions })
17371
+ /* @__PURE__ */ jsx22(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx22("span", { className: "inline-flex", tabIndex: 0, children: selectTrigger }) }),
17372
+ /* @__PURE__ */ jsx22(TooltipContent2, { side: "top", children: labels.loadingOptions })
17205
17373
  ] })
17206
17374
  ) : selectTrigger,
17207
- isSelectOpen ? /* @__PURE__ */ jsx21(
17375
+ isSelectOpen ? /* @__PURE__ */ jsx22(
17208
17376
  SelectContent,
17209
17377
  {
17210
17378
  align: "end",
@@ -17215,7 +17383,7 @@ function AgentPermissionModeDropdown({
17215
17383
  AgentGUINode_styles_default.composerMenuContent,
17216
17384
  "w-max min-w-[220px] max-w-[calc(100vw-32px)] data-[side=top]:!translate-y-0"
17217
17385
  ),
17218
- children: permissionOptions.map((option) => /* @__PURE__ */ jsx21(
17386
+ children: permissionOptions.map((option) => /* @__PURE__ */ jsx22(
17219
17387
  SelectItem,
17220
17388
  {
17221
17389
  value: option.value,
@@ -17223,8 +17391,8 @@ function AgentPermissionModeDropdown({
17223
17391
  className: cn2(AgentGUINode_styles_default.composerMenuItem, "group/composer-option"),
17224
17392
  onPointerDown: (event) => handleSelectedItemPointerDown(event, option.value),
17225
17393
  children: /* @__PURE__ */ jsxs11("span", { className: "flex min-w-0 items-center gap-1.5", children: [
17226
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate", children: option.label }),
17227
- option.description ? /* @__PURE__ */ jsx21(
17394
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate", children: option.label }),
17395
+ option.description ? /* @__PURE__ */ jsx22(
17228
17396
  ComposerOptionInfoTooltip,
17229
17397
  {
17230
17398
  description: option.description,
@@ -17305,22 +17473,22 @@ function ComposerOptionInfoTooltip({
17305
17473
  event.preventDefault();
17306
17474
  event.stopPropagation();
17307
17475
  };
17308
- const trigger = /* @__PURE__ */ jsx21(
17476
+ const trigger = /* @__PURE__ */ jsx22(
17309
17477
  "span",
17310
17478
  {
17311
17479
  className: "pointer-events-none inline-flex shrink-0 cursor-help text-[var(--agent-gui-text-tertiary)] opacity-0 transition-opacity group-hover/composer-option:pointer-events-auto group-hover/composer-option:opacity-100 group-data-[highlighted]/composer-option:pointer-events-auto group-data-[highlighted]/composer-option:opacity-100",
17312
17480
  "data-agent-composer-option-info-trigger": "true",
17313
17481
  onClick: stopSelect,
17314
17482
  onPointerDown: stopSelect,
17315
- children: /* @__PURE__ */ jsx21(RoomsHintIcon, { "aria-hidden": true, className: "size-3" })
17483
+ children: /* @__PURE__ */ jsx22(RoomsHintIcon, { "aria-hidden": true, className: "size-3" })
17316
17484
  }
17317
17485
  );
17318
17486
  if (!tooltipsEnabled) {
17319
17487
  return trigger;
17320
17488
  }
17321
17489
  return /* @__PURE__ */ jsxs11(Tooltip2, { children: [
17322
- /* @__PURE__ */ jsx21(TooltipTrigger2, { asChild: true, children: trigger }),
17323
- /* @__PURE__ */ jsx21(TooltipContent2, { side: "right", className: "max-w-[240px] whitespace-normal", children: description })
17490
+ /* @__PURE__ */ jsx22(TooltipTrigger2, { asChild: true, children: trigger }),
17491
+ /* @__PURE__ */ jsx22(TooltipContent2, { side: "right", className: "max-w-[240px] whitespace-normal", children: description })
17324
17492
  ] });
17325
17493
  }
17326
17494
  function resolvePermissionModeTriggerTone(value) {
@@ -17375,8 +17543,8 @@ function AgentModelReasoningDropdown({
17375
17543
  "data-agent-model-reasoning-trigger": "true",
17376
17544
  children: [
17377
17545
  /* @__PURE__ */ jsxs11("span", { className: "flex min-w-0 flex-1 items-center gap-2 overflow-hidden", children: [
17378
- menu.speed.show && menu.trigger.isFast ? /* @__PURE__ */ jsx21(
17379
- ZapIcon,
17546
+ menu.speed.show && menu.trigger.isFast ? /* @__PURE__ */ jsx22(
17547
+ ZapIcon2,
17380
17548
  {
17381
17549
  "aria-hidden": true,
17382
17550
  className: "size-3.5 shrink-0",
@@ -17384,12 +17552,12 @@ function AgentModelReasoningDropdown({
17384
17552
  strokeWidth: 2.5
17385
17553
  }
17386
17554
  ) : null,
17387
- menu.trigger.showCombined ? /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate", children: menu.trigger.combinedLabel }) : /* @__PURE__ */ jsxs11(Fragment4, { children: [
17388
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate", children: menu.trigger.modelLabel }),
17389
- /* @__PURE__ */ jsx21("span", { className: "shrink-0", children: menu.trigger.reasoningLabel })
17555
+ menu.trigger.showCombined ? /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate", children: menu.trigger.combinedLabel }) : /* @__PURE__ */ jsxs11(Fragment4, { children: [
17556
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate", children: menu.trigger.modelLabel }),
17557
+ /* @__PURE__ */ jsx22("span", { className: "shrink-0", children: menu.trigger.reasoningLabel })
17390
17558
  ] })
17391
17559
  ] }),
17392
- /* @__PURE__ */ jsx21(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17560
+ /* @__PURE__ */ jsx22(ChevronDown2, { "aria-hidden": "true", className: "shrink-0", size: 16 })
17393
17561
  ]
17394
17562
  }
17395
17563
  );
@@ -17402,10 +17570,10 @@ function AgentModelReasoningDropdown({
17402
17570
  // it. Target the tooltip at a focusable wrapper span (Radix's pattern
17403
17571
  // for disabled triggers) so hover/focus reliably surfaces the hint.
17404
17572
  /* @__PURE__ */ jsxs11(Tooltip2, { children: [
17405
- /* @__PURE__ */ jsx21(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx21("span", { className: "inline-flex", tabIndex: 0, children: /* @__PURE__ */ jsx21(DropdownMenuTrigger2, { asChild: true, disabled: menuDisabled, children: trigger }) }) }),
17406
- /* @__PURE__ */ jsx21(TooltipContent2, { side: "top", children: labels.loadingOptions })
17573
+ /* @__PURE__ */ jsx22(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx22("span", { className: "inline-flex", tabIndex: 0, children: /* @__PURE__ */ jsx22(DropdownMenuTrigger2, { asChild: true, disabled: menuDisabled, children: trigger }) }) }),
17574
+ /* @__PURE__ */ jsx22(TooltipContent2, { side: "top", children: labels.loadingOptions })
17407
17575
  ] })
17408
- ) : /* @__PURE__ */ jsx21(DropdownMenuTrigger2, { asChild: true, disabled: menuDisabled, children: trigger }),
17576
+ ) : /* @__PURE__ */ jsx22(DropdownMenuTrigger2, { asChild: true, disabled: menuDisabled, children: trigger }),
17409
17577
  /* @__PURE__ */ jsxs11(
17410
17578
  DropdownMenuContent2,
17411
17579
  {
@@ -17420,8 +17588,8 @@ function AgentModelReasoningDropdown({
17420
17588
  "data-agent-composer-settings-layout": "model-primary",
17421
17589
  children: [
17422
17590
  menu.model.show ? /* @__PURE__ */ jsxs11(Fragment4, { children: [
17423
- /* @__PURE__ */ jsx21(DropdownMenuLabel2, { children: labels.modelSelectionLabel }),
17424
- /* @__PURE__ */ jsx21(
17591
+ /* @__PURE__ */ jsx22(DropdownMenuLabel2, { children: labels.modelSelectionLabel }),
17592
+ /* @__PURE__ */ jsx22(
17425
17593
  ComposerMenuOptionItems,
17426
17594
  {
17427
17595
  options: menu.model.options,
@@ -17432,7 +17600,7 @@ function AgentModelReasoningDropdown({
17432
17600
  }
17433
17601
  )
17434
17602
  ] }) : null,
17435
- menu.model.show && (menu.reasoning.show || menu.speed.show) ? /* @__PURE__ */ jsx21(DropdownMenuSeparator2, {}) : null,
17603
+ menu.model.show && (menu.reasoning.show || menu.speed.show) ? /* @__PURE__ */ jsx22(DropdownMenuSeparator2, {}) : null,
17436
17604
  menu.reasoning.show ? /* @__PURE__ */ jsxs11(DropdownMenuSub2, { children: [
17437
17605
  /* @__PURE__ */ jsxs11(
17438
17606
  DropdownMenuSubTrigger2,
@@ -17440,17 +17608,17 @@ function AgentModelReasoningDropdown({
17440
17608
  className: cn2(AgentGUINode_styles_default.composerMenuItem, "[&>svg]:!ml-0.5"),
17441
17609
  "data-agent-reasoning-submenu-trigger": "true",
17442
17610
  children: [
17443
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 flex-1 truncate", children: labels.reasoningLabel }),
17444
- /* @__PURE__ */ jsx21("span", { className: "text-[var(--text-tertiary)]", children: menu.reasoning.selectedLabel })
17611
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 flex-1 truncate", children: labels.reasoningLabel }),
17612
+ /* @__PURE__ */ jsx22("span", { className: "text-[var(--text-tertiary)]", children: menu.reasoning.selectedLabel })
17445
17613
  ]
17446
17614
  }
17447
17615
  ),
17448
- /* @__PURE__ */ jsx21(
17616
+ /* @__PURE__ */ jsx22(
17449
17617
  DropdownMenuSubContent2,
17450
17618
  {
17451
17619
  className: cn2(AgentGUINode_styles_default.composerMenuContent, "min-w-[132px]"),
17452
17620
  "data-agent-composer-settings-layout": "model-submenu",
17453
- children: /* @__PURE__ */ jsx21(
17621
+ children: /* @__PURE__ */ jsx22(
17454
17622
  ComposerMenuOptionItems,
17455
17623
  {
17456
17624
  options: menu.reasoning.options,
@@ -17469,17 +17637,17 @@ function AgentModelReasoningDropdown({
17469
17637
  className: cn2(AgentGUINode_styles_default.composerMenuItem, "[&>svg]:!ml-0.5"),
17470
17638
  "data-agent-speed-submenu-trigger": "true",
17471
17639
  children: [
17472
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 flex-1 truncate", children: labels.speedLabel }),
17473
- /* @__PURE__ */ jsx21("span", { className: "text-[var(--text-tertiary)]", children: menu.speed.selectedLabel })
17640
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 flex-1 truncate", children: labels.speedLabel }),
17641
+ /* @__PURE__ */ jsx22("span", { className: "text-[var(--text-tertiary)]", children: menu.speed.selectedLabel })
17474
17642
  ]
17475
17643
  }
17476
17644
  ),
17477
- /* @__PURE__ */ jsx21(
17645
+ /* @__PURE__ */ jsx22(
17478
17646
  DropdownMenuSubContent2,
17479
17647
  {
17480
17648
  className: cn2(AgentGUINode_styles_default.composerMenuContent, "w-[200px]"),
17481
17649
  "data-agent-composer-settings-layout": "model-submenu",
17482
- children: /* @__PURE__ */ jsx21(
17650
+ children: /* @__PURE__ */ jsx22(
17483
17651
  ComposerMenuOptionItems,
17484
17652
  {
17485
17653
  options: menu.speed.options,
@@ -17504,7 +17672,7 @@ function ComposerMenuOptionItems({
17504
17672
  tooltipsEnabled = true,
17505
17673
  onSelect
17506
17674
  }) {
17507
- return /* @__PURE__ */ jsx21(Fragment4, { children: options.map((option) => {
17675
+ return /* @__PURE__ */ jsx22(Fragment4, { children: options.map((option) => {
17508
17676
  const hasDescription = Boolean(option.description);
17509
17677
  const showInlineDescription = descriptionPresentation === "inline" && hasDescription;
17510
17678
  const showModelTooltip = descriptionPresentation === "model-tooltip";
@@ -17530,8 +17698,8 @@ function ComposerMenuOptionItems({
17530
17698
  },
17531
17699
  children: [
17532
17700
  showModelTooltip ? /* @__PURE__ */ jsxs11("span", { className: "flex min-w-0 flex-1 items-baseline gap-2 overflow-hidden", children: [
17533
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate leading-[1.15]", children: option.label }),
17534
- option.summary && option.summary.length > 0 ? /* @__PURE__ */ jsx21("span", { className: "flex min-w-0 shrink-0 items-baseline gap-1.5 overflow-hidden text-[var(--agent-gui-text-tertiary)]", children: option.summary.map((summary) => /* @__PURE__ */ jsx21(
17701
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate leading-[1.15]", children: option.label }),
17702
+ option.summary && option.summary.length > 0 ? /* @__PURE__ */ jsx22("span", { className: "flex min-w-0 shrink-0 items-baseline gap-1.5 overflow-hidden text-[var(--agent-gui-text-tertiary)]", children: option.summary.map((summary) => /* @__PURE__ */ jsx22(
17535
17703
  "span",
17536
17704
  {
17537
17705
  className: "max-w-[64px] truncate leading-[1.15]",
@@ -17548,8 +17716,8 @@ function ComposerMenuOptionItems({
17548
17716
  ),
17549
17717
  children: [
17550
17718
  /* @__PURE__ */ jsxs11("span", { className: "flex min-w-0 items-center gap-1.5", children: [
17551
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 truncate leading-[1.15]", children: option.label }),
17552
- showTooltipDescription && option.description ? /* @__PURE__ */ jsx21(
17719
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 truncate leading-[1.15]", children: option.label }),
17720
+ showTooltipDescription && option.description ? /* @__PURE__ */ jsx22(
17553
17721
  ComposerOptionInfoTooltip,
17554
17722
  {
17555
17723
  description: option.description,
@@ -17557,11 +17725,11 @@ function ComposerMenuOptionItems({
17557
17725
  }
17558
17726
  ) : null
17559
17727
  ] }),
17560
- showInlineDescription && option.description ? /* @__PURE__ */ jsx21("span", { className: "whitespace-normal text-[11px] leading-[1.2] text-[var(--text-tertiary)]", children: option.description }) : null
17728
+ showInlineDescription && option.description ? /* @__PURE__ */ jsx22("span", { className: "whitespace-normal text-[11px] leading-[1.2] text-[var(--text-tertiary)]", children: option.description }) : null
17561
17729
  ]
17562
17730
  }
17563
17731
  ),
17564
- /* @__PURE__ */ jsx21(
17732
+ /* @__PURE__ */ jsx22(
17565
17733
  CheckIcon,
17566
17734
  {
17567
17735
  "aria-hidden": true,
@@ -17575,7 +17743,7 @@ function ComposerMenuOptionItems({
17575
17743
  },
17576
17744
  option.value
17577
17745
  );
17578
- return showModelTooltip ? /* @__PURE__ */ jsx21(
17746
+ return showModelTooltip ? /* @__PURE__ */ jsx22(
17579
17747
  ComposerModelOptionTooltip,
17580
17748
  {
17581
17749
  option,
@@ -17595,7 +17763,7 @@ function ComposerModelOptionTooltip({
17595
17763
  return children;
17596
17764
  }
17597
17765
  return /* @__PURE__ */ jsxs11(Tooltip2, { children: [
17598
- /* @__PURE__ */ jsx21(TooltipTrigger2, { asChild: true, children: cloneElement(children, {
17766
+ /* @__PURE__ */ jsx22(TooltipTrigger2, { asChild: true, children: cloneElement(children, {
17599
17767
  "data-agent-model-option-tooltip-trigger": "true"
17600
17768
  }) }),
17601
17769
  /* @__PURE__ */ jsxs11(
@@ -17607,10 +17775,10 @@ function ComposerModelOptionTooltip({
17607
17775
  className: "flex w-[320px] max-w-[calc(100vw-32px)] flex-col items-start gap-0 whitespace-normal rounded-lg border border-[var(--line-2)] bg-[var(--background-fronted)] px-4 py-3 text-[13px] leading-[1.3] text-[var(--text-primary)] shadow-lg",
17608
17776
  "data-agent-model-option-tooltip": "true",
17609
17777
  children: [
17610
- /* @__PURE__ */ jsx21("span", { className: "block text-[15px] font-semibold leading-[1.2]", children: option.tooltip.title }),
17611
- option.tooltip.description ? /* @__PURE__ */ jsx21("span", { className: "mt-1.5 block text-[13px] leading-[1.35]", children: option.tooltip.description }) : null,
17612
- option.tooltip.contextWindow ? /* @__PURE__ */ jsx21("span", { className: "mt-4 block", children: option.tooltip.contextWindow }) : null,
17613
- option.tooltip.version ? /* @__PURE__ */ jsx21("span", { className: "mt-4 block italic", children: option.tooltip.version }) : null
17778
+ /* @__PURE__ */ jsx22("span", { className: "block text-[15px] font-semibold leading-[1.2]", children: option.tooltip.title }),
17779
+ option.tooltip.description ? /* @__PURE__ */ jsx22("span", { className: "mt-1.5 block text-[13px] leading-[1.35]", children: option.tooltip.description }) : null,
17780
+ option.tooltip.contextWindow ? /* @__PURE__ */ jsx22("span", { className: "mt-4 block", children: option.tooltip.contextWindow }) : null,
17781
+ option.tooltip.version ? /* @__PURE__ */ jsx22("span", { className: "mt-4 block italic", children: option.tooltip.version }) : null
17614
17782
  ]
17615
17783
  }
17616
17784
  )
@@ -17829,7 +17997,7 @@ function fileToBase64(file) {
17829
17997
  }
17830
17998
 
17831
17999
  // agent-gui/agentGuiNode/agentRichText/AgentRichTextEditor.tsx
17832
- import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
18000
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
17833
18001
  function buildWorkspaceFileMentionDropContent(entries) {
17834
18002
  return entries.flatMap((entry) => [
17835
18003
  {
@@ -18528,7 +18696,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
18528
18696
  lastEmittedPromptRef.current = value;
18529
18697
  }, [availableCapabilities, availableSkills, editor, value]);
18530
18698
  return /* @__PURE__ */ jsxs12("div", { className: "relative min-w-0", onKeyDownCapture: handleKeyDownCapture, children: [
18531
- editor ? /* @__PURE__ */ jsx22(EditorContent, { editor }) : /* @__PURE__ */ jsx22(
18699
+ editor ? /* @__PURE__ */ jsx23(EditorContent, { editor }) : /* @__PURE__ */ jsx23(
18532
18700
  "div",
18533
18701
  {
18534
18702
  role: "textbox",
@@ -18556,7 +18724,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
18556
18724
  onContextMenu: (event) => event.preventDefault(),
18557
18725
  onPointerDown: (event) => event.stopPropagation(),
18558
18726
  children: [
18559
- /* @__PURE__ */ jsx22(
18727
+ /* @__PURE__ */ jsx23(
18560
18728
  AgentRichTextContextMenuButton,
18561
18729
  {
18562
18730
  disabled: !contextMenu.canEdit || !contextMenu.hasSelection,
@@ -18564,7 +18732,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
18564
18732
  onSelect: cutSelection
18565
18733
  }
18566
18734
  ),
18567
- /* @__PURE__ */ jsx22(
18735
+ /* @__PURE__ */ jsx23(
18568
18736
  AgentRichTextContextMenuButton,
18569
18737
  {
18570
18738
  disabled: !contextMenu.hasSelection,
@@ -18572,7 +18740,7 @@ var AgentRichTextEditor = forwardRef3(function AgentRichTextEditor2({
18572
18740
  onSelect: copySelection
18573
18741
  }
18574
18742
  ),
18575
- /* @__PURE__ */ jsx22(
18743
+ /* @__PURE__ */ jsx23(
18576
18744
  AgentRichTextContextMenuButton,
18577
18745
  {
18578
18746
  disabled: !contextMenu.canEdit,
@@ -18602,7 +18770,7 @@ function AgentRichTextContextMenuButton({
18602
18770
  selectionStartedRef.current = false;
18603
18771
  });
18604
18772
  }, [disabled, onSelect]);
18605
- return /* @__PURE__ */ jsx22(
18773
+ return /* @__PURE__ */ jsx23(
18606
18774
  "button",
18607
18775
  {
18608
18776
  role: "menuitem",
@@ -18627,7 +18795,7 @@ function AgentRichTextContextMenuButton({
18627
18795
 
18628
18796
  // agent-gui/agentGuiNode/AgentSlashStatusPanel.tsx
18629
18797
  import { Fragment as Fragment5 } from "react";
18630
- import { Fragment as Fragment6, jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
18798
+ import { Fragment as Fragment6, jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
18631
18799
  function formatSlashStatusTokenCount(value) {
18632
18800
  if (typeof value !== "number" || !Number.isFinite(value)) {
18633
18801
  return "";
@@ -18669,8 +18837,8 @@ function AgentSlashStatusPanel({
18669
18837
  role: "status",
18670
18838
  children: [
18671
18839
  /* @__PURE__ */ jsxs13("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
18672
- /* @__PURE__ */ jsx23("h3", { className: "truncate text-[11px] font-semibold leading-4", children: labels.slashStatusTitle }),
18673
- /* @__PURE__ */ jsx23(
18840
+ /* @__PURE__ */ jsx24("h3", { className: "truncate text-[11px] font-semibold leading-4", children: labels.slashStatusTitle }),
18841
+ /* @__PURE__ */ jsx24(
18674
18842
  "button",
18675
18843
  {
18676
18844
  className: "nodrag shrink-0 rounded-[5px] px-1.5 py-0.5 text-[11px] leading-4 text-muted-foreground transition-colors hover:bg-background-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [-webkit-app-region:no-drag]",
@@ -18686,32 +18854,32 @@ function AgentSlashStatusPanel({
18686
18854
  labels.slashStatusSession,
18687
18855
  ":"
18688
18856
  ] }),
18689
- /* @__PURE__ */ jsx23("dd", { className: "min-w-0 truncate", children: agentSessionId }),
18857
+ /* @__PURE__ */ jsx24("dd", { className: "min-w-0 truncate", children: agentSessionId }),
18690
18858
  baseUrl ? /* @__PURE__ */ jsxs13(Fragment6, { children: [
18691
18859
  /* @__PURE__ */ jsxs13("dt", { className: "text-muted-foreground", children: [
18692
18860
  labels.slashStatusBaseUrl,
18693
18861
  ":"
18694
18862
  ] }),
18695
- /* @__PURE__ */ jsx23("dd", { className: "min-w-0 truncate", children: baseUrl })
18863
+ /* @__PURE__ */ jsx24("dd", { className: "min-w-0 truncate", children: baseUrl })
18696
18864
  ] }) : null,
18697
18865
  /* @__PURE__ */ jsxs13("dt", { className: "text-muted-foreground", children: [
18698
18866
  labels.slashStatusContext,
18699
18867
  ":"
18700
18868
  ] }),
18701
- /* @__PURE__ */ jsx23("dd", { className: "min-w-0", children: slashStatusContextText(status, labels) })
18869
+ /* @__PURE__ */ jsx24("dd", { className: "min-w-0", children: slashStatusContextText(status, labels) })
18702
18870
  ] }) : null,
18703
18871
  limits.map((limit) => /* @__PURE__ */ jsxs13(Fragment5, { children: [
18704
18872
  /* @__PURE__ */ jsxs13("dt", { className: "text-muted-foreground", children: [
18705
18873
  limit.label,
18706
18874
  ":"
18707
18875
  ] }),
18708
- /* @__PURE__ */ jsx23("dd", { className: "min-w-0", children: /* @__PURE__ */ jsxs13("span", { className: "agent-gui-node__slash-status-limit", children: [
18709
- typeof limit.percentRemaining === "number" && Number.isFinite(limit.percentRemaining) ? /* @__PURE__ */ jsx23(
18876
+ /* @__PURE__ */ jsx24("dd", { className: "min-w-0", children: /* @__PURE__ */ jsxs13("span", { className: "agent-gui-node__slash-status-limit", children: [
18877
+ typeof limit.percentRemaining === "number" && Number.isFinite(limit.percentRemaining) ? /* @__PURE__ */ jsx24(
18710
18878
  "span",
18711
18879
  {
18712
18880
  "aria-hidden": "true",
18713
18881
  className: "agent-gui-node__slash-status-limit-meter",
18714
- children: /* @__PURE__ */ jsx23(
18882
+ children: /* @__PURE__ */ jsx24(
18715
18883
  "span",
18716
18884
  {
18717
18885
  className: "agent-gui-node__slash-status-limit-meter-fill",
@@ -18741,7 +18909,7 @@ function AgentSlashStatusPanel({
18741
18909
  labels.slashStatusLimits,
18742
18910
  ":"
18743
18911
  ] }),
18744
- /* @__PURE__ */ jsx23("dd", { className: "min-w-0 text-muted-foreground", children: labels.slashStatusLimitsUnavailable })
18912
+ /* @__PURE__ */ jsx24("dd", { className: "min-w-0 text-muted-foreground", children: labels.slashStatusLimitsUnavailable })
18745
18913
  ] }) : null
18746
18914
  ] })
18747
18915
  ]
@@ -18845,7 +19013,7 @@ var AgentReviewBranchController = class {
18845
19013
  };
18846
19014
 
18847
19015
  // agent-gui/agentGuiNode/AgentReviewPickerPanel.tsx
18848
- import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
19016
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
18849
19017
  var reviewMenuStyles = {
18850
19018
  panel: "agent-gui-node__slash-status-panel nodrag flex max-h-[280px] flex-col gap-1 overflow-hidden [-webkit-app-region:no-drag]",
18851
19019
  search: "nodrag h-8 w-full shrink-0 rounded-[6px] border-0 bg-transparent px-2.5 text-[11px] leading-4 text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] focus-visible:outline-none [-webkit-app-region:no-drag]",
@@ -19049,7 +19217,7 @@ function AgentReviewPickerPanel({
19049
19217
  role: "dialog",
19050
19218
  "aria-label": labels.title,
19051
19219
  children: [
19052
- /* @__PURE__ */ jsx24(
19220
+ /* @__PURE__ */ jsx25(
19053
19221
  "input",
19054
19222
  {
19055
19223
  ref: searchInputRef,
@@ -19065,15 +19233,15 @@ function AgentReviewPickerPanel({
19065
19233
  onKeyDown: handleKeyDown
19066
19234
  }
19067
19235
  ),
19068
- /* @__PURE__ */ jsx24(
19236
+ /* @__PURE__ */ jsx25(
19069
19237
  "div",
19070
19238
  {
19071
19239
  className: reviewMenuStyles.list,
19072
19240
  role: "listbox",
19073
19241
  "aria-label": labels.title,
19074
- children: entries.length === 0 ? /* @__PURE__ */ jsx24("div", { className: reviewMenuStyles.message, children: emptyMessage }) : entries.map((entry, index) => {
19242
+ children: entries.length === 0 ? /* @__PURE__ */ jsx25("div", { className: reviewMenuStyles.message, children: emptyMessage }) : entries.map((entry, index) => {
19075
19243
  const isHighlighted = index === safeHighlightedIndex;
19076
- return /* @__PURE__ */ jsx24(
19244
+ return /* @__PURE__ */ jsx25(
19077
19245
  "button",
19078
19246
  {
19079
19247
  ref: isHighlighted ? highlightedOptionRef : null,
@@ -19094,8 +19262,8 @@ function AgentReviewPickerPanel({
19094
19262
  }
19095
19263
  },
19096
19264
  children: /* @__PURE__ */ jsxs14("span", { className: reviewMenuStyles.copy, children: [
19097
- /* @__PURE__ */ jsx24("span", { className: reviewMenuStyles.name, children: entry.label }),
19098
- entry.description ? /* @__PURE__ */ jsx24("span", { className: reviewMenuStyles.description, children: entry.description }) : null
19265
+ /* @__PURE__ */ jsx25("span", { className: reviewMenuStyles.name, children: entry.label }),
19266
+ entry.description ? /* @__PURE__ */ jsx25("span", { className: reviewMenuStyles.description, children: entry.description }) : null
19099
19267
  ] })
19100
19268
  },
19101
19269
  entry.key
@@ -19119,7 +19287,7 @@ import {
19119
19287
  useState as useState10
19120
19288
  } from "react";
19121
19289
  import { createPortal as createPortal2 } from "react-dom";
19122
- import { jsx as jsx25 } from "react/jsx-runtime";
19290
+ import { jsx as jsx26 } from "react/jsx-runtime";
19123
19291
  var COMPOSER_MENU_GAP_PX = 8;
19124
19292
  var COMPOSER_MENU_VIEWPORT_PADDING_PX = 8;
19125
19293
  var COMPOSER_MENU_MIN_HEIGHT_PX = 280;
@@ -19337,7 +19505,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
19337
19505
  }
19338
19506
  const portalTarget = frame?.portalTarget ?? (anchorRef.current ? resolveComposerMenuPortalTarget(anchorRef.current) : document.body);
19339
19507
  return createPortal2(
19340
- /* @__PURE__ */ jsx25(
19508
+ /* @__PURE__ */ jsx26(
19341
19509
  "div",
19342
19510
  {
19343
19511
  "data-testid": testId,
@@ -19348,7 +19516,7 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
19348
19516
  className
19349
19517
  ),
19350
19518
  style,
19351
- children: contentClassName ? /* @__PURE__ */ jsx25("div", { className: contentClassName, children }) : children
19519
+ children: contentClassName ? /* @__PURE__ */ jsx26("div", { className: contentClassName, children }) : children
19352
19520
  }
19353
19521
  ),
19354
19522
  portalTarget
@@ -19356,11 +19524,12 @@ var ComposerFloatingMenuSurface = forwardRef4(function ComposerFloatingMenuSurfa
19356
19524
  });
19357
19525
 
19358
19526
  // agent-gui/agentGuiNode/AgentComposer.tsx
19359
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
19527
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
19360
19528
  var USAGE_POPOVER_HOVER_DELAY_MS = 120;
19361
19529
  var DOCK_COMPOSER_INPUT_MIN_HEIGHT = 56;
19362
19530
  var DOCK_COMPOSER_INPUT_MAX_HEIGHT = 120;
19363
19531
  var DOCK_COMPOSER_INPUT_BORDER_HEIGHT = 2;
19532
+ var DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT = 24;
19364
19533
  var DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT = 26;
19365
19534
  function agentUsageChipLevel(percentUsed) {
19366
19535
  if (percentUsed >= USAGE_CRITICAL_PERCENT) {
@@ -19454,7 +19623,7 @@ function AgentUsageChip({
19454
19623
  },
19455
19624
  [clearUsagePopoverCloseTimer, clearUsagePopoverHoverTimer]
19456
19625
  );
19457
- const trigger = /* @__PURE__ */ jsx26(
19626
+ const trigger = /* @__PURE__ */ jsx27(
19458
19627
  "button",
19459
19628
  {
19460
19629
  type: "button",
@@ -19478,7 +19647,7 @@ function AgentUsageChip({
19478
19647
  style: {
19479
19648
  background: `conic-gradient(${ringColor} ${clampedPercent}%, color-mix(in srgb, ${ringColor} 16%, transparent) 0)`
19480
19649
  },
19481
- children: /* @__PURE__ */ jsx26(
19650
+ children: /* @__PURE__ */ jsx27(
19482
19651
  "span",
19483
19652
  {
19484
19653
  "aria-hidden": "true",
@@ -19496,8 +19665,8 @@ function AgentUsageChip({
19496
19665
  open: usagePopoverOpen,
19497
19666
  onOpenChange: handleUsagePopoverOpenChange,
19498
19667
  children: [
19499
- /* @__PURE__ */ jsx26(PopoverTrigger, { asChild: true, children: trigger }),
19500
- usagePopoverOpen ? /* @__PURE__ */ jsx26(
19668
+ /* @__PURE__ */ jsx27(PopoverTrigger, { asChild: true, children: trigger }),
19669
+ usagePopoverOpen ? /* @__PURE__ */ jsx27(
19501
19670
  PopoverContent,
19502
19671
  {
19503
19672
  side: "bottom",
@@ -19508,8 +19677,8 @@ function AgentUsageChip({
19508
19677
  onPointerEnter: openUsagePopover,
19509
19678
  onPointerLeave: scheduleUsagePopoverClose,
19510
19679
  children: /* @__PURE__ */ jsxs15("div", { className: "flex min-w-0 flex-col gap-3", children: [
19511
- /* @__PURE__ */ jsx26("span", { className: "text-[13px] font-semibold leading-4", children: labels.usagePopoverTitle }),
19512
- showTokens ? /* @__PURE__ */ jsx26(
19680
+ /* @__PURE__ */ jsx27("span", { className: "text-[13px] font-semibold leading-4", children: labels.usagePopoverTitle }),
19681
+ showTokens ? /* @__PURE__ */ jsx27(
19513
19682
  AgentUsageMeter,
19514
19683
  {
19515
19684
  label: labels.usageContextWindowLabel,
@@ -19519,7 +19688,7 @@ function AgentUsageChip({
19519
19688
  testId: "agent-gui-usage-context-meter"
19520
19689
  }
19521
19690
  ) : null,
19522
- compactSupported && onCompact ? /* @__PURE__ */ jsx26(
19691
+ compactSupported && onCompact ? /* @__PURE__ */ jsx27(
19523
19692
  "button",
19524
19693
  {
19525
19694
  type: "button",
@@ -19559,6 +19728,7 @@ var EMPTY_CONTEXT_MENTION_PROVIDERS = [];
19559
19728
  var EMPTY_PROMPT_TIPS = [];
19560
19729
  var EMPTY_PROVIDER_SKILLS = [];
19561
19730
  var EMPTY_WORKSPACE_APP_ICONS2 = [];
19731
+ var GOAL_MODE_SLASH_COMMAND = "/goal";
19562
19732
  var PROMPT_TIP_CYCLE_STEP_MS = 5200;
19563
19733
  var MENTION_PALETTE_DISMISS_INTERACTION_SELECTOR = [
19564
19734
  "[data-node-drag-handle]",
@@ -19624,6 +19794,7 @@ function AgentComposer({
19624
19794
  isInterrupting,
19625
19795
  isSendingTurn,
19626
19796
  isSubmittingPrompt,
19797
+ uiLanguage = "en",
19627
19798
  isActive = true,
19628
19799
  previewMode = false,
19629
19800
  promptImagesSupported = true,
@@ -19653,6 +19824,8 @@ function AgentComposer({
19653
19824
  }) {
19654
19825
  "use memo";
19655
19826
  const draftPrompt = draftContent.prompt;
19827
+ const goalDraftObjective = goalDraftObjectiveFromPrompt(draftPrompt);
19828
+ const isGoalModeActive = goalDraftObjective !== null;
19656
19829
  const draftImages = draftContent.images;
19657
19830
  const draftFiles = draftContent.files ?? [];
19658
19831
  const agentActivityRuntime = useOptionalAgentActivityRuntime();
@@ -19665,7 +19838,9 @@ function AgentComposer({
19665
19838
  shouldResetMentionHighlightToFilter,
19666
19839
  setShouldResetMentionHighlightToFilter
19667
19840
  ] = useState11(false);
19668
- const [paletteDraftPrompt, setPaletteDraftPrompt] = useState11(draftPrompt);
19841
+ const [paletteDraftPrompt, setPaletteDraftPrompt] = useState11(
19842
+ goalDraftObjective ?? draftPrompt
19843
+ );
19669
19844
  const [fileMentionSuggestion, setFileMentionSuggestion] = useState11(null);
19670
19845
  const [isSelectedProjectMissing, setIsSelectedProjectMissing] = useState11(false);
19671
19846
  const [isSlashStatusPanelOpen, setIsSlashStatusPanelOpen] = useState11(false);
@@ -19710,7 +19885,7 @@ function AgentComposer({
19710
19885
  const [dockComposerTextHeight, setDockComposerTextHeight] = useState11(
19711
19886
  DOCK_COMPOSER_INPUT_MIN_HEIGHT
19712
19887
  );
19713
- const slashQuery = getPromptStartSlashCommandQuery(paletteDraftPrompt);
19888
+ const slashQuery = isGoalModeActive ? null : getPromptStartSlashCommandQuery(paletteDraftPrompt);
19714
19889
  const promptBeforeSelection = editorHandleRef.current?.getPromptTextBeforeSelection() ?? "";
19715
19890
  const skillQueryDraft = promptBeforeSelection || paletteDraftPrompt;
19716
19891
  const skillQueryMatch = getAgentComposerTriggerQueryMatch(skillQueryDraft);
@@ -19792,11 +19967,16 @@ function AgentComposer({
19792
19967
  };
19793
19968
  return [capabilityEntry];
19794
19969
  }
19970
+ const commandDescription = slashCommandDescriptionForDisplay(
19971
+ command,
19972
+ labels
19973
+ );
19795
19974
  const commandEntry = {
19796
19975
  type: "command",
19797
19976
  key: `command:${command.name}`,
19798
19977
  label: labelForSlashCommand(command),
19799
- ...command.description ? { description: command.description } : {},
19978
+ ...slashCommandLabelForDisplay(command, labels, uiLanguage),
19979
+ ...commandDescription ? { description: commandDescription } : {},
19800
19980
  command
19801
19981
  };
19802
19982
  return [commandEntry];
@@ -19832,6 +20012,25 @@ function AgentComposer({
19832
20012
  labels.computerUseCapabilitySetupRequiredDescription,
19833
20013
  labels.computerUseCapabilityLabel,
19834
20014
  labels.computerUseCapabilitySettingsLabel,
20015
+ labels.slashCommandCompactLabel,
20016
+ labels.slashCommandContextLabel,
20017
+ labels.slashCommandFastLabel,
20018
+ labels.slashCommandGoalLabel,
20019
+ labels.slashCommandInitLabel,
20020
+ labels.slashCommandPlanLabel,
20021
+ labels.slashCommandReviewLabel,
20022
+ labels.slashCommandStatusLabel,
20023
+ labels.slashCommandUsageLabel,
20024
+ labels.slashCommandCompactDescription,
20025
+ labels.slashCommandContextDescription,
20026
+ labels.slashCommandFastDescription,
20027
+ labels.slashCommandGoalDescription,
20028
+ labels.slashCommandInitDescription,
20029
+ labels.slashCommandPlanDescription,
20030
+ labels.slashCommandReviewDescription,
20031
+ labels.slashCommandStatusDescription,
20032
+ labels.slashCommandUsageDescription,
20033
+ uiLanguage,
19835
20034
  skillQueryMatch?.prefix
19836
20035
  ]);
19837
20036
  const showFileMentionPalette = !disabled && isPaletteOpen && fileMentionSuggestion !== null;
@@ -19894,7 +20093,7 @@ function AgentComposer({
19894
20093
  useEffect11(() => {
19895
20094
  const isExternalDraftReplacement = draftPromptRef.current !== draftPrompt;
19896
20095
  draftPromptRef.current = draftPrompt;
19897
- setPaletteDraftPrompt(draftPrompt);
20096
+ setPaletteDraftPrompt(goalDraftObjective ?? draftPrompt);
19898
20097
  if (isExternalDraftReplacement && draftPrompt) {
19899
20098
  window.requestAnimationFrame(() => {
19900
20099
  window.requestAnimationFrame(() => {
@@ -19902,7 +20101,7 @@ function AgentComposer({
19902
20101
  });
19903
20102
  });
19904
20103
  }
19905
- }, [draftPrompt]);
20104
+ }, [draftPrompt, goalDraftObjective]);
19906
20105
  useEffect11(() => {
19907
20106
  draftImagesRef.current = draftImages;
19908
20107
  }, [draftImages]);
@@ -19926,6 +20125,7 @@ function AgentComposer({
19926
20125
  setIsSlashStatusPanelOpen(false);
19927
20126
  }, []);
19928
20127
  const settingsControlsDisabled = isSendingTurn || isSubmittingPrompt || showStopButton;
20128
+ const composerControlsHardDisabled = isSelectedProjectMissing || isSubmittingPrompt || disabled && !isSendingTurn && !showStopButton;
19929
20129
  const closeReviewPicker = useCallback10(() => {
19930
20130
  setIsReviewPickerOpen(false);
19931
20131
  }, []);
@@ -19980,6 +20180,18 @@ function AgentComposer({
19980
20180
  setIsReviewPickerOpen(true);
19981
20181
  return;
19982
20182
  }
20183
+ if (effect.kind === "activateGoalMode") {
20184
+ draftPromptRef.current = GOAL_MODE_SLASH_COMMAND;
20185
+ setPaletteDraftPrompt("");
20186
+ setIsSlashStatusPanelOpen(false);
20187
+ setIsReviewPickerOpen(false);
20188
+ setIsPaletteOpen(false);
20189
+ onDraftContentChange({
20190
+ ...draftContent,
20191
+ prompt: GOAL_MODE_SLASH_COMMAND
20192
+ });
20193
+ return;
20194
+ }
19983
20195
  if (effect.kind === "togglePlanMode") {
19984
20196
  clearSlashCommandDraft();
19985
20197
  onSettingsChange({
@@ -20326,6 +20538,12 @@ function AgentComposer({
20326
20538
  },
20327
20539
  [createFileMentionPaletteAdapter]
20328
20540
  );
20541
+ const navigateIntoFileMentionItem = useCallback10(
20542
+ (item) => {
20543
+ mentionControllerRef.current?.selectAgentGeneratedMentionItem(item);
20544
+ },
20545
+ []
20546
+ );
20329
20547
  const handleFileMentionKeyDown = useCallback10(
20330
20548
  (event) => {
20331
20549
  if (!showFileMentionPalette) {
@@ -20475,12 +20693,43 @@ function AgentComposer({
20475
20693
  }, [closeOpenPalette, showFileMentionPalette]);
20476
20694
  const handleDraftChange = useStableEventCallback(
20477
20695
  (nextDraft) => {
20696
+ if (isGoalModeActive) {
20697
+ const nextGoalPrompt = buildGoalModePrompt(nextDraft);
20698
+ draftPromptRef.current = nextGoalPrompt;
20699
+ setPaletteDraftPrompt(nextDraft);
20700
+ setIsPaletteOpen(true);
20701
+ onDraftContentChange({ ...draftContent, prompt: nextGoalPrompt });
20702
+ return;
20703
+ }
20704
+ const nextGoalObjective = goalDraftObjectiveFromPrompt(nextDraft);
20705
+ if (nextGoalObjective !== null) {
20706
+ const nextGoalPrompt = buildGoalModePrompt(nextGoalObjective);
20707
+ draftPromptRef.current = nextGoalPrompt;
20708
+ setPaletteDraftPrompt(nextGoalObjective);
20709
+ setIsPaletteOpen(true);
20710
+ onDraftContentChange({ ...draftContent, prompt: nextGoalPrompt });
20711
+ return;
20712
+ }
20478
20713
  draftPromptRef.current = nextDraft;
20479
20714
  setPaletteDraftPrompt(nextDraft);
20480
20715
  setIsPaletteOpen(true);
20481
20716
  onDraftContentChange({ ...draftContent, prompt: nextDraft });
20482
20717
  }
20483
20718
  );
20719
+ const clearGoalModeBadge = useCallback10(() => {
20720
+ if (!isGoalModeActive) {
20721
+ return;
20722
+ }
20723
+ const nextPrompt = goalDraftObjective ?? "";
20724
+ draftPromptRef.current = nextPrompt;
20725
+ setPaletteDraftPrompt(nextPrompt);
20726
+ onDraftContentChange({ ...draftContent, prompt: nextPrompt });
20727
+ }, [
20728
+ draftContent,
20729
+ goalDraftObjective,
20730
+ isGoalModeActive,
20731
+ onDraftContentChange
20732
+ ]);
20484
20733
  const addDraftImages = useCallback10(
20485
20734
  (images) => {
20486
20735
  if (images.length === 0) {
@@ -20942,7 +21191,8 @@ function AgentComposer({
20942
21191
  editor.scrollHeight + DOCK_COMPOSER_INPUT_TEXT_CHROME_HEIGHT
20943
21192
  )
20944
21193
  );
20945
- const maxHeight = DOCK_COMPOSER_INPUT_MAX_HEIGHT + Math.max(0, attachmentHeight);
21194
+ const attachmentChromeHeight = attachmentHeight > 0 ? DOCK_COMPOSER_INPUT_PADDING_BLOCK_HEIGHT : 0;
21195
+ const maxHeight = DOCK_COMPOSER_INPUT_MAX_HEIGHT + Math.max(0, attachmentHeight) + attachmentChromeHeight;
20946
21196
  const previousHeight = inputArea.style.height;
20947
21197
  const previousInputHeight = inputArea.style.getPropertyValue(
20948
21198
  "--agent-gui-composer-input-height"
@@ -20996,7 +21246,7 @@ function AgentComposer({
20996
21246
  }
20997
21247
  const measuredHeight = Math.max(
20998
21248
  contentHeight + DOCK_COMPOSER_INPUT_BORDER_HEIGHT,
20999
- attachmentHeight + textHeight
21249
+ attachmentHeight + textHeight + attachmentChromeHeight
21000
21250
  );
21001
21251
  const nextHeight = Math.min(
21002
21252
  maxHeight,
@@ -21098,7 +21348,7 @@ function AgentComposer({
21098
21348
  title: isInterrupting ? labels.stopping : labels.stop,
21099
21349
  onClick: onInterruptCurrentTurn,
21100
21350
  children: [
21101
- /* @__PURE__ */ jsx26(
21351
+ /* @__PURE__ */ jsx27(
21102
21352
  Spinner,
21103
21353
  {
21104
21354
  className: "size-7 text-[var(--text-primary)]",
@@ -21108,7 +21358,7 @@ function AgentComposer({
21108
21358
  testId: "agent-gui-composer-stop-spinner"
21109
21359
  }
21110
21360
  ),
21111
- /* @__PURE__ */ jsx26(
21361
+ /* @__PURE__ */ jsx27(
21112
21362
  "span",
21113
21363
  {
21114
21364
  "aria-hidden": "true",
@@ -21118,7 +21368,7 @@ function AgentComposer({
21118
21368
  )
21119
21369
  ]
21120
21370
  }
21121
- ) : /* @__PURE__ */ jsx26(
21371
+ ) : /* @__PURE__ */ jsx27(
21122
21372
  "button",
21123
21373
  {
21124
21374
  type: "submit",
@@ -21128,7 +21378,7 @@ function AgentComposer({
21128
21378
  "aria-label": labels.send,
21129
21379
  title: labels.send,
21130
21380
  "aria-busy": sendButtonBusy,
21131
- children: sendButtonBusy ? /* @__PURE__ */ jsx26(
21381
+ children: sendButtonBusy ? /* @__PURE__ */ jsx27(
21132
21382
  Spinner,
21133
21383
  {
21134
21384
  className: "text-[var(--text-primary)]",
@@ -21137,10 +21387,10 @@ function AgentComposer({
21137
21387
  trackColor: "var(--transparency-hover)",
21138
21388
  testId: "agent-gui-composer-send-spinner"
21139
21389
  }
21140
- ) : /* @__PURE__ */ jsx26(SendFilledIcon, {})
21390
+ ) : /* @__PURE__ */ jsx27(SendFilledIcon, {})
21141
21391
  }
21142
21392
  );
21143
- const promptTipNode = activePromptTip ? /* @__PURE__ */ jsx26(
21393
+ const promptTipNode = activePromptTip ? /* @__PURE__ */ jsx27(
21144
21394
  "span",
21145
21395
  {
21146
21396
  ref: promptTipRef,
@@ -21148,14 +21398,14 @@ function AgentComposer({
21148
21398
  "data-rotating": promptTips.length > 1 ? "true" : void 0,
21149
21399
  "data-testid": "agent-gui-prompt-tip",
21150
21400
  style: promptTipStyle,
21151
- children: /* @__PURE__ */ jsx26("span", { className: AgentGUINode_styles_default.composerPromptTipTrack, children: rotatingPromptTips.map((tip, index) => /* @__PURE__ */ jsxs15(
21401
+ children: /* @__PURE__ */ jsx27("span", { className: AgentGUINode_styles_default.composerPromptTipTrack, children: rotatingPromptTips.map((tip, index) => /* @__PURE__ */ jsxs15(
21152
21402
  "span",
21153
21403
  {
21154
21404
  className: AgentGUINode_styles_default.composerPromptTipItem,
21155
21405
  "aria-hidden": index >= promptTips.length ? true : void 0,
21156
21406
  children: [
21157
- /* @__PURE__ */ jsx26("span", { className: AgentGUINode_styles_default.composerPromptTipPrefix, children: labels.promptTipsPrefix }),
21158
- /* @__PURE__ */ jsx26("span", { className: AgentGUINode_styles_default.composerPromptTipLabel, children: tip.label }),
21407
+ /* @__PURE__ */ jsx27("span", { className: AgentGUINode_styles_default.composerPromptTipPrefix, children: labels.promptTipsPrefix }),
21408
+ /* @__PURE__ */ jsx27("span", { className: AgentGUINode_styles_default.composerPromptTipLabel, children: tip.label }),
21159
21409
  /* @__PURE__ */ jsxs15("span", { className: AgentGUINode_styles_default.composerPromptTipText, children: [
21160
21410
  " \xB7 ",
21161
21411
  tip.prompt
@@ -21175,12 +21425,12 @@ function AgentComposer({
21175
21425
  "data-layout": layoutMode,
21176
21426
  onSubmit: submit,
21177
21427
  children: [
21178
- visibleActivePrompt ? /* @__PURE__ */ jsx26(
21428
+ visibleActivePrompt ? /* @__PURE__ */ jsx27(
21179
21429
  "div",
21180
21430
  {
21181
21431
  className: AgentGUINode_styles_default.composerFloatingPrompt,
21182
21432
  "data-testid": "agent-gui-composer-floating-prompt",
21183
- children: /* @__PURE__ */ jsx26(
21433
+ children: /* @__PURE__ */ jsx27(
21184
21434
  AgentInteractivePromptSurface,
21185
21435
  {
21186
21436
  prompt: visibleActivePrompt,
@@ -21212,7 +21462,7 @@ function AgentComposer({
21212
21462
  )
21213
21463
  }
21214
21464
  ) : null,
21215
- queuedPrompts.length > 0 ? /* @__PURE__ */ jsx26(
21465
+ queuedPrompts.length > 0 ? /* @__PURE__ */ jsx27(
21216
21466
  "div",
21217
21467
  {
21218
21468
  className: cn(
@@ -21220,7 +21470,7 @@ function AgentComposer({
21220
21470
  AgentGUINode_styles_default.composerQueuedPromptFloating
21221
21471
  ),
21222
21472
  "data-testid": "agent-gui-composer-queued-prompts",
21223
- children: /* @__PURE__ */ jsx26(
21473
+ children: /* @__PURE__ */ jsx27(
21224
21474
  AgentQueuedPromptPanel,
21225
21475
  {
21226
21476
  queuedPrompts,
@@ -21241,7 +21491,7 @@ function AgentComposer({
21241
21491
  )
21242
21492
  }
21243
21493
  ) : null,
21244
- showProjectMissingProbe ? /* @__PURE__ */ jsx26(
21494
+ showProjectMissingProbe ? /* @__PURE__ */ jsx27(
21245
21495
  AgentProjectMissingStatusProbe,
21246
21496
  {
21247
21497
  composerSettings,
@@ -21257,7 +21507,7 @@ function AgentComposer({
21257
21507
  ),
21258
21508
  "data-edge-glow": showEdgeGlow ? "true" : void 0,
21259
21509
  children: [
21260
- isSelectedProjectMissing ? /* @__PURE__ */ jsx26(
21510
+ isSelectedProjectMissing ? /* @__PURE__ */ jsx27(
21261
21511
  AgentChromeNotice,
21262
21512
  {
21263
21513
  tone: "danger",
@@ -21286,7 +21536,7 @@ function AgentComposer({
21286
21536
  onOpenChange: setIsPaletteOpen,
21287
21537
  modal: false,
21288
21538
  children: [
21289
- /* @__PURE__ */ jsx26(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsxs15(
21539
+ /* @__PURE__ */ jsx27(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsxs15(
21290
21540
  "div",
21291
21541
  {
21292
21542
  ref: promptInputAreaRef,
@@ -21297,12 +21547,12 @@ function AgentComposer({
21297
21547
  "data-has-draft-images": draftImages.length > 0 ? "true" : void 0,
21298
21548
  style: promptInputAreaStyle,
21299
21549
  children: [
21300
- draftImages.length > 0 ? /* @__PURE__ */ jsx26(
21550
+ draftImages.length > 0 ? /* @__PURE__ */ jsx27(
21301
21551
  "div",
21302
21552
  {
21303
21553
  className: "mb-2 flex w-full max-w-full flex-wrap items-start gap-2",
21304
21554
  "data-testid": "agent-gui-composer-image-drafts",
21305
- children: draftImages.map((image) => /* @__PURE__ */ jsx26(
21555
+ children: draftImages.map((image) => /* @__PURE__ */ jsx27(
21306
21556
  AgentComposerDraftImagePreview,
21307
21557
  {
21308
21558
  image,
@@ -21313,7 +21563,7 @@ function AgentComposer({
21313
21563
  ))
21314
21564
  }
21315
21565
  ) : null,
21316
- visibleDraftFiles.length > 0 ? /* @__PURE__ */ jsx26(
21566
+ visibleDraftFiles.length > 0 ? /* @__PURE__ */ jsx27(
21317
21567
  "div",
21318
21568
  {
21319
21569
  className: "mb-2 flex max-w-[520px] flex-wrap gap-2",
@@ -21329,7 +21579,7 @@ function AgentComposer({
21329
21579
  "data-upload-error": file.uploadError ? "true" : void 0,
21330
21580
  title: file.hostPath ?? file.path ?? file.name,
21331
21581
  children: [
21332
- file.uploading ? /* @__PURE__ */ jsx26(
21582
+ file.uploading ? /* @__PURE__ */ jsx27(
21333
21583
  Spinner,
21334
21584
  {
21335
21585
  className: "shrink-0 text-[var(--text-primary)]",
@@ -21338,15 +21588,15 @@ function AgentComposer({
21338
21588
  trackColor: "var(--transparency-hover)",
21339
21589
  testId: "agent-gui-composer-file-upload-spinner"
21340
21590
  }
21341
- ) : /* @__PURE__ */ jsx26(
21591
+ ) : /* @__PURE__ */ jsx27(
21342
21592
  "span",
21343
21593
  {
21344
21594
  className: "size-2 shrink-0 rounded-full bg-[var(--text-tertiary)]",
21345
21595
  "aria-hidden": true
21346
21596
  }
21347
21597
  ),
21348
- /* @__PURE__ */ jsx26("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
21349
- /* @__PURE__ */ jsx26(
21598
+ /* @__PURE__ */ jsx27("span", { className: "min-w-0 max-w-[220px] truncate", children: file.name }),
21599
+ /* @__PURE__ */ jsx27(
21350
21600
  "button",
21351
21601
  {
21352
21602
  type: "button",
@@ -21354,7 +21604,7 @@ function AgentComposer({
21354
21604
  "aria-label": labels.removeMention,
21355
21605
  title: labels.removeMention,
21356
21606
  onClick: () => removeDraftFile(file.id),
21357
- children: /* @__PURE__ */ jsx26(X, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
21607
+ children: /* @__PURE__ */ jsx27(X, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
21358
21608
  }
21359
21609
  )
21360
21610
  ]
@@ -21371,7 +21621,7 @@ function AgentComposer({
21371
21621
  !isHeroLayout && "agent-gui-node__composer-prompt-input-line"
21372
21622
  ),
21373
21623
  children: [
21374
- /* @__PURE__ */ jsx26(
21624
+ /* @__PURE__ */ jsx27(
21375
21625
  AgentRichTextEditor,
21376
21626
  {
21377
21627
  ref: editorHandleRef,
@@ -21402,7 +21652,7 @@ function AgentComposer({
21402
21652
  }
21403
21653
  ) }),
21404
21654
  showFileMentionPalette && mentionPaletteFrame ? createPortal3(
21405
- /* @__PURE__ */ jsx26(
21655
+ /* @__PURE__ */ jsx27(
21406
21656
  "div",
21407
21657
  {
21408
21658
  "data-testid": "agent-gui-mention-palette-surface",
@@ -21412,7 +21662,7 @@ function AgentComposer({
21412
21662
  "max-h-[320px] overflow-hidden border-[var(--line-1)] p-0"
21413
21663
  ),
21414
21664
  style: mentionPaletteStyle,
21415
- children: /* @__PURE__ */ jsx26(
21665
+ children: /* @__PURE__ */ jsx27(
21416
21666
  AgentFileMentionPalette,
21417
21667
  {
21418
21668
  state: mentionSearchState,
@@ -21430,6 +21680,7 @@ function AgentComposer({
21430
21680
  onSelectFilter: (filter) => mentionControllerRef.current?.setFilter(filter),
21431
21681
  onExpandGroup: (groupId) => mentionControllerRef.current?.expandGroup(groupId),
21432
21682
  onNavigateHierarchy: navigateFileMentionHierarchy,
21683
+ onNavigateIntoItem: navigateIntoFileMentionItem,
21433
21684
  onOpenReferences: onRequestWorkspaceReferences ? handleOpenReferencesForEntity : void 0
21434
21685
  }
21435
21686
  )
@@ -21437,7 +21688,7 @@ function AgentComposer({
21437
21688
  ),
21438
21689
  mentionPaletteFrame.portalTarget
21439
21690
  ) : null,
21440
- /* @__PURE__ */ jsx26(
21691
+ /* @__PURE__ */ jsx27(
21441
21692
  ComposerFloatingMenuSurface,
21442
21693
  {
21443
21694
  anchorRef: inputShellRef,
@@ -21450,7 +21701,7 @@ function AgentComposer({
21450
21701
  placement: "fixed-height",
21451
21702
  surfaceRef: paletteContentRef,
21452
21703
  testId: "agent-gui-slash-palette-surface",
21453
- children: /* @__PURE__ */ jsx26(
21704
+ children: /* @__PURE__ */ jsx27(
21454
21705
  AgentSlashCommandPalette,
21455
21706
  {
21456
21707
  entries: slashPaletteEntries,
@@ -21471,7 +21722,7 @@ function AgentComposer({
21471
21722
  )
21472
21723
  }
21473
21724
  ),
21474
- /* @__PURE__ */ jsx26(
21725
+ /* @__PURE__ */ jsx27(
21475
21726
  ComposerFloatingMenuSurface,
21476
21727
  {
21477
21728
  anchorRef: inputShellRef,
@@ -21483,7 +21734,7 @@ function AgentComposer({
21483
21734
  placement: "dynamic-above",
21484
21735
  surfaceRef: paletteContentRef,
21485
21736
  testId: "agent-gui-command-menu-surface",
21486
- children: /* @__PURE__ */ jsx26(
21737
+ children: /* @__PURE__ */ jsx27(
21487
21738
  AgentSlashStatusPanel,
21488
21739
  {
21489
21740
  status: slashStatus,
@@ -21503,7 +21754,7 @@ function AgentComposer({
21503
21754
  )
21504
21755
  }
21505
21756
  ),
21506
- /* @__PURE__ */ jsx26(
21757
+ /* @__PURE__ */ jsx27(
21507
21758
  ComposerFloatingMenuSurface,
21508
21759
  {
21509
21760
  anchorRef: inputShellRef,
@@ -21515,7 +21766,7 @@ function AgentComposer({
21515
21766
  placement: "dynamic-above",
21516
21767
  surfaceRef: paletteContentRef,
21517
21768
  testId: "agent-gui-command-menu-surface",
21518
- children: /* @__PURE__ */ jsx26(
21769
+ children: /* @__PURE__ */ jsx27(
21519
21770
  AgentReviewPickerPanel,
21520
21771
  {
21521
21772
  labels: labels.reviewPicker,
@@ -21531,7 +21782,7 @@ function AgentComposer({
21531
21782
  ),
21532
21783
  /* @__PURE__ */ jsxs15("div", { className: AgentGUINode_styles_default.composerFooter, children: [
21533
21784
  /* @__PURE__ */ jsxs15("div", { className: composerStyles.footerGroup, children: [
21534
- previewMode ? /* @__PURE__ */ jsx26(
21785
+ previewMode ? /* @__PURE__ */ jsx27(
21535
21786
  "button",
21536
21787
  {
21537
21788
  type: "button",
@@ -21542,7 +21793,7 @@ function AgentComposer({
21542
21793
  AgentGUINode_styles_default.composerReferenceTrigger,
21543
21794
  "w-auto justify-center text-[var(--agent-gui-text-secondary)] [&_svg]:shrink-0"
21544
21795
  ),
21545
- children: /* @__PURE__ */ jsx26(
21796
+ children: /* @__PURE__ */ jsx27(
21546
21797
  AddIcon,
21547
21798
  {
21548
21799
  "aria-hidden": true,
@@ -21551,12 +21802,12 @@ function AgentComposer({
21551
21802
  }
21552
21803
  )
21553
21804
  }
21554
- ) : /* @__PURE__ */ jsx26(
21805
+ ) : /* @__PURE__ */ jsx27(
21555
21806
  Select2,
21556
21807
  {
21557
21808
  open: false,
21558
21809
  value: workspaceReferenceSelectValue,
21559
- disabled: isSelectedProjectMissing || isSendingTurn || isSubmittingPrompt || !onRequestWorkspaceReferences || disabled && !canQueueWhileBusy,
21810
+ disabled: !onRequestWorkspaceReferences || composerControlsHardDisabled,
21560
21811
  onOpenChange: (isOpen) => {
21561
21812
  if (isOpen) {
21562
21813
  void handleWorkspaceReferencePicker();
@@ -21567,7 +21818,7 @@ function AgentComposer({
21567
21818
  void handleWorkspaceReferencePicker();
21568
21819
  }
21569
21820
  },
21570
- children: /* @__PURE__ */ jsx26(
21821
+ children: /* @__PURE__ */ jsx27(
21571
21822
  SelectTrigger2,
21572
21823
  {
21573
21824
  size: "sm",
@@ -21578,7 +21829,7 @@ function AgentComposer({
21578
21829
  AgentGUINode_styles_default.composerReferenceTrigger,
21579
21830
  "w-auto justify-center text-[var(--agent-gui-text-secondary)] [&>svg:last-child]:hidden [&_svg]:shrink-0"
21580
21831
  ),
21581
- children: /* @__PURE__ */ jsx26(
21832
+ children: /* @__PURE__ */ jsx27(
21582
21833
  AddIcon,
21583
21834
  {
21584
21835
  "aria-hidden": true,
@@ -21590,7 +21841,7 @@ function AgentComposer({
21590
21841
  )
21591
21842
  }
21592
21843
  ),
21593
- composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx26(
21844
+ composerSettings.supportsPlanMode && composerSettings.draftSettings.planMode ? /* @__PURE__ */ jsx27(
21594
21845
  "button",
21595
21846
  {
21596
21847
  type: "button",
@@ -21600,19 +21851,83 @@ function AgentComposer({
21600
21851
  "data-agent-plan-mode-badge": "true",
21601
21852
  className: cn(
21602
21853
  AgentGUINode_styles_default.composerMenuTrigger,
21603
- "w-auto",
21854
+ "group w-auto",
21604
21855
  "disabled:cursor-not-allowed disabled:opacity-60"
21605
21856
  ),
21606
21857
  onClick: () => onSettingsChange({ planMode: false }),
21607
21858
  children: /* @__PURE__ */ jsxs15("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
21608
- /* @__PURE__ */ jsx26(ListChecks, { "aria-hidden": true, className: "size-3.5 shrink-0" }),
21609
- /* @__PURE__ */ jsx26("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
21859
+ /* @__PURE__ */ jsxs15("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
21860
+ /* @__PURE__ */ jsx27(
21861
+ ListChecks2,
21862
+ {
21863
+ "aria-hidden": true,
21864
+ className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
21865
+ }
21866
+ ),
21867
+ /* @__PURE__ */ jsx27(
21868
+ "span",
21869
+ {
21870
+ "aria-hidden": true,
21871
+ className: "absolute inset-0 flex items-center justify-center rounded-full bg-[var(--text-secondary)] opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100 group-disabled:opacity-0",
21872
+ children: /* @__PURE__ */ jsx27(
21873
+ X,
21874
+ {
21875
+ className: "size-2.5 text-[var(--background-fronted)]",
21876
+ strokeWidth: 3
21877
+ }
21878
+ )
21879
+ }
21880
+ )
21881
+ ] }),
21882
+ /* @__PURE__ */ jsx27("span", { className: "min-w-0 truncate", children: labels.planModeLabel })
21883
+ ] })
21884
+ }
21885
+ ) : null,
21886
+ isGoalModeActive ? /* @__PURE__ */ jsx27(
21887
+ "button",
21888
+ {
21889
+ type: "button",
21890
+ disabled: settingsControlsDisabled,
21891
+ "aria-label": labels.goalLabel,
21892
+ title: labels.goalLabel,
21893
+ "data-agent-goal-badge": "true",
21894
+ className: cn(
21895
+ AgentGUINode_styles_default.composerMenuTrigger,
21896
+ "group w-auto",
21897
+ "disabled:cursor-not-allowed disabled:opacity-60"
21898
+ ),
21899
+ onClick: clearGoalModeBadge,
21900
+ children: /* @__PURE__ */ jsxs15("span", { className: "flex min-w-0 items-center gap-1.5 overflow-hidden", children: [
21901
+ /* @__PURE__ */ jsxs15("span", { className: "relative flex size-3.5 shrink-0 items-center justify-center", children: [
21902
+ /* @__PURE__ */ jsx27(
21903
+ Target3,
21904
+ {
21905
+ "aria-hidden": true,
21906
+ className: "size-3.5 transition-opacity duration-150 group-hover:opacity-0 group-focus-visible:opacity-0"
21907
+ }
21908
+ ),
21909
+ /* @__PURE__ */ jsx27(
21910
+ "span",
21911
+ {
21912
+ "aria-hidden": true,
21913
+ className: "absolute inset-0 flex items-center justify-center rounded-full bg-[var(--text-secondary)] opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100 group-disabled:opacity-0",
21914
+ children: /* @__PURE__ */ jsx27(
21915
+ X,
21916
+ {
21917
+ className: "size-2.5 text-[var(--background-fronted)]",
21918
+ strokeWidth: 3
21919
+ }
21920
+ )
21921
+ }
21922
+ )
21923
+ ] }),
21924
+ /* @__PURE__ */ jsx27("span", { className: "min-w-0 truncate", children: labels.goalLabel })
21610
21925
  ] })
21611
21926
  }
21612
21927
  ) : null
21613
21928
  ] }),
21614
21929
  /* @__PURE__ */ jsxs15("div", { className: composerStyles.footerGroupRight, children: [
21615
- usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx26(
21930
+ usage && usage.percentUsed !== null ? /* @__PURE__ */ jsx27(
21616
21931
  AgentUsageChip,
21617
21932
  {
21618
21933
  percentUsed: usage.percentUsed,
@@ -21620,7 +21935,7 @@ function AgentComposer({
21620
21935
  totalTokens: usage.totalTokens,
21621
21936
  tooltipsEnabled: !previewMode,
21622
21937
  compactSupported: compactSupported ?? false,
21623
- compactDisabled: !hasCompactableContext || settingsControlsDisabled || inputDisabled,
21938
+ compactDisabled: !hasCompactableContext || composerControlsHardDisabled,
21624
21939
  onCompact: () => onSubmit(textPromptContent("/compact")),
21625
21940
  labels: {
21626
21941
  usageChipLabel: labels.usageChipLabel,
@@ -21631,7 +21946,7 @@ function AgentComposer({
21631
21946
  }
21632
21947
  }
21633
21948
  ) : null,
21634
- composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx26(
21949
+ composerSettings.supportsPermissionMode ? /* @__PURE__ */ jsx27(
21635
21950
  AgentPermissionModeDropdown,
21636
21951
  {
21637
21952
  composerSettings,
@@ -21644,7 +21959,7 @@ function AgentComposer({
21644
21959
  onSettingsChange: (patch) => onSettingsChange(patch)
21645
21960
  }
21646
21961
  ) : null,
21647
- composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx26(
21962
+ composerSettings.supportsModel || composerSettings.supportsReasoningEffort ? /* @__PURE__ */ jsx27(
21648
21963
  AgentModelReasoningDropdown,
21649
21964
  {
21650
21965
  composerSettings,
@@ -21692,7 +22007,7 @@ function AgentComposer({
21692
22007
  className: AgentGUINode_styles_default.composerProjectRow,
21693
22008
  "data-project-missing": isSelectedProjectMissing ? "true" : void 0,
21694
22009
  children: [
21695
- showHeroProjectSelector ? /* @__PURE__ */ jsx26(
22010
+ showHeroProjectSelector ? /* @__PURE__ */ jsx27(
21696
22011
  AgentProjectDropdown,
21697
22012
  {
21698
22013
  composerSettings,
@@ -21707,14 +22022,14 @@ function AgentComposer({
21707
22022
  onProjectPathChange
21708
22023
  }
21709
22024
  ) : null,
21710
- activePromptTip ? /* @__PURE__ */ jsx26(
22025
+ activePromptTip ? /* @__PURE__ */ jsx27(
21711
22026
  "div",
21712
22027
  {
21713
22028
  className: AgentGUINode_styles_default.composerPromptTips,
21714
22029
  "data-testid": "agent-gui-prompt-tips",
21715
- children: !previewMode && isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx26(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs15(Tooltip, { children: [
21716
- /* @__PURE__ */ jsx26(TooltipTrigger, { asChild: true, children: promptTipNode }),
21717
- /* @__PURE__ */ jsx26(
22030
+ children: !previewMode && isPromptTipOverflowing && promptTipNode ? /* @__PURE__ */ jsx27(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs15(Tooltip, { children: [
22031
+ /* @__PURE__ */ jsx27(TooltipTrigger, { asChild: true, children: promptTipNode }),
22032
+ /* @__PURE__ */ jsx27(
21718
22033
  TooltipContent,
21719
22034
  {
21720
22035
  align: "end",
@@ -21769,7 +22084,7 @@ function AgentComposerDraftImagePreview({
21769
22084
  "data-upload-error": image.uploadError ? "true" : void 0,
21770
22085
  style: previewStyle,
21771
22086
  children: [
21772
- /* @__PURE__ */ jsx26(
22087
+ /* @__PURE__ */ jsx27(
21773
22088
  ZoomableImage,
21774
22089
  {
21775
22090
  src: image.previewUrl,
@@ -21792,12 +22107,12 @@ function AgentComposerDraftImagePreview({
21792
22107
  }
21793
22108
  }
21794
22109
  ),
21795
- image.uploading ? /* @__PURE__ */ jsx26(
22110
+ image.uploading ? /* @__PURE__ */ jsx27(
21796
22111
  "div",
21797
22112
  {
21798
22113
  className: "absolute inset-0 grid place-items-center bg-[color-mix(in_srgb,var(--background-fronted)_62%,transparent)]",
21799
22114
  "data-testid": "agent-gui-composer-image-uploading",
21800
- children: /* @__PURE__ */ jsx26(
22115
+ children: /* @__PURE__ */ jsx27(
21801
22116
  Spinner,
21802
22117
  {
21803
22118
  className: "text-[var(--text-primary)]",
@@ -21809,7 +22124,7 @@ function AgentComposerDraftImagePreview({
21809
22124
  )
21810
22125
  }
21811
22126
  ) : null,
21812
- /* @__PURE__ */ jsx26(
22127
+ /* @__PURE__ */ jsx27(
21813
22128
  "button",
21814
22129
  {
21815
22130
  type: "button",
@@ -21817,13 +22132,76 @@ function AgentComposerDraftImagePreview({
21817
22132
  "aria-label": removeLabel,
21818
22133
  title: removeLabel,
21819
22134
  onClick: () => onRemove(image.id),
21820
- children: /* @__PURE__ */ jsx26(X, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
22135
+ children: /* @__PURE__ */ jsx27(X, { size: 12, strokeWidth: 2.4, "aria-hidden": true })
21821
22136
  }
21822
22137
  )
21823
22138
  ]
21824
22139
  }
21825
22140
  );
21826
22141
  }
22142
+ function slashCommandDescriptionForDisplay(command, labels) {
22143
+ switch (command.name.trim().toLowerCase()) {
22144
+ case "compact":
22145
+ return labels.slashCommandCompactDescription;
22146
+ case "context":
22147
+ return labels.slashCommandContextDescription;
22148
+ case "fast":
22149
+ return labels.slashCommandFastDescription;
22150
+ case "goal":
22151
+ return labels.slashCommandGoalDescription;
22152
+ case "init":
22153
+ return labels.slashCommandInitDescription;
22154
+ case "plan":
22155
+ return labels.slashCommandPlanDescription;
22156
+ case "review":
22157
+ return labels.slashCommandReviewDescription;
22158
+ case "status":
22159
+ return labels.slashCommandStatusDescription;
22160
+ case "usage":
22161
+ return labels.slashCommandUsageDescription;
22162
+ default:
22163
+ return command.description;
22164
+ }
22165
+ }
22166
+ function slashCommandLabelForDisplay(command, labels, uiLanguage) {
22167
+ const canonicalLabel = labelForSlashCommand(command);
22168
+ const primaryLabel = localizedSlashCommandLabel(command, labels);
22169
+ return uiLanguage === "en" || primaryLabel === canonicalLabel ? { primaryLabel } : { primaryLabel, secondaryLabel: canonicalLabel };
22170
+ }
22171
+ function localizedSlashCommandLabel(command, labels) {
22172
+ switch (command.name.trim().toLowerCase()) {
22173
+ case "compact":
22174
+ return labels.slashCommandCompactLabel;
22175
+ case "context":
22176
+ return labels.slashCommandContextLabel;
22177
+ case "fast":
22178
+ return labels.slashCommandFastLabel;
22179
+ case "goal":
22180
+ return labels.slashCommandGoalLabel;
22181
+ case "init":
22182
+ return labels.slashCommandInitLabel;
22183
+ case "plan":
22184
+ return labels.slashCommandPlanLabel;
22185
+ case "review":
22186
+ return labels.slashCommandReviewLabel;
22187
+ case "status":
22188
+ return labels.slashCommandStatusLabel;
22189
+ case "usage":
22190
+ return labels.slashCommandUsageLabel;
22191
+ default:
22192
+ return labelForSlashCommand(command);
22193
+ }
22194
+ }
22195
+ function goalDraftObjectiveFromPrompt(prompt) {
22196
+ const match = /^\s*\/goal(?:\s+([\s\S]*))?\s*$/u.exec(prompt);
22197
+ if (!match) {
22198
+ return null;
22199
+ }
22200
+ return match[1] ?? "";
22201
+ }
22202
+ function buildGoalModePrompt(objective) {
22203
+ return objective.trim() === "" ? GOAL_MODE_SLASH_COMMAND : `${GOAL_MODE_SLASH_COMMAND} ${objective}`;
22204
+ }
21827
22205
  function isSlashCommandCapability(command) {
21828
22206
  return "kind" in command && command.kind === "capability";
21829
22207
  }
@@ -21834,7 +22212,7 @@ function useStableEventCallback(callback) {
21834
22212
  }
21835
22213
  function SendFilledIcon() {
21836
22214
  "use memo";
21837
- return /* @__PURE__ */ jsx26(
22215
+ return /* @__PURE__ */ jsx27(
21838
22216
  "svg",
21839
22217
  {
21840
22218
  width: "24",
@@ -21842,7 +22220,7 @@ function SendFilledIcon() {
21842
22220
  viewBox: "0 0 24 24",
21843
22221
  fill: "none",
21844
22222
  "aria-hidden": "true",
21845
- children: /* @__PURE__ */ jsx26(
22223
+ children: /* @__PURE__ */ jsx27(
21846
22224
  "path",
21847
22225
  {
21848
22226
  d: "M2.74311 8.80587C2.84592 8.40096 3.14571 8.08844 3.54551 7.97033L18.5197 3.51569C18.9336 3.39383 19.3809 3.5054 19.6881 3.81262C19.9951 4.11984 20.1076 4.56798 19.9857 4.9817L15.5311 19.9559C15.413 20.3557 15.1005 20.6555 14.6956 20.7583C14.2895 20.8597 13.869 20.7438 13.5721 20.4469L10.455 15.1823C10.8585 14.6483 12.1563 12.9094 14.3475 9.96528C14.6086 9.70419 14.6382 9.31168 14.4138 9.08692C14.1891 8.86221 13.796 8.8913 13.5348 9.15252L8.31088 13.0423L3.05316 9.92799C2.7562 9.63104 2.64049 9.21071 2.74311 8.80587Z",
@@ -21869,7 +22247,7 @@ function agentGUIBottomDockStoreSnapshotsEqual(current, next) {
21869
22247
  }
21870
22248
 
21871
22249
  // agent-gui/agentGuiNode/AgentConversationListSkeleton.tsx
21872
- import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
22250
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
21873
22251
  var SKELETON_ROWS = [
21874
22252
  { id: "first", size: "long" },
21875
22253
  { id: "second", size: "medium" },
@@ -21881,7 +22259,7 @@ function AgentConversationListSkeleton({
21881
22259
  label
21882
22260
  }) {
21883
22261
  "use memo";
21884
- return /* @__PURE__ */ jsx27(
22262
+ return /* @__PURE__ */ jsx28(
21885
22263
  "div",
21886
22264
  {
21887
22265
  className: "agent-gui-node__conversation-list-skeleton",
@@ -21895,9 +22273,9 @@ function AgentConversationListSkeleton({
21895
22273
  "data-size": row.size,
21896
22274
  "aria-hidden": "true",
21897
22275
  children: [
21898
- /* @__PURE__ */ jsx27("span", { className: "agent-gui-node__conversation-list-skeleton-spine" }),
21899
- /* @__PURE__ */ jsx27("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-primary" }),
21900
- /* @__PURE__ */ jsx27("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-secondary" })
22276
+ /* @__PURE__ */ jsx28("span", { className: "agent-gui-node__conversation-list-skeleton-spine" }),
22277
+ /* @__PURE__ */ jsx28("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-primary" }),
22278
+ /* @__PURE__ */ jsx28("span", { className: "agent-gui-node__conversation-list-skeleton-rib agent-gui-node__conversation-list-skeleton-rib-secondary" })
21901
22279
  ]
21902
22280
  },
21903
22281
  row.id
@@ -21908,7 +22286,7 @@ function AgentConversationListSkeleton({
21908
22286
 
21909
22287
  // agent-gui/agentGuiNode/agentGuiNodeViewConversation.tsx
21910
22288
  import { AskLinedIcon } from "@tutti-os/ui-system/icons";
21911
- import { jsx as jsx28 } from "react/jsx-runtime";
22289
+ import { jsx as jsx29 } from "react/jsx-runtime";
21912
22290
  function ConversationMeta({
21913
22291
  item,
21914
22292
  nowMs,
@@ -21917,24 +22295,24 @@ function ConversationMeta({
21917
22295
  "use memo";
21918
22296
  const kind = conversationMetaKind(item);
21919
22297
  if (kind === "loading") {
21920
- return /* @__PURE__ */ jsx28(
22298
+ return /* @__PURE__ */ jsx29(
21921
22299
  "span",
21922
22300
  {
21923
22301
  className: AgentGUINode_styles_default.conversationMeta,
21924
22302
  "data-kind": kind,
21925
22303
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
21926
- children: /* @__PURE__ */ jsx28(LoadingGlyph, {})
22304
+ children: /* @__PURE__ */ jsx29(LoadingGlyph, {})
21927
22305
  }
21928
22306
  );
21929
22307
  }
21930
22308
  if (kind === "waiting") {
21931
- return /* @__PURE__ */ jsx28(
22309
+ return /* @__PURE__ */ jsx29(
21932
22310
  "span",
21933
22311
  {
21934
22312
  className: AgentGUINode_styles_default.conversationMeta,
21935
22313
  "data-kind": kind,
21936
22314
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
21937
- children: /* @__PURE__ */ jsx28(
22315
+ children: /* @__PURE__ */ jsx29(
21938
22316
  AskLinedIcon,
21939
22317
  {
21940
22318
  "aria-hidden": "true",
@@ -21945,34 +22323,34 @@ function ConversationMeta({
21945
22323
  );
21946
22324
  }
21947
22325
  if (kind === "failed") {
21948
- return /* @__PURE__ */ jsx28(
22326
+ return /* @__PURE__ */ jsx29(
21949
22327
  "span",
21950
22328
  {
21951
22329
  className: AgentGUINode_styles_default.conversationMeta,
21952
22330
  "data-kind": kind,
21953
22331
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
21954
- children: /* @__PURE__ */ jsx28(AttentionGlyph, {})
22332
+ children: /* @__PURE__ */ jsx29(AttentionGlyph, {})
21955
22333
  }
21956
22334
  );
21957
22335
  }
21958
22336
  if (kind === "unread-complete") {
21959
- return /* @__PURE__ */ jsx28(
22337
+ return /* @__PURE__ */ jsx29(
21960
22338
  "span",
21961
22339
  {
21962
22340
  className: AgentGUINode_styles_default.conversationMeta,
21963
22341
  "data-kind": kind,
21964
22342
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
21965
- children: /* @__PURE__ */ jsx28("span", { className: AgentGUINode_styles_default.conversationUnreadLamp, "aria-hidden": "true" })
22343
+ children: /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationUnreadLamp, "aria-hidden": "true" })
21966
22344
  }
21967
22345
  );
21968
22346
  }
21969
- return /* @__PURE__ */ jsx28(
22347
+ return /* @__PURE__ */ jsx29(
21970
22348
  "span",
21971
22349
  {
21972
22350
  className: AgentGUINode_styles_default.conversationMeta,
21973
22351
  "data-kind": kind,
21974
22352
  "data-testid": `agent-gui-conversation-meta-${item.id}`,
21975
- children: /* @__PURE__ */ jsx28("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
22353
+ children: /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationTime, children: formatConversationRelativeTime(
21976
22354
  resolveAgentGUIConversationSortTimeUnixMs(item),
21977
22355
  nowMs,
21978
22356
  labels
@@ -22140,7 +22518,7 @@ function formatConversationRelativeTime(updatedAtUnixMs, nowMs, labels) {
22140
22518
  }
22141
22519
  function LoadingGlyph() {
22142
22520
  "use memo";
22143
- return /* @__PURE__ */ jsx28(
22521
+ return /* @__PURE__ */ jsx29(
22144
22522
  Spinner,
22145
22523
  {
22146
22524
  className: AgentGUINode_styles_default.conversationStatusGlyph,
@@ -22154,14 +22532,14 @@ function LoadingGlyph() {
22154
22532
  }
22155
22533
  function AttentionGlyph() {
22156
22534
  "use memo";
22157
- return /* @__PURE__ */ jsx28(
22535
+ return /* @__PURE__ */ jsx29(
22158
22536
  "svg",
22159
22537
  {
22160
22538
  viewBox: "0 0 24 24",
22161
22539
  fill: "none",
22162
22540
  "aria-hidden": "true",
22163
22541
  className: AgentGUINode_styles_default.conversationStatusGlyph,
22164
- children: /* @__PURE__ */ jsx28(
22542
+ children: /* @__PURE__ */ jsx29(
22165
22543
  "path",
22166
22544
  {
22167
22545
  d: "M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12.5 15C12.7761 15 13 15.2239 13 15.5V16.5C13 16.7761 12.7761 17 12.5 17H11.5C11.2239 17 11 16.7761 11 16.5V15.5C11 15.2239 11.2239 15 11.5 15H12.5ZM12.5 7C12.7761 7 13 7.22386 13 7.5V13.5C13 13.7761 12.7761 14 12.5 14H11.5C11.2239 14 11 13.7761 11 13.5V7.5C11 7.22386 11.2239 7 11.5 7H12.5Z",
@@ -22174,7 +22552,7 @@ function AttentionGlyph() {
22174
22552
 
22175
22553
  // agent-gui/agentGuiNode/AgentGUINodeView.tsx
22176
22554
  import { createRichTextMentionHref as createRichTextMentionHref2 } from "@tutti-os/ui-rich-text/core";
22177
- import { Fragment as Fragment8, jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
22555
+ import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
22178
22556
  var AGENT_GUI_STICK_TO_BOTTOM_THRESHOLD_PX = 24;
22179
22557
  var AGENT_GUI_TOP_HISTORY_PREFETCH_THRESHOLD_PX = 240;
22180
22558
  var AGENT_GUI_CONVERSATION_RAIL_SECTION_PAGE_SIZE = 5;
@@ -22558,6 +22936,9 @@ function AgentGUINodeView({
22558
22936
  const confirmDeleteProjectConversations = useStableEventCallback2(
22559
22937
  actions.confirmDeleteProjectConversations
22560
22938
  );
22939
+ const confirmDeleteConversations = useStableEventCallback2(
22940
+ actions.confirmDeleteConversations
22941
+ );
22561
22942
  const requestDeleteConversation = useStableEventCallback2(
22562
22943
  actions.requestDeleteConversation
22563
22944
  );
@@ -22756,6 +23137,7 @@ function AgentGUINodeView({
22756
23137
  onToggleConversationPinned: toggleConversationPinned,
22757
23138
  onRemoveProject: removeProject,
22758
23139
  onConfirmDeleteProjectConversations: confirmDeleteProjectConversations,
23140
+ onConfirmDeleteConversations: confirmDeleteConversations,
22759
23141
  onRequestDeleteConversation: requestDeleteConversation,
22760
23142
  onCancelDeleteConversation: cancelDeleteConversation,
22761
23143
  onConfirmDeleteConversation: confirmDeleteConversation,
@@ -22766,6 +23148,7 @@ function AgentGUINodeView({
22766
23148
  [
22767
23149
  cancelDeleteConversation,
22768
23150
  confirmDeleteConversation,
23151
+ confirmDeleteConversations,
22769
23152
  confirmDeleteProjectConversations,
22770
23153
  conversationRailCollapsed,
22771
23154
  createConversationDisabled,
@@ -22816,14 +23199,14 @@ function AgentGUINodeView({
22816
23199
  inert: previewMode ? true : void 0,
22817
23200
  style: layoutStyle,
22818
23201
  children: [
22819
- /* @__PURE__ */ jsx29(
23202
+ /* @__PURE__ */ jsx30(
22820
23203
  "aside",
22821
23204
  {
22822
23205
  id: "agent-gui-conversation-rail",
22823
23206
  className: `${AgentGUINode_styles_default.railPanel}${conversationRailCollapsed ? ` ${AgentGUINode_styles_default.railPanelCollapsed}` : ""}`,
22824
23207
  "aria-hidden": conversationRailCollapsed ? "true" : void 0,
22825
23208
  inert: conversationRailCollapsed ? true : void 0,
22826
- children: /* @__PURE__ */ jsx29(
23209
+ children: /* @__PURE__ */ jsx30(
22827
23210
  AgentGUIConversationRailStorePane,
22828
23211
  {
22829
23212
  conversations: viewModel.conversations,
@@ -22834,7 +23217,7 @@ function AgentGUINodeView({
22834
23217
  )
22835
23218
  }
22836
23219
  ),
22837
- /* @__PURE__ */ jsx29(
23220
+ /* @__PURE__ */ jsx30(
22838
23221
  "div",
22839
23222
  {
22840
23223
  id: "agent-gui-conversation-rail-resize",
@@ -22858,7 +23241,7 @@ function AgentGUINodeView({
22858
23241
  onPointerUp: endConversationRailResize
22859
23242
  }
22860
23243
  ),
22861
- /* @__PURE__ */ jsx29("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx29(
23244
+ /* @__PURE__ */ jsx30("section", { id: "agent-gui-detail", className: AgentGUINode_styles_default.detailPanel, children: /* @__PURE__ */ jsx30(
22862
23245
  AgentGUIDetailPane,
22863
23246
  {
22864
23247
  viewModel,
@@ -22887,7 +23270,7 @@ function AgentGUINodeView({
22887
23270
  ]
22888
23271
  }
22889
23272
  ),
22890
- referenceSourceAggregator ? /* @__PURE__ */ jsx29(
23273
+ referenceSourceAggregator ? /* @__PURE__ */ jsx30(
22891
23274
  ReferenceSourcePicker,
22892
23275
  {
22893
23276
  aggregator: referenceSourceAggregator,
@@ -22901,7 +23284,7 @@ function AgentGUINodeView({
22901
23284
  onConfirm: confirmWorkspaceReferencePicker,
22902
23285
  onConfirmBundles: confirmWorkspaceReferenceBundles
22903
23286
  }
22904
- ) : /* @__PURE__ */ jsx29(
23287
+ ) : /* @__PURE__ */ jsx30(
22905
23288
  WorkspaceFileReferencePicker,
22906
23289
  {
22907
23290
  copy: workspaceFileReferenceCopy ?? fallbackWorkspaceFileReferenceCopy,
@@ -22915,7 +23298,7 @@ function AgentGUINodeView({
22915
23298
  }
22916
23299
  )
22917
23300
  ] });
22918
- return previewMode ? content : /* @__PURE__ */ jsx29(TooltipProvider2, { children: content });
23301
+ return previewMode ? content : /* @__PURE__ */ jsx30(TooltipProvider2, { children: content });
22919
23302
  }
22920
23303
  function mergeWorkspaceAppIconsFromCommands(input) {
22921
23304
  const seen = new Set(
@@ -23127,8 +23510,8 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23127
23510
  className: AgentGUINode_styles_default.unavailableChatEmpty,
23128
23511
  "data-testid": "agent-gui-unavailable-chat-empty",
23129
23512
  children: [
23130
- /* @__PURE__ */ jsx29(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
23131
- /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
23513
+ /* @__PURE__ */ jsx30(UnavailableChatIcon, { className: AgentGUINode_styles_default.unavailableChatEmptyIcon }),
23514
+ /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.unavailableChatEmptyText, children: labels.conversationUnavailable })
23132
23515
  ]
23133
23516
  }
23134
23517
  ),
@@ -23252,6 +23635,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23252
23635
  planModeOnLabel: labels.planModeOnLabel,
23253
23636
  planModeOffLabel: labels.planModeOffLabel,
23254
23637
  planUnavailable: labels.planUnavailable,
23638
+ goalLabel: labels.goalLabel,
23255
23639
  queuedLabel: labels.queuedLabel,
23256
23640
  sendQueuedPromptNext: labels.sendQueuedPromptNext,
23257
23641
  editQueuedPrompt: labels.editQueuedPrompt,
@@ -23267,6 +23651,24 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23267
23651
  slashPalettePluginsGroup: labels.slashPalettePluginsGroup,
23268
23652
  slashPaletteConnectorsGroup: labels.slashPaletteConnectorsGroup,
23269
23653
  slashPaletteMcpGroup: labels.slashPaletteMcpGroup,
23654
+ slashCommandCompactLabel: labels.slashCommandCompactLabel,
23655
+ slashCommandContextLabel: labels.slashCommandContextLabel,
23656
+ slashCommandFastLabel: labels.slashCommandFastLabel,
23657
+ slashCommandGoalLabel: labels.slashCommandGoalLabel,
23658
+ slashCommandInitLabel: labels.slashCommandInitLabel,
23659
+ slashCommandPlanLabel: labels.slashCommandPlanLabel,
23660
+ slashCommandReviewLabel: labels.slashCommandReviewLabel,
23661
+ slashCommandStatusLabel: labels.slashCommandStatusLabel,
23662
+ slashCommandUsageLabel: labels.slashCommandUsageLabel,
23663
+ slashCommandCompactDescription: labels.slashCommandCompactDescription,
23664
+ slashCommandContextDescription: labels.slashCommandContextDescription,
23665
+ slashCommandFastDescription: labels.slashCommandFastDescription,
23666
+ slashCommandGoalDescription: labels.slashCommandGoalDescription,
23667
+ slashCommandInitDescription: labels.slashCommandInitDescription,
23668
+ slashCommandPlanDescription: labels.slashCommandPlanDescription,
23669
+ slashCommandReviewDescription: labels.slashCommandReviewDescription,
23670
+ slashCommandStatusDescription: labels.slashCommandStatusDescription,
23671
+ slashCommandUsageDescription: labels.slashCommandUsageDescription,
23270
23672
  browserUseCapabilityLabel: labels.browserUseCapabilityLabel,
23271
23673
  browserUseCapabilityDescription: labels.browserUseCapabilityDescription,
23272
23674
  browserUseCapabilityDescriptionAutoConnect: labels.browserUseCapabilityDescriptionAutoConnect,
@@ -23337,6 +23739,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23337
23739
  labels.planModeOffLabel,
23338
23740
  labels.planModeOnLabel,
23339
23741
  labels.planUnavailable,
23742
+ labels.goalLabel,
23340
23743
  labels.projectLocked,
23341
23744
  labels.projectMissingDescription,
23342
23745
  labels.promptTipsPrefix,
@@ -23380,6 +23783,24 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23380
23783
  labels.slashPaletteCapabilitiesGroup,
23381
23784
  labels.slashPaletteCommandsGroup,
23382
23785
  labels.slashPaletteConnectorsGroup,
23786
+ labels.slashCommandCompactLabel,
23787
+ labels.slashCommandContextLabel,
23788
+ labels.slashCommandFastLabel,
23789
+ labels.slashCommandGoalLabel,
23790
+ labels.slashCommandInitLabel,
23791
+ labels.slashCommandPlanLabel,
23792
+ labels.slashCommandReviewLabel,
23793
+ labels.slashCommandStatusLabel,
23794
+ labels.slashCommandUsageLabel,
23795
+ labels.slashCommandCompactDescription,
23796
+ labels.slashCommandContextDescription,
23797
+ labels.slashCommandFastDescription,
23798
+ labels.slashCommandGoalDescription,
23799
+ labels.slashCommandInitDescription,
23800
+ labels.slashCommandPlanDescription,
23801
+ labels.slashCommandReviewDescription,
23802
+ labels.slashCommandStatusDescription,
23803
+ labels.slashCommandUsageDescription,
23383
23804
  labels.slashPaletteMcpGroup,
23384
23805
  labels.slashPalettePluginsGroup,
23385
23806
  labels.slashPaletteSkillsGroup,
@@ -23485,6 +23906,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23485
23906
  isInterrupting: viewModel.isInterrupting,
23486
23907
  isSendingTurn: isComposerSending,
23487
23908
  isSubmittingPrompt: viewModel.isRespondingApproval,
23909
+ uiLanguage,
23488
23910
  labels: composerLabels,
23489
23911
  workspaceUserProjectI18n,
23490
23912
  capabilityMenuState,
@@ -23533,6 +23955,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23533
23955
  submitInteractivePrompt,
23534
23956
  submitPrompt,
23535
23957
  submitGuidancePrompt,
23958
+ uiLanguage,
23536
23959
  stableLinkAction,
23537
23960
  stableRequestGitBranches,
23538
23961
  stableSelectProjectDirectory,
@@ -23775,7 +24198,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23775
24198
  viewModel.isLoadingOlderMessages
23776
24199
  ]);
23777
24200
  return /* @__PURE__ */ jsxs17("main", { className: AgentGUINode_styles_default.detail, children: [
23778
- /* @__PURE__ */ jsx29(
24201
+ /* @__PURE__ */ jsx30(
23779
24202
  AgentGUIDetailHeader,
23780
24203
  {
23781
24204
  activeConversation: viewModel.activeConversation,
@@ -23800,13 +24223,17 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23800
24223
  "data-testid": "agent-gui-provider-setup-notice",
23801
24224
  role: "status",
23802
24225
  children: [
23803
- /* @__PURE__ */ jsx29("span", { className: "inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal", children: /* @__PURE__ */ jsx29("span", { className: "min-w-0 break-words", children: labels.installRequiredPlaceholder }) }),
23804
- /* @__PURE__ */ jsx29(
24226
+ /* @__PURE__ */ jsx30("span", { className: "inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal", children: /* @__PURE__ */ jsx30("span", { className: "min-w-0 break-words", children: labels.installRequiredPlaceholder }) }),
24227
+ /* @__PURE__ */ jsx30(
23805
24228
  "button",
23806
24229
  {
23807
24230
  type: "button",
23808
- className: AgentGUINode_styles_default.providerSetupNoticeAction,
24231
+ className: cn3(
24232
+ AgentGUINode_styles_default.providerSetupNoticeAction,
24233
+ "nodrag tsh-desktop-no-drag [-webkit-app-region:no-drag]"
24234
+ ),
23809
24235
  "data-testid": "agent-gui-provider-setup-notice-action",
24236
+ onPointerDown: (event) => event.stopPropagation(),
23810
24237
  onClick: () => openAgentEnvPanel({
23811
24238
  provider: viewModel.data.provider,
23812
24239
  focus: "detect"
@@ -23817,7 +24244,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23817
24244
  ]
23818
24245
  }
23819
24246
  ) : null,
23820
- /* @__PURE__ */ jsx29(
24247
+ /* @__PURE__ */ jsx30(
23821
24248
  ScrollArea,
23822
24249
  {
23823
24250
  scrollbarMode: "native",
@@ -23826,7 +24253,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23826
24253
  viewportTestId: "agent-gui-timeline",
23827
24254
  viewportClassName: `${AgentGUINode_styles_default.timeline} ${hasActiveConversation ? AgentGUINode_styles_default.timelineWithComposer : AgentGUINode_styles_default.timelineCentered} ${showUnavailableChatEmpty ? AgentGUINode_styles_default.timelineUnavailableChatEmpty : ""}`.trim(),
23828
24255
  viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
23829
- children: !hasActiveConversation ? /* @__PURE__ */ jsx29(
24256
+ children: !hasActiveConversation ? /* @__PURE__ */ jsx30(
23830
24257
  AgentGUIEmptyHeroPane,
23831
24258
  {
23832
24259
  provider: viewModel.data.provider,
@@ -23841,7 +24268,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23841
24268
  chromeLabels,
23842
24269
  composerProps: emptyHeroComposerProps
23843
24270
  }
23844
- ) : /* @__PURE__ */ jsx29(
24271
+ ) : /* @__PURE__ */ jsx30(
23845
24272
  AgentGUIConversationTimelinePane,
23846
24273
  {
23847
24274
  conversation,
@@ -23859,7 +24286,7 @@ var AgentGUIDetailPane = memo(function AgentGUIDetailPane2({
23859
24286
  )
23860
24287
  }
23861
24288
  ),
23862
- hasActiveConversation ? /* @__PURE__ */ jsx29(
24289
+ hasActiveConversation ? /* @__PURE__ */ jsx30(
23863
24290
  AgentGUIBottomDockPane,
23864
24291
  {
23865
24292
  bottomDockRef,
@@ -23899,8 +24326,8 @@ var AgentGUIDetailHeader = memo(function AgentGUIDetailHeader2({
23899
24326
  const statusTitle = showSyncIndicator ? syncLabel : void 0;
23900
24327
  return /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.detailHeader, children: [
23901
24328
  /* @__PURE__ */ jsxs17("span", { className: AgentGUINode_styles_default.detailHeaderTitleGroup, children: [
23902
- /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
23903
- runPath ? /* @__PURE__ */ jsx29(AgentRunPathInfo, { path: runPath, previewMode }) : null
24329
+ /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.detailHeaderTitle, children: conversationPlainTitle(activeConversation, labels, uiLanguage) }),
24330
+ runPath ? /* @__PURE__ */ jsx30(AgentRunPathInfo, { path: runPath, previewMode }) : null
23904
24331
  ] }),
23905
24332
  /* @__PURE__ */ jsxs17(
23906
24333
  "span",
@@ -23908,7 +24335,7 @@ var AgentGUIDetailHeader = memo(function AgentGUIDetailHeader2({
23908
24335
  className: "inline-flex flex-none items-center gap-2 whitespace-nowrap",
23909
24336
  title: statusTitle,
23910
24337
  children: [
23911
- showSyncIndicator ? /* @__PURE__ */ jsx29(
24338
+ showSyncIndicator ? /* @__PURE__ */ jsx30(
23912
24339
  StatusDot,
23913
24340
  {
23914
24341
  tone: syncStateTone(syncStatus),
@@ -23918,7 +24345,7 @@ var AgentGUIDetailHeader = memo(function AgentGUIDetailHeader2({
23918
24345
  title: syncLabel
23919
24346
  }
23920
24347
  ) : null,
23921
- showFailedSyncLabel ? /* @__PURE__ */ jsx29("span", { className: "text-[13px] font-semibold leading-[18px] text-shell-warning", children: syncLabel }) : null
24348
+ showFailedSyncLabel ? /* @__PURE__ */ jsx30("span", { className: "text-[13px] font-semibold leading-[18px] text-shell-warning", children: syncLabel }) : null
23922
24349
  ]
23923
24350
  }
23924
24351
  )
@@ -23929,21 +24356,21 @@ function AgentRunPathInfo({
23929
24356
  previewMode
23930
24357
  }) {
23931
24358
  "use memo";
23932
- const trigger = /* @__PURE__ */ jsx29(
24359
+ const trigger = /* @__PURE__ */ jsx30(
23933
24360
  "button",
23934
24361
  {
23935
24362
  type: "button",
23936
24363
  className: AgentGUINode_styles_default.detailHeaderPathInfo,
23937
24364
  "aria-label": path,
23938
- children: /* @__PURE__ */ jsx29(Info, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
24365
+ children: /* @__PURE__ */ jsx30(Info2, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
23939
24366
  }
23940
24367
  );
23941
24368
  if (previewMode) {
23942
24369
  return trigger;
23943
24370
  }
23944
24371
  return /* @__PURE__ */ jsxs17(Tooltip3, { children: [
23945
- /* @__PURE__ */ jsx29(TooltipTrigger3, { asChild: true, children: trigger }),
23946
- /* @__PURE__ */ jsx29(
24372
+ /* @__PURE__ */ jsx30(TooltipTrigger3, { asChild: true, children: trigger }),
24373
+ /* @__PURE__ */ jsx30(
23947
24374
  TooltipContent3,
23948
24375
  {
23949
24376
  side: "top",
@@ -23988,8 +24415,8 @@ var AgentGUIEmptyHeroPane = memo(function AgentGUIEmptyHeroPane2({
23988
24415
  }) {
23989
24416
  "use memo";
23990
24417
  const heroIconUrl = resolveAgentGUIHeroIconUrl(provider);
23991
- return /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
23992
- /* @__PURE__ */ jsx29(
24418
+ return /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.emptyHero, children: /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: [
24419
+ /* @__PURE__ */ jsx30(
23993
24420
  "img",
23994
24421
  {
23995
24422
  "aria-hidden": "true",
@@ -23999,8 +24426,8 @@ var AgentGUIEmptyHeroPane = memo(function AgentGUIEmptyHeroPane2({
23999
24426
  alt: ""
24000
24427
  }
24001
24428
  ),
24002
- /* @__PURE__ */ jsx29("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx29(EmptyHeroTitle, { label: emptyLabel, providerLabel: emptyProvider }) }),
24003
- inlineNoticeChrome ? /* @__PURE__ */ jsx29(
24429
+ /* @__PURE__ */ jsx30("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: /* @__PURE__ */ jsx30(EmptyHeroTitle, { label: emptyLabel, providerLabel: emptyProvider }) }),
24430
+ inlineNoticeChrome ? /* @__PURE__ */ jsx30(
24004
24431
  AgentSessionChrome,
24005
24432
  {
24006
24433
  chrome: inlineNoticeChrome,
@@ -24012,7 +24439,7 @@ var AgentGUIEmptyHeroPane = memo(function AgentGUIEmptyHeroPane2({
24012
24439
  labels: chromeLabels
24013
24440
  }
24014
24441
  ) : null,
24015
- /* @__PURE__ */ jsx29(AgentComposer, { ...composerProps })
24442
+ /* @__PURE__ */ jsx30(AgentComposer, { ...composerProps })
24016
24443
  ] }) });
24017
24444
  });
24018
24445
  function EmptyHeroTitle({
@@ -24021,12 +24448,12 @@ function EmptyHeroTitle({
24021
24448
  }) {
24022
24449
  const providerStart = providerLabel ? label.indexOf(providerLabel) : -1;
24023
24450
  if (!shouldEmphasizeEmptyHeroProvider(label) || providerStart < 0) {
24024
- return /* @__PURE__ */ jsx29(Fragment8, { children: label });
24451
+ return /* @__PURE__ */ jsx30(Fragment8, { children: label });
24025
24452
  }
24026
24453
  const providerEnd = providerStart + providerLabel.length;
24027
24454
  return /* @__PURE__ */ jsxs17(Fragment8, { children: [
24028
24455
  label.slice(0, providerStart),
24029
- /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: label.slice(providerStart, providerEnd) }),
24456
+ /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: label.slice(providerStart, providerEnd) }),
24030
24457
  label.slice(providerEnd)
24031
24458
  ] });
24032
24459
  }
@@ -24068,12 +24495,12 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24068
24495
  className: AgentGUINode_styles_default.bottomDock,
24069
24496
  "data-testid": "agent-gui-bottom-dock",
24070
24497
  children: [
24071
- bottomDockLiftedPrompt ? /* @__PURE__ */ jsx29(
24498
+ bottomDockLiftedPrompt ? /* @__PURE__ */ jsx30(
24072
24499
  "div",
24073
24500
  {
24074
24501
  className: AgentGUINode_styles_default.bottomDockPrompt,
24075
24502
  "data-testid": "agent-gui-bottom-dock-active-prompt",
24076
- children: /* @__PURE__ */ jsx29(
24503
+ children: /* @__PURE__ */ jsx30(
24077
24504
  AgentInteractivePromptSurface,
24078
24505
  {
24079
24506
  prompt: bottomDockLiftedPrompt,
@@ -24088,7 +24515,7 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24088
24515
  )
24089
24516
  }
24090
24517
  ) : null,
24091
- inlineNoticeChrome ? /* @__PURE__ */ jsx29(
24518
+ inlineNoticeChrome ? /* @__PURE__ */ jsx30(
24092
24519
  AgentSessionChrome,
24093
24520
  {
24094
24521
  chrome: inlineNoticeChrome,
@@ -24100,7 +24527,7 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24100
24527
  labels: chromeLabels
24101
24528
  }
24102
24529
  ) : null,
24103
- /* @__PURE__ */ jsx29(
24530
+ /* @__PURE__ */ jsx30(
24104
24531
  AgentSessionChrome,
24105
24532
  {
24106
24533
  chrome: sessionChrome,
@@ -24112,7 +24539,7 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24112
24539
  labels: chromeLabels
24113
24540
  }
24114
24541
  ),
24115
- showGoalBanner ? /* @__PURE__ */ jsx29(
24542
+ showGoalBanner ? /* @__PURE__ */ jsx30(
24116
24543
  AgentGoalBanner,
24117
24544
  {
24118
24545
  objective: goalObjective,
@@ -24122,12 +24549,12 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24122
24549
  labels: goalBannerLabels
24123
24550
  }
24124
24551
  ) : null,
24125
- bottomDockReplacementPrompt ? /* @__PURE__ */ jsx29(
24552
+ bottomDockReplacementPrompt ? /* @__PURE__ */ jsx30(
24126
24553
  "div",
24127
24554
  {
24128
24555
  className: AgentGUINode_styles_default.bottomDockPrompt,
24129
24556
  "data-testid": "agent-gui-bottom-dock-active-prompt",
24130
- children: /* @__PURE__ */ jsx29(
24557
+ children: /* @__PURE__ */ jsx30(
24131
24558
  AgentInteractivePromptSurface,
24132
24559
  {
24133
24560
  prompt: bottomDockReplacementPrompt,
@@ -24141,7 +24568,7 @@ var AgentGUIBottomDockPane = memo(function AgentGUIBottomDockPane2({
24141
24568
  }
24142
24569
  )
24143
24570
  }
24144
- ) : /* @__PURE__ */ jsx29(AgentComposer, { ...composerProps })
24571
+ ) : /* @__PURE__ */ jsx30(AgentComposer, { ...composerProps })
24145
24572
  ]
24146
24573
  }
24147
24574
  );
@@ -24167,7 +24594,7 @@ var AgentGUIConversationRailStorePane = memo(
24167
24594
  }) {
24168
24595
  "use memo";
24169
24596
  const state = useSnapshot(store);
24170
- return /* @__PURE__ */ jsx29(
24597
+ return /* @__PURE__ */ jsx30(
24171
24598
  AgentGUIConversationRailPane,
24172
24599
  {
24173
24600
  ...state,
@@ -24280,6 +24707,7 @@ var AgentGUIConversationRailPane = memo(
24280
24707
  selectProjectDirectory,
24281
24708
  onRemoveProject,
24282
24709
  onConfirmDeleteProjectConversations,
24710
+ onConfirmDeleteConversations,
24283
24711
  onRequestDeleteConversation,
24284
24712
  onCancelDeleteConversation,
24285
24713
  onConfirmDeleteConversation
@@ -24388,7 +24816,7 @@ var AgentGUIConversationRailPane = memo(
24388
24816
  "aria-hidden": isCollapsed ? "true" : void 0,
24389
24817
  children: [
24390
24818
  /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.railToolbar, children: [
24391
- /* @__PURE__ */ jsx29(
24819
+ /* @__PURE__ */ jsx30(
24392
24820
  TaskSearchField,
24393
24821
  {
24394
24822
  value: conversationQuery,
@@ -24407,14 +24835,14 @@ var AgentGUIConversationRailPane = memo(
24407
24835
  disabled: createConversationDisabled,
24408
24836
  onClick: () => onCreateConversation(),
24409
24837
  children: [
24410
- /* @__PURE__ */ jsx29(CreateChatIcon, { "aria-hidden": "true" }),
24411
- /* @__PURE__ */ jsx29("span", { children: labels.newConversation })
24838
+ /* @__PURE__ */ jsx30(CreateChatIcon, { "aria-hidden": "true" }),
24839
+ /* @__PURE__ */ jsx30("span", { children: labels.newConversation })
24412
24840
  ]
24413
24841
  }
24414
24842
  )
24415
24843
  ] }),
24416
24844
  openclawGateway?.status === "starting" ? /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.gatewayStatus, "data-state": "starting", children: [
24417
- /* @__PURE__ */ jsx29(
24845
+ /* @__PURE__ */ jsx30(
24418
24846
  StatusDot,
24419
24847
  {
24420
24848
  tone: "blue",
@@ -24423,10 +24851,10 @@ var AgentGUIConversationRailPane = memo(
24423
24851
  ariaLabel: labels.openclawGatewayStarting
24424
24852
  }
24425
24853
  ),
24426
- /* @__PURE__ */ jsx29("span", { children: labels.openclawGatewayStarting })
24854
+ /* @__PURE__ */ jsx30("span", { children: labels.openclawGatewayStarting })
24427
24855
  ] }) : openclawGateway?.status === "failed" ? /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.gatewayStatus, "data-state": "failed", children: [
24428
- /* @__PURE__ */ jsx29("span", { children: openclawGateway.error || labels.openclawGatewayFailed }),
24429
- /* @__PURE__ */ jsx29(
24856
+ /* @__PURE__ */ jsx30("span", { children: openclawGateway.error || labels.openclawGatewayFailed }),
24857
+ /* @__PURE__ */ jsx30(
24430
24858
  "button",
24431
24859
  {
24432
24860
  type: "button",
@@ -24436,19 +24864,19 @@ var AgentGUIConversationRailPane = memo(
24436
24864
  }
24437
24865
  )
24438
24866
  ] }) : null,
24439
- /* @__PURE__ */ jsx29(
24867
+ /* @__PURE__ */ jsx30(
24440
24868
  ScrollArea,
24441
24869
  {
24442
24870
  scrollbarMode: "native",
24443
24871
  className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100",
24444
24872
  viewportRef: conversationListRef,
24445
24873
  viewportClassName: AgentGUINode_styles_default.conversationList,
24446
- children: isLoadingConversations && conversations.length === 0 ? /* @__PURE__ */ jsx29(
24874
+ children: isLoadingConversations && conversations.length === 0 ? /* @__PURE__ */ jsx30(
24447
24875
  AgentConversationListSkeleton,
24448
24876
  {
24449
24877
  label: labels.loadingConversations
24450
24878
  }
24451
- ) : groupedConversations.length === 0 ? /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx29("span", { children: conversations.length === 0 ? labels.noConversations : conversationQuery.trim() ? labels.searchNoConversations : labels.conversationUnavailable }) }) : groupedConversations.map((section, sectionIndex) => {
24879
+ ) : groupedConversations.length === 0 ? /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.emptyState, children: /* @__PURE__ */ jsx30("span", { children: conversations.length === 0 ? labels.noConversations : conversationQuery.trim() ? labels.searchNoConversations : labels.conversationUnavailable }) }) : groupedConversations.map((section, sectionIndex) => {
24452
24880
  const projectPath = section.kind === "project" ? section.project?.path ?? "" : "";
24453
24881
  const normalizedProjectPath = normalizeConversationRailProjectPath(projectPath);
24454
24882
  const projectLabel = section.kind === "project" ? section.label : "";
@@ -24457,7 +24885,7 @@ var AgentGUIConversationRailPane = memo(
24457
24885
  const isSectionCollapsed = isProjectSection && collapsedProjectSectionIds.has(section.id);
24458
24886
  const projectConversationCount = normalizedProjectPath ? projectConversationCountsByPath.get(normalizedProjectPath) ?? 0 : 0;
24459
24887
  return /* @__PURE__ */ jsxs17(Fragment7, { children: [
24460
- showProjectRailHeader ? /* @__PURE__ */ jsx29(
24888
+ showProjectRailHeader ? /* @__PURE__ */ jsx30(
24461
24889
  AgentGUIProjectRailHeader,
24462
24890
  {
24463
24891
  labels,
@@ -24465,7 +24893,7 @@ var AgentGUIConversationRailPane = memo(
24465
24893
  workspaceUserProjectI18n
24466
24894
  }
24467
24895
  ) : null,
24468
- /* @__PURE__ */ jsx29(
24896
+ /* @__PURE__ */ jsx30(
24469
24897
  AgentGUIConversationRailSection,
24470
24898
  {
24471
24899
  activeConversationId,
@@ -24498,8 +24926,8 @@ var AgentGUIConversationRailPane = memo(
24498
24926
  })
24499
24927
  }
24500
24928
  ),
24501
- /* @__PURE__ */ jsx29("div", { className: "shrink-0 border-t border-[var(--border-1)] px-2 py-1.5", children: /* @__PURE__ */ jsxs17(Popover, { children: [
24502
- /* @__PURE__ */ jsx29(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs17(
24929
+ /* @__PURE__ */ jsx30("div", { className: "shrink-0 border-t border-[var(--border-1)] px-2 py-1.5", children: /* @__PURE__ */ jsxs17(Popover, { children: [
24930
+ /* @__PURE__ */ jsx30(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs17(
24503
24931
  Button,
24504
24932
  {
24505
24933
  type: "button",
@@ -24508,12 +24936,19 @@ var AgentGUIConversationRailPane = memo(
24508
24936
  title: labels.agentConfig,
24509
24937
  disabled: previewMode,
24510
24938
  children: [
24511
- /* @__PURE__ */ jsx29(Settings, { "aria-hidden": "true", size: 16, strokeWidth: 1.8 }),
24512
- /* @__PURE__ */ jsx29("span", { children: labels.agentConfig })
24939
+ /* @__PURE__ */ jsx30(
24940
+ EnvironmentLinedIcon,
24941
+ {
24942
+ "aria-hidden": "true",
24943
+ width: 16,
24944
+ height: 16
24945
+ }
24946
+ ),
24947
+ /* @__PURE__ */ jsx30("span", { children: labels.agentConfig })
24513
24948
  ]
24514
24949
  }
24515
24950
  ) }),
24516
- /* @__PURE__ */ jsx29(
24951
+ /* @__PURE__ */ jsx30(
24517
24952
  PopoverContent,
24518
24953
  {
24519
24954
  side: "top",
@@ -24523,8 +24958,8 @@ var AgentGUIConversationRailPane = memo(
24523
24958
  children: /* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-col gap-3", children: [
24524
24959
  slashStatusLimits.length > 0 ? /* @__PURE__ */ jsxs17(Fragment8, { children: [
24525
24960
  /* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-col gap-2", children: [
24526
- /* @__PURE__ */ jsx29("span", { className: "text-[13px] font-semibold leading-4", children: labels.slashStatusLimits }),
24527
- slashStatusLimits.map((limit) => /* @__PURE__ */ jsx29(
24961
+ /* @__PURE__ */ jsx30("span", { className: "text-[13px] font-semibold leading-4", children: labels.slashStatusLimits }),
24962
+ slashStatusLimits.map((limit) => /* @__PURE__ */ jsx30(
24528
24963
  AgentUsageMeter,
24529
24964
  {
24530
24965
  label: limit.label,
@@ -24534,7 +24969,7 @@ var AgentGUIConversationRailPane = memo(
24534
24969
  limit.id
24535
24970
  ))
24536
24971
  ] }),
24537
- /* @__PURE__ */ jsx29("span", { className: "h-px bg-[var(--border-1)]" })
24972
+ /* @__PURE__ */ jsx30("span", { className: "h-px bg-[var(--border-1)]" })
24538
24973
  ] }) : null,
24539
24974
  /* @__PURE__ */ jsxs17(
24540
24975
  "button",
@@ -24545,8 +24980,8 @@ var AgentGUIConversationRailPane = memo(
24545
24980
  disabled: previewMode,
24546
24981
  onClick: () => onOpenAgentEnvSetup(),
24547
24982
  children: [
24548
- /* @__PURE__ */ jsx29(Wrench, { "aria-hidden": "true", size: 16, strokeWidth: 1.8 }),
24549
- /* @__PURE__ */ jsx29("span", { children: labels.agentEnvSetup })
24983
+ /* @__PURE__ */ jsx30(Wrench, { "aria-hidden": "true", size: 16, strokeWidth: 1.8 }),
24984
+ /* @__PURE__ */ jsx30("span", { children: labels.agentEnvSetup })
24550
24985
  ]
24551
24986
  }
24552
24987
  )
@@ -24554,16 +24989,18 @@ var AgentGUIConversationRailPane = memo(
24554
24989
  }
24555
24990
  )
24556
24991
  ] }) }),
24557
- /* @__PURE__ */ jsx29(
24992
+ /* @__PURE__ */ jsx30(
24558
24993
  ConfirmationDialog,
24559
24994
  {
24560
24995
  cancelLabel: labels.cancel,
24561
24996
  className: AGENT_GUI_CONFIRMATION_DIALOG_CLASS_NAME,
24562
- confirmBusy: pendingProjectAction?.kind === "batch-delete" && isDeletingProjectConversations,
24563
- confirmLabel: pendingProjectAction?.kind === "batch-delete" ? labels.batchDeleteProjectSessionsConfirm : labels.removeProject,
24997
+ confirmBusy: (pendingProjectAction?.kind === "batch-delete" || pendingProjectAction?.kind === "batch-delete-conversations") && isDeletingProjectConversations,
24998
+ confirmLabel: pendingProjectAction?.kind === "batch-delete" ? labels.batchDeleteProjectSessionsConfirm : pendingProjectAction?.kind === "batch-delete-conversations" ? labels.batchDeleteConversationsConfirm : labels.removeProject,
24564
24999
  description: pendingProjectAction?.kind === "batch-delete" ? labels.batchDeleteProjectSessionsBody(
24565
25000
  pendingProjectAction.conversationCount,
24566
25001
  pendingProjectAction.label
25002
+ ) : pendingProjectAction?.kind === "batch-delete-conversations" ? labels.batchDeleteConversationsBody(
25003
+ pendingProjectAction.conversationCount
24567
25004
  ) : pendingProjectAction ? labels.removeProjectConfirmDescription(
24568
25005
  pendingProjectAction.label
24569
25006
  ) : void 0,
@@ -24578,6 +25015,10 @@ var AgentGUIConversationRailPane = memo(
24578
25015
  onConfirmDeleteProjectConversations(action.path);
24579
25016
  return;
24580
25017
  }
25018
+ if (action.kind === "batch-delete-conversations") {
25019
+ onConfirmDeleteConversations(action.sessionIds);
25020
+ return;
25021
+ }
24581
25022
  onRemoveProject(action.path);
24582
25023
  },
24583
25024
  onOpenChange: (open) => {
@@ -24587,7 +25028,7 @@ var AgentGUIConversationRailPane = memo(
24587
25028
  },
24588
25029
  open: pendingProjectAction !== null,
24589
25030
  overlayClassName: AGENT_GUI_CONFIRMATION_DIALOG_OVERLAY_CLASS_NAME,
24590
- title: pendingProjectAction?.kind === "batch-delete" ? labels.batchDeleteProjectSessionsTitle : labels.removeProjectConfirmTitle,
25031
+ title: pendingProjectAction?.kind === "batch-delete" ? labels.batchDeleteProjectSessionsTitle : pendingProjectAction?.kind === "batch-delete-conversations" ? labels.batchDeleteConversationsTitle : labels.removeProjectConfirmTitle,
24591
25032
  tone: "destructive"
24592
25033
  }
24593
25034
  )
@@ -24671,7 +25112,7 @@ var AgentGUIConversationRailSection = memo(
24671
25112
  "aria-expanded": !isSectionCollapsed,
24672
25113
  onClick: () => onToggleProjectSectionCollapsed(section.id),
24673
25114
  children: [
24674
- /* @__PURE__ */ jsx29(
25115
+ /* @__PURE__ */ jsx30(
24675
25116
  ChevronRight2,
24676
25117
  {
24677
25118
  "aria-hidden": "true",
@@ -24679,20 +25120,20 @@ var AgentGUIConversationRailSection = memo(
24679
25120
  }
24680
25121
  ),
24681
25122
  /* @__PURE__ */ jsxs17("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: [
24682
- /* @__PURE__ */ jsx29(
25123
+ /* @__PURE__ */ jsx30(
24683
25124
  FolderIcon2,
24684
25125
  {
24685
25126
  "aria-hidden": "true",
24686
25127
  className: AgentGUINode_styles_default.conversationSectionLabelIcon
24687
25128
  }
24688
25129
  ),
24689
- /* @__PURE__ */ jsx29("span", { children: section.label })
25130
+ /* @__PURE__ */ jsx30("span", { children: section.label })
24690
25131
  ] })
24691
25132
  ]
24692
25133
  }
24693
- ) : /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx29("span", { children: section.label }) }) }),
25134
+ ) : /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.conversationSectionToggle, children: /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.conversationSectionLabel, children: /* @__PURE__ */ jsx30("span", { children: section.label }) }) }),
24694
25135
  canCreateConversationFromSection ? /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.conversationSectionActions, children: [
24695
- previewMode ? /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx29(
25136
+ previewMode ? /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap, children: /* @__PURE__ */ jsx30(
24696
25137
  BareIconButton,
24697
25138
  {
24698
25139
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -24700,14 +25141,14 @@ var AgentGUIConversationRailSection = memo(
24700
25141
  size: "sm",
24701
25142
  disabled: createConversationDisabled,
24702
25143
  onClick: handleCreateConversation,
24703
- children: /* @__PURE__ */ jsx29(CreateChatIcon, { "aria-hidden": "true" })
25144
+ children: /* @__PURE__ */ jsx30(CreateChatIcon, { "aria-hidden": "true" })
24704
25145
  }
24705
25146
  ) }) : /* @__PURE__ */ jsxs17(Tooltip3, { children: [
24706
- /* @__PURE__ */ jsx29(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx29(
25147
+ /* @__PURE__ */ jsx30(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx30(
24707
25148
  "span",
24708
25149
  {
24709
25150
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
24710
- children: /* @__PURE__ */ jsx29(
25151
+ children: /* @__PURE__ */ jsx30(
24711
25152
  BareIconButton,
24712
25153
  {
24713
25154
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
@@ -24715,12 +25156,12 @@ var AgentGUIConversationRailSection = memo(
24715
25156
  size: "sm",
24716
25157
  disabled: createConversationDisabled,
24717
25158
  onClick: handleCreateConversation,
24718
- children: /* @__PURE__ */ jsx29(CreateChatIcon, { "aria-hidden": "true" })
25159
+ children: /* @__PURE__ */ jsx30(CreateChatIcon, { "aria-hidden": "true" })
24719
25160
  }
24720
25161
  )
24721
25162
  }
24722
25163
  ) }),
24723
- /* @__PURE__ */ jsx29(
25164
+ /* @__PURE__ */ jsx30(
24724
25165
  TooltipContent3,
24725
25166
  {
24726
25167
  side: "top",
@@ -24731,37 +25172,37 @@ var AgentGUIConversationRailSection = memo(
24731
25172
  )
24732
25173
  ] }),
24733
25174
  projectPath ? /* @__PURE__ */ jsxs17(DropdownMenu, { children: [
24734
- previewMode ? /* @__PURE__ */ jsx29(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(
25175
+ previewMode ? /* @__PURE__ */ jsx30(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx30(
24735
25176
  "span",
24736
25177
  {
24737
25178
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
24738
- children: /* @__PURE__ */ jsx29(
25179
+ children: /* @__PURE__ */ jsx30(
24739
25180
  BareIconButton,
24740
25181
  {
24741
25182
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
24742
25183
  "aria-label": labels.projectSectionMoreActions,
24743
25184
  size: "sm",
24744
- children: /* @__PURE__ */ jsx29(MoreHorizontalIcon, { "aria-hidden": "true" })
25185
+ children: /* @__PURE__ */ jsx30(MoreHorizontalIcon, { "aria-hidden": "true" })
24745
25186
  }
24746
25187
  )
24747
25188
  }
24748
25189
  ) }) : /* @__PURE__ */ jsxs17(Tooltip3, { children: [
24749
- /* @__PURE__ */ jsx29(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx29(
25190
+ /* @__PURE__ */ jsx30(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx30(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx30(
24750
25191
  "span",
24751
25192
  {
24752
25193
  className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
24753
- children: /* @__PURE__ */ jsx29(
25194
+ children: /* @__PURE__ */ jsx30(
24754
25195
  BareIconButton,
24755
25196
  {
24756
25197
  className: AgentGUINode_styles_default.conversationSectionMoreButton,
24757
25198
  "aria-label": labels.projectSectionMoreActions,
24758
25199
  size: "sm",
24759
- children: /* @__PURE__ */ jsx29(MoreHorizontalIcon, { "aria-hidden": "true" })
25200
+ children: /* @__PURE__ */ jsx30(MoreHorizontalIcon, { "aria-hidden": "true" })
24760
25201
  }
24761
25202
  )
24762
25203
  }
24763
25204
  ) }) }),
24764
- /* @__PURE__ */ jsx29(
25205
+ /* @__PURE__ */ jsx30(
24765
25206
  TooltipContent3,
24766
25207
  {
24767
25208
  side: "right",
@@ -24778,7 +25219,7 @@ var AgentGUIConversationRailSection = memo(
24778
25219
  className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
24779
25220
  sideOffset: 6,
24780
25221
  children: [
24781
- /* @__PURE__ */ jsx29(
25222
+ /* @__PURE__ */ jsx30(
24782
25223
  DropdownMenuItem,
24783
25224
  {
24784
25225
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -24793,10 +25234,10 @@ var AgentGUIConversationRailSection = memo(
24793
25234
  workspaceRoot: projectPath
24794
25235
  });
24795
25236
  },
24796
- children: /* @__PURE__ */ jsx29("span", { children: labels.projectSectionViewFiles })
25237
+ children: /* @__PURE__ */ jsx30("span", { children: labels.projectSectionViewFiles })
24797
25238
  }
24798
25239
  ),
24799
- projectConversationCount > 0 ? /* @__PURE__ */ jsx29(
25240
+ projectConversationCount > 0 ? /* @__PURE__ */ jsx30(
24800
25241
  DropdownMenuItem,
24801
25242
  {
24802
25243
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -24809,10 +25250,10 @@ var AgentGUIConversationRailSection = memo(
24809
25250
  path: projectPath
24810
25251
  });
24811
25252
  },
24812
- children: /* @__PURE__ */ jsx29("span", { children: labels.batchDeleteProjectSessions })
25253
+ children: /* @__PURE__ */ jsx30("span", { children: labels.batchDeleteProjectSessions })
24813
25254
  }
24814
25255
  ) : null,
24815
- /* @__PURE__ */ jsx29(
25256
+ /* @__PURE__ */ jsx30(
24816
25257
  DropdownMenuItem,
24817
25258
  {
24818
25259
  className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
@@ -24824,23 +25265,88 @@ var AgentGUIConversationRailSection = memo(
24824
25265
  path: projectPath
24825
25266
  });
24826
25267
  },
24827
- children: /* @__PURE__ */ jsx29("span", { children: labels.removeProject })
25268
+ children: /* @__PURE__ */ jsx30("span", { children: labels.removeProject })
24828
25269
  }
24829
25270
  )
24830
25271
  ]
24831
25272
  }
24832
25273
  )
25274
+ ] }) : null,
25275
+ !projectPath && section.kind === "conversations" && section.items.length > 0 ? /* @__PURE__ */ jsxs17(DropdownMenu, { children: [
25276
+ previewMode ? /* @__PURE__ */ jsx30(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx30(
25277
+ "span",
25278
+ {
25279
+ className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
25280
+ children: /* @__PURE__ */ jsx30(
25281
+ BareIconButton,
25282
+ {
25283
+ className: AgentGUINode_styles_default.conversationSectionMoreButton,
25284
+ "aria-label": labels.conversationsSectionMoreActions,
25285
+ size: "sm",
25286
+ children: /* @__PURE__ */ jsx30(MoreHorizontalIcon, { "aria-hidden": "true" })
25287
+ }
25288
+ )
25289
+ }
25290
+ ) }) : /* @__PURE__ */ jsxs17(Tooltip3, { children: [
25291
+ /* @__PURE__ */ jsx30(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx30(TooltipTrigger3, { asChild: true, children: /* @__PURE__ */ jsx30(
25292
+ "span",
25293
+ {
25294
+ className: AgentGUINode_styles_default.conversationSectionActionTooltipWrap,
25295
+ children: /* @__PURE__ */ jsx30(
25296
+ BareIconButton,
25297
+ {
25298
+ className: AgentGUINode_styles_default.conversationSectionMoreButton,
25299
+ "aria-label": labels.conversationsSectionMoreActions,
25300
+ size: "sm",
25301
+ children: /* @__PURE__ */ jsx30(MoreHorizontalIcon, { "aria-hidden": "true" })
25302
+ }
25303
+ )
25304
+ }
25305
+ ) }) }),
25306
+ /* @__PURE__ */ jsx30(
25307
+ TooltipContent3,
25308
+ {
25309
+ side: "right",
25310
+ sideOffset: 6,
25311
+ className: AgentGUINode_styles_default.conversationSectionActionTooltip,
25312
+ children: labels.conversationsSectionMoreActions
25313
+ }
25314
+ )
25315
+ ] }),
25316
+ /* @__PURE__ */ jsx30(
25317
+ DropdownMenuContent,
25318
+ {
25319
+ align: "end",
25320
+ className: `${AgentGUINode_styles_default.composerMenuContent} nodrag [-webkit-app-region:no-drag]`,
25321
+ sideOffset: 6,
25322
+ children: /* @__PURE__ */ jsx30(
25323
+ DropdownMenuItem,
25324
+ {
25325
+ className: `${AgentGUINode_styles_default.composerMenuItem} nodrag [-webkit-app-region:no-drag]`,
25326
+ onSelect: () => {
25327
+ setPendingProjectAction({
25328
+ kind: "batch-delete-conversations",
25329
+ conversationCount: section.items.length,
25330
+ label: section.label,
25331
+ sessionIds: section.items.map((item) => item.id)
25332
+ });
25333
+ },
25334
+ children: /* @__PURE__ */ jsx30("span", { children: labels.batchDeleteConversations })
25335
+ }
25336
+ )
25337
+ }
25338
+ )
24833
25339
  ] }) : null
24834
25340
  ] }) : null
24835
25341
  ] }),
24836
- /* @__PURE__ */ jsx29(
25342
+ /* @__PURE__ */ jsx30(
24837
25343
  "div",
24838
25344
  {
24839
25345
  className: AgentGUINode_styles_default.conversationSectionItems,
24840
25346
  "aria-hidden": isSectionCollapsed ? "true" : void 0,
24841
25347
  children: /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.conversationSectionItemsInner, children: [
24842
- !isSectionCollapsed && section.items.length === 0 ? /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
24843
- visibleItems.map((item) => /* @__PURE__ */ jsx29(
25348
+ !isSectionCollapsed && section.items.length === 0 ? /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.conversationSectionEmpty, children: labels.emptyProjectConversations }) : null,
25349
+ visibleItems.map((item) => /* @__PURE__ */ jsx30(
24844
25350
  AgentGUIConversationRailItem,
24845
25351
  {
24846
25352
  active: item.id === activeConversationId,
@@ -24862,7 +25368,7 @@ var AgentGUIConversationRailSection = memo(
24862
25368
  item.id
24863
25369
  )),
24864
25370
  canShowMore || canShowLess ? /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.conversationSectionPagination, children: [
24865
- canShowMore ? /* @__PURE__ */ jsx29(
25371
+ canShowMore ? /* @__PURE__ */ jsx30(
24866
25372
  "button",
24867
25373
  {
24868
25374
  type: "button",
@@ -24871,7 +25377,7 @@ var AgentGUIConversationRailSection = memo(
24871
25377
  children: labels.showMoreConversations
24872
25378
  }
24873
25379
  ) : null,
24874
- canShowLess ? /* @__PURE__ */ jsx29(
25380
+ canShowLess ? /* @__PURE__ */ jsx30(
24875
25381
  "button",
24876
25382
  {
24877
25383
  type: "button",
@@ -24950,12 +25456,12 @@ var AgentGUIConversationRailItem = memo(
24950
25456
  className: AgentGUINode_styles_default.conversationSelect,
24951
25457
  onClick: handleSelect,
24952
25458
  children: [
24953
- /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationTitle, children: conversationPlainTitle(item, labels, uiLanguage) }),
24954
- /* @__PURE__ */ jsx29(ConversationMeta, { item, nowMs: currentTimeMs, labels })
25459
+ /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.conversationTitle, children: conversationPlainTitle(item, labels, uiLanguage) }),
25460
+ /* @__PURE__ */ jsx30(ConversationMeta, { item, nowMs: currentTimeMs, labels })
24955
25461
  ]
24956
25462
  }
24957
25463
  ),
24958
- previewMode ? null : /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx29(
25464
+ previewMode ? null : /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.conversationActions, children: isPendingDeleteConversation ? /* @__PURE__ */ jsx30(
24959
25465
  "button",
24960
25466
  {
24961
25467
  type: "button",
@@ -24967,10 +25473,10 @@ var AgentGUIConversationRailItem = memo(
24967
25473
  event.stopPropagation();
24968
25474
  onConfirmDeleteConversation();
24969
25475
  },
24970
- children: /* @__PURE__ */ jsx29("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
25476
+ children: /* @__PURE__ */ jsx30("span", { className: AgentGUINode_styles_default.conversationDeleteConfirmText, children: labels.deleteSessionConfirm })
24971
25477
  }
24972
25478
  ) : /* @__PURE__ */ jsxs17(Fragment8, { children: [
24973
- onOpenConversationWindow ? /* @__PURE__ */ jsx29(
25479
+ onOpenConversationWindow ? /* @__PURE__ */ jsx30(
24974
25480
  BareIconButton,
24975
25481
  {
24976
25482
  className: AgentGUINode_styles_default.conversationOpenWindowButton,
@@ -24987,10 +25493,10 @@ var AgentGUIConversationRailItem = memo(
24987
25493
  event.stopPropagation();
24988
25494
  handleOpenConversationWindow();
24989
25495
  },
24990
- children: /* @__PURE__ */ jsx29(ExternalLink, { "aria-hidden": "true" })
25496
+ children: /* @__PURE__ */ jsx30(ExternalLink, { "aria-hidden": "true" })
24991
25497
  }
24992
25498
  ) : null,
24993
- /* @__PURE__ */ jsx29(
25499
+ /* @__PURE__ */ jsx30(
24994
25500
  BareIconButton,
24995
25501
  {
24996
25502
  className: AgentGUINode_styles_default.conversationPinButton,
@@ -25007,10 +25513,10 @@ var AgentGUIConversationRailItem = memo(
25007
25513
  event.stopPropagation();
25008
25514
  handleTogglePinned();
25009
25515
  },
25010
- children: pinned ? /* @__PURE__ */ jsx29(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx29(PinLinedIcon, { "aria-hidden": "true" })
25516
+ children: pinned ? /* @__PURE__ */ jsx30(PinFilledIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx30(PinLinedIcon, { "aria-hidden": "true" })
25011
25517
  }
25012
25518
  ),
25013
- /* @__PURE__ */ jsx29(
25519
+ /* @__PURE__ */ jsx30(
25014
25520
  BareIconButton,
25015
25521
  {
25016
25522
  className: AgentGUINode_styles_default.conversationDeleteButton,
@@ -25027,7 +25533,7 @@ var AgentGUIConversationRailItem = memo(
25027
25533
  event.stopPropagation();
25028
25534
  handleRequestDelete();
25029
25535
  },
25030
- children: /* @__PURE__ */ jsx29(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
25536
+ children: /* @__PURE__ */ jsx30(CanvasNodeTrashLinedIcon, { "aria-hidden": "true" })
25031
25537
  }
25032
25538
  )
25033
25539
  ] }) })
@@ -25055,9 +25561,9 @@ function AgentGUIProjectRailHeader({
25055
25561
  ]
25056
25562
  );
25057
25563
  return /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.projectRailHeader, children: [
25058
- /* @__PURE__ */ jsx29("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx29("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
25564
+ /* @__PURE__ */ jsx30("div", { className: AgentGUINode_styles_default.projectRailTitle, children: /* @__PURE__ */ jsx30("span", { children: workspaceUserProjectI18n.tFirst(["projectSelect.projectLabel"]) }) }),
25059
25565
  /* @__PURE__ */ jsxs17("div", { className: AgentGUINode_styles_default.projectRailAddProject, children: [
25060
- /* @__PURE__ */ jsx29(
25566
+ /* @__PURE__ */ jsx30(
25061
25567
  WorkspaceUserProjectSelect2,
25062
25568
  {
25063
25569
  api: userProjectApi,
@@ -25087,7 +25593,7 @@ function AgentGUIProjectRailHeader({
25087
25593
  "projectSelect.addProject"
25088
25594
  ])
25089
25595
  },
25090
- renderAddProjectIcon: () => /* @__PURE__ */ jsx29(
25596
+ renderAddProjectIcon: () => /* @__PURE__ */ jsx30(
25091
25597
  NewWorkspaceLinedIcon2,
25092
25598
  {
25093
25599
  "aria-hidden": true,
@@ -25105,7 +25611,7 @@ function AgentGUIProjectRailHeader({
25105
25611
  }
25106
25612
  }
25107
25613
  ),
25108
- /* @__PURE__ */ jsx29(
25614
+ /* @__PURE__ */ jsx30(
25109
25615
  NewWorkspaceLinedIcon2,
25110
25616
  {
25111
25617
  "aria-hidden": true,
@@ -25131,16 +25637,16 @@ var AgentGUIConversationTimelinePane = memo(
25131
25637
  }) {
25132
25638
  "use memo";
25133
25639
  return /* @__PURE__ */ jsxs17(Fragment8, { children: [
25134
- isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx29(
25640
+ isLoadingOlderMessages && !isLoading ? /* @__PURE__ */ jsx30(
25135
25641
  "div",
25136
25642
  {
25137
25643
  className: "mx-auto flex h-8 items-center justify-center text-[12px] text-[var(--text-secondary)]",
25138
25644
  "data-testid": "agent-gui-older-messages-loading",
25139
25645
  role: "status",
25140
- children: /* @__PURE__ */ jsx29("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
25646
+ children: /* @__PURE__ */ jsx30("span", { className: "tsh-inline-loading-ellipsis", children: loadingLabel })
25141
25647
  }
25142
25648
  ) : null,
25143
- /* @__PURE__ */ jsx29(
25649
+ /* @__PURE__ */ jsx30(
25144
25650
  AgentConversationFlow,
25145
25651
  {
25146
25652
  conversation,
@@ -25352,7 +25858,7 @@ function appendDockProbeUsageLines(probe, lines, isLoadingUsage, t) {
25352
25858
  }
25353
25859
 
25354
25860
  // agent-gui/workspaceDesktop/view/AgentProbeInfoPopover.tsx
25355
- import { Info as Info2 } from "lucide-react";
25861
+ import { Info as Info3 } from "lucide-react";
25356
25862
  import {
25357
25863
  useCallback as useCallback12,
25358
25864
  useEffect as useEffect13,
@@ -25361,7 +25867,7 @@ import {
25361
25867
  useState as useState13
25362
25868
  } from "react";
25363
25869
  import { createPortal as createPortal4 } from "react-dom";
25364
- import { Fragment as Fragment9, jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
25870
+ import { Fragment as Fragment9, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
25365
25871
  var POPOVER_MIN_VIEWPORT_INSET_PX = 16;
25366
25872
  var POPOVER_DEFAULT_WIDTH_PX = 260;
25367
25873
  function dockAgentProbeLineKey(line) {
@@ -25375,7 +25881,7 @@ function renderDockAgentProbeLine(line) {
25375
25881
  line.primary,
25376
25882
  line.secondary ? /* @__PURE__ */ jsxs18(Fragment9, { children: [
25377
25883
  " ",
25378
- /* @__PURE__ */ jsx30("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
25884
+ /* @__PURE__ */ jsx31("span", { className: "desktop-dock-popup__agent-status-secondary", children: line.secondary })
25379
25885
  ] }) : null
25380
25886
  ] });
25381
25887
  }
@@ -25452,7 +25958,7 @@ function AgentProbeInfoPopover({
25452
25958
  if (lines.length === 0) {
25453
25959
  return null;
25454
25960
  }
25455
- const popover = /* @__PURE__ */ jsx30(
25961
+ const popover = /* @__PURE__ */ jsx31(
25456
25962
  "div",
25457
25963
  {
25458
25964
  ref: popoverRef,
@@ -25461,7 +25967,7 @@ function AgentProbeInfoPopover({
25461
25967
  style: popoverStyle ?? void 0,
25462
25968
  onMouseEnter: () => setIsOpen(true),
25463
25969
  onMouseLeave: closeIfPointerLeavesPopover,
25464
- children: /* @__PURE__ */ jsx30("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
25970
+ children: /* @__PURE__ */ jsx31("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
25465
25971
  const label = getDockAgentProbeLineLabel(line);
25466
25972
  const valueText = formatDockAgentProbeLineText(line);
25467
25973
  return /* @__PURE__ */ jsxs18(
@@ -25470,8 +25976,8 @@ function AgentProbeInfoPopover({
25470
25976
  className: "desktop-dock-popup__agent-info-item",
25471
25977
  "data-has-label": label ? "true" : "false",
25472
25978
  children: [
25473
- label ? /* @__PURE__ */ jsx30("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
25474
- /* @__PURE__ */ jsx30(
25979
+ label ? /* @__PURE__ */ jsx31("span", { className: "desktop-dock-popup__agent-info-label", children: label }) : null,
25980
+ /* @__PURE__ */ jsx31(
25475
25981
  "span",
25476
25982
  {
25477
25983
  className: "desktop-dock-popup__agent-info-value",
@@ -25506,7 +26012,7 @@ function AgentProbeInfoPopover({
25506
26012
  },
25507
26013
  onBlur: () => setIsOpen(false),
25508
26014
  children: [
25509
- /* @__PURE__ */ jsx30(Info2, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
26015
+ /* @__PURE__ */ jsx31(Info3, { size: 15, strokeWidth: 2.1, "aria-hidden": "true" }),
25510
26016
  isOpen ? createPortal4(popover, document.body) : null
25511
26017
  ]
25512
26018
  }
@@ -25649,7 +26155,7 @@ function getAgentHostManagedToolchainAgentByName(name) {
25649
26155
  }
25650
26156
 
25651
26157
  // agent-gui/agentGuiNode/AgentGUINode.tsx
25652
- import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
26158
+ import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
25653
26159
  var workspaceFileReferenceLocaleKeyByPickerKey = {
25654
26160
  "actions.cancel": "common.cancel",
25655
26161
  "referencePicker.confirm": "agentHost.agentGui.referencePicker.confirm",
@@ -26254,6 +26760,21 @@ var AgentGUINode = memo2(function AgentGUINode2({
26254
26760
  batchDeleteProjectSessionsConfirm: t(
26255
26761
  "agentHost.agentGui.batchDeleteProjectSessionsConfirm"
26256
26762
  ),
26763
+ conversationsSectionMoreActions: t(
26764
+ "agentHost.agentGui.conversationsSectionMoreActions"
26765
+ ),
26766
+ batchDeleteConversations: t(
26767
+ "agentHost.agentGui.batchDeleteConversations"
26768
+ ),
26769
+ batchDeleteConversationsTitle: t(
26770
+ "agentHost.agentGui.batchDeleteConversationsTitle"
26771
+ ),
26772
+ batchDeleteConversationsBody: (count) => t("agentHost.agentGui.batchDeleteConversationsBody", {
26773
+ count
26774
+ }),
26775
+ batchDeleteConversationsConfirm: t(
26776
+ "agentHost.agentGui.batchDeleteConversationsConfirm"
26777
+ ),
26257
26778
  approvalRequired: t("agentHost.agentGui.approvalRequired", {
26258
26779
  provider: displayProviderLabel
26259
26780
  }),
@@ -26411,6 +26932,42 @@ var AgentGUINode = memo2(function AgentGUINode2({
26411
26932
  "agentHost.agentGui.slashPaletteConnectorsGroup"
26412
26933
  ),
26413
26934
  slashPaletteMcpGroup: t("agentHost.agentGui.slashPaletteMcpGroup"),
26935
+ slashCommandCompactLabel: t("agentHost.agentGui.slashCommandCompactLabel"),
26936
+ slashCommandContextLabel: t("agentHost.agentGui.slashCommandContextLabel"),
26937
+ slashCommandFastLabel: t("agentHost.agentGui.slashCommandFastLabel"),
26938
+ slashCommandGoalLabel: t("agentHost.agentGui.slashCommandGoalLabel"),
26939
+ slashCommandInitLabel: t("agentHost.agentGui.slashCommandInitLabel"),
26940
+ slashCommandPlanLabel: t("agentHost.agentGui.slashCommandPlanLabel"),
26941
+ slashCommandReviewLabel: t("agentHost.agentGui.slashCommandReviewLabel"),
26942
+ slashCommandStatusLabel: t("agentHost.agentGui.slashCommandStatusLabel"),
26943
+ slashCommandUsageLabel: t("agentHost.agentGui.slashCommandUsageLabel"),
26944
+ slashCommandCompactDescription: t(
26945
+ "agentHost.agentGui.slashCommandCompactDescription"
26946
+ ),
26947
+ slashCommandContextDescription: t(
26948
+ "agentHost.agentGui.slashCommandContextDescription"
26949
+ ),
26950
+ slashCommandFastDescription: t(
26951
+ "agentHost.agentGui.slashCommandFastDescription"
26952
+ ),
26953
+ slashCommandGoalDescription: t(
26954
+ "agentHost.agentGui.slashCommandGoalDescription"
26955
+ ),
26956
+ slashCommandInitDescription: t(
26957
+ "agentHost.agentGui.slashCommandInitDescription"
26958
+ ),
26959
+ slashCommandPlanDescription: t(
26960
+ "agentHost.agentGui.slashCommandPlanDescription"
26961
+ ),
26962
+ slashCommandReviewDescription: t(
26963
+ "agentHost.agentGui.slashCommandReviewDescription"
26964
+ ),
26965
+ slashCommandStatusDescription: t(
26966
+ "agentHost.agentGui.slashCommandStatusDescription"
26967
+ ),
26968
+ slashCommandUsageDescription: t(
26969
+ "agentHost.agentGui.slashCommandUsageDescription"
26970
+ ),
26414
26971
  browserUseCapabilityLabel: t(
26415
26972
  "agentHost.agentGui.browserUseCapabilityLabel"
26416
26973
  ),
@@ -26575,13 +27132,13 @@ var AgentGUINode = memo2(function AgentGUINode2({
26575
27132
  onAgentProbeDemandChange(null, probeSourceId);
26576
27133
  };
26577
27134
  }, [activeProbeProvider, nodeId, onAgentProbeDemandChange, previewMode]);
26578
- return /* @__PURE__ */ jsx31(
27135
+ return /* @__PURE__ */ jsx32(
26579
27136
  WorkspaceNodeWindow,
26580
27137
  {
26581
27138
  nodeId,
26582
27139
  kind: "agentGui",
26583
27140
  title: windowTitle,
26584
- titleIcon: windowTitleIconUrl ? /* @__PURE__ */ jsx31(
27141
+ titleIcon: windowTitleIconUrl ? /* @__PURE__ */ jsx32(
26585
27142
  "img",
26586
27143
  {
26587
27144
  src: windowTitleIconUrl,
@@ -26602,7 +27159,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
26602
27159
  bodyClassName: `${AgentGUINode_styles_default.shell} nodrag size-full min-h-0 min-w-0 !bg-transparent p-0`,
26603
27160
  hideHeader: embedded,
26604
27161
  titleAccessory: /* @__PURE__ */ jsxs19("span", { className: "inline-flex flex-none items-center gap-1", children: [
26605
- /* @__PURE__ */ jsx31(
27162
+ /* @__PURE__ */ jsx32(
26606
27163
  AgentProbeInfoPopover,
26607
27164
  {
26608
27165
  lines: agentProbeLines,
@@ -26610,7 +27167,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
26610
27167
  className: AgentGUINode_styles_default.windowAgentInfo
26611
27168
  }
26612
27169
  ),
26613
- /* @__PURE__ */ jsx31(
27170
+ /* @__PURE__ */ jsx32(
26614
27171
  CanvasNodeGhostIconButton,
26615
27172
  {
26616
27173
  "aria-label": isConversationRailCollapsed ? t("agentHost.agentGui.expandConversationRail") : t("agentHost.agentGui.collapseConversationRail"),
@@ -26622,7 +27179,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
26622
27179
  event.stopPropagation();
26623
27180
  handleConversationRailToggle();
26624
27181
  },
26625
- children: /* @__PURE__ */ jsx31(
27182
+ children: /* @__PURE__ */ jsx32(
26626
27183
  CanvasNodePanelLinedIcon,
26627
27184
  {
26628
27185
  width: 18,
@@ -26643,7 +27200,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
26643
27200
  children: (renderFrame) => {
26644
27201
  const renderedWidth = renderFrame.size.width;
26645
27202
  const isRenderedConversationRailCollapsed = isConversationRailCollapsed || shouldAutoCollapseAgentGUIConversationRail(renderedWidth);
26646
- return /* @__PURE__ */ jsx31(
27203
+ return /* @__PURE__ */ jsx32(
26647
27204
  AgentGUINodeView,
26648
27205
  {
26649
27206
  viewModel,
@@ -26693,7 +27250,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
26693
27250
  }, areAgentGUINodePropsEqual);
26694
27251
 
26695
27252
  // AgentGUI.tsx
26696
- import { jsx as jsx32 } from "react/jsx-runtime";
27253
+ import { jsx as jsx33 } from "react/jsx-runtime";
26697
27254
  var AgentGUI = memo3(function AgentGUI2({
26698
27255
  agentActivityRuntime,
26699
27256
  agentHostApi,
@@ -26701,15 +27258,15 @@ var AgentGUI = memo3(function AgentGUI2({
26701
27258
  locale,
26702
27259
  ...props
26703
27260
  }) {
26704
- const content = /* @__PURE__ */ jsx32(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx32(
27261
+ const content = /* @__PURE__ */ jsx33(AgentGuiI18nProvider, { runtime: i18n, locale, children: /* @__PURE__ */ jsx33(
26705
27262
  AgentActivityHostProvider,
26706
27263
  {
26707
27264
  agentActivityRuntime,
26708
27265
  agentHostApi,
26709
- children: /* @__PURE__ */ jsx32(AgentGUINode, { ...props })
27266
+ children: /* @__PURE__ */ jsx33(AgentGUINode, { ...props })
26710
27267
  }
26711
27268
  ) });
26712
- return props.previewMode ? content : /* @__PURE__ */ jsx32(TooltipProvider3, { delayDuration: 120, skipDelayDuration: 0, children: content });
27269
+ return props.previewMode ? content : /* @__PURE__ */ jsx33(TooltipProvider3, { delayDuration: 120, skipDelayDuration: 0, children: content });
26713
27270
  });
26714
27271
 
26715
27272
  // index.ts