@tutti-os/agent-gui 0.0.95 → 0.0.96

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 (110) hide show
  1. package/README.md +38 -6
  2. package/dist/{AgentGUI-CwBLYtv-.d.ts → AgentGUI-DWdvUV4x.d.ts} +64 -18
  3. package/dist/agent-conversation/index.d.ts +3 -2
  4. package/dist/agent-conversation/index.js +10 -9
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-env/index.js +1 -1
  7. package/dist/agent-gui.d.ts +5 -5
  8. package/dist/agent-gui.js +26 -26
  9. package/dist/agent-message-center/index.d.ts +14 -3
  10. package/dist/agent-message-center/index.js +182 -47
  11. package/dist/agent-message-center/index.js.map +1 -1
  12. package/dist/{agentFileMentionContracts-Czvz6YMI.d.ts → agentFileMentionContracts-58IjMU-u.d.ts} +1 -0
  13. package/dist/{agentGuiNodeTypes-DppADPHW.d.ts → agentGuiNodeTypes-B9X4aWfv.d.ts} +30 -18
  14. package/dist/agents.d.ts +1 -1
  15. package/dist/agents.js +1 -1
  16. package/dist/app/renderer/agentactivity.css +150 -3
  17. package/dist/{chunk-C5FV4UGI.js → chunk-2HJEOO7W.js} +14 -6
  18. package/dist/chunk-2HJEOO7W.js.map +1 -0
  19. package/dist/{chunk-BFNJKTDV.js → chunk-3XXBDYAI.js} +11 -16
  20. package/dist/chunk-3XXBDYAI.js.map +1 -0
  21. package/dist/{chunk-YE25HN6T.js → chunk-3Y3F7CS5.js} +17 -25
  22. package/dist/chunk-3Y3F7CS5.js.map +1 -0
  23. package/dist/{chunk-CRO2MV2Y.js → chunk-4PQPJ5OY.js} +21 -116
  24. package/dist/chunk-4PQPJ5OY.js.map +1 -0
  25. package/dist/{chunk-R2EWECUP.js → chunk-7BXWPI4F.js} +17 -2
  26. package/dist/{chunk-R2EWECUP.js.map → chunk-7BXWPI4F.js.map} +1 -1
  27. package/dist/{chunk-LQVXBT65.js → chunk-AGT7MUTV.js} +9 -9
  28. package/dist/{chunk-LQVXBT65.js.map → chunk-AGT7MUTV.js.map} +1 -1
  29. package/dist/{chunk-O6W72SEP.js → chunk-C35SNDVZ.js} +4 -1
  30. package/dist/chunk-C35SNDVZ.js.map +1 -0
  31. package/dist/{chunk-BIHBXWK5.js → chunk-E4HQUTM3.js} +2 -2
  32. package/dist/{chunk-NX3CZJXW.js → chunk-H5F3QSCF.js} +2 -2
  33. package/dist/{chunk-WEDMAVX2.js → chunk-IYEXLOUE.js} +3 -6
  34. package/dist/chunk-IYEXLOUE.js.map +1 -0
  35. package/dist/{chunk-3R2D4E57.js → chunk-JKIZA7EJ.js} +933 -844
  36. package/dist/chunk-JKIZA7EJ.js.map +1 -0
  37. package/dist/{chunk-UQJPV6HP.js → chunk-L3GMMGRS.js} +8 -6
  38. package/dist/chunk-L3GMMGRS.js.map +1 -0
  39. package/dist/{chunk-KAL4XZMA.js → chunk-MASXZENX.js} +1 -1
  40. package/dist/chunk-MASXZENX.js.map +1 -0
  41. package/dist/{chunk-7PFDA2HQ.js → chunk-O3Q5SIJH.js} +3 -3
  42. package/dist/{chunk-NITOD7WF.js → chunk-QVBF5BN5.js} +2 -2
  43. package/dist/{chunk-7RDD3EWP.js → chunk-RE4AXS27.js} +24 -15
  44. package/dist/chunk-RE4AXS27.js.map +1 -0
  45. package/dist/{chunk-NJAZ7LQM.js → chunk-TVIGLNNI.js} +3 -3
  46. package/dist/{chunk-VF22EG3F.js → chunk-UHBCM6RO.js} +1 -1
  47. package/dist/chunk-UHBCM6RO.js.map +1 -0
  48. package/dist/{chunk-AOS2VWU6.js → chunk-W6WAGPMD.js} +33 -3
  49. package/dist/chunk-W6WAGPMD.js.map +1 -0
  50. package/dist/{chunk-RY6GIO3K.js → chunk-WKSFPJHZ.js} +5010 -3656
  51. package/dist/chunk-WKSFPJHZ.js.map +1 -0
  52. package/dist/{chunk-JX2SIXNL.js → chunk-WMNS4MAQ.js} +8 -7
  53. package/dist/{chunk-JX2SIXNL.js.map → chunk-WMNS4MAQ.js.map} +1 -1
  54. package/dist/{chunk-XMO45GKA.js → chunk-XPFHJMZP.js} +14 -4
  55. package/dist/chunk-XPFHJMZP.js.map +1 -0
  56. package/dist/chunk-YMXYBG7U.js +12 -0
  57. package/dist/chunk-YMXYBG7U.js.map +1 -0
  58. package/dist/context-mention-palette/index.d.ts +1 -1
  59. package/dist/context-mention-palette/index.js +14 -14
  60. package/dist/custom-mention.d.ts +2 -4
  61. package/dist/dock-icons.d.ts +2 -4
  62. package/dist/i18n/index.d.ts +30 -0
  63. package/dist/i18n/index.js +2 -2
  64. package/dist/index.d.ts +14 -12
  65. package/dist/index.js +34 -30
  66. package/dist/index.js.map +1 -1
  67. package/dist/mention-search.d.ts +1 -1
  68. package/dist/mention-search.js +11 -11
  69. package/dist/pastedTextKinds-D-XuInaS.d.ts +4 -0
  70. package/dist/startup-shell.d.ts +8 -0
  71. package/dist/startup-shell.js +184 -0
  72. package/dist/startup-shell.js.map +1 -0
  73. package/dist/{types-DX2bxgB8.d.ts → types-CnT8rNUI.d.ts} +16 -5
  74. package/dist/workbench/contribution.d.ts +3 -2
  75. package/dist/workbench/contribution.js +6 -6
  76. package/dist/workbench/index.d.ts +4 -4
  77. package/dist/workbench/index.js +14 -16
  78. package/dist/workbench/launch.d.ts +2 -2
  79. package/dist/workbench/launch.js +3 -3
  80. package/dist/workbench/providerCatalog.d.ts +2 -2
  81. package/dist/workbench/providerCatalog.js +1 -1
  82. package/dist/workbench/sessionTitle.d.ts +8 -12
  83. package/dist/workbench/sessionTitle.js +5 -7
  84. package/dist/workbench/state.js +2 -2
  85. package/dist/workbench/types.d.ts +2 -1
  86. package/dist/workbench/types.js +1 -1
  87. package/dist/workspace-agent-generated-files.js +6 -6
  88. package/package.json +19 -12
  89. package/dist/chunk-3R2D4E57.js.map +0 -1
  90. package/dist/chunk-7J4K6WKB.js +0 -66
  91. package/dist/chunk-7J4K6WKB.js.map +0 -1
  92. package/dist/chunk-7RDD3EWP.js.map +0 -1
  93. package/dist/chunk-AOS2VWU6.js.map +0 -1
  94. package/dist/chunk-BFNJKTDV.js.map +0 -1
  95. package/dist/chunk-C5FV4UGI.js.map +0 -1
  96. package/dist/chunk-CRO2MV2Y.js.map +0 -1
  97. package/dist/chunk-KAL4XZMA.js.map +0 -1
  98. package/dist/chunk-O6W72SEP.js.map +0 -1
  99. package/dist/chunk-RY6GIO3K.js.map +0 -1
  100. package/dist/chunk-UQJPV6HP.js.map +0 -1
  101. package/dist/chunk-VF22EG3F.js.map +0 -1
  102. package/dist/chunk-WEDMAVX2.js.map +0 -1
  103. package/dist/chunk-XMO45GKA.js.map +0 -1
  104. package/dist/chunk-YE25HN6T.js.map +0 -1
  105. package/dist/uiSettings-BQS9r2eo.d.ts +0 -6
  106. /package/dist/{chunk-BIHBXWK5.js.map → chunk-E4HQUTM3.js.map} +0 -0
  107. /package/dist/{chunk-NX3CZJXW.js.map → chunk-H5F3QSCF.js.map} +0 -0
  108. /package/dist/{chunk-7PFDA2HQ.js.map → chunk-O3Q5SIJH.js.map} +0 -0
  109. /package/dist/{chunk-NITOD7WF.js.map → chunk-QVBF5BN5.js.map} +0 -0
  110. /package/dist/{chunk-NJAZ7LQM.js.map → chunk-TVIGLNNI.js.map} +0 -0
