@tutti-os/agent-gui 0.0.43 → 0.0.45

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 (49) hide show
  1. package/dist/agent-conversation/index.js +5 -4
  2. package/dist/agent-conversation/index.js.map +1 -1
  3. package/dist/agent-message-center/index.js +17 -11
  4. package/dist/agent-message-center/index.js.map +1 -1
  5. package/dist/app/renderer/agentactivity.css +116 -57
  6. package/dist/{chunk-3PVSIL3H.js → chunk-62QOR3TC.js} +4 -97
  7. package/dist/chunk-62QOR3TC.js.map +1 -0
  8. package/dist/{chunk-5UD2YEBX.js → chunk-AMNXH4DJ.js} +47 -14
  9. package/dist/{chunk-5UD2YEBX.js.map → chunk-AMNXH4DJ.js.map} +1 -1
  10. package/dist/{chunk-XTFRVACA.js → chunk-CZ7PS3DU.js} +22 -7
  11. package/dist/chunk-CZ7PS3DU.js.map +1 -0
  12. package/dist/{chunk-5LVFYNIP.js → chunk-D6IYEVDT.js} +2 -2
  13. package/dist/chunk-EIC7XS3C.js +71 -0
  14. package/dist/chunk-EIC7XS3C.js.map +1 -0
  15. package/dist/chunk-FJG2EH4V.js +317 -0
  16. package/dist/chunk-FJG2EH4V.js.map +1 -0
  17. package/dist/{chunk-42WP3P5C.js → chunk-NZ2BGOJU.js} +2 -2
  18. package/dist/chunk-OL54R6OL.js +99 -0
  19. package/dist/chunk-OL54R6OL.js.map +1 -0
  20. package/dist/{chunk-OLZP2EFK.js → chunk-QT45WUPQ.js} +71 -20
  21. package/dist/chunk-QT45WUPQ.js.map +1 -0
  22. package/dist/{chunk-5U4SXENC.js → chunk-UGV6JTWM.js} +16 -5
  23. package/dist/{chunk-5U4SXENC.js.map → chunk-UGV6JTWM.js.map} +1 -1
  24. package/dist/{chunk-LKOPLDPM.js → chunk-VFQR7AZI.js} +59 -64
  25. package/dist/chunk-VFQR7AZI.js.map +1 -0
  26. package/dist/{chunk-3WZWZHAJ.js → chunk-ZG3WZSMV.js} +2 -2
  27. package/dist/context-mention-palette/index.d.ts +2 -1
  28. package/dist/context-mention-palette/index.js +7 -6
  29. package/dist/i18n/index.d.ts +51 -3
  30. package/dist/i18n/index.js +2 -1
  31. package/dist/index.d.ts +1 -5
  32. package/dist/index.js +1153 -671
  33. package/dist/index.js.map +1 -1
  34. package/dist/uiSettings-BQS9r2eo.d.ts +6 -0
  35. package/dist/workbench/contribution.js +1 -1
  36. package/dist/workbench/index.d.ts +3 -0
  37. package/dist/workbench/index.js +13 -2
  38. package/dist/workbench/sessionTitle.d.ts +28 -0
  39. package/dist/workbench/sessionTitle.js +14 -0
  40. package/dist/workbench/sessionTitle.js.map +1 -0
  41. package/dist/workspace-agent-generated-files.js +3 -2
  42. package/package.json +21 -14
  43. package/dist/chunk-3PVSIL3H.js.map +0 -1
  44. package/dist/chunk-LKOPLDPM.js.map +0 -1
  45. package/dist/chunk-OLZP2EFK.js.map +0 -1
  46. package/dist/chunk-XTFRVACA.js.map +0 -1
  47. /package/dist/{chunk-5LVFYNIP.js.map → chunk-D6IYEVDT.js.map} +0 -0
  48. /package/dist/{chunk-42WP3P5C.js.map → chunk-NZ2BGOJU.js.map} +0 -0
  49. /package/dist/{chunk-3WZWZHAJ.js.map → chunk-ZG3WZSMV.js.map} +0 -0
@@ -6,15 +6,16 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-XTFRVACA.js";
10
- import "../chunk-OLZP2EFK.js";
11
- import "../chunk-3WZWZHAJ.js";
9
+ } from "../chunk-CZ7PS3DU.js";
10
+ import "../chunk-QT45WUPQ.js";
11
+ import "../chunk-ZG3WZSMV.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
13
  import "../chunk-TXXWUG2J.js";
