@tutti-os/agent-gui 0.0.99 → 0.0.101

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 (95) hide show
  1. package/dist/{AgentGUI-Bkk2TRS0.d.ts → AgentGUI-FECh2x1p.d.ts} +19 -37
  2. package/dist/agent-conversation/index.d.ts +4 -4
  3. package/dist/agent-conversation/index.js +8 -9
  4. package/dist/agent-conversation/index.js.map +1 -1
  5. package/dist/agent-gui.d.ts +5 -4
  6. package/dist/agent-gui.js +19 -19
  7. package/dist/agent-message-center/index.d.ts +4 -6
  8. package/dist/agent-message-center/index.js +13 -52
  9. package/dist/agent-message-center/index.js.map +1 -1
  10. package/dist/agent-title-text.js +1 -1
  11. package/dist/{agentConversationVM-C335TR6S.d.ts → agentConversationVM-BzHZhwFP.d.ts} +1 -1
  12. package/dist/{agentGuiNodeTypes-DAsluxjv.d.ts → agentGuiNodeTypes-BH3lz6gn.d.ts} +21 -5
  13. package/dist/app/renderer/agentactivity.css +142 -72
  14. package/dist/chunk-2RQM7PJN.js +16 -0
  15. package/dist/chunk-2RQM7PJN.js.map +1 -0
  16. package/dist/{chunk-FSKGEGGX.js → chunk-4E3QCW6L.js} +17 -3
  17. package/dist/chunk-4E3QCW6L.js.map +1 -0
  18. package/dist/{chunk-63BE6RGM.js → chunk-4YCCATI4.js} +14 -374
  19. package/dist/chunk-4YCCATI4.js.map +1 -0
  20. package/dist/{chunk-IYEXLOUE.js → chunk-4YVKAPKW.js} +5 -8
  21. package/dist/chunk-4YVKAPKW.js.map +1 -0
  22. package/dist/{chunk-MRRICFWA.js → chunk-D7HMQLBO.js} +159 -55
  23. package/dist/chunk-D7HMQLBO.js.map +1 -0
  24. package/dist/{chunk-OTRZBTFQ.js → chunk-DWUVRWXD.js} +2 -2
  25. package/dist/{chunk-RHTZAODZ.js → chunk-E5AD46HP.js} +2 -2
  26. package/dist/{chunk-3NOJFKDV.js → chunk-EUW6VPIK.js} +414 -49
  27. package/dist/chunk-EUW6VPIK.js.map +1 -0
  28. package/dist/{chunk-Y35GDLP2.js → chunk-F5UR6EJG.js} +2 -17
  29. package/dist/chunk-F5UR6EJG.js.map +1 -0
  30. package/dist/{chunk-J7ZYAUPC.js → chunk-FAE7CXZO.js} +8 -6
  31. package/dist/chunk-FAE7CXZO.js.map +1 -0
  32. package/dist/{chunk-CPUEPDF7.js → chunk-GCW57WYQ.js} +646 -595
  33. package/dist/chunk-GCW57WYQ.js.map +1 -0
  34. package/dist/{chunk-4ROALW3K.js → chunk-KAV2WHTG.js} +82 -61
  35. package/dist/chunk-KAV2WHTG.js.map +1 -0
  36. package/dist/chunk-MIJXEELH.js +96 -0
  37. package/dist/chunk-MIJXEELH.js.map +1 -0
  38. package/dist/{chunk-T6PEJFRP.js → chunk-MJOQP2ED.js} +392 -452
  39. package/dist/chunk-MJOQP2ED.js.map +1 -0
  40. package/dist/{chunk-QWGJ5TEG.js → chunk-QY22OBJS.js} +28 -30
  41. package/dist/chunk-QY22OBJS.js.map +1 -0
  42. package/dist/{chunk-SPZJCTBV.js → chunk-TDVYZEUI.js} +348 -322
  43. package/dist/chunk-TDVYZEUI.js.map +1 -0
  44. package/dist/{chunk-MASXZENX.js → chunk-UESYITH6.js} +21 -2
  45. package/dist/chunk-UESYITH6.js.map +1 -0
  46. package/dist/{chunk-PLCHNOXL.js → chunk-VQOPBBBI.js} +1288 -1141
  47. package/dist/chunk-VQOPBBBI.js.map +1 -0
  48. package/dist/{chunk-7M77BK6K.js → chunk-ZPKPIHMZ.js} +196 -156
  49. package/dist/chunk-ZPKPIHMZ.js.map +1 -0
  50. package/dist/context-mention-palette/index.d.ts +5 -1
  51. package/dist/context-mention-palette/index.js +10 -11
  52. package/dist/contribution-CTVBPN0R.d.ts +119 -0
  53. package/dist/i18n/index.d.ts +16 -2
  54. package/dist/i18n/index.js +2 -2
  55. package/dist/index.d.ts +8 -7
  56. package/dist/index.js +21 -20
  57. package/dist/index.js.map +1 -1
  58. package/dist/mention-search.d.ts +18 -6
  59. package/dist/mention-search.js +8 -9
  60. package/dist/workbench/contribution.d.ts +6 -107
  61. package/dist/workbench/contribution.js +7 -3
  62. package/dist/workbench/index.d.ts +6 -4
  63. package/dist/workbench/index.js +27 -21
  64. package/dist/workbench/launch.d.ts +13 -5
  65. package/dist/workbench/launch.js +1 -1
  66. package/dist/workbench/sessionTitle.d.ts +5 -7
  67. package/dist/workbench/sessionTitle.js +3 -4
  68. package/dist/workbench/state.js +3 -1
  69. package/dist/workspace-agent-generated-files.d.ts +8 -13
  70. package/dist/workspace-agent-generated-files.js +6 -21
  71. package/dist/{workspaceAgentActivityListTypes-C7gPWYiA.d.ts → workspaceAgentActivityListTypes-DZfS_HgG.d.ts} +3 -26
  72. package/package.json +14 -14
  73. package/dist/chunk-3NOJFKDV.js.map +0 -1
  74. package/dist/chunk-4ROALW3K.js.map +0 -1
  75. package/dist/chunk-63BE6RGM.js.map +0 -1
  76. package/dist/chunk-7M77BK6K.js.map +0 -1
  77. package/dist/chunk-CPUEPDF7.js.map +0 -1
  78. package/dist/chunk-FSKGEGGX.js.map +0 -1
  79. package/dist/chunk-GAD6Y3BF.js +0 -88
  80. package/dist/chunk-GAD6Y3BF.js.map +0 -1
  81. package/dist/chunk-GCBDIQDX.js +0 -22
  82. package/dist/chunk-GCBDIQDX.js.map +0 -1
  83. package/dist/chunk-IYEXLOUE.js.map +0 -1
  84. package/dist/chunk-J7ZYAUPC.js.map +0 -1
  85. package/dist/chunk-MASXZENX.js.map +0 -1
  86. package/dist/chunk-MRRICFWA.js.map +0 -1
  87. package/dist/chunk-PLCHNOXL.js.map +0 -1
  88. package/dist/chunk-QWGJ5TEG.js.map +0 -1
  89. package/dist/chunk-SPZJCTBV.js.map +0 -1
  90. package/dist/chunk-T6PEJFRP.js.map +0 -1
  91. package/dist/chunk-Y35GDLP2.js.map +0 -1
  92. package/dist/chunk-Y5M6Q6WX.js +0 -25
  93. package/dist/chunk-Y5M6Q6WX.js.map +0 -1
  94. /package/dist/{chunk-OTRZBTFQ.js.map → chunk-DWUVRWXD.js.map} +0 -0
  95. /package/dist/{chunk-RHTZAODZ.js.map → chunk-E5AD46HP.js.map} +0 -0
