@tutti-os/agent-gui 0.0.12 → 0.0.13

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 (76) hide show
  1. package/dist/agent-conversation/index.d.ts +5 -52
  2. package/dist/agent-conversation/index.js +4 -3
  3. package/dist/agent-conversation/index.js.map +1 -1
  4. package/dist/agent-message-center/index.d.ts +15 -5
  5. package/dist/agent-message-center/index.js +47 -28
  6. package/dist/agent-message-center/index.js.map +1 -1
  7. package/dist/{agentConversationVM-BtHYOTgv.d.ts → agentConversationVM-BVe64P2E.d.ts} +1 -1
  8. package/dist/app/renderer/agentactivity.css +111 -134
  9. package/dist/app/renderer/assets/icons/agents/manage-agent-tutti.png +0 -0
  10. package/dist/app/renderer/assets/icons/agents/tutti-doc-rounded.png +0 -0
  11. package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-nexight.png +0 -0
  12. package/dist/chunk-3YZX5EUC.js +1993 -0
  13. package/dist/chunk-3YZX5EUC.js.map +1 -0
  14. package/dist/{chunk-QU4F2RSS.js → chunk-ASAZDEQE.js} +7 -7
  15. package/dist/chunk-ASAZDEQE.js.map +1 -0
  16. package/dist/{chunk-Y3AQGWJA.js → chunk-FSTZDNRM.js} +43 -3
  17. package/dist/chunk-FSTZDNRM.js.map +1 -0
  18. package/dist/{chunk-72YSPOHX.js → chunk-GZHQPPK2.js} +626 -1915
  19. package/dist/chunk-GZHQPPK2.js.map +1 -0
  20. package/dist/{chunk-Y5O7BVGU.js → chunk-HSXDSFKB.js} +10 -1123
  21. package/dist/chunk-HSXDSFKB.js.map +1 -0
  22. package/dist/{chunk-PKCJR6GC.js → chunk-KEKPOVQD.js} +14 -7
  23. package/dist/chunk-KEKPOVQD.js.map +1 -0
  24. package/dist/{chunk-4ASBZ4X7.js → chunk-MTFSQWZ6.js} +2 -2
  25. package/dist/chunk-MU2LODEV.js +1211 -0
  26. package/dist/chunk-MU2LODEV.js.map +1 -0
  27. package/dist/{chunk-R5Q2UDDH.js → chunk-Q75AK47T.js} +2 -2
  28. package/dist/{chunk-PONEQEJ5.js → chunk-RLPVFX7V.js} +137 -31
  29. package/dist/chunk-RLPVFX7V.js.map +1 -0
  30. package/dist/chunk-VDNMTW2E.js +9 -0
  31. package/dist/chunk-VDNMTW2E.js.map +1 -0
  32. package/dist/chunk-WME2V26J.js +1124 -0
  33. package/dist/chunk-WME2V26J.js.map +1 -0
  34. package/dist/chunk-YXSO4ITT.js +10 -0
  35. package/dist/chunk-YXSO4ITT.js.map +1 -0
  36. package/dist/{chunk-3735XYFZ.js → chunk-ZO3SZCIX.js} +54 -3
  37. package/dist/chunk-ZO3SZCIX.js.map +1 -0
  38. package/dist/context-mention-palette/index.d.ts +203 -0
  39. package/dist/context-mention-palette/index.js +30 -0
  40. package/dist/context-mention-provider.d.ts +51 -0
  41. package/dist/context-mention-provider.js +7 -0
  42. package/dist/context-mention-provider.js.map +1 -0
  43. package/dist/i18n/index.d.ts +42 -2
  44. package/dist/i18n/index.js +1 -1
  45. package/dist/index.d.ts +31 -6
  46. package/dist/index.js +2465 -3690
  47. package/dist/index.js.map +1 -1
  48. package/dist/plan-decision-ops.d.ts +2 -2
  49. package/dist/workbench/contribution.js +5 -5
  50. package/dist/workbench/index.d.ts +2 -2
  51. package/dist/workbench/index.js +10 -6
  52. package/dist/workbench/launch.d.ts +19 -2
  53. package/dist/workbench/launch.js +7 -2
  54. package/dist/workbench/types.d.ts +6 -1
  55. package/dist/workbench/types.js +5 -3
  56. package/dist/workspace-agent-generated-files.d.ts +1 -1
  57. package/dist/workspace-agent-generated-files.js +2 -2
  58. package/dist/{workspaceAgentActivityListViewModel-BLLYGuFO.d.ts → workspaceAgentActivityListViewModel-BK_J3aNX.d.ts} +8 -5
  59. package/dist/{workspaceLinkActions-Bwa-phu8.d.ts → workspaceLinkActions-BlLN8Pvz.d.ts} +7 -1
  60. package/package.json +24 -15
  61. package/dist/agent-rich-text-at-provider.d.ts +0 -49
  62. package/dist/agent-rich-text-at-provider.js +0 -7
  63. package/dist/chunk-3735XYFZ.js.map +0 -1
  64. package/dist/chunk-6AZ2KF6R.js +0 -7
  65. package/dist/chunk-6AZ2KF6R.js.map +0 -1
  66. package/dist/chunk-72YSPOHX.js.map +0 -1
  67. package/dist/chunk-KCC3GNPB.js +0 -13
  68. package/dist/chunk-KCC3GNPB.js.map +0 -1
  69. package/dist/chunk-PKCJR6GC.js.map +0 -1
  70. package/dist/chunk-PONEQEJ5.js.map +0 -1
  71. package/dist/chunk-QU4F2RSS.js.map +0 -1
  72. package/dist/chunk-Y3AQGWJA.js.map +0 -1
  73. package/dist/chunk-Y5O7BVGU.js.map +0 -1
  74. /package/dist/{chunk-4ASBZ4X7.js.map → chunk-MTFSQWZ6.js.map} +0 -0
  75. /package/dist/{chunk-R5Q2UDDH.js.map → chunk-Q75AK47T.js.map} +0 -0
  76. /package/dist/{agent-rich-text-at-provider.js.map → context-mention-palette/index.js.map} +0 -0
