@tutti-os/agent-gui 0.0.120 → 0.0.121

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.
package/README.md CHANGED
@@ -160,6 +160,7 @@ export interface AgentGUIAgent {
160
160
  name?: string | null;
161
161
  avatarUrl?: string | null;
162
162
  } | null;
163
+ ownership?: "self" | "shared" | null;
163
164
  availability: {
164
165
  status:
165
166
  | "ready"
@@ -190,6 +191,9 @@ Agent names, primary icons, and optional home-carousel artwork come from
190
191
  `owner.avatarUrl` is rendered separately as an ownership badge. Invalid entries
191
192
  and duplicate `agentTargetId` values are discarded by
192
193
  `normalizeAgentGUIAgents`, with the first occurrence preserving host order.
194
+ Hosts set `agents[].ownership` to `"self"` or `"shared"` from their authoritative
195
+ directory or launch reference. Owner name and avatar are presentation metadata
196
+ and do not determine ownership.
193
197
 
194
198
  With one agent, AgentGUI hides the aggregate `All` entry and renders that agent
195
199
  directly. With multiple agents, it shows `All` plus the host-ordered agent rail
@@ -232,9 +236,11 @@ Hosts that launch handoffs across session-runtime boundaries may also pass
232
236
  Handoff menu; the conversation rail, session queries, and empty composer remain
233
237
  owned by `agentDirectory`. When omitted, Handoff uses `agentDirectory`. Handoff
234
238
  rows keep the Agent name as the primary identity and render ownership separately:
235
- entries without owner presentation are labeled as the current user's Agent,
236
- while entries with `owner.name` or `owner.avatarUrl` are labeled as shared and
237
- show the available owner identity.
239
+ entries with `ownership: "self"` are labeled as the current user's Agent, while
240
+ entries with `ownership: "shared"` are labeled as shared and show the available
241
+ owner identity. Entries without explicit ownership remain unclassified; AgentGUI
242
+ does not infer ownership from `owner.name`, `owner.avatarUrl`, or other
243
+ presentation metadata.
238
244
 
239
245
  The old public `providerTargets`, `providerRailMode`, provider-target renderers,
240
246
  and `defaultProviderTargetId` contract is intentionally unsupported. Workbench
@@ -2,9 +2,9 @@ import * as react from 'react';
2
2
  import { PropsWithChildren, JSX, HTMLAttributes, ReactNode } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core';
5
- import { u as AgentHostAgentSessionComposerSettings, y as AgentHostUnactivateAgentSessionResult, h as AgentGUIAgentTarget, n as AgentGUIProvider, z as AgentPromptContentBlock, m as AgentGUINodeData, P as Point, o as AgentGUIProviderRailAllPresentation, p as AgentGUIProviderRailMode, q as AgentGUIProviderReadinessGate, l as AgentGUIHomeSuggestionId, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, k as AgentGUIAllAgentsPresentation } from './types-COIp0SYP.js';
5
+ import { v as AgentHostAgentSessionComposerSettings, z as AgentHostUnactivateAgentSessionResult, i as AgentGUIAgentTarget, o as AgentGUIProvider, B as AgentPromptContentBlock, n as AgentGUINodeData, P as Point, p as AgentGUIProviderRailAllPresentation, q as AgentGUIProviderRailMode, r as AgentGUIProviderReadinessGate, m as AgentGUIHomeSuggestionId, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, l as AgentGUIAllAgentsPresentation } from './types-BicfRVrV.js';
6
6
  import { WorkspaceQueryCache } from './workspace-query-cache.js';
7
- import { A as AgentComposerDraft, u as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, p as AgentMessageMarkdownWorkspaceAppIcon, v as AgentSlashCommandCapability, c as AgentGUINodeViewModel, r as AgentProbeSnapshot, a as AgentComposerDraftFile, m as AgentHostInputApi } from './agentGuiNodeTypes-D3rwGeMS.js';
7
+ import { A as AgentComposerDraft, u as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, p as AgentMessageMarkdownWorkspaceAppIcon, v as AgentSlashCommandCapability, c as AgentGUINodeViewModel, r as AgentProbeSnapshot, a as AgentComposerDraftFile, m as AgentHostInputApi } from './agentGuiNodeTypes-DedIWrEI.js';
8
8
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
9
9
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-DY4Z70CN.js';
10
10
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
@@ -2,11 +2,11 @@ import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { c as AgentConversationVM, e as WorkspaceLinkAction, d as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BD0-gg6C.js';
4
4
  export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BD0-gg6C.js';
5
- import { d as AgentGUIProviderSkillOption, p as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-D3rwGeMS.js';
5
+ import { d as AgentGUIProviderSkillOption, p as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DedIWrEI.js';
6
6
  export { W as WorkspaceAgentActivityCard } from '../workspaceAgentActivityListTypes-DZfS_HgG.js';
7
7
  import '@tutti-os/workspace-issue-manager/core';
8
8
  import '@tutti-os/agent-activity-core';
9
- import '../types-COIp0SYP.js';
9
+ import '../types-BicfRVrV.js';
10
10
  import '@tutti-os/workspace-user-project/contracts';
11
11
  import '../pastedTextKinds-D-XuInaS.js';
12
12
 
@@ -1,8 +1,8 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-CyBTKkac.js';
4
- import './agentGuiNodeTypes-D3rwGeMS.js';
5
- export { l as AgentGUIHomeSuggestionId } from './types-COIp0SYP.js';
3
+ export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-D-Ktaq3h.js';
4
+ import './agentGuiNodeTypes-DedIWrEI.js';
5
+ export { m as AgentGUIHomeSuggestionId } from './types-BicfRVrV.js';
6
6
  import './runtime-BBNdWgDU.js';
7
7
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  import '@tutti-os/agent-activity-core';
package/dist/agent-gui.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-XKWMF7FA.js";
3
+ } from "./chunk-UXHMICBV.js";
4
4
  import "./chunk-A4WCTHWS.js";
5
- import "./chunk-RCGW3TMB.js";
5
+ import "./chunk-HUTNLVPK.js";
6
6
  import "./chunk-TUWQV2MC.js";
7
7
  import "./chunk-MHOYBRCY.js";
8
- import "./chunk-CV5OJIU2.js";
8
+ import "./chunk-RN7DI3Y2.js";
9
9
  import "./chunk-5HIF53K5.js";
10
10
  import "./chunk-R2ZADXRB.js";
11
11
  import "./chunk-IFAS3RD4.js";
@@ -13,7 +13,7 @@ import "./chunk-AAWKGMN6.js";
13
13
  import "./chunk-VMQNG2KI.js";
14
14
  import "./chunk-UP3ZDYTN.js";
15
15
  import "./chunk-LGLNCL6D.js";
16
- import "./chunk-UV3UQAS2.js";
16
+ import "./chunk-T2NICA5D.js";
17
17
  import "./chunk-FGLQZ6I4.js";
18
18
  import "./chunk-L2GENUG3.js";
19
19
  import "./chunk-53PHARWE.js";
@@ -1,5 +1,5 @@
1
1
  import { AgentActivitySession, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession } from '@tutti-os/agent-activity-core';
2
- import { t as AgentHostAgentSessionCommand, u as AgentHostAgentSessionComposerSettings, w as AgentHostAgentSessionReasoningEffort, x as AgentHostAgentSessionSpeed, v as AgentHostAgentSessionPermissionConfig, n as AgentGUIProvider, z as AgentPromptContentBlock, m as AgentGUINodeData, h as AgentGUIAgentTarget, p as AgentGUIProviderRailMode, q as AgentGUIProviderReadinessGate } from './types-COIp0SYP.js';
2
+ import { u as AgentHostAgentSessionCommand, v as AgentHostAgentSessionComposerSettings, x as AgentHostAgentSessionReasoningEffort, y as AgentHostAgentSessionSpeed, w as AgentHostAgentSessionPermissionConfig, o as AgentGUIProvider, B as AgentPromptContentBlock, n as AgentGUINodeData, i as AgentGUIAgentTarget, q as AgentGUIProviderRailMode, r as AgentGUIProviderReadinessGate } from './types-BicfRVrV.js';
3
3
  import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, d as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BD0-gg6C.js';
4
4
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
5
5
  import { A as AGENT_PASTED_TEXT_BLOCK_KIND } from './pastedTextKinds-D-XuInaS.js';
package/dist/agents.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AgentGUIAgent, h as AgentGUIAgentTarget } from './types-COIp0SYP.js';
1
+ import { A as AgentGUIAgent, i as AgentGUIAgentTarget } from './types-BicfRVrV.js';
2
2
 
3
3
  declare function normalizeAgentGUIAgents(agents: readonly AgentGUIAgent[] | null | undefined): AgentGUIAgent[];
4
4
  declare function agentGUIAgentIsReady(agent: AgentGUIAgent): boolean;
package/dist/agents.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  normalizeAgentGUIAgents,
4
4
  projectAgentGUIAgentsToInternalTargets,
5
5
  resolveAgentGUISelectedDirectoryAgent
6
- } from "./chunk-UV3UQAS2.js";
6
+ } from "./chunk-T2NICA5D.js";
7
7
  export {
8
8
  agentGUIAgentIsReady,
9
9
  normalizeAgentGUIAgents,
@@ -9,7 +9,7 @@ import {
9
9
  resolveAgentGUIConversationTitleDisplayPrompt,
10
10
  resolveAgentGuiWorkbenchHeaderTitle,
11
11
  resolveAgentGuiWorkbenchSessionTitle
12
- } from "./chunk-CV5OJIU2.js";
12
+ } from "./chunk-RN7DI3Y2.js";
13
13
  import {
14
14
  createAgentGuiWorkbenchNodeStateSource,
15
15
  migrateLegacyAgentGuiWorkbenchState,
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  normalizeAgentGUIAgents,
26
26
  projectAgentGUIAgentsToInternalTargets
27
- } from "./chunk-UV3UQAS2.js";
27
+ } from "./chunk-T2NICA5D.js";
28
28
  import {
29
29
  agentGuiDockIconUrls
30
30
  } from "./chunk-L2GENUG3.js";
