@tutti-os/agent-gui 0.0.139 → 0.0.140

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 (67) hide show
  1. package/README.md +5 -7
  2. package/dist/{AgentRichTextReadonly-E5SBW7KJ.js → AgentRichTextReadonly-ITYHQCN5.js} +5 -5
  3. package/dist/agent-conversation/index.d.ts +2 -2
  4. package/dist/agent-conversation/index.js +8 -8
  5. package/dist/agent-gui.d.ts +11 -2
  6. package/dist/agent-gui.js +17 -17
  7. package/dist/agent-message-center/index.js +6 -6
  8. package/dist/{agentGuiNodeTypes-DV7KvZRe.d.ts → agentGuiNodeTypes-D3f1yiEL.d.ts} +15 -1
  9. package/dist/agents.d.ts +1 -1
  10. package/dist/agents.js +1 -1
  11. package/dist/app/renderer/agentactivity.css +64 -83
  12. package/dist/{chunk-5H5LUEBG.js → chunk-AVXN6UMO.js} +2 -2
  13. package/dist/{chunk-5WOCGIXJ.js → chunk-C4ACYHOY.js} +1 -4
  14. package/dist/chunk-C4ACYHOY.js.map +1 -0
  15. package/dist/{chunk-EU7DCT4F.js → chunk-D3VWQTDH.js} +2 -2
  16. package/dist/{chunk-R7AXDQCA.js → chunk-JDVP33S5.js} +6 -1
  17. package/dist/chunk-JDVP33S5.js.map +1 -0
  18. package/dist/{chunk-7QKKMJZS.js → chunk-MMEHSIWJ.js} +162 -12
  19. package/dist/chunk-MMEHSIWJ.js.map +1 -0
  20. package/dist/{chunk-IYZ4GOSN.js → chunk-MX2NPLCN.js} +4 -3
  21. package/dist/{chunk-IYZ4GOSN.js.map → chunk-MX2NPLCN.js.map} +1 -1
  22. package/dist/{chunk-25VMCMAQ.js → chunk-OEC2IIWG.js} +4 -4
  23. package/dist/{chunk-NFY5SSBS.js → chunk-ORPU3AJK.js} +2556 -1417
  24. package/dist/chunk-ORPU3AJK.js.map +1 -0
  25. package/dist/{chunk-GIYGO2PB.js → chunk-OWJ7Q2DJ.js} +2 -2
  26. package/dist/{chunk-3MHXBAYC.js → chunk-OXCHXPBD.js} +5 -5
  27. package/dist/{chunk-VGS7S7YT.js → chunk-Q2WMHYIB.js} +2 -2
  28. package/dist/{chunk-OFJNIQWR.js → chunk-RXOGBOK6.js} +2 -2
  29. package/dist/{chunk-OFJNIQWR.js.map → chunk-RXOGBOK6.js.map} +1 -1
  30. package/dist/{chunk-VUNVGEQG.js → chunk-S2D4NNEB.js} +49 -5
  31. package/dist/chunk-S2D4NNEB.js.map +1 -0
  32. package/dist/{chunk-USIFGHT3.js → chunk-VMPA46ET.js} +2 -2
  33. package/dist/{chunk-O5CSF2RC.js → chunk-WM63XUAL.js} +4 -4
  34. package/dist/{chunk-DBFHUUZ5.js → chunk-WUMJJOK6.js} +2 -2
  35. package/dist/{chunk-UARGXEXF.js → chunk-XUFVBZUT.js} +8 -11
  36. package/dist/chunk-XUFVBZUT.js.map +1 -0
  37. package/dist/context-mention-palette/index.js +9 -9
  38. package/dist/{contribution-CDdwTppn.d.ts → contribution-CC2DVyUV.d.ts} +28 -2
  39. package/dist/i18n/index.d.ts +74 -40
  40. package/dist/i18n/index.js +2 -2
  41. package/dist/index.d.ts +97 -43
  42. package/dist/index.js +17 -17
  43. package/dist/mention-search.js +7 -7
  44. package/dist/{types-ee3zJ6Cc.d.ts → types-DVmB_kyD.d.ts} +0 -2
  45. package/dist/workbench/contribution.d.ts +1 -1
  46. package/dist/workbench/contribution.js +10 -4
  47. package/dist/workbench/index.d.ts +6 -3
  48. package/dist/workbench/index.js +10 -4
  49. package/dist/workbench/sessionTitle.js +2 -2
  50. package/dist/workspace-agent-generated-files.js +2 -2
  51. package/package.json +13 -13
  52. package/dist/chunk-5WOCGIXJ.js.map +0 -1
  53. package/dist/chunk-7QKKMJZS.js.map +0 -1
  54. package/dist/chunk-NFY5SSBS.js.map +0 -1
  55. package/dist/chunk-R7AXDQCA.js.map +0 -1
  56. package/dist/chunk-UARGXEXF.js.map +0 -1
  57. package/dist/chunk-VUNVGEQG.js.map +0 -1
  58. /package/dist/{AgentRichTextReadonly-E5SBW7KJ.js.map → AgentRichTextReadonly-ITYHQCN5.js.map} +0 -0
  59. /package/dist/{chunk-5H5LUEBG.js.map → chunk-AVXN6UMO.js.map} +0 -0
  60. /package/dist/{chunk-EU7DCT4F.js.map → chunk-D3VWQTDH.js.map} +0 -0
  61. /package/dist/{chunk-25VMCMAQ.js.map → chunk-OEC2IIWG.js.map} +0 -0
  62. /package/dist/{chunk-GIYGO2PB.js.map → chunk-OWJ7Q2DJ.js.map} +0 -0
  63. /package/dist/{chunk-3MHXBAYC.js.map → chunk-OXCHXPBD.js.map} +0 -0
  64. /package/dist/{chunk-VGS7S7YT.js.map → chunk-Q2WMHYIB.js.map} +0 -0
  65. /package/dist/{chunk-USIFGHT3.js.map → chunk-VMPA46ET.js.map} +0 -0
  66. /package/dist/{chunk-O5CSF2RC.js.map → chunk-WM63XUAL.js.map} +0 -0
  67. /package/dist/{chunk-DBFHUUZ5.js.map → chunk-WUMJJOK6.js.map} +0 -0