package/README.md CHANGED
@@ -27,9 +27,25 @@ Runtime-owned capability declarations are optional and default to enabled:
27
27
  - `canSubmitInteractive`: shows approval, ask-user, and plan-decision
28
28
  interaction entries.
29
29
  - `canGoalControl`: shows goal banner controls, `/goal`, and the goal badge.
30
- - `canUploadAttachment`: enables prompt attachment upload paths such as pasted
31
- images, pasted large text, and dropped or host-local files. Ordinary `@`
32
- references and workspace-reference mentions remain available.
30
+ - `canUploadAttachment`: enables prompt attachment paths. Pasted large text
31
+ additionally requires the explicit `AgentActivityRuntime.stagePastedText`
32
+ host method; AgentGUI does not infer that capability from generic file
33
+ upload support. Ordinary `@` references and workspace-reference mentions
34
+ remain available.
35
+
36
+ ## Pasted Text Staging
37
+
38
+ AgentGUI classifies plain-text clipboard content before delegating structured
39
+ mention HTML. A trimmed payload of at least 5,000 characters is never inserted
40
+ into the prompt automatically. It becomes a pasted-text draft attachment and
41
+ is passed as raw text to `AgentActivityRuntime.stagePastedText`; the host owns
42
+ local persistence and returns `{ path, name, sizeBytes }`.
43
+
44
+ If the method is absent or staging fails, the attachment remains in an explicit
45
+ failed state and retains its in-memory text. AgentGUI must not silently put the
46
+ payload back into the input. The user can explicitly choose “Show in text
47
+ field” to do that. Generic `uploadPromptContent` remains the contract for
48
+ images and host-local files; it is not a pasted-text capability signal.
33
49
 
34
50
  Slash commands come from the runtime session command snapshot. AgentGUI keeps
35
51
  legacy provider-default slash entries unless the host passes
@@ -82,6 +98,20 @@ pnpm check:agent-activity-runtime-boundaries
82
98
  `hostCapabilities`, `hostActions`, and `renderSlots`. Extend the owning object;
83
99
  do not restore flat compatibility props.
84
100
 
101
+ ## Home Suggestions
102
+
103
+ The five starter entries below the empty new-session composer are enabled by
104
+ default. External hosts can hide individual entries with the public
105
+ `AgentGUI.disabled` array:
106
+
107
+ ```tsx
108
+ <AgentGUI disabled={["meet-tutti", "import-session"]} {...props} />
109
+ ```
110
+
111
+ The supported stable IDs are `meet-tutti`, `task-breakdown`, `quality-review`,
112
+ `agent-interaction`, and `import-session`. Omitting `disabled` (or passing an
113
+ empty array) renders all five entries.
114
+
85
115
  ## Agent Directory
86
116
 
87
117
  `AgentGUI` requires the host's `/agents` projection through its `agents` prop.