@@ -1482,4 +1482,4 @@ export {
1482
1482
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
1483
1483
  createAgentGuiWorkbenchContribution
1484
1484
  };
1485
- //# sourceMappingURL=chunk-RCGW3TMB.js.map
1485
+ //# sourceMappingURL=chunk-HUTNLVPK.js.map
@@ -368,7 +368,6 @@ export {
368
368
  resolveAgentGUIConversationTitleDisplayPrompt,
369
369
  resolveAgentGUIConversationBrowserFreeTitle,
370
370
  resolveAgentGUIConversationTitleLeadingMentionKind,
371
- isAgentGUIConversationTitleIconMentionKind,
372
371
  resolveAgentGUIFirstUserMessageDisplayPrompt,
373
372
  resolveAgentGUIConversationDisplayTitle,
374
373
  resolveAgentGUIExplicitConversationTitle,
@@ -376,4 +375,4 @@ export {
376
375
  resolveAgentGuiWorkbenchHeaderTitle,
377
376
  resolveAgentGuiWorkbenchSessionTitle
378
377
  };
379
- //# sourceMappingURL=chunk-CV5OJIU2.js.map
378
+ //# sourceMappingURL=chunk-RN7DI3Y2.js.map
@@ -26,6 +26,7 @@ function normalizeAgentGUIAgents(agents) {
26
26
  ...ownerAvatarUrl ? { avatarUrl: ownerAvatarUrl } : {}
27
27
  }
28
28
  } : {},