package/README.md CHANGED
@@ -174,7 +174,7 @@ export interface AgentGUIAgent {
174
174
  agentTargetId: string;
175
175
  name: string;
176
176
  iconUrl: string;
177
- sidebarIconUrl?: string | null;
177
+ maskIconUrl?: string | null;
178
178
  heroImageUrl?: string | null;
179
179
  description?: string | null;
180
180
  owner?: {
@@ -207,12 +207,10 @@ Runnable provider targets are host-supplied. If the target catalog is absent,
207
207
  AgentGUI presents an explicit unavailable state; it does not synthesize local
208
208
  targets from presentation metadata.
209
209
 
210
- Agent names, primary icons, optional conversation-mask icons, optional
211
- rail-specific icons, and optional home-carousel artwork come from
212
- `agents[].name`, `agents[].iconUrl`, `agents[].maskIconUrl`,
213
- `agents[].sidebarIconUrl`, and `agents[].heroImageUrl`. Provider rail surfaces
214
- prefer `sidebarIconUrl`; conversation rows use `maskIconUrl` where present;
215
- other identity surfaces retain `iconUrl`.
210
+ Agent names, primary icons, optional conversation-mask icons, and optional
211
+ home-carousel artwork come from `agents[].name`, `agents[].iconUrl`,
212
+ `agents[].maskIconUrl`, and `agents[].heroImageUrl`. All identity surfaces use
213
+ `iconUrl`; conversation rows use `maskIconUrl` where present.
216
214
  `owner.avatarUrl` is rendered separately as an ownership badge. Invalid entries
217
215
  and duplicate `agentTargetId` values are discarded by
218
216
  `normalizeAgentGUIAgents`, with the first occurrence preserving host order.
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  AgentRichTextReadonly
3
- } from "./chunk-5H5LUEBG.js";
4
- import "./chunk-DBFHUUZ5.js";
3
+ } from "./chunk-AVXN6UMO.js";
4
+ import "./chunk-WUMJJOK6.js";
5
5
  import "./chunk-5QPOMKMQ.js";
6
6
  import "./chunk-FGLQZ6I4.js";
7
7
  import "./chunk-ZVYUTXQJ.js";
8
8
  import "./chunk-EDNJMG5T.js";
9
- import "./chunk-GIYGO2PB.js";
9
+ import "./chunk-OWJ7Q2DJ.js";
10
10
  import "./chunk-PJP5BUU6.js";
11
11
  import "./chunk-7KVZPJ3O.js";
12
- import "./chunk-VUNVGEQG.js";
12
+ import "./chunk-S2D4NNEB.js";
13
13
  import "./chunk-D2JUDUYY.js";
14
14
  import "./chunk-6CUELYIF.js";
15
15
  import "./chunk-QMMWKQOT.js";
16
16
  export {
17
17
  AgentRichTextReadonly
18
18
  };
