@tutti-os/agent-gui 0.0.99 → 0.0.100

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-DgBjACOL.d.ts} +12 -3
  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-C-wBSM-Y.d.ts} +19 -4
  13. package/dist/app/renderer/agentactivity.css +141 -36
  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-PLCHNOXL.js → chunk-BQJOYTW2.js} +863 -679
  23. package/dist/chunk-BQJOYTW2.js.map +1 -0
  24. package/dist/{chunk-MRRICFWA.js → chunk-D7HMQLBO.js} +159 -55
  25. package/dist/chunk-D7HMQLBO.js.map +1 -0
  26. package/dist/{chunk-OTRZBTFQ.js → chunk-DWUVRWXD.js} +2 -2
  27. package/dist/{chunk-RHTZAODZ.js → chunk-E5AD46HP.js} +2 -2
  28. package/dist/{chunk-3NOJFKDV.js → chunk-EUW6VPIK.js} +414 -49
  29. package/dist/chunk-EUW6VPIK.js.map +1 -0
  30. package/dist/{chunk-Y35GDLP2.js → chunk-F5UR6EJG.js} +2 -17
  31. package/dist/chunk-F5UR6EJG.js.map +1 -0
  32. package/dist/{chunk-J7ZYAUPC.js → chunk-FAE7CXZO.js} +8 -6
  33. package/dist/chunk-FAE7CXZO.js.map +1 -0
  34. package/dist/{chunk-CPUEPDF7.js → chunk-GCW57WYQ.js} +646 -595
  35. package/dist/chunk-GCW57WYQ.js.map +1 -0
  36. package/dist/{chunk-7M77BK6K.js → chunk-JWHPVETQ.js} +154 -147
  37. package/dist/chunk-JWHPVETQ.js.map +1 -0
  38. package/dist/{chunk-4ROALW3K.js → chunk-KAV2WHTG.js} +82 -61
  39. package/dist/chunk-KAV2WHTG.js.map +1 -0
  40. package/dist/{chunk-T6PEJFRP.js → chunk-MES7BQWI.js} +378 -369
  41. package/dist/chunk-MES7BQWI.js.map +1 -0
  42. package/dist/chunk-MIJXEELH.js +96 -0
  43. package/dist/chunk-MIJXEELH.js.map +1 -0
  44. package/dist/{chunk-QWGJ5TEG.js → chunk-QY22OBJS.js} +28 -30
  45. package/dist/chunk-QY22OBJS.js.map +1 -0
  46. package/dist/{chunk-MASXZENX.js → chunk-UESYITH6.js} +21 -2
  47. package/dist/chunk-UESYITH6.js.map +1 -0
  48. package/dist/{chunk-SPZJCTBV.js → chunk-XFRY2WWB.js} +348 -322
  49. package/dist/chunk-XFRY2WWB.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 +12 -12
  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,18 +1,19 @@
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, 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-C-wBSM-Y.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
19
  interface AgentHostManagedAgentsStateItem {
@@ -66,6 +67,7 @@ interface AgentActivityRuntimeListSessionMessagesInput {
66
67
  workspaceId: string;
67
68
  }
68
69
  interface AgentActivityRuntimeListGeneratedFilesInput {
70
+ agentTargetIds?: readonly string[];
69
71
  limit?: number;
70
72
  query?: string;
71
73
  sessionCwd?: string;
@@ -547,7 +549,12 @@ interface WorkspaceReferencePickResult {
547
549
  mentionItems: readonly AgentContextMentionItem[];
548
550
  }
549
551
 
552
+ interface AgentComposerReferenceProvenanceFilter {
553
+ snapshot: ReferenceProvenanceFilterSnapshot;
554
+ controller: Pick<ReferenceProvenanceFilterController, "reset" | "toggle" | "toggleAll">;
555
+ }
550
556
  interface AgentComposerSubmitOptions {
557
+ requiredSettingsPatch?: AgentActivitySubmitSettingsPatch;
551
558
  }
552
559
  interface AgentComposerProps {
553
560
  workspaceId: string;
@@ -810,6 +817,7 @@ interface AgentComposerProps {
810
817
  } | null>;
811
818
  onRequestGitBranches?: AgentComposerGitBranchLoader | null;
812
819
  contextMentionProviders?: readonly AgentContextMentionProvider[];
820
+ referenceProvenanceFilter?: AgentComposerReferenceProvenanceFilter | null;
813
821
  }
814
822
  type AgentComposerCapabilitySettingsTarget = AgentSlashCommandCapability["capability"];
815
823
  interface AgentComposerCapabilityMenuState {
@@ -1001,6 +1009,7 @@ interface AgentGUINodeRuntimeRequests {
1001
1009
  onProbeRefreshRequest?: WorkspaceDesktopAgentProbeRefreshRequest;
1002
1010
  }
1003
1011
  interface AgentGUINodeHostCapabilities {
1012
+ referenceProvenanceFilterEnabled?: boolean;
1004
1013
  capabilityMenuState?: AgentComposerCapabilityMenuState;
1005
1014
  accountMenuState?: AgentGUIAccountMenuState | null;
1006
1015
  agentTargets?: readonly AgentGUIAgentTarget[];
@@ -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 { c as AgentGUIProviderSkillOption, k as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-C-wBSM-Y.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-JWHPVETQ.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-MES7BQWI.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, v as AgentGUIProps } from './AgentGUI-DgBjACOL.js';
4
+ import './agentGuiNodeTypes-C-wBSM-Y.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-BQJOYTW2.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-JWHPVETQ.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-XFRY2WWB.js";
23
+ import "./chunk-2RQM7PJN.js";
24
+ import "./chunk-MES7BQWI.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-XFRY2WWB.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-MES7BQWI.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":