@@ -93,6 +123,7 @@ export interface AgentGUIAgent {
93
123
  agentTargetId: string;
94
124
  name: string;
95
125
  iconUrl: string;
126
+ heroImageUrl?: string | null;
96
127
  description?: string | null;
97
128
  owner?: {
98
129
  name?: string | null;
@@ -123,9 +154,10 @@ Runnable provider targets are host-supplied. If the target catalog is absent,
123
154
  AgentGUI presents an explicit unavailable state; it does not synthesize local
124
155
  targets from presentation metadata.
125
156
 
126
- Agent names and primary icons always come from `agents[].name` and
127
- `agents[].iconUrl`. `owner.avatarUrl` is rendered separately as an ownership
128
- badge. Invalid entries and duplicate `agentTargetId` values are discarded by
157
+ Agent names, primary icons, and optional home-carousel artwork come from
158
+ `agents[].name`, `agents[].iconUrl`, and `agents[].heroImageUrl`.
159
+ `owner.avatarUrl` is rendered separately as an ownership badge. Invalid entries
160
+ and duplicate `agentTargetId` values are discarded by
129
161
  `normalizeAgentGUIAgents`, with the first occurrence preserving host order.
130
162
 
131
163
  With one agent, AgentGUI hides the aggregate `All` entry and renders that agent
@@ -2,13 +2,12 @@ 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 } from '@tutti-os/agent-activity-core';
5
- import { t as AgentHostAgentSessionComposerSettings, x as AgentHostUnactivateAgentSessionResult, z as AgentProvider, h as AgentGUIAgentTarget, m as AgentGUIProvider, y as AgentPromptContentBlock, l as AgentGUINodeData, P as Point, n as AgentGUIProviderRailAllPresentation, o as AgentGUIProviderRailMode, p as AgentGUIProviderReadinessGate, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, k as AgentGUIAllAgentsPresentation } from './types-DX2bxgB8.js';
6
- import { A as AgentComposerDraft, o as AgentSessionCommand, c as AgentGUIProviderSkillOption, a as AgentGUIComposerSettingsVM, d as AgentGUIQueuedPromptVM, j as AgentMessageMarkdownWorkspaceAppIcon, p as AgentSlashCommandCapability, b as AgentGUINodeViewModel, l as AgentProbeSnapshot, g as AgentHostInputApi } from './agentGuiNodeTypes-DppADPHW.js';
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-CnT8rNUI.js';
6
+ import { A as AgentComposerDraft, p as AgentSessionCommand, c as AgentGUIProviderSkillOption, a as AgentGUIComposerSettingsVM, d as AgentGUIQueueStatus, e as AgentGUIQueuedPromptVM, k as AgentMessageMarkdownWorkspaceAppIcon, q as AgentSlashCommandCapability, b as AgentGUINodeViewModel, m as AgentProbeSnapshot, h as AgentHostInputApi } from './agentGuiNodeTypes-B9X4aWfv.js';
7
7
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter } from '@tutti-os/workspace-file-reference/contracts';
8
- import { A as AgentContextMentionItem } from './agentFileMentionContracts-Czvz6YMI.js';
8
+ import { A as AgentContextMentionItem } from './agentFileMentionContracts-58IjMU-u.js';
9
9
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
10
10
  import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
11
- import { U as UiLanguage, a as UiTheme } from './uiSettings-BQS9r2eo.js';
12
11
  import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from './agentConversationVM-C335TR6S.js';
13
12
  import { AgentContextMentionProvider } from './context-mention-provider.js';
14
13
  import { WorkspaceUserProjectI18nRuntime } from '@tutti-os/workspace-user-project/i18n';
@@ -74,6 +73,8 @@ interface AgentActivityRuntimeListGeneratedFilesInput {
74
73
  workspaceId: string;
75
74
  }