19
- //# sourceMappingURL=AgentRichTextReadonly-E5SBW7KJ.js.map
19
+ //# sourceMappingURL=AgentRichTextReadonly-ITYHQCN5.js.map
@@ -2,10 +2,10 @@ import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { c as AgentConversationVM, g as WorkspaceLinkAction, f as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
4
4
  export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityCard, e as WorkspaceAgentActivityTimelineItem, h as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
5
- import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DV7KvZRe.js';
5
+ import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-D3f1yiEL.js';
6
6
  import '@tutti-os/workspace-issue-manager/core';
7
7
  import '@tutti-os/agent-activity-core';
8
- import '../types-ee3zJ6Cc.js';
8
+ import '../types-DVmB_kyD.js';
9
9
  import '@tutti-os/workspace-user-project/contracts';
10
10
 
11
11
  interface AgentConversationFlowProps {
@@ -6,25 +6,25 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-UARGXEXF.js";
10
- import "../chunk-5H5LUEBG.js";
9
+ } from "../chunk-XUFVBZUT.js";
10
+ import "../chunk-AVXN6UMO.js";
11
11
  import "../chunk-FM42UN2J.js";
12
12
  import "../chunk-XJ34OIEQ.js";
13
- import "../chunk-R7AXDQCA.js";
14
- import "../chunk-DBFHUUZ5.js";
13
+ import "../chunk-JDVP33S5.js";
14
+ import "../chunk-WUMJJOK6.js";
15
15
  import "../chunk-5QPOMKMQ.js";
16
16
  import "../chunk-FGLQZ6I4.js";
17
- import "../chunk-IYZ4GOSN.js";
17
+ import "../chunk-MX2NPLCN.js";
18
18
  import "../chunk-ZVYUTXQJ.js";
19
- import "../chunk-OFJNIQWR.js";
19
+ import "../chunk-RXOGBOK6.js";
20
20
  import "../chunk-F5UR6EJG.js";
21
21
  import "../chunk-EDNJMG5T.js";
22
22
  import {
23
23
  translate
24
- } from "../chunk-GIYGO2PB.js";
24
+ } from "../chunk-OWJ7Q2DJ.js";
25
25
  import "../chunk-PJP5BUU6.js";
26
26
  import "../chunk-7KVZPJ3O.js";
27
- import "../chunk-VUNVGEQG.js";
27
+ import "../chunk-S2D4NNEB.js";
28
28
  import "../chunk-MIJXEELH.js";
29
29
  import "../chunk-D2JUDUYY.js";
30
30
  import "../chunk-6CUELYIF.js";