@@ -1,52 +1,21 @@
1
1
  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
- 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';
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
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-DAsluxjv.js';
6
+ import { A as AgentComposerDraft, q as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, l as AgentMessageMarkdownWorkspaceAppIcon, r as AgentSlashCommandCapability, c as AgentGUINodeViewModel, n as AgentProbeSnapshot, a as AgentComposerDraftFile, i as AgentHostInputApi } from './agentGuiNodeTypes-BH3lz6gn.js';
7
7
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter } from '@tutti-os/workspace-file-reference/contracts';
8
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 { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from './agentConversationVM-C335TR6S.js';
11
+ import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from './agentConversationVM-BzHZhwFP.js';
12
12
  import { AgentContextMentionProvider } from './context-mention-provider.js';
13
13
  import { WorkspaceUserProjectI18nRuntime } from '@tutti-os/workspace-user-project/i18n';
14
14
  import { WorkspaceUserProjectSelectChangeAction } from '@tutti-os/workspace-user-project/ui';
15
15
  import { WorkspaceUserProject } from '@tutti-os/workspace-user-project/contracts';
16
+ import { ReferenceProvenanceFilterSnapshot, ReferenceProvenanceFilterController } from '@tutti-os/workspace-file-reference/react';
16
17
  import { A as AgentGuiI18nLocale } from './runtime-BBNdWgDU.js';
17
18
 
18
- interface AgentHostManagedAgentsStateItem {
19
- toolId: string;
20
- toolClass: string;
21
- agentId?: string;
22
- hostDetected?: boolean;
23
- hostConfigDetected?: boolean;
24
- hostVersion?: string;
25
- targetVersion: string;
26
- recommendedVersion?: string;
27
- decisionReason: string;
28
- fallbackApplied: boolean;
29
- notes?: string;
30
- }
31
- interface AgentHostToolchainConfigSyncedAgent {
32
- agentId: string;
33
- /** RFC3339 timestamp for when Tutti last synced this agent's host config. */
34
- syncedAt?: string;
35
- }
36
- interface AgentHostManagedAgentsState {
37
- metadataSynced: boolean;
38
- toolCatalogRevision: string;
39
- agentProfileRevision: string;
40
- totalCount: number;
41
- items: AgentHostManagedAgentsStateItem[];
42
- /** Agent IDs ready for normal AgentGUI use (installed and authenticated/ready). */
43
- readyAgentIds: string[];
44
- /** Agent IDs whose host config has been synced to the VM through Manage Agents. */
45
- configSyncedAgentIds: string[];
46
- /** Agent config sync metadata, including when Tutti last copied host config. */
47
- configSyncedAgents?: AgentHostToolchainConfigSyncedAgent[];
48
- }
49
-
50
19
  declare const APP_UPDATE_POLICIES: readonly ["off", "prompt", "auto"];
51
20
  type AppUpdatePolicy = (typeof APP_UPDATE_POLICIES)[number];
52
21
 
@@ -66,6 +35,7 @@ interface AgentActivityRuntimeListSessionMessagesInput {
66
35
  workspaceId: string;
67
36
  }
68
37
  interface AgentActivityRuntimeListGeneratedFilesInput {
38
+ agentTargetIds?: readonly string[];
69
39
  limit?: number;
70
40
  query?: string;
71
41
  sessionCwd?: string;
@@ -547,7 +517,12 @@ interface WorkspaceReferencePickResult {
547
517
  mentionItems: readonly AgentContextMentionItem[];
548
518
  }
549
519
 
520
+ interface AgentComposerReferenceProvenanceFilter {
521
+ snapshot: ReferenceProvenanceFilterSnapshot;
522
+ controller: Pick<ReferenceProvenanceFilterController, "reset" | "toggle" | "toggleAll">;
523
+ }
550
524
  interface AgentComposerSubmitOptions {
525
+ requiredSettingsPatch?: AgentActivitySubmitSettingsPatch;
551
526
  }
552
527
  interface AgentComposerProps {
553
528
  workspaceId: string;
@@ -810,6 +785,7 @@ interface AgentComposerProps {
810
785
  } | null>;
811
786
  onRequestGitBranches?: AgentComposerGitBranchLoader | null;
812
787
  contextMentionProviders?: readonly AgentContextMentionProvider[];
788
+ referenceProvenanceFilter?: AgentComposerReferenceProvenanceFilter | null;
813
789
  }
814
790
  type AgentComposerCapabilitySettingsTarget = AgentSlashCommandCapability["capability"];
815
791
  interface AgentComposerCapabilityMenuState {
@@ -940,6 +916,11 @@ interface AgentGUIOpenSessionRequest {
940
916
  sequence: number;
941
917
  }
942
918
 
919
+ interface AgentGUIComposerAppendRequest {
920
+ files: readonly AgentComposerDraftFile[];
921
+ sequence: number;
922
+ }
923
+
943
924
  interface AgentGUIPrefillPromptRequest {
944
925
  agentTargetId?: string | null;
945
926
  autoSubmit?: boolean;
@@ -992,6 +973,7 @@ interface AgentGUINodeFrameLayout {
992
973
  conversationRailAutoCollapseWidthPx?: number | null;
993
974
  }
994
975
  interface AgentGUINodeRuntimeRequests {
976
+ composerAppend?: AgentGUIComposerAppendRequest | null;
995
977
  composerFocusSequence?: number | null;
996
978
  newConversationSequence?: number | null;
997
979
  openSession?: AgentGUIOpenSessionRequest | null;
@@ -1001,6 +983,7 @@ interface AgentGUINodeRuntimeRequests {
1001
983
  onProbeRefreshRequest?: WorkspaceDesktopAgentProbeRefreshRequest;
1002
984
  }
1003
985
  interface AgentGUINodeHostCapabilities {
986
+ referenceProvenanceFilterEnabled?: boolean;
1004
987
  capabilityMenuState?: AgentComposerCapabilityMenuState;
1005
988
  accountMenuState?: AgentGUIAccountMenuState | null;
1006
989
  agentTargets?: readonly AgentGUIAgentTarget[];
@@ -1011,7 +994,6 @@ interface AgentGUINodeHostCapabilities {
1011
994
  providerReadinessGates?: Partial<Record<AgentGUIProvider, AgentGUIProviderReadinessGate | null>> | null;
1012
995
  defaultAgentTargetId?: string | null;
1013
996
  providerAuthAccountLabels?: Partial<Record<string, string>>;
1014
- managedAgentsState?: AgentHostManagedAgentsState | null;
1015
997
  contextMentionProviders?: readonly AgentContextMentionProvider[];
1016
998
  workspaceAppIcons?: readonly AgentMessageMarkdownWorkspaceAppIcon[];
1017
999
  disabledHomeSuggestions?: readonly AgentGUIHomeSuggestionId[];
@@ -1070,4 +1052,4 @@ interface AgentGUIProps extends Omit<AgentGUINodeProps, "hostCapabilities" | "re
1070
1052
  }
1071
1053
  declare const AgentGUI: react.NamedExoticComponent<AgentGUIProps>;
1072
1054
 
1073
- export { type AgentActivityRuntime as A, resetAgentActivityRuntimeForTests as B, setAgentActivityRuntimeForTests as C, useAgentActivityRuntime as D, useAgentActivitySnapshot as E, useOptionalAgentActivityRuntime as F, 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 AgentGUIComposerContentType as q, type AgentGUIComposerFocusMethod as r, type AgentGUIEngagementContext as s, type AgentGUIEngagementEvent as t, type AgentGUIEngagementEventSink as u, type AgentGUIProps as v, type AgentGUIProviderUnavailableStateContext as w, type AgentGUIProviderUnavailableStateRenderer as x, type AgentGUISidebarFooterContext as y, type AgentGUISidebarFooterRenderer as z };
1055
+ export { type AgentActivityRuntime as A, type AgentGUISidebarFooterRenderer as B, resetAgentActivityRuntimeForTests as C, setAgentActivityRuntimeForTests as D, useAgentActivityRuntime as E, useAgentActivitySnapshot as F, useOptionalAgentActivityRuntime as G, 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 AgentGUIComposerAppendRequest as q, type AgentGUIComposerContentType as r, type AgentGUIComposerFocusMethod as s, type AgentGUIEngagementContext as t, type AgentGUIEngagementEvent as u, type AgentGUIEngagementEventSink as v, type AgentGUIProps as w, type AgentGUIProviderUnavailableStateContext as x, type AgentGUIProviderUnavailableStateRenderer as y, type AgentGUISidebarFooterContext as z };
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
- import { c as AgentConversationVM, e as WorkspaceLinkAction, d as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-C335TR6S.js';
4
- export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-C335TR6S.js';
5
- import { c as AgentGUIProviderSkillOption, k as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DAsluxjv.js';
6
- export { W as WorkspaceAgentActivityCard } from '../workspaceAgentActivityListTypes-C7gPWYiA.js';
3
+ import { c as AgentConversationVM, e as WorkspaceLinkAction, d as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BzHZhwFP.js';
4
+ export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BzHZhwFP.js';
5
+ import { d as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-BH3lz6gn.js';
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
9
  import '../types-CnT8rNUI.js';
@@ -6,22 +6,21 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-7M77BK6K.js";
9
+ } from "../chunk-ZPKPIHMZ.js";
10
10
  import "../chunk-7BXWPI4F.js";
11
11
  import "../chunk-FGLQZ6I4.js";
12
- import "../chunk-CPUEPDF7.js";
13
- import "../chunk-Y35GDLP2.js";
12
+ import "../chunk-GCW57WYQ.js";
13
+ import "../chunk-F5UR6EJG.js";
14
14
  import "../chunk-LUGELG5V.js";
15
- import "../chunk-T6PEJFRP.js";
16
- import "../chunk-MASXZENX.js";
17
- import "../chunk-Y5M6Q6WX.js";
15
+ import "../chunk-MJOQP2ED.js";
16
+ import "../chunk-UESYITH6.js";
18
17
  import "../chunk-PJP5BUU6.js";
19
18
  import "../chunk-H6IQ63DQ.js";
20
- import "../chunk-GCBDIQDX.js";
19
+ import "../chunk-MIJXEELH.js";
21
20
  import {
22
21
  translate
23
- } from "../chunk-RHTZAODZ.js";
24
- import "../chunk-FSKGEGGX.js";
22
+ } from "../chunk-E5AD46HP.js";
23
+ import "../chunk-4E3QCW6L.js";
25
24
  import "../chunk-5X7YDOC6.js";
26
25
  import "../chunk-KJQERFKX.js";
27
26
  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":[]}
@@ -1,7 +1,7 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { n as AgentGUI, v as AgentGUIProps } from './AgentGUI-Bkk2TRS0.js';
4
- import './agentGuiNodeTypes-DAsluxjv.js';
3
+ export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-FECh2x1p.js';
4
+ import './agentGuiNodeTypes-BH3lz6gn.js';
5
5
  export { l as AgentGUIHomeSuggestionId } from './types-CnT8rNUI.js';
6
6
  import './runtime-BBNdWgDU.js';
7
7
  import '@tutti-os/agent-activity-core';
@@ -9,13 +9,14 @@ import '@tutti-os/workspace-file-reference/contracts';
9
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 './agentConversationVM-C335TR6S.js';
12
+ import './agentConversationVM-BzHZhwFP.js';
13
13
  import '@tutti-os/workspace-issue-manager/core';
14
- import './workspaceAgentActivityListTypes-C7gPWYiA.js';
14
+ import './workspaceAgentActivityListTypes-DZfS_HgG.js';
15
15
  import './context-mention-provider.js';
16
16
  import '@tutti-os/ui-rich-text/types';
17
17
  import '@tutti-os/workspace-external-core/contracts';
18
18
  import '@tutti-os/workspace-user-project/i18n';
19
19
  import '@tutti-os/workspace-user-project/ui';
20
20
  import '@tutti-os/workspace-user-project/contracts';
21
+ import '@tutti-os/workspace-file-reference/react';
21
22
  import './pastedTextKinds-D-XuInaS.js';
package/dist/agent-gui.js CHANGED
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-PLCHNOXL.js";
4
- import "./chunk-MRRICFWA.js";
5
- import "./chunk-QWGJ5TEG.js";
6
- import "./chunk-4ROALW3K.js";
7
- import "./chunk-IYEXLOUE.js";
3
+ } from "./chunk-VQOPBBBI.js";
4
+ import "./chunk-D7HMQLBO.js";
5
+ import "./chunk-KAV2WHTG.js";
6
+ import "./chunk-4YVKAPKW.js";
7
+ import "./chunk-QY22OBJS.js";
8
8
  import "./chunk-L3GMMGRS.js";
9
9
  import "./chunk-UHBCM6RO.js";
10
- import "./chunk-7M77BK6K.js";
10
+ import "./chunk-ZPKPIHMZ.js";
11
11
  import "./chunk-7BXWPI4F.js";
12
- import "./chunk-J7ZYAUPC.js";
12
+ import "./chunk-FAE7CXZO.js";
13
13
  import "./chunk-C35SNDVZ.js";
14
14
  import "./chunk-FGLQZ6I4.js";
15
15
  import "./chunk-4YG7YK7S.js";
16
- import "./chunk-3NOJFKDV.js";
17
- import "./chunk-63BE6RGM.js";
18
- import "./chunk-CPUEPDF7.js";
19
- import "./chunk-Y35GDLP2.js";
16
+ import "./chunk-EUW6VPIK.js";
17
+ import "./chunk-4YCCATI4.js";
18
+ import "./chunk-GCW57WYQ.js";
19
+ import "./chunk-F5UR6EJG.js";
20
20
  import "./chunk-LUGELG5V.js";
21
21
  import "./chunk-JM24HADP.js";
22
- import "./chunk-SPZJCTBV.js";
23
- import "./chunk-T6PEJFRP.js";
24
- import "./chunk-OTRZBTFQ.js";
22
+ import "./chunk-TDVYZEUI.js";
23
+ import "./chunk-2RQM7PJN.js";
24
+ import "./chunk-MJOQP2ED.js";
25
+ import "./chunk-DWUVRWXD.js";
25
26
  import "./chunk-YMXYBG7U.js";
26
- import "./chunk-MASXZENX.js";
27
- import "./chunk-Y5M6Q6WX.js";
27
+ import "./chunk-UESYITH6.js";
28
28
  import "./chunk-PJP5BUU6.js";
29
29
  import "./chunk-H6IQ63DQ.js";
30
- import "./chunk-GCBDIQDX.js";
31
- import "./chunk-RHTZAODZ.js";
32
- import "./chunk-FSKGEGGX.js";
30
+ import "./chunk-MIJXEELH.js";
31
+ import "./chunk-E5AD46HP.js";
32
+ import "./chunk-4E3QCW6L.js";
33
33
  import "./chunk-5X7YDOC6.js";
34
34
  import "./chunk-KJQERFKX.js";
35
35
  import "./chunk-UGVI47X6.js";
@@ -2,10 +2,10 @@ import * as react from 'react';
2
2
  import { JSX, ReactNode, HTMLAttributes } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { A as AgentGuiI18nLocale, T as TranslateFn } from '../runtime-BBNdWgDU.js';
5
- import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from '../agentConversationVM-C335TR6S.js';
5
+ import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from '../agentConversationVM-BzHZhwFP.js';
6
6
  import { AgentActivityNeedsAttentionItem, WorkspaceAgentConsumerSession, AgentActivitySnapshot, AgentSessionEngineState } from '@tutti-os/agent-activity-core';
7
7
  export { WorkspaceAgentConsumerCounts, WorkspaceAgentConsumerSession, selectWorkspaceAgentConsumerCounts, selectWorkspaceAgentConsumerSession, selectWorkspaceAgentConsumerSessions } from '@tutti-os/agent-activity-core';
8
- import { d as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListTypes-C7gPWYiA.js';
8
+ import { a as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListTypes-DZfS_HgG.js';
9
9
  export { P as PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, a as PLAN_IMPLEMENTATION_PROMPT, d as dispatchAgentPlanPromptAction, u as useEngineSelector } from '../agentPlanPromptDispatch-C7cCMjve.js';
10
10
  import { useTranslation } from '../i18n/index.js';
11
11
  import '@tutti-os/workspace-issue-manager/core';
@@ -346,10 +346,8 @@ declare const AgentVerticalScrollArea: react.ForwardRefExoticComponent<AgentVert
346
346
  * is shown — primary decisions plus rich follow-ups (feedback textareas,
347
347
  * multi-step wizards, "stay in plan").
348
348
  * - "compact" (message-center attention deck): a glanceable needs-attention card
349
- * across many sessions. Only the primary decision is shown; rich follow-up
350
- * input is deferred to the conversation, reachable via the card's "open
351
- * conversation" jump. New prompt kinds must consciously choose their compact
352
- * form here instead of silently inheriting the full conversation surface.
349
+ * across many sessions. Ask-user prompts retain the full answer flow in a
350
+ * denser layout; other prompt kinds may intentionally limit secondary actions.
353
351
  */
354
352
  type AgentInteractivePromptVariant = "full" | "compact";
355
353
  interface AgentInteractivePromptSurfaceProps {
@@ -5,9 +5,11 @@ import {
5
5
  approvalOptionDisplayLabel,
6
6
  dispatchAgentPlanPromptAction,
7
7
  getPromptToolDetails,
8
- isPromptRequestIdTitle,
8
+ isPromptRequestIdTitle
9
+ } from "../chunk-TDVYZEUI.js";
10
+ import {
9
11
  useEngineSelector
10
- } from "../chunk-SPZJCTBV.js";
12
+ } from "../chunk-2RQM7PJN.js";
11
13
  import {
12
14
  AgentMessageMarkdown,
13
15
  CustomScrollArea,
@@ -17,31 +19,29 @@ import {
17
19
  extractExitPlanModeOptions,
18
20
  isExitPlanSwitchModeInput,
19
21
  normalizeAskUserQuestions
20
- } from "../chunk-T6PEJFRP.js";
22
+ } from "../chunk-MJOQP2ED.js";
21
23
  import {
22
24
  userAvatarPlaceholderUrl,
23
25
  workspaceAgentActivityStatusLabel
24
- } from "../chunk-OTRZBTFQ.js";
26
+ } from "../chunk-DWUVRWXD.js";
25
27
  import {
26
28
  resolveWorkspaceAgentSessionSortTimeUnixMs
27
29
  } from "../chunk-YMXYBG7U.js";
28
30
  import {
29
- managedAgentRoundedIconUrl
30
- } from "../chunk-MASXZENX.js";
31
- import {
31
+ managedAgentRoundedIconUrl,
32
32
  workspaceAgentProviderLabel
33
- } from "../chunk-Y5M6Q6WX.js";
33
+ } from "../chunk-UESYITH6.js";
34
34
  import "../chunk-PJP5BUU6.js";
35
35
  import "../chunk-H6IQ63DQ.js";
36
36
  import {
37
37
  normalizeAgentTitleText
38
- } from "../chunk-GCBDIQDX.js";
38
+ } from "../chunk-MIJXEELH.js";
39
39
  import {
40
40
  AgentGuiI18nProvider,
41
41
  getActiveUiLanguage,
42
42
  useTranslation
43
- } from "../chunk-RHTZAODZ.js";
44
- import "../chunk-FSKGEGGX.js";
43
+ } from "../chunk-E5AD46HP.js";
44
+ import "../chunk-4E3QCW6L.js";
45
45
  import "../chunk-5X7YDOC6.js";
46
46
  import "../chunk-KJQERFKX.js";
47
47
  import "../chunk-UGVI47X6.js";
@@ -541,13 +541,9 @@ function buildWorkspaceAgentMessageCenterItem({
541
541
  messages
542
542
  );
543
543
  const lastAgentMessage = messageAnalysis.latestAgentMessage;
544
- const title = resolveSessionTitle(
545
- session,
546
- messageAnalysis.latestUserMessageSummary,
547
- messageAnalysis.firstUserMessageSummary
548
- );
544
+ const title = session.title.trim();
549
545
  const digest = buildWorkspaceAgentMessageCenterDigest({
550
- fallbackTitle: resolveDigestFallbackTitle(session),
546
+ fallbackTitle: title,
551
547
  latestAgentMessage: messageAnalysis.latestDigestAgentMessage,
552
548
  needsAttention,
553
549
  pendingPrompt,
@@ -625,42 +621,12 @@ function resolveMessageCenterIdentity(agentSessionId, identityBySessionId) {
625
621
  function isImportedMessageCenterSession(session) {
626
622
  return "imported" in session && session.imported === true;
627
623
  }
628
- function resolveSessionTitle(session, latestUserMessageSummary, firstUserMessageSummary) {
629
- const title = session.title.trim();
630
- if (title) {
631
- return title;
632
- }
633
- const latest = latestUserMessageSummary.trim();
634
- if (latest) {
635
- return latest;
636
- }
637
- return firstUserMessageSummary || session.provider || session.agentSessionId;
638
- }
639
- function resolveDigestFallbackTitle(session) {
640
- return session.title.trim() || session.provider || session.agentSessionId;
641
- }
642
624
  function analyzeMessageCenterSessionMessages(agentSessionId, messages) {
643
- let firstUserMessageSummary = "";
644
- let latestUserMessageSummary = "";
645
- let latestUserMessageAtUnixMs = Number.NEGATIVE_INFINITY;
646
625
  let latestAgentMessage = null;
647
626
  let latestDigestAgentMessage = null;
648
627
  let latestPendingPrompt = null;
649
628
  let latestOutcome = null;
650
629
  for (const message of messages) {
651
- if (isUserMessageRole(message.role)) {
652
- const summary = messageSummary(message);
653
- if (!firstUserMessageSummary && summary) {
654
- firstUserMessageSummary = summary;
655
- }
656
- if (summary) {
657
- const occurredAtUnixMs = messageTimeUnixMs(message);
658
- if (occurredAtUnixMs >= latestUserMessageAtUnixMs) {
659
- latestUserMessageSummary = summary;
660
- latestUserMessageAtUnixMs = occurredAtUnixMs;
661
- }
662
- }
663
- }
664
630
  if (isAgentMessageRole2(message.role) && !isReasoningMessageKind2(message.kind)) {
665
631
  const summary = messageSummary(message);
666
632
  if (summary) {
@@ -692,8 +658,6 @@ function analyzeMessageCenterSessionMessages(agentSessionId, messages) {
692
658
  }
693
659
  }
694
660
  return {
695
- firstUserMessageSummary,
696
- latestUserMessageSummary,
697
661
  latestDigestAgentMessage,
698
662
  latestAgentMessage,
699
663
  latestTurnOutcome: latestOutcome?.outcome ?? null,
@@ -838,9 +802,6 @@ function isAgentMessageRole2(role) {
838
802
  function isReasoningMessageKind2(kind) {
839
803
  return kind.trim().toLowerCase() === "reasoning";
840
804
  }
841
- function isUserMessageRole(role) {
842
- return role.trim().toLowerCase() === "user";
843
- }
844
805
  function isTerminalMessageStatus(status) {
845
806
  switch (status?.trim().toLowerCase()) {
846
807
  case "answered":