29
+ ...agent.ownership === "self" || agent.ownership === "shared" ? { ownership: agent.ownership } : {},
29
30
  availability: {
30
31
  status: normalizeAgentGUIAgentAvailabilityStatus(
31
32
  agent.availability.status
@@ -74,6 +75,7 @@ function projectAgentGUIAgentsToInternalTargets(agents) {
74
75
  }
75
76
  } : {},
76
77
  ...agent.owner?.name ? { ownerLabel: agent.owner.name } : {},
78
+ ...agent.ownership ? { ownership: agent.ownership } : {},
77
79
  ...agent.availability.status !== "ready" && !agent.setupKind ? { disabled: true } : {},
78
80
  ...agent.availability.reason ? { unavailableReason: agent.availability.reason } : {}
79
81
  }));
@@ -96,4 +98,4 @@ export {
96
98
  resolveAgentGUISelectedDirectoryAgent,
97
99
  projectAgentGUIAgentsToInternalTargets
98
100
  };
99
- //# sourceMappingURL=chunk-UV3UQAS2.js.map
101
+ //# sourceMappingURL=chunk-T2NICA5D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../agents.ts"],"sourcesContent":["import type {\n AgentGUIAgent,\n AgentGUIAgentAvailabilityStatus,\n AgentGUIAgentTarget\n} from \"./types.ts\";\n\nexport function normalizeAgentGUIAgents(\n agents: readonly AgentGUIAgent[] | null | undefined\n): AgentGUIAgent[] {\n const normalized: AgentGUIAgent[] = [];\n const seenAgentTargetIds = new Set<string>();\n for (const agent of agents ?? []) {\n const agentTargetId = agent.agentTargetId.trim();\n const name = agent.name.trim();\n const iconUrl = agent.iconUrl.trim();\n const heroImageUrl = agent.heroImageUrl?.trim() ?? \"\";\n if (\n !agentTargetId ||\n !name ||\n !iconUrl ||\n seenAgentTargetIds.has(agentTargetId)\n ) {\n continue;\n }\n seenAgentTargetIds.add(agentTargetId);\n const ownerName = agent.owner?.name?.trim() ?? \"\";\n const ownerAvatarUrl = agent.owner?.avatarUrl?.trim() ?? \"\";\n const reason = agent.availability.reason?.trim() ?? \"\";\n normalized.push({\n agentTargetId,\n name,\n iconUrl,\n ...(heroImageUrl ? { heroImageUrl } : {}),\n ...(agent.description?.trim()\n ? { description: agent.description.trim() }\n : {}),\n ...(ownerName || ownerAvatarUrl\n ? {\n owner: {\n ...(ownerName ? { name: ownerName } : {}),\n ...(ownerAvatarUrl ? { avatarUrl: ownerAvatarUrl } : {})\n }\n }\n : {}),\n ...(agent.ownership === \"self\" || agent.ownership === \"shared\"\n ? { ownership: agent.ownership }\n : {}),\n availability: {\n status: normalizeAgentGUIAgentAvailabilityStatus(\n agent.availability.status\n ),\n ...(reason ? { reason } : {}),\n ...(agent.availability.pendingAction\n ? { pendingAction: agent.availability.pendingAction }\n : {})\n },\n provider: agent.provider,\n ...(agent.setupKind === \"target_runtime\"\n ? { setupKind: \"target_runtime\" as const }\n : {})\n });\n }\n return normalized;\n}\n\nexport function agentGUIAgentIsReady(agent: AgentGUIAgent): boolean {\n return agent.availability.status === \"ready\";\n}\n\nexport function resolveAgentGUISelectedDirectoryAgent(input: {\n agents: readonly AgentGUIAgent[];\n agentTargetId?: string | null;\n defaultAgentTargetId?: string | null;\n}): AgentGUIAgent | null {\n const explicitAgentTargetId =\n input.agentTargetId?.trim() || input.defaultAgentTargetId?.trim() || \"\";\n if (explicitAgentTargetId) {\n return (\n input.agents.find(\n (agent) => agent.agentTargetId === explicitAgentTargetId\n ) ?? null\n );\n }\n return (\n input.agents.find((agent) => agentGUIAgentIsReady(agent)) ??\n input.agents[0] ??\n null\n );\n}\n\n/** Package-internal bridge while the carried node is migrated to agent names. */\nexport function projectAgentGUIAgentsToInternalTargets(\n agents: readonly AgentGUIAgent[]\n): AgentGUIAgentTarget[] {\n return agents.map((agent) => ({\n targetId: agent.agentTargetId,\n agentTargetId: agent.agentTargetId,\n provider: agent.provider,\n ref: {\n kind: \"agent-directory\",\n provider: agent.provider,\n agentTargetId: agent.agentTargetId,\n ...(agent.setupKind ? { setupKind: agent.setupKind } : {})\n },\n label: agent.name,\n availability: agent.availability,\n ...(agent.description ? { description: agent.description } : {}),\n iconUrl: agent.iconUrl,\n ...(agent.heroImageUrl ? { heroImageUrl: agent.heroImageUrl } : {}),\n ...(agent.owner?.avatarUrl\n ? {\n badge: {\n iconUrl: agent.owner.avatarUrl,\n ...(agent.owner.name ? { label: agent.owner.name } : {})\n }\n }\n : {}),\n ...(agent.owner?.name ? { ownerLabel: agent.owner.name } : {}),\n ...(agent.ownership ? { ownership: agent.ownership } : {}),\n ...(agent.availability.status !== \"ready\" && !agent.setupKind\n ? { disabled: true }\n : {}),\n ...(agent.availability.reason\n ? { unavailableReason: agent.availability.reason }\n : {})\n }));\n}\n\nfunction normalizeAgentGUIAgentAvailabilityStatus(\n status: AgentGUIAgentAvailabilityStatus\n): AgentGUIAgentAvailabilityStatus {\n switch (status) {\n case \"ready\":\n case \"checking\":\n case \"coming_soon\":\n case \"not_installed\":\n case \"auth_required\":\n case \"unavailable\":\n return status;\n }\n}\n"],"mappings":"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","names":[]}
@@ -12,12 +12,11 @@ import {
12
12
  resolveAgentGuiSessionProviderFlatIconUrl,
13
13
  resolveNextAgentGUIConversationRailWidthPx,
14
14
  shouldAutoCollapseAgentGUIConversationRail
15
- } from "./chunk-RCGW3TMB.js";
15
+ } from "./chunk-HUTNLVPK.js";
16
16
  import {
17
17
  AGENT_PROVIDERS,
18
18
  AGENT_PROVIDER_LABEL,
19
19
  deriveAgentGUIOptimisticConversationTitle,
20
- isAgentGUIConversationTitleIconMentionKind,
21
20
  isAgentGUIProviderUnresolved,
22
21
  normalizeAgentGUIProviderIdentity,
23
22
  resolveAgentGUIConversationBrowserFreeTitle,
@@ -29,7 +28,7 @@ import {
29
28
  resolveAgentGUIFirstUserMessageDisplayPrompt,
30
29
  resolveAgentGUIProviderDisplayLabel,
31
30
  resolveAgentGUIProviderIdentity
32
- } from "./chunk-CV5OJIU2.js";
31
+ } from "./chunk-RN7DI3Y2.js";
33
32
  import {
34
33
  resolveAgentGuiWorkbenchProviderLabel
35
34
  } from "./chunk-R2ZADXRB.js";