@@ -2,8 +2,8 @@ import * as react from 'react';
2
2
  import { 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 { k as AgentHostAgentSessionComposerSettings, o as AgentHostUnactivateAgentSessionResult, b as AgentGUIAgentTarget, f as AgentGUIProvider, p as AgentPromptContentBlock, e as AgentGUINodeData, P as Point, g as AgentGUIProviderRailAllPresentation, h as AgentGUIProviderRailMode, i as AgentGUIProviderReadinessGate, d as AgentGUIHomeSuggestionId, N as NodeFrame, a as AgentGUIAgentDirectorySnapshot, c as AgentGUIAllAgentsPresentation } from './types-ee3zJ6Cc.js';
6
- import { A as AgentComposerDraft, j as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, k as AgentSlashCommandCapability, c as AgentGUINodeViewModel, i as AgentProbeSnapshot, a as AgentComposerDraftFile, g as AgentHostInputApi } from './agentGuiNodeTypes-DV7KvZRe.js';
5
+ import { k as AgentHostAgentSessionComposerSettings, o as AgentHostUnactivateAgentSessionResult, b as AgentGUIAgentTarget, f as AgentGUIProvider, p as AgentPromptContentBlock, e as AgentGUINodeData, P as Point, g as AgentGUIProviderRailAllPresentation, h as AgentGUIProviderRailMode, i as AgentGUIProviderReadinessGate, d as AgentGUIHomeSuggestionId, N as NodeFrame, a as AgentGUIAgentDirectorySnapshot, c as AgentGUIAllAgentsPresentation } from './types-DVmB_kyD.js';
6
+ import { A as AgentComposerDraft, j as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, k as AgentSlashCommandCapability, c as AgentGUINodeViewModel, i as AgentProbeSnapshot, a as AgentComposerDraftFile, g as AgentHostInputApi } from './agentGuiNodeTypes-D3f1yiEL.js';
7
7
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
9
9
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-B0yQizXB.js';
@@ -457,6 +457,13 @@ interface AgentSettings {
457
457
  hideWorktreeMismatchDropWarning: boolean;
458
458
  }
459
459
 
460
+ type AgentGuiWorkbenchSessionAction = "rename" | "copy-markdown" | "copy-reference";
461
+ interface AgentGuiWorkbenchSessionActionRequest {
462
+ action: AgentGuiWorkbenchSessionAction;
463
+ agentSessionId: string | null;
464
+ sequence: number;
465
+ }
466
+
460
467
  interface AgentGUIAccountMenuState {
461
468
  user: {
462
469
  userId: string;
@@ -1021,10 +1028,12 @@ interface AgentGUINodeFrameLayout {
1021
1028
  */
1022
1029
  conversationRailAutoCollapseWidthPx?: number | null;
1023
1030
  }
1031
+ type AgentGUISessionActionRequest = AgentGuiWorkbenchSessionActionRequest;
1024
1032
  interface AgentGUINodeRuntimeRequests {
1025
1033
  composerAppend?: AgentGUIComposerAppendRequest | null;
1026
1034
  composerFocusSequence?: number | null;
1027
1035
  newConversationSequence?: number | null;
1036
+ sessionAction?: AgentGUISessionActionRequest | null;
1028
1037
  openSession?: AgentGUIOpenSessionRequest | null;
1029
1038
  prefillPrompt?: AgentGUIPrefillPromptRequest | null;
1030
1039
  agentProbes?: WorkspaceDesktopAgentProbesState | null;
package/dist/agent-gui.js CHANGED
@@ -1,41 +1,41 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-NFY5SSBS.js";
3
+ } from "./chunk-ORPU3AJK.js";
4
4
  import "./chunk-A4WCTHWS.js";
5
- import "./chunk-7QKKMJZS.js";
5
+ import "./chunk-MMEHSIWJ.js";
6
6
  import "./chunk-TUWQV2MC.js";
7
7
  import "./chunk-MHOYBRCY.js";
8
- import "./chunk-VGS7S7YT.js";
8
+ import "./chunk-Q2WMHYIB.js";
9
9
  import "./chunk-5HIF53K5.js";
10
10
  import "./chunk-R2ZADXRB.js";
11
- import "./chunk-UARGXEXF.js";
12
- import "./chunk-5H5LUEBG.js";
11
+ import "./chunk-XUFVBZUT.js";
12
+ import "./chunk-AVXN6UMO.js";
13
13
  import "./chunk-FM42UN2J.js";
14
14
  import "./chunk-UP3ZDYTN.js";
15
- import "./chunk-O5CSF2RC.js";
16
- import "./chunk-5WOCGIXJ.js";
15
+ import "./chunk-WM63XUAL.js";
16
+ import "./chunk-C4ACYHOY.js";
17
17
  import "./chunk-DXT4W2SU.js";
18
- import "./chunk-3MHXBAYC.js";
19
- import "./chunk-USIFGHT3.js";
18
+ import "./chunk-OXCHXPBD.js";
19
+ import "./chunk-VMPA46ET.js";
20
20
  import "./chunk-XJ34OIEQ.js";
21
- import "./chunk-R7AXDQCA.js";
22
- import "./chunk-DBFHUUZ5.js";
21
+ import "./chunk-JDVP33S5.js";
22
+ import "./chunk-WUMJJOK6.js";
23
23
  import "./chunk-5QPOMKMQ.js";
24
24
  import "./chunk-RMQREVJY.js";
25
25
  import "./chunk-FGLQZ6I4.js";
26
- import "./chunk-25VMCMAQ.js";
26
+ import "./chunk-OEC2IIWG.js";
27
27
  import "./chunk-2RQM7PJN.js";
28
- import "./chunk-IYZ4GOSN.js";
28
+ import "./chunk-MX2NPLCN.js";
29
29
  import "./chunk-ZVYUTXQJ.js";
30
- import "./chunk-EU7DCT4F.js";
30
+ import "./chunk-D3VWQTDH.js";
31
31
  import "./chunk-YMXYBG7U.js";
32
- import "./chunk-OFJNIQWR.js";
32
+ import "./chunk-RXOGBOK6.js";
33
33
  import "./chunk-F5UR6EJG.js";
34
34
  import "./chunk-EDNJMG5T.js";
35
- import "./chunk-GIYGO2PB.js";
35
+ import "./chunk-OWJ7Q2DJ.js";
36
36
  import "./chunk-PJP5BUU6.js";
37
37
  import "./chunk-7KVZPJ3O.js";
38
- import "./chunk-VUNVGEQG.js";
38
+ import "./chunk-S2D4NNEB.js";
39
39
  import "./chunk-MIJXEELH.js";
40
40
  import "./chunk-D2JUDUYY.js";
41
41
  import "./chunk-6CUELYIF.js";
@@ -6,7 +6,7 @@ import {
6
6
  dispatchAgentPlanPromptAction,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-25VMCMAQ.js";
9
+ } from "../chunk-OEC2IIWG.js";
10
10
  import {
11
11
  useEngineSelector
12
12
  } from "../chunk-2RQM7PJN.js";
@@ -19,20 +19,20 @@ import {
19
19
  isExitPlanSwitchModeInput,
20
20
  normalizeAgentApprovalPurpose,
21
21
  normalizeAskUserQuestions
22
- } from "../chunk-IYZ4GOSN.js";
22
+ } from "../chunk-MX2NPLCN.js";
23
23
  import {
24
24
  cn
25
25
  } from "../chunk-ZVYUTXQJ.js";
26
26
  import {
27
27
  userAvatarPlaceholderUrl,
28
28
  workspaceAgentActivityStatusLabel
29
- } from "../chunk-EU7DCT4F.js";
29
+ } from "../chunk-D3VWQTDH.js";
30
30
  import {
31
31
  resolveWorkspaceAgentSessionSortTimeUnixMs
32
32
  } from "../chunk-YMXYBG7U.js";
33
33
  import {
34
34
  workspaceAgentProviderLabel
35
- } from "../chunk-OFJNIQWR.js";
35
+ } from "../chunk-RXOGBOK6.js";
36
36
  import "../chunk-F5UR6EJG.js";