@@ -1,60 +1,13 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
- import { WorkspaceIssueMentionMode } from '@tutti-os/workspace-issue-manager/core';
3
+ import { W as WorkspaceLinkAction } from '../workspaceLinkActions-BlLN8Pvz.js';
4
4
  import { A as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-DeYPURtF.js';
5
- import { a as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BtHYOTgv.js';
6
- export { B as BuildWorkspaceAgentSessionDetailInput, b as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BtHYOTgv.js';
7
- export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, p as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-BLLYGuFO.js';
5
+ import { a as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BVe64P2E.js';
6
+ export { B as BuildWorkspaceAgentSessionDetailInput, b as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BVe64P2E.js';
7
+ export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, p as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-BK_J3aNX.js';
8
+ import '@tutti-os/workspace-issue-manager/core';
8
9
  import '@tutti-os/agent-activity-core';
9
10
 
10
- type WorkspaceLinkActionSource = "agent-markdown" | "agent-file-change" | string;
11
- interface OpenWorkspaceFileLinkAction {
12
- type: "open-workspace-file";
13
- path: string;
14
- directoryPath: string;
15
- workspaceRoot: string;
16
- source: WorkspaceLinkActionSource;
17
- prefetchedDirectoryListing?: WorkspaceFileLinkDirectoryListing | null;
18
- }
19
- interface WorkspaceFileLinkDirectoryEntry {
20
- path: string;
21
- name: string;
22
- kind: "file" | "directory" | "unknown";
23
- hasChildren: boolean | null;
24
- sizeBytes: number | null;
25
- mtimeMs: number | null;
26
- }
27
- interface WorkspaceFileLinkDirectoryListing {
28
- workspaceId: string;
29
- root: string;
30
- directoryPath: string;
31
- entries: WorkspaceFileLinkDirectoryEntry[];
32
- }
33
- interface OpenWorkspaceUrlLinkAction {
34
- type: "open-url";
35
- url: string;
36
- source: WorkspaceLinkActionSource;
37
- }
38
- interface OpenAgentSessionLinkAction {
39
- type: "open-agent-session";
40
- workspaceId: string;
41
- agentSessionId: string;
42
- provider?: string | null;
43
- source: WorkspaceLinkActionSource;
44
- }
45
- interface OpenWorkspaceIssueLinkAction {
46
- type: "open-workspace-issue";
47
- workspaceId: string;
48
- issueId: string | null;
49
- mode?: WorkspaceIssueMentionMode;
50
- outputDir?: string | null;
51
- runId?: string | null;
52
- taskId?: string | null;
53
- topicId?: string | null;
54
- source: WorkspaceLinkActionSource;
55
- }
56
- type WorkspaceLinkAction = OpenWorkspaceFileLinkAction | OpenWorkspaceUrlLinkAction | OpenAgentSessionLinkAction | OpenWorkspaceIssueLinkAction;
57
-
58
11
  interface AgentGUIProviderSkillOption {
59
12
  name: string;
60
13
  trigger: string;
@@ -6,13 +6,14 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-72YSPOHX.js";
9
+ } from "../chunk-GZHQPPK2.js";
10
+ import "../chunk-RLPVFX7V.js";
11
+ import "../chunk-MU2LODEV.js";
10
12
  import "../chunk-XJ34OIEQ.js";
11
- import "../chunk-PONEQEJ5.js";
12
13
  import "../chunk-TYGL25EL.js";
13
14
  import {
14
15
  translate
15
- } from "../chunk-Y3AQGWJA.js";
16
+ } from "../chunk-FSTZDNRM.js";
16
17
  import "../chunk-LUGELG5V.js";
17
18
  import "../chunk-PJP5BUU6.js";
18
19
 
@@ -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,11 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { JSX } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
- import { useTranslation, AgentGuiI18nLocale } from '../i18n/index.js';
5
- import { W as WorkspaceLinkAction } from '../workspaceLinkActions-Bwa-phu8.js';
4
+ import { useTranslation, AgentGuiI18nLocale, TranslateFn } from '../i18n/index.js';
5
+ import { W as WorkspaceLinkAction } from '../workspaceLinkActions-BlLN8Pvz.js';
6
6
  import { AgentActivityNeedsAttentionItem, AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
7
- import { A as AgentConversationPromptVM } from '../agentConversationVM-BtHYOTgv.js';
8
- import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-BLLYGuFO.js';
7
+ import { A as AgentConversationPromptVM } from '../agentConversationVM-BVe64P2E.js';
8
+ import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-BK_J3aNX.js';
9
9
  export { PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, PLAN_IMPLEMENTATION_PROMPT } from '../plan-decision-ops.js';
10
10
  import '@tutti-os/workspace-issue-manager/core';
11
11
 
@@ -199,6 +199,16 @@ declare function AgentInteractivePromptSurface({ prompt, variant, edgeGlow, embe
199
199
 
200
200
  declare function managedAgentRoundedIconUrl(provider: string | undefined): string;
201
201
 
202
+ /**
203
+ * Bundled placeholder avatar shown for users without an avatar URL. Centralized
204
+ * here so every surface (the agent composer mention palette, the message-center
205
+ * card, and the desktop seam that enriches issue-manager session mentions)
206
+ * resolves the SAME asset URL without duplicating the asset import.
207
+ */
208
+ declare const userAvatarPlaceholderUrl: string;
209
+
210
+ declare function workspaceAgentActivityStatusLabel(status: WorkspaceAgentActivityStatus | string, t?: TranslateFn): string;
211
+
202
212
  interface PromptToolDetail {
203
213
  kind: "command" | "mcp" | "path" | "query";
204
214
  value: string;
@@ -215,4 +225,4 @@ declare function approvalOptionDisplayLabel(option: {
215
225
  feedback?: boolean;
216
226
  }): string;
217
227
 
218
- export { AgentInteractivePromptSurface, type BuildWorkspaceAgentMessageCenterOptions, type PromptToolDetail, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelProps, approvalOptionDisplayLabel, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModel, getPromptToolDetails, isPromptRequestIdTitle, isWaitingMessageCenterItem, managedAgentRoundedIconUrl };
228
+ export { AgentInteractivePromptSurface, type BuildWorkspaceAgentMessageCenterOptions, type PromptToolDetail, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelProps, approvalOptionDisplayLabel, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModel, getPromptToolDetails, isPromptRequestIdTitle, isWaitingMessageCenterItem, managedAgentRoundedIconUrl, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel };
@@ -2,22 +2,30 @@ import {
2
2
  AgentInteractivePromptSurface,
3
3
  approvalOptionDisplayLabel,
4
4
  getPromptToolDetails,
5
- isPromptRequestIdTitle,
6
- managedAgentRoundedIconUrl,
7
- user_avatar_placeholder_default,
8
- workspaceAgentActivityStatusLabel
9
- } from "../chunk-Y5O7BVGU.js";
10
- import "../chunk-4ASBZ4X7.js";
5
+ isPromptRequestIdTitle
6
+ } from "../chunk-WME2V26J.js";
11
7
  import {
12
- resolveWorkspaceAgentSessionSortTimeUnixMs
13
- } from "../chunk-IBIMGLCD.js";
8
+ PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
9
+ PLAN_IMPLEMENTATION_PROMPT,
10
+ latestPlanTurnId,
11
+ planImplementationPromptFromPlanTurn
12
+ } from "../chunk-MKHDRIGN.js";
14
13
  import {
15
14
  AgentMessageMarkdown,
16
15
  CustomScrollArea,
17
16
  cn,
18
17
  extractAgentMcpToolTarget,
19
18
  normalizeAskUserQuestions
20
- } from "../chunk-PONEQEJ5.js";
19
+ } from "../chunk-RLPVFX7V.js";
20
+ import {
21
+ managedAgentRoundedIconUrl,
22
+ userAvatarPlaceholderUrl,
23
+ workspaceAgentActivityStatusLabel
24
+ } from "../chunk-HSXDSFKB.js";
25
+ import "../chunk-MTFSQWZ6.js";
26
+ import {
27
+ resolveWorkspaceAgentSessionSortTimeUnixMs
28
+ } from "../chunk-IBIMGLCD.js";
21
29
  import {
22
30
  workspaceAgentProviderLabel
23
31
  } from "../chunk-TYGL25EL.js";
@@ -27,14 +35,8 @@ import {
27
35
  import {
28
36
  AgentGuiI18nProvider,
29
37
  useTranslation
30
- } from "../chunk-Y3AQGWJA.js";
38
+ } from "../chunk-FSTZDNRM.js";
31
39
  import "../chunk-PJP5BUU6.js";
32
- import {
33
- PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
34
- PLAN_IMPLEMENTATION_PROMPT,
35
- latestPlanTurnId,
36
- planImplementationPromptFromPlanTurn
37
- } from "../chunk-MKHDRIGN.js";
38
40
 
39
41
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
40
42
  import {
@@ -1529,7 +1531,7 @@ function MessageCenterIdentityAvatarStack({
1529
1531
  "use memo";
1530
1532
  const [userAvatarFailed, setUserAvatarFailed] = useState(false);
1531
1533
  const userAvatarUrl = rawUserAvatarUrl?.trim() ?? "";
1532
- const userImageUrl = userAvatarUrl.length > 0 && !userAvatarFailed ? userAvatarUrl : user_avatar_placeholder_default;
1534
+ const userImageUrl = userAvatarUrl.length > 0 && !userAvatarFailed ? userAvatarUrl : userAvatarPlaceholderUrl;
1533
1535
  useEffect(() => {
1534
1536
  setUserAvatarFailed(false);
1535
1537
  }, [userAvatarUrl]);
@@ -2133,34 +2135,40 @@ function MessageCenterViewMenu({
2133
2135
  ),
2134
2136
  /* @__PURE__ */ jsx4(DropdownMenuSeparator, {}),
2135
2137
  /* @__PURE__ */ jsx4(DropdownMenuLabel, { children: t("agentHost.workspaceAgentMessageCenterFilterStatus") }),
2136
- /* @__PURE__ */ jsx4(DropdownMenuGroup, { children: statusOptions.map((option) => /* @__PURE__ */ jsxs3(
2138
+ /* @__PURE__ */ jsx4(DropdownMenuGroup, { children: statusOptions.map((option) => /* @__PURE__ */ jsx4(
2137
2139
  DropdownMenuCheckboxItem,
2138
2140
  {
2139
2141
  "aria-label": `${option.label} ${option.count}`,
2140
2142
  checked: statusFilters === null || statusFilters.has(option.value),
2141
2143
  onCheckedChange: () => onStatusToggle(option.value),
2142
2144
  onSelect: (event) => event.preventDefault(),
2143
- children: [
2144
- /* @__PURE__ */ jsx4("span", { className: "min-w-0 flex-1 truncate", children: option.label }),
2145
- /* @__PURE__ */ jsx4("span", { className: "ml-auto text-[11px] text-[var(--text-tertiary)]", children: option.count })
2146
- ]
2145
+ children: /* @__PURE__ */ jsx4(
2146
+ MessageCenterOptionWithCount,
2147
+ {
2148
+ count: option.count,
2149
+ label: option.label
2150
+ }
2151
+ )
2147
2152
  },
2148
2153
  option.value
2149
2154
  )) }),
2150
2155
  providerOptions.length > 0 ? /* @__PURE__ */ jsxs3(Fragment, { children: [
2151
2156
  /* @__PURE__ */ jsx4(DropdownMenuSeparator, {}),
2152
2157
  /* @__PURE__ */ jsx4(DropdownMenuLabel, { children: t("agentHost.workspaceAgentMessageCenterFilterAgent") }),
2153
- /* @__PURE__ */ jsx4(DropdownMenuGroup, { children: providerOptions.map((option) => /* @__PURE__ */ jsxs3(
2158
+ /* @__PURE__ */ jsx4(DropdownMenuGroup, { children: providerOptions.map((option) => /* @__PURE__ */ jsx4(
2154
2159
  DropdownMenuCheckboxItem,
2155
2160
  {
2156
2161
  "aria-label": `${option.label} ${option.count}`,
2157
2162
  checked: providerFilters === null || providerFilters.has(option.value),
2158
2163
  onCheckedChange: () => onProviderToggle(option.value),
2159
2164
  onSelect: (event) => event.preventDefault(),
2160
- children: [
2161
- /* @__PURE__ */ jsx4("span", { className: "min-w-0 flex-1 truncate", children: option.label }),
2162
- /* @__PURE__ */ jsx4("span", { className: "ml-auto text-[11px] text-[var(--text-tertiary)]", children: option.count })
2163
- ]
2165
+ children: /* @__PURE__ */ jsx4(
2166
+ MessageCenterOptionWithCount,
2167
+ {
2168
+ count: option.count,
2169
+ label: option.label
2170
+ }
2171
+ )
2164
2172
  },
2165
2173
  option.value
2166
2174
  )) })
@@ -2172,6 +2180,15 @@ function MessageCenterViewMenu({
2172
2180
  )
2173
2181
  ] });
2174
2182
  }
2183
+ function MessageCenterOptionWithCount({
2184
+ count,
2185
+ label
2186
+ }) {
2187
+ return /* @__PURE__ */ jsxs3("span", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
2188
+ /* @__PURE__ */ jsx4("span", { className: "min-w-0 flex-1 truncate", children: label }),
2189
+ /* @__PURE__ */ jsx4("span", { className: "shrink-0 tabular-nums text-[11px] text-[var(--text-tertiary)]", children: count })
2190
+ ] });
2191
+ }
2175
2192
 
2176
2193
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
2177
2194
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
@@ -2680,6 +2697,8 @@ export {
2680
2697
  getPromptToolDetails,
2681
2698
  isPromptRequestIdTitle,
2682
2699
  isWaitingMessageCenterItem,
2683
- managedAgentRoundedIconUrl
2700
+ managedAgentRoundedIconUrl,
2701
+ userAvatarPlaceholderUrl,
2702
+ workspaceAgentActivityStatusLabel
2684
2703
  };
2685
2704
  //# sourceMappingURL=index.js.map