@@ -90,7 +89,7 @@ import {
90
89
  import {
91
90
  normalizeAgentGUIAgents,
92
91
  projectAgentGUIAgentsToInternalTargets
93
- } from "./chunk-UV3UQAS2.js";
92
+ } from "./chunk-T2NICA5D.js";
94
93
  import {
95
94
  AGENT_MENTION_FILTER_TAB_ORDER,
96
95
  AgentMentionSearchController,
@@ -23600,11 +23599,13 @@ var bold_lined_default = 'data:image/svg+xml,<svg width="24" height="24" viewBox
23600
23599
  // agent-gui/agentGuiNode/composer/handoffTargetPresentation.ts
23601
23600
  function resolveHandoffTargetOwnershipLabel(target, labels) {
23602
23601
  const ownerLabel = target.ownerLabel?.trim() ?? "";
23603
- const isShared = ownerLabel.length > 0 || target.badge != null;
23604
- if (!isShared) {
23602
+ if (target.ownership === "self") {
23605
23603
  return labels.self;
23606
23604
  }
23607
- return ownerLabel ? `${ownerLabel} \xB7 ${labels.shared}` : labels.shared;
23605
+ if (target.ownership === "shared") {
23606
+ return ownerLabel ? `${ownerLabel} \xB7 ${labels.shared}` : labels.shared;
23607
+ }
23608
+ return null;
23608
23609
  }
23609
23610
 
23610
23611
  // agent-gui/agentGuiNode/composer/ComposerFooter.tsx
@@ -23808,44 +23809,50 @@ function ComposerFooter({
23808
23809
  "min-w-[190px]"
23809
23810
  ),
23810
23811
  "aria-label": effectiveHandoffMenuLabel,
23811
- children: handoffMenuTargets.map((target) => /* @__PURE__ */ jsx35(
23812
- SelectItem2,
23813
- {
23814
- value: target.targetId,
23815
- className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2 py-1.5"),
23816
- disabled: target.disabled === true,
23817
- children: /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 items-center gap-2", children: [
23818
- /* @__PURE__ */ jsxs25("span", { className: "relative size-5 shrink-0", children: [
23819
- /* @__PURE__ */ jsx35(
23820
- "img",
23821
- {
23822
- alt: "",
23823
- "aria-hidden": "true",
23824
- className: "size-5 rounded-[4px]",
23825
- src: resolveComposerProviderTargetIconUrl(target)
23826
- }
23827
- ),
23828
- target.badge?.iconUrl ? /* @__PURE__ */ jsx35(
23829
- "img",
23830
- {
23831
- alt: "",
23832
- "aria-hidden": "true",
23833
- className: "absolute -bottom-0.5 -right-0.5 size-2.5 rounded-full border border-[var(--background-fronted)] bg-[var(--background-fronted)] object-cover",
23834
- src: target.badge.iconUrl
23835
- }
23836
- ) : null
23837
- ] }),
23838
- /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-col gap-0.5", children: [
23839
- /* @__PURE__ */ jsx35("span", { className: "min-w-0 truncate", children: target.label }),
23840
- /* @__PURE__ */ jsx35("span", { className: "min-w-0 truncate text-[11px] leading-none text-[var(--agent-gui-text-secondary)]", children: resolveHandoffTargetOwnershipLabel(target, {
23841
- self: labels.handoffTargetSelf,
23842
- shared: labels.handoffTargetShared
23843
- }) })
23812
+ children: handoffMenuTargets.map((target) => {
23813
+ const ownershipLabel = resolveHandoffTargetOwnershipLabel(
23814
+ target,
23815
+ {
23816
+ self: labels.handoffTargetSelf,
23817
+ shared: labels.handoffTargetShared
23818
+ }
23819
+ );
23820
+ return /* @__PURE__ */ jsx35(
23821
+ SelectItem2,
23822
+ {
23823
+ value: target.targetId,
23824
+ className: cn(AgentGUINode_styles_default.composerMenuItem, "gap-2 py-1.5"),
23825
+ disabled: target.disabled === true,
23826
+ children: /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 items-center gap-2", children: [
23827
+ /* @__PURE__ */ jsxs25("span", { className: "relative size-5 shrink-0", children: [
23828
+ /* @__PURE__ */ jsx35(
23829
+ "img",
23830
+ {
23831
+ alt: "",
23832
+ "aria-hidden": "true",
23833
+ className: "size-5 rounded-[4px]",
23834
+ src: resolveComposerProviderTargetIconUrl(target)
23835
+ }
23836
+ ),
23837
+ target.badge?.iconUrl ? /* @__PURE__ */ jsx35(
23838
+ "img",
23839
+ {
23840
+ alt: "",
23841
+ "aria-hidden": "true",
23842
+ className: "absolute -bottom-0.5 -right-0.5 size-2.5 rounded-full border border-[var(--background-fronted)] bg-[var(--background-fronted)] object-cover",
23843
+ src: target.badge.iconUrl
23844
+ }
23845
+ ) : null
23846
+ ] }),
23847
+ /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-col gap-0.5", children: [
23848
+ /* @__PURE__ */ jsx35("span", { className: "min-w-0 truncate", children: target.label }),
23849
+ ownershipLabel ? /* @__PURE__ */ jsx35("span", { className: "min-w-0 truncate text-[11px] leading-none text-[var(--agent-gui-text-secondary)]", children: ownershipLabel }) : null
23850
+ ] })
23844
23851
  ] })
23845
- ] })
23846
- },
23847
- `${target.provider}:${target.targetId}`
23848
- ))
23852
+ },
23853
+ `${target.provider}:${target.targetId}`
23854
+ );
23855
+ })
23849
23856
  }