37
37
  import {
38
38
  managedAgentRoundedIconUrl
@@ -41,10 +41,10 @@ import {
41
41
  AgentGuiI18nProvider,
42
42
  getActiveUiLanguage,
43
43
  useTranslation
44
- } from "../chunk-GIYGO2PB.js";
44
+ } from "../chunk-OWJ7Q2DJ.js";
45
45
  import "../chunk-PJP5BUU6.js";
46
46
  import "../chunk-7KVZPJ3O.js";
47
- import "../chunk-VUNVGEQG.js";
47
+ import "../chunk-S2D4NNEB.js";
48
48
  import {
49
49
  normalizeAgentTitleText
50
50
  } from "../chunk-MIJXEELH.js";
@@ -1,5 +1,5 @@
1
1
  import { AgentActivitySession, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession } from '@tutti-os/agent-activity-core';
2
- import { j as AgentHostAgentSessionCommand, k as AgentHostAgentSessionComposerSettings, m as AgentHostAgentSessionReasoningEffort, n as AgentHostAgentSessionSpeed, l as AgentHostAgentSessionPermissionConfig, f as AgentGUIProvider, p as AgentPromptContentBlock, e as AgentGUINodeData, b as AgentGUIAgentTarget, h as AgentGUIProviderRailMode, i as AgentGUIProviderReadinessGate } from './types-ee3zJ6Cc.js';
2
+ import { j as AgentHostAgentSessionCommand, k as AgentHostAgentSessionComposerSettings, m as AgentHostAgentSessionReasoningEffort, n as AgentHostAgentSessionSpeed, l as AgentHostAgentSessionPermissionConfig, f as AgentGUIProvider, p as AgentPromptContentBlock, e as AgentGUINodeData, b as AgentGUIAgentTarget, h as AgentGUIProviderRailMode, i as AgentGUIProviderReadinessGate } from './types-DVmB_kyD.js';
3
3
  import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, f as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-DWEy7jzx.js';
4
4
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
5
5
 
@@ -164,9 +164,23 @@ type AgentHostPersistenceApi = AgentHostRecord & {
164
164
  readWorkspaceAgentReadState: (input: ReadWorkspaceAgentReadStateInput) => AgentHostAsyncResult<WorkspaceAgentReadStateSnapshot>;
165
165
  writeWorkspaceAgentReadState: (input: WriteWorkspaceAgentReadStateInput) => AgentHostAsyncResult<PersistWriteResult>;
166
166
  };
167
+ type AgentHostToastHandle = {
168
+ /** Settles the toast to a neutral, non-error, non-success tone. */
169
+ info: (title: string, description?: string) => void;
170
+ /** Settles the toast to the destructive tone. */
171
+ reject: (title: string, description?: string) => void;
172
+ /** Settles the toast to the success tone. */
173
+ resolve: (title: string, description?: string) => void;
174
+ };
167
175
  type AgentHostToastApi = AgentHostRecord & {
168
176
  error: (title: string, description?: string) => void;
169
177
  info?: (title: string, description?: string) => void;
178
+ /**
179
+ * Opens one toast that stays mounted across async work: it shows busy
180
+ * (spinner, no auto-dismiss) until the returned handle settles it in
181
+ * place, at which point it starts auto-dismissing like any other toast.
182
+ */
183
+ loading?: (title: string) => AgentHostToastHandle;
170
184
  success?: (title: string, description?: string) => void;
171
185
  };