76
75
  interface AgentActivityRuntimeListSessionsPageInput {
76
+ agentTargetId?: string | null;
77
+ cursor?: string;
77
78
  limit?: number;
78
79
  searchQuery?: string;
79
80
  signal?: AbortSignal;
@@ -121,11 +122,13 @@ interface AgentActivityRuntimeSessionSection {
121
122
  userProject?: AgentActivityRuntimeUserProject;
122
123
  sessions: AgentActivitySession[];
123
124
  hasMore: boolean;
125
+ totalCount: number;
124
126
  nextCursor?: string;
125
127
  }
126
128
  interface AgentActivityRuntimeSessionPage {
127
129
  sessions: AgentActivitySession[];
128
130
  hasMore: boolean;
131
+ totalCount: number;
129
132
  nextCursor?: string;
130
133
  }
131
134
  interface AgentActivityRuntimeSessionSectionsResult {
@@ -244,25 +247,44 @@ interface AgentActivityRuntimeUploadPromptContentInput {
244
247
  interface AgentActivityRuntimeUploadPromptContentResult {
245
248
  content: AgentActivityRuntimePromptContentBlock[];
246
249
  }
250
+ /**
251
+ * Dedicated host boundary for turning an in-memory text paste into a local
252
+ * prompt asset. The runtime owns persistence and returns a sendable host path;
253
+ * AgentGUI must not infer this capability from generic file-upload support.
254
+ */
255
+ interface AgentActivityRuntimeStagePastedTextInput {
256
+ name: string;
257
+ text: string;
258
+ workspaceId: string;
259
+ }
260
+ interface AgentActivityRuntimeStagePastedTextResult {
261
+ name: string;
262
+ path: string;
263
+ sizeBytes: number;
264
+ }
247
265
  interface AgentActivityRuntimeSessionSectionScopeInput {
248
266
  agentTargetId?: string | null;
267
+ excludePinned?: boolean;
249
268
  sectionKey: string;
250
269
  signal?: AbortSignal;
251
270
  workspaceId: string;
252
271
  }
253
- interface AgentActivityRuntimeSessionSectionCount {
272
+ interface AgentActivityRuntimeSessionSectionDeletionCandidates {
254
273
  agentTargetId?: string | null;
255
- count: number;
274
+ excludePinned: boolean;
256
275
  sectionKey: string;
276
+ sessionIds: string[];
257
277
  workspaceId: string;
258
278
  }
259
- interface AgentActivityRuntimeDeleteSessionSectionResult {
260
- agentTargetId?: string | null;
279
+ interface AgentActivityRuntimeDeleteSessionsBatchInput {
280
+ sessionIds: string[];
281
+ signal?: AbortSignal;
282
+ workspaceId: string;
283
+ }
284
+ interface AgentActivityRuntimeDeleteSessionsBatchResult {
261
285
  removedMessages: number;
262
286
  removedSessionIds: string[];
263
287
  removedSessions: number;
264
- sectionKey: string;
265
- workspaceId: string;
266
288
  }
267
289
  interface AgentActivityRuntimeSessionAttachment {
268
290
  attachmentId: string;
@@ -319,13 +341,14 @@ interface AgentActivityRuntime {
319
341
  listSessionsPage?(input: AgentActivityRuntimeListSessionsPageInput): Promise<AgentActivityRuntimeSessionPageResult>;
320
342
  listSessionSections?(input: AgentActivityRuntimeListSessionSectionsInput): Promise<AgentActivityRuntimeSessionSectionsResult>;
321
343
  listSessionSectionPage?(input: AgentActivityRuntimeListSessionSectionPageInput): Promise<AgentActivityRuntimeSessionSection>;
322
- countSessionSection?(input: AgentActivityRuntimeSessionSectionScopeInput): Promise<AgentActivityRuntimeSessionSectionCount>;
323
- deleteSessionSection?(input: AgentActivityRuntimeSessionSectionScopeInput): Promise<AgentActivityRuntimeDeleteSessionSectionResult>;
344
+ listSessionSectionDeletionCandidates?(input: AgentActivityRuntimeSessionSectionScopeInput): Promise<AgentActivityRuntimeSessionSectionDeletionCandidates>;
345
+ deleteSessionsBatch?(input: AgentActivityRuntimeDeleteSessionsBatchInput): Promise<AgentActivityRuntimeDeleteSessionsBatchResult>;
324
346
  listPinnedSessionsPage?(input: AgentActivityRuntimeListPinnedSessionsPageInput): Promise<AgentActivityRuntimeSessionPage>;
325
347
  load(workspaceId: string, signal?: AbortSignal): Promise<AgentActivitySnapshot>;
326
348
  ensureSessionSynchronized?(input: AgentActivityRuntimeEnsureSessionSynchronizedInput): () => void;
327
349
  sendInput(input: AgentActivitySendInput): Promise<AgentActivitySendInputResult>;
328
350
  uploadPromptContent?(input: AgentActivityRuntimeUploadPromptContentInput): Promise<AgentActivityRuntimeUploadPromptContentResult>;
351
+ stagePastedText?(input: AgentActivityRuntimeStagePastedTextInput): Promise<AgentActivityRuntimeStagePastedTextResult>;
329
352
  readSessionAttachment?(input: AgentActivityRuntimeReadSessionAttachmentInput): Promise<AgentActivityRuntimeSessionAttachment>;
330
353
  readPromptAsset?(input: AgentActivityRuntimeReadPromptAssetInput): Promise<AgentActivityRuntimePromptAsset>;
331
354
  renameSession(input: AgentActivityRenameSessionInput): Promise<AgentActivitySession>;
@@ -352,8 +375,16 @@ type AgentCustomModelEnabledByProvider<TProvider extends string> = Record<TProvi
352
375
  type AgentCustomModelByProvider<TProvider extends string> = Record<TProvider, string>;
353
376
  type AgentCustomModelOptionsByProvider<TProvider extends string> = Record<TProvider, string[]>;
354
377
 
378
+ declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "cursor", "tutti-agent", "nexight", "opencode", "openclaw", "hermes"];
379
+ type AgentProvider = (typeof AGENT_PROVIDERS)[number];
380
+
355
381
  type FocusNodeTargetZoom = number;
356
382
 
383
+ declare const UI_LANGUAGES: readonly ["en", "zh-CN"];
384
+ type UiLanguage = (typeof UI_LANGUAGES)[number];
385
+ declare const UI_THEMES: readonly ["system", "light", "dark"];
386
+ type UiTheme = (typeof UI_THEMES)[number];
387
+
357
388
  declare const COMMAND_IDS: readonly ["commandCenter.toggle", "app.togglePrimarySidebar", "workspaceCanvas.createTerminal"];
358
389
  type CommandId = (typeof COMMAND_IDS)[number];
359
390
  type KeyChord = {
@@ -495,6 +526,8 @@ interface AgentComposerProps {
495
526
  slashStatus?: AgentComposerSlashStatus | null;
496
527
  usage?: AgentComposerUsage | null;
497
528
  draftContent: AgentComposerDraft;
529
+ /** Stable project/session owner for async draft attachment work. */
530
+ draftScopeKey?: string;
498
531
  availableCommands: readonly AgentSessionCommand[];
499
532
  hasCompactableContext?: boolean;
500
533
  compactSupported?: boolean | null;
@@ -504,6 +537,7 @@ interface AgentComposerProps {
504
537
  submitDisabled: boolean;
505
538
  placeholder: string;
506
539
  composerSettings: AgentGUIComposerSettingsVM;
540
+ queueStatus?: AgentGUIQueueStatus;
507
541
  queuedPrompts: readonly AgentGUIQueuedPromptVM[];
508
542
  drainingQueuedPromptId: string | null;
509
543
  workspaceAppIcons?: readonly AgentMessageMarkdownWorkspaceAppIcon[];
@@ -595,6 +629,7 @@ interface AgentComposerProps {
595
629
  computerUseCapabilitySettingsLabel: string;
596
630
  computerUseCapabilitySettingsDescription: string;
597
631
  queuedLabel: string;
632
+ queuePausedByUserLabel: string;
598
633
  sendQueuedPromptNext: string;
599
634
  editQueuedPrompt: string;
600
635
  deleteQueuedPrompt: string;
@@ -708,7 +743,7 @@ interface AgentComposerProps {
708
743
  };
709
744
  };
710
745
  workspaceUserProjectI18n: WorkspaceUserProjectI18nRuntime;
711
- onDraftContentChange: (draftContent: AgentComposerDraft) => void;
746
+ onDraftContentChange: (draftContent: AgentComposerDraft, sourceScopeKey?: string) => void;
712
747
  onProjectPathChange?: (path: string | null, metadata?: AgentProjectPathChangeMetadata) => void;
713
748
  onSettingsChange: (settings: {
714
749
  model?: string | null;
@@ -721,6 +756,7 @@ interface AgentComposerProps {
721
756
  }) => void;
722
757
  capabilityMenuState?: AgentComposerCapabilityMenuState;
723
758
  onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void;
759
+ onSlashStatusOpen?: () => void;
724
760
  onSubmit: (content: AgentPromptContentBlock[], displayPrompt?: string, options?: AgentComposerSubmitOptions) => void;
725
761
  onSubmitGuidance?: (content: AgentPromptContentBlock[], displayPrompt?: string) => void;
726
762
  onSendQueuedPromptNext: (queuedPromptId: string) => void;
@@ -776,6 +812,7 @@ interface AgentComposerSlashStatus {
776
812
  } | null;
777
813
  limits?: readonly AgentComposerSlashStatusLimit[];
778
814
  limitsLoading?: boolean;
815
+ limitsUnavailable?: boolean;
779
816
  }
780
817
  interface AgentComposerSlashStatusLimit {
781
818
  id: string;
@@ -899,7 +936,7 @@ interface AgentGUINodeWorkspace {
899
936
  resolveMentionReferenceTarget?: AgentMentionReferenceTargetResolver | null;
900
937
  resolveReferenceInitialTarget?: AgentWorkspaceReferenceInitialTargetResolver | null;
901
938
  onFileReferencesAdded?: (input: {
902
- provider: AgentProvider;
939
+ provider: AgentGUIProvider;
903
940
  references: readonly WorkspaceFileReference[];
904
941
  }) => void | Promise<void>;
905
942
  agentSettings: Pick<AgentSettings, "avoidGroupingEdits">;
@@ -913,6 +950,12 @@ interface AgentGUINodeFrameLayout {
913
950
  isActive: boolean;
914
951
  embedded?: boolean;
915
952
  previewMode?: boolean;
953
+ /**
954
+ * Container width at or below which the conversation rail auto-hides.
955
+ * Hosts with roomier layouts (e.g. the standalone agent window) raise this
956
+ * above the default AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX.
957
+ */
958
+ conversationRailAutoCollapseWidthPx?: number | null;
916
959
  }
917
960
  interface AgentGUINodeRuntimeRequests {
918
961
  composerFocusSequence?: number | null;
@@ -937,17 +980,18 @@ interface AgentGUINodeHostCapabilities {
937
980
  managedAgentsState?: AgentHostManagedAgentsState | null;
938
981
  contextMentionProviders?: readonly AgentContextMentionProvider[];
939
982
  workspaceAppIcons?: readonly AgentMessageMarkdownWorkspaceAppIcon[];
983
+ disabledHomeSuggestions?: readonly AgentGUIHomeSuggestionId[];
940
984
  }
941
985
  interface AgentGUINodeHostActions {
942
986
  onLinkAction?: (action: WorkspaceLinkAction) => void;
943
987
  onHandoffConversation?: (input: {
944
988
  agentTargetId?: string | null;
945
989
  draftPrompt: string;
946
- provider: AgentProvider;
990
+ provider: AgentGUIProvider;
947
991
  userProjectPath?: string | null;
948
992
  }) => void | Promise<void>;
949
993
  onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void;
950
- onAgentProviderLogin?: (provider: AgentProvider) => void;
994
+ onAgentProviderLogin?: (provider: AgentGUIProvider) => void;
951
995
  onOpenConversationWindow?: (agentSessionId: string) => void;
952
996
  onClose: () => void;
953
997
  onResize: (frame: NodeFrame) => void;
@@ -974,7 +1018,7 @@ interface AgentGUINodeProps {
974
1018
  renderSlots: AgentGUINodeRenderSlots;
975
1019
  }
976
1020
 
977
- type AgentGUIPublicHostCapabilities = Omit<AgentGUINodeProps["hostCapabilities"], "agentTargets" | "agentTargetsLoading" | "providerRailAllPresentation" | "providerRailMode">;
1021
+ type AgentGUIPublicHostCapabilities = Omit<AgentGUINodeProps["hostCapabilities"], "agentTargets" | "agentTargetsLoading" | "providerRailAllPresentation" | "providerRailMode" | "disabledHomeSuggestions">;
978
1022
  type AgentGUIPublicRenderSlots = Omit<AgentGUINodeProps["renderSlots"], "providerRailEmpty">;
979
1023
  interface AgentGUIProps extends Omit<AgentGUINodeProps, "hostCapabilities" | "renderSlots"> {
980
1024
  agentDirectory: AgentGUIAgentDirectorySnapshot;
@@ -982,6 +1026,8 @@ interface AgentGUIProps extends Omit<AgentGUINodeProps, "hostCapabilities" | "re
982
1026
  renderAgentsEmpty?: AgentGUIAgentsEmptyRenderer;
983
1027
  agentActivityRuntime: AgentActivityRuntime;
984
1028
  agentHostApi?: AgentHostInputApi | null;
1029
+ /** Starter entries to hide below the empty new-session composer. */
1030
+ disabled?: readonly AgentGUIHomeSuggestionId[];
985
1031
  i18n?: I18nRuntime<string> | null;
986
1032
  locale?: AgentGuiI18nLocale;
987
1033
  hostCapabilities: AgentGUIPublicHostCapabilities;
@@ -989,4 +1035,4 @@ interface AgentGUIProps extends Omit<AgentGUINodeProps, "hostCapabilities" | "re
989
1035
  }
990
1036
  declare const AgentGUI: react.NamedExoticComponent<AgentGUIProps>;
991
1037
 
992
- export { type AgentActivityRuntime as A, type AgentActivityRuntimeDeleteSessionSectionResult as a, type AgentActivityRuntimeListSessionMessagesInput as b, type AgentActivityRuntimePromptContentBlock as c, AgentActivityRuntimeProvider as d, type AgentActivityRuntimeProviderProps as e, type AgentActivityRuntimeSessionSectionCount as f, type AgentActivityRuntimeSessionSectionScopeInput as g, type AgentActivityRuntimeSetSessionPinnedInput as h, type AgentActivityRuntimeUpdateSessionSettingsInput as i, type AgentActivityRuntimeUpdateSessionSettingsResult as j, type AgentActivityRuntimeUploadPromptContentInput as k, type AgentActivityRuntimeUploadPromptContentResult as l, AgentGUI as m, type AgentGUIAccountMenuState as n, type AgentGUIAgentsEmptyRenderer as o, type AgentGUIProps as p, type AgentGUIProviderUnavailableStateContext as q, type AgentGUIProviderUnavailableStateRenderer as r, type AgentGUISidebarFooterContext as s, type AgentGUISidebarFooterRenderer as t, resetAgentActivityRuntimeForTests as u, setAgentActivityRuntimeForTests as v, useAgentActivityRuntime as w, useAgentActivitySnapshot as x, useOptionalAgentActivityRuntime as y };
1038
+ export { type AgentActivityRuntime as A, type AgentActivityRuntimeDeleteSessionsBatchInput as a, type AgentActivityRuntimeDeleteSessionsBatchResult as b, type AgentActivityRuntimeListSessionMessagesInput as c, type AgentActivityRuntimePromptContentBlock as d, AgentActivityRuntimeProvider as e, type AgentActivityRuntimeProviderProps as f, type AgentActivityRuntimeSessionSectionDeletionCandidates as g, type AgentActivityRuntimeSessionSectionScopeInput as h, type AgentActivityRuntimeSetSessionPinnedInput as i, type AgentActivityRuntimeUpdateSessionSettingsInput as j, type AgentActivityRuntimeUpdateSessionSettingsResult as k, type AgentActivityRuntimeUploadPromptContentInput as l, type AgentActivityRuntimeUploadPromptContentResult as m, AgentGUI as n, type AgentGUIAccountMenuState as o, type AgentGUIAgentsEmptyRenderer as p, type AgentGUIProps as q, type AgentGUIProviderUnavailableStateContext as r, type AgentGUIProviderUnavailableStateRenderer as s, type AgentGUISidebarFooterContext as t, type AgentGUISidebarFooterRenderer as u, resetAgentActivityRuntimeForTests as v, setAgentActivityRuntimeForTests as w, useAgentActivityRuntime as x, useAgentActivitySnapshot as y, useOptionalAgentActivityRuntime as z };
@@ -2,12 +2,13 @@ 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-C335TR6S.js';
4
4
  export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-C335TR6S.js';
5
- import { c as AgentGUIProviderSkillOption, j as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DppADPHW.js';
5
+ import { c as AgentGUIProviderSkillOption, k as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-B9X4aWfv.js';
6
6
  export { W as WorkspaceAgentActivityCard } from '../workspaceAgentActivityListTypes-C7gPWYiA.js';
7
7
  import '@tutti-os/workspace-issue-manager/core';
8
8
  import '@tutti-os/agent-activity-core';
9
- import '../types-DX2bxgB8.js';
9
+ import '../types-CnT8rNUI.js';
10
10
  import '@tutti-os/workspace-user-project/contracts';
11
+ import '../pastedTextKinds-D-XuInaS.js';
11
12
 
12
13
  interface AgentConversationFlowProps {
13
14
  conversation: AgentConversationVM | null;
@@ -6,21 +6,22 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-3R2D4E57.js";
10
- import "../chunk-R2EWECUP.js";
9
+ } from "../chunk-JKIZA7EJ.js";
10
+ import "../chunk-7BXWPI4F.js";
11
11
  import "../chunk-FGLQZ6I4.js";
12
- import "../chunk-7PFDA2HQ.js";
12
+ import "../chunk-O3Q5SIJH.js";
13
13
  import "../chunk-Y35GDLP2.js";
14
14
  import "../chunk-LUGELG5V.js";
15
- import "../chunk-C5FV4UGI.js";
16
- import "../chunk-KAL4XZMA.js";
15
+ import "../chunk-2HJEOO7W.js";
16
+ import "../chunk-MASXZENX.js";
17
+ import "../chunk-H5F3QSCF.js";
18
+ import "../chunk-PJP5BUU6.js";
17
19
  import "../chunk-H6IQ63DQ.js";
18
- import "../chunk-NX3CZJXW.js";
20
+ import "../chunk-GCBDIQDX.js";
19
21
  import {
20
22
  translate
21
- } from "../chunk-BIHBXWK5.js";
22
- import "../chunk-AOS2VWU6.js";
23
- import "../chunk-PJP5BUU6.js";
23
+ } from "../chunk-E4HQUTM3.js";
24
+ import "../chunk-W6WAGPMD.js";
24
25
  import "../chunk-5X7YDOC6.js";
25
26
  import "../chunk-KJQERFKX.js";
26
27
  import "../chunk-UGVI47X6.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
@@ -5,7 +5,7 @@ import {
5
5
  openAgentEnvPanel,
6
6
  resolveAgentErrorPresentation,
7
7
  useAgentEnvPanelRequest
8
- } from "../chunk-R2EWECUP.js";
8
+ } from "../chunk-7BXWPI4F.js";
9
9
 
10
10
  // shared/agentEnv/codexSetupContract.ts
11
11
  function readCodexSetupActiveAction(status) {
@@ -1,15 +1,14 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { m as AgentGUI, p as AgentGUIProps } from './AgentGUI-CwBLYtv-.js';
4
- import './agentGuiNodeTypes-DppADPHW.js';
5
- import './types-DX2bxgB8.js';
3
+ export { n as AgentGUI, q as AgentGUIProps } from './AgentGUI-DWdvUV4x.js';
4
+ import './agentGuiNodeTypes-B9X4aWfv.js';
5
+ export { l as AgentGUIHomeSuggestionId } from './types-CnT8rNUI.js';
6
6
  import './runtime-BBNdWgDU.js';
7
7
  import '@tutti-os/agent-activity-core';
8
8
  import '@tutti-os/workspace-file-reference/contracts';
9
- import './agentFileMentionContracts-Czvz6YMI.js';
9
+ import './agentFileMentionContracts-58IjMU-u.js';
10
10
  import '@tutti-os/workspace-file-manager/services';
11
11
  import '@tutti-os/workspace-file-reference/core';
12
- import './uiSettings-BQS9r2eo.js';
13
12
  import './agentConversationVM-C335TR6S.js';
14
13
  import '@tutti-os/workspace-issue-manager/core';
15
14
  import './workspaceAgentActivityListTypes-C7gPWYiA.js';
@@ -19,3 +18,4 @@ import '@tutti-os/workspace-external-core/contracts';
19
18
  import '@tutti-os/workspace-user-project/i18n';
20
19
  import '@tutti-os/workspace-user-project/ui';
21
20
  import '@tutti-os/workspace-user-project/contracts';
21
+ import './pastedTextKinds-D-XuInaS.js';
package/dist/agent-gui.js CHANGED
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-RY6GIO3K.js";
4
- import "./chunk-7RDD3EWP.js";
5
- import "./chunk-NJAZ7LQM.js";
6
- import "./chunk-WEDMAVX2.js";
7
- import "./chunk-UQJPV6HP.js";
8
- import "./chunk-VF22EG3F.js";
9
- import "./chunk-LQVXBT65.js";
10
- import "./chunk-O6W72SEP.js";
11
- import "./chunk-4YG7YK7S.js";
12
- import "./chunk-JX2SIXNL.js";
13
- import "./chunk-BFNJKTDV.js";
14
- import "./chunk-JM24HADP.js";
15
- import "./chunk-XMO45GKA.js";
16
- import "./chunk-CRO2MV2Y.js";
17
- import "./chunk-NITOD7WF.js";
18
- import "./chunk-7J4K6WKB.js";
19
- import "./chunk-GCBDIQDX.js";
20
- import "./chunk-3R2D4E57.js";
21
- import "./chunk-R2EWECUP.js";
3
+ } from "./chunk-WKSFPJHZ.js";
4
+ import "./chunk-RE4AXS27.js";
5
+ import "./chunk-TVIGLNNI.js";
6
+ import "./chunk-4PQPJ5OY.js";
7
+ import "./chunk-IYEXLOUE.js";
8
+ import "./chunk-L3GMMGRS.js";
9
+ import "./chunk-UHBCM6RO.js";
10
+ import "./chunk-JKIZA7EJ.js";
11
+ import "./chunk-7BXWPI4F.js";
12
+ import "./chunk-AGT7MUTV.js";
13
+ import "./chunk-C35SNDVZ.js";
22
14
  import "./chunk-FGLQZ6I4.js";
23
- import "./chunk-7PFDA2HQ.js";
15
+ import "./chunk-4YG7YK7S.js";
16
+ import "./chunk-WMNS4MAQ.js";
17
+ import "./chunk-3XXBDYAI.js";
18
+ import "./chunk-O3Q5SIJH.js";
24
19
  import "./chunk-Y35GDLP2.js";
25
20
  import "./chunk-LUGELG5V.js";
26
- import "./chunk-C5FV4UGI.js";
27
- import "./chunk-KAL4XZMA.js";
28
- import "./chunk-H6IQ63DQ.js";
29
- import "./chunk-NX3CZJXW.js";
30
- import "./chunk-BIHBXWK5.js";
31
- import "./chunk-AOS2VWU6.js";
21
+ import "./chunk-JM24HADP.js";
22
+ import "./chunk-XPFHJMZP.js";
23
+ import "./chunk-2HJEOO7W.js";
24
+ import "./chunk-QVBF5BN5.js";
25
+ import "./chunk-YMXYBG7U.js";
26
+ import "./chunk-MASXZENX.js";
27
+ import "./chunk-H5F3QSCF.js";
32
28
  import "./chunk-PJP5BUU6.js";
29
+ import "./chunk-H6IQ63DQ.js";
30
+ import "./chunk-GCBDIQDX.js";
31
+ import "./chunk-E4HQUTM3.js";
32
+ import "./chunk-W6WAGPMD.js";
33
33
  import "./chunk-5X7YDOC6.js";
34
34
  import "./chunk-KJQERFKX.js";
35
35
  import "./chunk-UGVI47X6.js";
@@ -40,6 +40,8 @@ interface WorkspaceAgentMessageCenterItem {
40
40
  id: string;
41
41
  agentSessionId: string;
42
42
  agentTargetId?: string | null;
43
+ agentName?: string | null;
44
+ agentAvatarUrl?: string | null;
43
45
  provider: string;
44
46
  userId: string | null;
45
47
  title: string;
@@ -62,12 +64,18 @@ interface WorkspaceAgentMessageCenterTurnOutcome {
62
64
  turnId: string | null;
63
65
  }
64
66
  interface BuildWorkspaceAgentMessageCenterOptions {
67
+ agentPresentations?: readonly WorkspaceAgentMessageCenterAgentPresentation[];
65
68
  avoidGroupingEdits?: boolean;
66
69
  identityBySessionId?: Record<string, WorkspaceAgentMessageCenterIdentity>;
67
70
  itemCutoffUnixMs?: number | null;
68
71
  promptFallbackLabels?: WorkspaceAgentMessageCenterPromptFallbackLabels;
69
72
  workspaceRoot?: string | null;
70
73
  }
74
+ interface WorkspaceAgentMessageCenterAgentPresentation {
75
+ agentTargetId: string;
76
+ iconUrl?: string | null;
77
+ name: string;
78
+ }
71
79
  interface WorkspaceAgentMessageCenterIdentity {
72
80
  userName: string;
73
81
  userAvatarUrl?: string;
@@ -92,11 +100,14 @@ declare function MessageCenterOpenChatButton({ actionsAccessory, alwaysVisible,
92
100
  }) => void;
93
101
  provider: string;
94
102
  }): JSX.Element;
95
- declare function MessageCenterIdentityLabel({ identity, provider }: {
103
+ declare function MessageCenterIdentityLabel({ agentAvatarUrl, agentName, identity, provider }: {
104
+ agentAvatarUrl?: string | null;
105
+ agentName?: string | null;
96
106
  identity: WorkspaceAgentMessageCenterIdentity | null;
97
107
  provider: string;
98
108
  }): JSX.Element;
99
- declare function MessageCenterIdentityAvatarMark({ identity, provider, userId }: {
109
+ declare function MessageCenterIdentityAvatarMark({ agentAvatarUrl, identity, provider, userId }: {
110
+ agentAvatarUrl?: string | null;
100
111
  identity: WorkspaceAgentMessageCenterIdentity | null;
101
112
  provider: string;
102
113
  userId?: string | null;
@@ -436,4 +447,4 @@ interface MessageCenterFilterPreferences {
436
447
  declare function readMessageCenterFilterPreferences(): MessageCenterFilterPreferences;
437
448
  declare function writeMessageCenterFilterPreferences(preferences: MessageCenterFilterPreferences): void;
438
449
 
439
- export { AgentInteractivePromptSurface, AgentVerticalScrollArea, type BuildWorkspaceAgentMessageCenterOptions, type MessageCenterAgentUserStack, type MessageCenterFilterPreferences, type MessageCenterGroup, type MessageCenterGroupBy, MessageCenterGroupHeading, MessageCenterIdentityAvatarMark, MessageCenterIdentityAvatarStack, MessageCenterIdentityLabel, MessageCenterOpenChatButton, type MessageCenterProviderOption, type MessageCenterStatusFilter, type MessageCenterStatusOption, type MessageCenterStatusTone, MessageCenterSummary, type MessageCenterTranslate, type PromptToolDetail, WorkspaceAgentMessageCenterAttentionDeck, type WorkspaceAgentMessageCenterAttentionDeckProps, type WorkspaceAgentMessageCenterAttentionDeckRenderCardInput, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelPresentation, type WorkspaceAgentMessageCenterPanelProps, type WorkspaceAgentMessageCenterPresentation, type WorkspaceAgentMessageCenterPromptStatus, WorkspaceAgentMessageCenterStack, MessageCenterViewMenu as WorkspaceAgentMessageCenterViewMenu, approvalOptionDisplayLabel, buildMessageCenterProviderOptions, buildMessageCenterStatusOptions, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModelFromEngine, getPromptToolDetails, groupMessageCenterItems, isInteractiveMessageCenterItem, isPromptRequestIdTitle, isRecentlyCompletedMessageCenterItem, isWaitingMessageCenterItem, itemMatchesViewFilters, managedAgentRoundedIconUrl, messageCenterAgentUserStackId, messageCenterFiltersStorageKey, messageCenterGroupLabel, messageCenterStackPreviewNodes, messageCenterStackPreviewText, messageCenterStackRenderId, messageCenterStackScrollSyncSegment, messageCenterStatusFilterValue, messageCenterStatusTone, messageCenterStatusToneClass, partitionMessageCenterItemsByAgentUser, readMessageCenterFilterPreferences, resolveMessageCenterNotificationAction, selectMessageCenterAttentionDeckItems, selectWorkspaceAgentMessageCenterPresentation, stabilizeWorkspaceAgentMessageCenterModel, statusFilterSummary, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel, workspaceAgentMessageCenterPresentationEqual, workspaceAgentMessageCenterPromptStatus, writeMessageCenterFilterPreferences };
450
+ export { AgentInteractivePromptSurface, AgentVerticalScrollArea, type BuildWorkspaceAgentMessageCenterOptions, type MessageCenterAgentUserStack, type MessageCenterFilterPreferences, type MessageCenterGroup, type MessageCenterGroupBy, MessageCenterGroupHeading, MessageCenterIdentityAvatarMark, MessageCenterIdentityAvatarStack, MessageCenterIdentityLabel, MessageCenterOpenChatButton, type MessageCenterProviderOption, type MessageCenterStatusFilter, type MessageCenterStatusOption, type MessageCenterStatusTone, MessageCenterSummary, type MessageCenterTranslate, type PromptToolDetail, type WorkspaceAgentMessageCenterAgentPresentation, WorkspaceAgentMessageCenterAttentionDeck, type WorkspaceAgentMessageCenterAttentionDeckProps, type WorkspaceAgentMessageCenterAttentionDeckRenderCardInput, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelPresentation, type WorkspaceAgentMessageCenterPanelProps, type WorkspaceAgentMessageCenterPresentation, type WorkspaceAgentMessageCenterPromptStatus, WorkspaceAgentMessageCenterStack, MessageCenterViewMenu as WorkspaceAgentMessageCenterViewMenu, approvalOptionDisplayLabel, buildMessageCenterProviderOptions, buildMessageCenterStatusOptions, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModelFromEngine, getPromptToolDetails, groupMessageCenterItems, isInteractiveMessageCenterItem, isPromptRequestIdTitle, isRecentlyCompletedMessageCenterItem, isWaitingMessageCenterItem, itemMatchesViewFilters, managedAgentRoundedIconUrl, messageCenterAgentUserStackId, messageCenterFiltersStorageKey, messageCenterGroupLabel, messageCenterStackPreviewNodes, messageCenterStackPreviewText, messageCenterStackRenderId, messageCenterStackScrollSyncSegment, messageCenterStatusFilterValue, messageCenterStatusTone, messageCenterStatusToneClass, partitionMessageCenterItemsByAgentUser, readMessageCenterFilterPreferences, resolveMessageCenterNotificationAction, selectMessageCenterAttentionDeckItems, selectWorkspaceAgentMessageCenterPresentation, stabilizeWorkspaceAgentMessageCenterModel, statusFilterSummary, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel, workspaceAgentMessageCenterPresentationEqual, workspaceAgentMessageCenterPromptStatus, writeMessageCenterFilterPreferences };