23850
23857
  )
23851
23858
  ]
@@ -28537,7 +28544,6 @@ import {
28537
28544
  ContextMenuContent,
28538
28545
  ContextMenuItem,
28539
28546
  ContextMenuTrigger,
28540
- FileIcon,
28541
28547
  IssueIcon,
28542
28548
  NewWorkspaceLinedIcon as NewWorkspaceLinedIcon2,
28543
28549
  cn as cn6
@@ -28738,9 +28744,7 @@ function agentGUIConversationIconUrl(provider, agentTargetId, workspaceId, agent
28738
28744
  }
28739
28745
  function agentGUIConversationRailTitle(item, labels, uiLanguage) {
28740
28746
  const title = conversationPlainTitle(item, labels, uiLanguage);
28741
- return isAgentGUIConversationTitleIconMentionKind(
28742
- item.titleLeadingMentionKind
28743
- ) ? title.replace(/^@\s*/, "") : title;
28747
+ return item.titleLeadingMentionKind === "task" ? title.replace(/^@\s*/, "") : title;
28744
28748
  }
28745
28749
  var AgentGUIConversationRailItem = memo5(
28746
28750
  function AgentGUIConversationRailItem2({
@@ -28931,20 +28935,13 @@ var AgentGUIConversationRailItem = memo5(
28931
28935
  }
28932
28936
  }
28933
28937
  ) : null,
28934
- isAgentGUIConversationTitleIconMentionKind(
28935
- item.titleLeadingMentionKind
28936
- ) ? /* @__PURE__ */ jsx50(
28938
+ item.titleLeadingMentionKind === "task" ? /* @__PURE__ */ jsx50(
28937
28939
  "span",
28938
28940
  {
28939
28941
  "aria-hidden": "true",
28940
28942
  className: AgentGUINode_styles_default.conversationTitleMentionIcon,
28941
28943
  "data-agent-gui-conversation-title-mention-icon": item.titleLeadingMentionKind,
28942
- children: /* @__PURE__ */ jsx50(
28943
- ConversationTitleMentionIcon,
28944
- {
28945
- kind: item.titleLeadingMentionKind
28946
- }
28947
- )
28944
+ children: /* @__PURE__ */ jsx50(IssueIcon, {})
28948
28945
  }
28949
28946
  ) : null,
28950
28947
  /* @__PURE__ */ jsx50("span", { className: AgentGUINode_styles_default.conversationTitle, children: agentGUIConversationRailTitle(item, labels, uiLanguage) })
@@ -29101,12 +29098,6 @@ var AgentGUIConversationRailItem = memo5(
29101
29098
  ] }, contextMenuResetKey);
29102
29099
  }
29103
29100
  );
29104
- function ConversationTitleMentionIcon({
29105
- kind
29106
- }) {
29107
- if (kind === "task") return /* @__PURE__ */ jsx50(IssueIcon, {});
29108
- return /* @__PURE__ */ jsx50(FileIcon, {});
29109
- }
29110
29101
  function AgentGUIProjectRailHeader({
29111
29102
  disabled,
29112
29103
  labels,
@@ -36895,4 +36886,4 @@ export {
36895
36886
  resolveAgentGUIAgentTarget,
36896
36887
  AgentGUI
36897
36888
  };
36898
- //# sourceMappingURL=chunk-XKWMF7FA.js.map
36889
+ //# sourceMappingURL=chunk-UXHMICBV.js.map