14
14
  import "../chunk-TYGL25EL.js";
15
15
  import {
16
16
  translate
17
- } from "../chunk-LKOPLDPM.js";
17
+ } from "../chunk-EIC7XS3C.js";
18
+ import "../chunk-VFQR7AZI.js";
18
19
  import "../chunk-LUGELG5V.js";
19
20
  import "../chunk-PJP5BUU6.js";
20
21
 
@@ -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,44 +1,48 @@
1
+ import {
2
+ formatAgentGuiConversationPlainTitle
3
+ } from "../chunk-OL54R6OL.js";
1
4
  import {
2
5
  AgentInteractivePromptSurface,
3
6
  approvalOptionDisplayLabel,
4
- formatAgentSessionMentionText,
5
7
  getPromptToolDetails,
6
8
  isPromptRequestIdTitle
7
- } from "../chunk-3PVSIL3H.js";
9
+ } from "../chunk-62QOR3TC.js";
8
10
  import {
9
11
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
10
12
  PLAN_IMPLEMENTATION_PROMPT,
11
13
  latestPlanTurnId,
12
14
  planImplementationPromptFromPlanTurn
13
15
  } from "../chunk-MKHDRIGN.js";
16
+ import {
17
+ formatAgentSessionMentionText
18
+ } from "../chunk-FJG2EH4V.js";
14
19
  import {
15
20
  AgentMessageMarkdown,
16
21
  CustomScrollArea,
17
22
  cn,
18
23
  extractAgentMcpToolTarget,
19
24
  normalizeAskUserQuestions
20
- } from "../chunk-OLZP2EFK.js";
25
+ } from "../chunk-QT45WUPQ.js";
21
26
  import {
22
27
  managedAgentRoundedIconUrl,
23
28
  userAvatarPlaceholderUrl,
24
29
  workspaceAgentActivityStatusLabel
25
- } from "../chunk-42WP3P5C.js";
26
- import "../chunk-MTFSQWZ6.js";
30
+ } from "../chunk-NZ2BGOJU.js";
27
31
  import {
28
32
  resolveWorkspaceAgentSessionSortTimeUnixMs
29
33
  } from "../chunk-IBIMGLCD.js";
34
+ import "../chunk-MTFSQWZ6.js";
30
35
  import "../chunk-TXXWUG2J.js";
31
36
  import {
32
37
  workspaceAgentProviderLabel
33
38
  } from "../chunk-TYGL25EL.js";
34
- import {
35
- normalizeAgentTitleText
36
- } from "../chunk-GCBDIQDX.js";
39
+ import "../chunk-GCBDIQDX.js";
37
40
  import {
38
41
  AgentGuiI18nProvider,
39
42
  getActiveUiLanguage,
40
43
  useTranslation
41
- } from "../chunk-LKOPLDPM.js";
44
+ } from "../chunk-EIC7XS3C.js";
45
+ import "../chunk-VFQR7AZI.js";
42
46
  import "../chunk-PJP5BUU6.js";
43
47
 
44
48
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
@@ -994,7 +998,9 @@ var WorkspaceAgentMessageCenterCard = memo(
994
998
  "use memo";
995
999
  const { t } = useTranslation();
996
1000
  const prompt = item.pendingPrompt;
997
- const displayTitle = normalizeAgentTitleText(item.title);
1001
+ const displayTitle = formatAgentGuiConversationPlainTitle(item, {
1002
+ language: getActiveUiLanguage()
1003
+ });
998
1004
  const summary = messageCenterVisibleSummary(item);
999
1005
  const displayStatus = statusClass(item);
1000
1006
  const statusTone = messageCenterStatusTone(item);
@@ -1395,7 +1401,7 @@ function MessageCenterStackSummary({
1395
1401
  );
1396
1402
  }
1397
1403
  function messageCenterStackRawPreviewText(item) {
1398
- return item.digest.primary.summary.trim() || item.lastAgentMessageSummary.trim() || normalizeAgentTitleText(item.title);
1404
+ return item.digest.primary.summary.trim() || item.lastAgentMessageSummary.trim() || item.title;
1399
1405
  }
1400
1406
  function messageCenterStackPreviewText(item) {
1401
1407
  return formatAgentSessionMentionText(messageCenterStackRawPreviewText(item), {