172
186
  interface AgentHostSelectedFile {
package/dist/agents.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AgentGUIAgent, b as AgentGUIAgentTarget } from './types-ee3zJ6Cc.js';
1
+ import { A as AgentGUIAgent, b as AgentGUIAgentTarget } from './types-DVmB_kyD.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-5WOCGIXJ.js";
6
+ } from "./chunk-C4ACYHOY.js";
7
7
  export {
8
8
  agentGUIAgentIsReady,
9
9
  normalizeAgentGUIAgents,
@@ -4699,11 +4699,6 @@ aside.workspace-agents-status-panel
4699
4699
  position: relative;
4700
4700
  }
4701
4701
 
4702
- .workbench-window:has([data-agent-gui-workbench-header="true"])
4703
- .agent-gui-node__detail-header {
4704
- display: none;
4705
- }
4706
-
4707
4702
  .workbench-window:has([data-agent-gui-workbench-header="true"])
4708
4703
  .agent-gui-node__detail {
4709
4704
  padding-top: var(--agent-gui-workbench-header-height);
@@ -5072,10 +5067,11 @@ aside.workspace-agents-status-panel
5072
5067
  the whole rich title can share the Agent icon's vertical center directly. */
5073
5068
  .agent-gui-workbench-header__rich-title {
5074
5069
  display: block;
5075
- width: 0;
5070
+ width: max-content;
5076
5071
  min-width: 0;
5072
+ max-width: calc(100% - 36px);
5077
5073
  height: 24px;
5078
- flex: 1 1 0;
5074
+ flex: 0 1 auto;
5079
5075
  overflow: hidden;
5080
5076
  }
5081
5077
 
@@ -5145,7 +5141,7 @@ aside.workspace-agents-status-panel
5145
5141
 
5146
5142
  .agent-gui-workbench-header__session-title {
5147
5143
  display: flex;
5148
- flex: 1 1 auto;
5144
+ flex: 0 1 auto;
5149
5145
  max-width: min(100%, var(--agent-gui-workbench-header-title-max-width));
5150
5146
  margin-left: 4px;
5151
5147
  align-items: center;
@@ -5177,7 +5173,7 @@ aside.workspace-agents-status-panel
5177
5173
  .agent-gui-workbench-header__detail-title {
5178
5174
  display: flex;
5179
5175
  height: 100%;
5180
- flex: 1 1 auto;
5176
+ flex: 0 1 auto;
5181
5177
  max-width: min(100%, var(--agent-gui-workbench-header-title-max-width));
5182
5178
  min-width: 0;
5183
5179
  align-items: center;
@@ -5186,6 +5182,21 @@ aside.workspace-agents-status-panel
5186
5182
  pointer-events: none;
5187
5183
  }
5188
5184
 
5185
+ .agent-gui-workbench-header__session-title:has(
5186
+ .agent-gui-workbench-header__session-menu-trigger
5187
+ )
5188
+ > .agent-gui-workbench-header__title-text,
5189
+ .agent-gui-workbench-header__detail-title:has(
5190
+ .agent-gui-workbench-header__session-menu-trigger
5191
+ )
5192
+ > .agent-gui-workbench-header__title-text {
5193
+ max-width: calc(100% - 36px);
5194
+ }
5195
+
5196
+ .agent-gui-workbench-header__session-menu-trigger {
5197
+ pointer-events: auto;
5198
+ }
5199
+
5189
5200
  .workbench-window:has(
5190
5201
  .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
5191
5202
  )
@@ -6350,7 +6361,11 @@ button.agent-gui-node__conversation-section-toggle:hover
6350
6361
  }
6351
6362
 
6352
6363
  .agent-gui-node__conversation-item:focus-within,
6353
- .agent-gui-node__conversation-item:hover {
6364
+ .agent-gui-node__conversation-item:hover,
6365
+ .agent-gui-node__conversation-item[data-state="open"],
6366
+ .agent-gui-node__conversation-item:has(
6367
+ .agent-gui-node__conversation-actions [data-state="open"]
6368
+ ) {
6354
6369
  background-color: var(--agent-gui-surface-hover);
6355
6370
  }
6356
6371
 
@@ -6393,7 +6408,13 @@ button.agent-gui-node__conversation-section-toggle:hover
6393
6408
  padding-left: 26px;
6394
6409
  }
6395
6410
 
6396
- .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-select {
6411
+ .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-select,
6412
+ .agent-gui-node__conversation-item[data-state="open"]
6413
+ .agent-gui-node__conversation-select,
6414
+ .agent-gui-node__conversation-item:has(
6415
+ .agent-gui-node__conversation-actions [data-state="open"]
6416
+ )
6417
+ .agent-gui-node__conversation-select {
6397
6418
  grid-template-columns: minmax(0, 1fr) 0;
6398
6419
  padding-right: 96px;
6399
6420
  }
@@ -6442,6 +6463,22 @@ button.agent-gui-node__conversation-section-toggle:hover
6442
6463
  transform: translateY(-50%);
6443
6464
  }
6444
6465
 
6466
+ .agent-gui-node__conversation-more-button {
6467
+ background: transparent;
6468
+ color: var(--text-tertiary);
6469
+ }
6470
+
6471
+ .agent-gui-node__conversation-more-button svg {
6472
+ width: 16px;
6473
+ height: 16px;
6474
+ }
6475
+
6476
+ .agent-gui-node__conversation-more-button:not(:disabled):hover,
6477
+ .agent-gui-node__conversation-more-button:not(:disabled):focus-visible {
6478
+ background: var(--transparency-hover);
6479
+ color: var(--text-primary);
6480
+ }
6481
+
6445
6482
  .agent-gui-node__conversation-delete-button,
6446
6483
  .agent-gui-node__conversation-open-window-button,
6447
6484
  .agent-gui-node__conversation-pin-button {
@@ -6458,7 +6495,10 @@ button.agent-gui-node__conversation-section-toggle:hover
6458
6495
  }
6459
6496
 
6460
6497
  .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-actions,
6461
- .agent-gui-node__conversation-actions:focus-within {
6498
+ .agent-gui-node__conversation-item[data-state="open"]
6499
+ .agent-gui-node__conversation-actions,
6500
+ .agent-gui-node__conversation-actions:focus-within,
6501
+ .agent-gui-node__conversation-actions:has([data-state="open"]) {
6462
6502
  opacity: 1;
6463
6503
  /* Only in the visible state: fading in on hover stays smooth while
6464
6504
  leaving the row swaps back to the meta icon instantly, with no
@@ -6498,9 +6538,15 @@ button.agent-gui-node__conversation-section-toggle:hover
6498
6538
  .agent-gui-node__conversation-item[data-pending-delete="true"]
6499
6539
  .agent-gui-node__conversation-meta,
6500
6540
  .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-meta,
6541
+ .agent-gui-node__conversation-item[data-state="open"]
6542
+ .agent-gui-node__conversation-meta,
6501
6543
  .agent-gui-node__conversation-item:has(
6502
6544
  .agent-gui-node__conversation-actions:focus-within
6503
6545
  )
6546
+ .agent-gui-node__conversation-meta,
6547
+ .agent-gui-node__conversation-item:has(
6548
+ .agent-gui-node__conversation-actions [data-state="open"]
6549
+ )
6504
6550
  .agent-gui-node__conversation-meta {
6505
6551
  width: 0;
6506
6552
  min-width: 0;
@@ -6525,10 +6571,12 @@ button.agent-gui-node__conversation-section-toggle:hover
6525
6571
  height: 14px;
6526
6572
  color: var(--text-tertiary);
6527
6573
  background-color: currentColor;
6528
- mask: var(--agent-gui-conversation-provider-icon-url) center / contain
6529
- no-repeat;
6530
- -webkit-mask: var(--agent-gui-conversation-provider-icon-url) center / contain
6531
- no-repeat;
6574
+ mask-position: center;
6575
+ mask-repeat: no-repeat;
6576
+ mask-size: contain;
6577
+ -webkit-mask-position: center;
6578
+ -webkit-mask-repeat: no-repeat;
6579
+ -webkit-mask-size: contain;
6532
6580
  }
6533
6581
 
6534
6582
  .agent-gui-node__conversation-title-mention-icon {
@@ -7345,73 +7393,6 @@ button.agent-gui-node__conversation-section-toggle:hover
7345
7393
  justify-content: center;
7346
7394
  }
7347
7395
 
7348
- .agent-gui-node__detail-header {
7349
- display: flex;
7350
- align-items: center;
7351
- justify-content: space-between;
7352
- gap: 12px;
7353
- flex: 0 0 auto;
7354
- box-sizing: border-box;
7355
- height: 64px;
7356
- min-height: 64px;
7357
- padding: 0 var(--agent-gui-detail-padding-x);
7358
- }
7359
-
7360
- .agent-gui-node__detail-header-title-group {
7361
- display: flex;
7362
- flex: 1 1 auto;
7363
- min-width: 0;
7364
- max-width: 100%;
7365
- align-items: center;
7366
- gap: 6px;
7367
- }
7368
-
7369
- .agent-gui-node__detail-header-title {
7370
- min-width: 0;
7371
- overflow: hidden;
7372
- text-overflow: ellipsis;
7373
- white-space: nowrap;
7374
- color: var(--text-primary);
7375
- font-size: 15px;
7376
- font-weight: 600;
7377
- line-height: 20px;
7378
- }
7379
-
7380
- .agent-gui-node__detail-header-path-info {
7381
- display: inline-flex;
7382
- width: 20px;
7383
- height: 20px;
7384
- flex: 0 0 auto;
7385
- align-items: center;
7386
- justify-content: center;
7387
- border: 0;
7388
- border-radius: 4px;
7389
- background: transparent;
7390
- color: var(--text-secondary);
7391
- opacity: 0;
7392
- visibility: hidden;
7393
- transition:
7394
- background-color 120ms ease,
7395
- color 120ms ease,
7396
- opacity 120ms ease,
7397
- visibility 120ms ease;
7398
- }
7399
-
7400
- .agent-gui-node__detail-header-title-group:hover
7401
- .agent-gui-node__detail-header-path-info,
7402
- .agent-gui-node__detail-header-title-group:focus-within
7403
- .agent-gui-node__detail-header-path-info {
7404
- opacity: 1;
7405
- visibility: visible;
7406
- }
7407
-
7408
- .agent-gui-node__detail-header-path-info:hover,
7409
- .agent-gui-node__detail-header-path-info:focus-visible {
7410
- background: var(--transparency-hover);
7411
- color: var(--text-primary);
7412
- outline: none;
7413
- }
7414
-
7415
7396
  .agent-gui-node__layout [data-slot="status-dot"],
7416
7397
  [data-testid="workspace-agent-message-center"] [data-slot="status-dot"] {
7417
7398
  --agent-gui-status-dot-color: var(
@@ -5,7 +5,7 @@ import {
5
5
  formatAgentMentionMarkdown,
6
6
  mentionItemToAttrs,
7
7
  parseAgentMentionMarkdown
8
- } from "./chunk-DBFHUUZ5.js";
8
+ } from "./chunk-WUMJJOK6.js";
9
9
  import {
10
10
  cn,
11
11
  resolveAgentTargetPresentation,
@@ -753,4 +753,4 @@ export {
753
753
  agentRichTextContentToPromptText,
754
754
  AgentRichTextReadonly
755
755
  };
756
- //# sourceMappingURL=chunk-5H5LUEBG.js.map
756
+ //# sourceMappingURL=chunk-AVXN6UMO.js.map
@@ -7,7 +7,6 @@ function normalizeAgentGUIAgents(agents) {
7
7
  const name = agent.name.trim();
8
8
  const iconUrl = agent.iconUrl.trim();
9
9
  const maskIconUrl = agent.maskIconUrl?.trim() ?? "";
10
- const sidebarIconUrl = agent.sidebarIconUrl?.trim() ?? "";
11
10
  const heroImageUrl = agent.heroImageUrl?.trim() ?? "";
12
11
  if (!agentTargetId || !name || !iconUrl || seenAgentTargetIds.has(agentTargetId)) {
13
12
  continue;
@@ -21,7 +20,6 @@ function normalizeAgentGUIAgents(agents) {
21
20
  name,
22
21
  iconUrl,
23
22
  ...maskIconUrl ? { maskIconUrl } : {},
24
- ...sidebarIconUrl ? { sidebarIconUrl } : {},
25
23
  ...heroImageUrl ? { heroImageUrl } : {},
26
24
  ...agent.description?.trim() ? { description: agent.description.trim() } : {},
27
25
  ...ownerName || ownerAvatarUrl ? {
@@ -72,7 +70,6 @@ function projectAgentGUIAgentsToInternalTargets(agents) {
72
70
  ...agent.description ? { description: agent.description } : {},
73
71
  iconUrl: agent.iconUrl,
74
72
  ...agent.maskIconUrl ? { maskIconUrl: agent.maskIconUrl } : {},
75
- ...agent.sidebarIconUrl ? { sidebarIconUrl: agent.sidebarIconUrl } : {},
76
73
  ...agent.heroImageUrl ? { heroImageUrl: agent.heroImageUrl } : {},
77
74
  ...agent.owner?.avatarUrl ? {
78
75
  badge: {
@@ -104,4 +101,4 @@ export {
104
101
  resolveAgentGUISelectedDirectoryAgent,
105
102
  projectAgentGUIAgentsToInternalTargets
106
103
  };
107
- //# sourceMappingURL=chunk-5WOCGIXJ.js.map
104
+ //# sourceMappingURL=chunk-C4ACYHOY.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 maskIconUrl = agent.maskIconUrl?.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 ...(maskIconUrl ? { maskIconUrl } : {}),\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.maskIconUrl ? { maskIconUrl: agent.maskIconUrl } : {}),\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":[]}