@tutti-os/agent-gui 0.0.106 → 0.0.108

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 (126) hide show
  1. package/dist/{AgentGUI-Do6py-T_.d.ts → AgentGUI-CkxdEB8F.d.ts} +6 -3
  2. package/dist/AgentRichTextReadonly-42TUVYX5.js +18 -0
  3. package/dist/agent-conversation/index.d.ts +4 -4
  4. package/dist/agent-conversation/index.js +13 -12
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-env/index.js +1 -1
  7. package/dist/agent-gui.d.ts +5 -4
  8. package/dist/agent-gui.js +27 -25
  9. package/dist/agent-message-center/index.d.ts +3 -1
  10. package/dist/agent-message-center/index.js +22 -10
  11. package/dist/agent-message-center/index.js.map +1 -1
  12. package/dist/{agentConversationVM-Bf3Zv3iI.d.ts → agentConversationVM-D3Dn2LqN.d.ts} +18 -2
  13. package/dist/{agentGuiNodeTypes-DbgQBiYz.d.ts → agentGuiNodeTypes-B3N_hJZp.d.ts} +5 -3
  14. package/dist/agents.d.ts +1 -1
  15. package/dist/agents.js +1 -1
  16. package/dist/app/renderer/agentactivity.css +110 -6
  17. package/dist/app/renderer/assets/icons/agent-vinyl-beta-tag.svg +5 -0
  18. package/dist/{chunk-OWW7CU4U.js → chunk-25BPR75P.js} +2 -2
  19. package/dist/{chunk-N4WVVCNI.js → chunk-2QHKXI5N.js} +2 -2
  20. package/dist/{chunk-KJQERFKX.js → chunk-6CUELYIF.js} +3 -3
  21. package/dist/chunk-6CUELYIF.js.map +1 -0
  22. package/dist/{chunk-TKBEVCHG.js → chunk-7BN2WQ2M.js} +32 -2
  23. package/dist/chunk-7BN2WQ2M.js.map +1 -0
  24. package/dist/chunk-7KVZPJ3O.js +25 -0
  25. package/dist/chunk-7KVZPJ3O.js.map +1 -0
  26. package/dist/{chunk-C35SNDVZ.js → chunk-7OYHDOGG.js} +2 -1
  27. package/dist/chunk-7OYHDOGG.js.map +1 -0
  28. package/dist/{chunk-4ZWV57MF.js → chunk-AIZJHA4Q.js} +14 -9
  29. package/dist/chunk-AIZJHA4Q.js.map +1 -0
  30. package/dist/{chunk-QY22OBJS.js → chunk-AY5AFMT2.js} +8 -84
  31. package/dist/chunk-AY5AFMT2.js.map +1 -0
  32. package/dist/{chunk-V5ROOS2O.js → chunk-BM3CSFWU.js} +22 -6
  33. package/dist/chunk-BM3CSFWU.js.map +1 -0
  34. package/dist/{chunk-IR2CL2X2.js → chunk-BRLKORQI.js} +1436 -1919
  35. package/dist/chunk-BRLKORQI.js.map +1 -0
  36. package/dist/{chunk-LDZ6C3YV.js → chunk-E74BMFHI.js} +3 -3
  37. package/dist/chunk-E74BMFHI.js.map +1 -0
  38. package/dist/{chunk-ZSJBCZUH.js → chunk-EBXOSQ5G.js} +102 -73
  39. package/dist/chunk-EBXOSQ5G.js.map +1 -0
  40. package/dist/chunk-J4K7KIFZ.js +75 -0
  41. package/dist/chunk-J4K7KIFZ.js.map +1 -0
  42. package/dist/{chunk-UFIEUC3Y.js → chunk-JBX3JPTC.js} +9 -8
  43. package/dist/chunk-JBX3JPTC.js.map +1 -0
  44. package/dist/{chunk-4YVKAPKW.js → chunk-JLRPIEIE.js} +2 -17
  45. package/dist/chunk-JLRPIEIE.js.map +1 -0
  46. package/dist/{chunk-4HSLSSPJ.js → chunk-KXZMIZ5H.js} +1344 -758
  47. package/dist/chunk-KXZMIZ5H.js.map +1 -0
  48. package/dist/{chunk-4YG7YK7S.js → chunk-L2GENUG3.js} +3 -3
  49. package/dist/{chunk-J2HG7UCP.js → chunk-OEYXSD3O.js} +3 -3
  50. package/dist/{chunk-P3CVAWGJ.js → chunk-QTW5CH62.js} +5 -5
  51. package/dist/{chunk-L3GMMGRS.js → chunk-R2ZADXRB.js} +2 -2
  52. package/dist/chunk-R7AXDQCA.js +146 -0
  53. package/dist/chunk-R7AXDQCA.js.map +1 -0
  54. package/dist/{chunk-7MPN2JGL.js → chunk-U4CVBCHD.js} +37 -119
  55. package/dist/chunk-U4CVBCHD.js.map +1 -0
  56. package/dist/{chunk-BXOKBZH4.js → chunk-UFD2QKGC.js} +9 -6
  57. package/dist/chunk-UFD2QKGC.js.map +1 -0
  58. package/dist/{chunk-4YCCATI4.js → chunk-USIFGHT3.js} +17 -4
  59. package/dist/chunk-USIFGHT3.js.map +1 -0
  60. package/dist/{chunk-7BXWPI4F.js → chunk-VMQNG2KI.js} +13 -1
  61. package/dist/{chunk-7BXWPI4F.js.map → chunk-VMQNG2KI.js.map} +1 -1
  62. package/dist/{chunk-SN6UYX54.js → chunk-W6TO6K2X.js} +4 -4
  63. package/dist/{chunk-UGVI47X6.js → chunk-YNSXUEIR.js} +6 -6
  64. package/dist/context-mention-palette/index.js +13 -12
  65. package/dist/{contribution-C6K5YfJ7.d.ts → contribution-C2LDwLA7.d.ts} +3 -2
  66. package/dist/dock-icons.js +3 -3
  67. package/dist/i18n/index.d.ts +31 -1
  68. package/dist/i18n/index.js +2 -2
  69. package/dist/index.d.ts +8 -7
  70. package/dist/index.js +27 -25
  71. package/dist/index.js.map +1 -1
  72. package/dist/mention-search.js +11 -10
  73. package/dist/provider-icons.js +1 -1
  74. package/dist/provider-identity.js +1 -1
  75. package/dist/{types-CnT8rNUI.d.ts → types-yF_0mrNS.d.ts} +1 -0
  76. package/dist/workbench/contribution.d.ts +2 -2
  77. package/dist/workbench/contribution.js +11 -11
  78. package/dist/workbench/index.d.ts +4 -4
  79. package/dist/workbench/index.js +22 -28
  80. package/dist/workbench/launch.d.ts +11 -14
  81. package/dist/workbench/launch.js +5 -11
  82. package/dist/workbench/providerCatalog.js +2 -2
  83. package/dist/workbench/sessionTitle.js +3 -3
  84. package/dist/workbench/state.d.ts +2 -12
  85. package/dist/workbench/state.js +3 -9
  86. package/dist/workspace-agent-generated-files.js +2 -1
  87. package/dist/workspace-query-cache.d.ts +19 -0
  88. package/dist/workspace-query-cache.js +7 -0
  89. package/dist/workspace-query-cache.js.map +1 -0
  90. package/package.json +21 -14
  91. package/dist/@-bold-lined-BLLFKBFI.svg +0 -10
  92. package/dist/AgentRichTextReadonly-F6PHC5SX.js +0 -18
  93. package/dist/add-lined-bold-5QPUDZCU.svg +0 -3
  94. package/dist/chunk-4HSLSSPJ.js.map +0 -1
  95. package/dist/chunk-4YCCATI4.js.map +0 -1
  96. package/dist/chunk-4YVKAPKW.js.map +0 -1
  97. package/dist/chunk-4ZWV57MF.js.map +0 -1
  98. package/dist/chunk-7MPN2JGL.js.map +0 -1
  99. package/dist/chunk-BXOKBZH4.js.map +0 -1
  100. package/dist/chunk-C35SNDVZ.js.map +0 -1
  101. package/dist/chunk-H6IQ63DQ.js +0 -14
  102. package/dist/chunk-H6IQ63DQ.js.map +0 -1
  103. package/dist/chunk-IR2CL2X2.js.map +0 -1
  104. package/dist/chunk-KJQERFKX.js.map +0 -1
  105. package/dist/chunk-LDZ6C3YV.js.map +0 -1
  106. package/dist/chunk-QY22OBJS.js.map +0 -1
  107. package/dist/chunk-TKBEVCHG.js.map +0 -1
  108. package/dist/chunk-UFIEUC3Y.js.map +0 -1
  109. package/dist/chunk-V5ROOS2O.js.map +0 -1
  110. package/dist/chunk-ZSJBCZUH.js.map +0 -1
  111. package/dist/claudecode-flat-filled-NHO4JCVK.svg +0 -10
  112. package/dist/codex-flat-filled-WYHCF5VR.svg +0 -10
  113. package/dist/cursor-flat-filled-CL7N3BTZ.svg +0 -3
  114. package/dist/handoff-lined-4WQUBVG3.svg +0 -11
  115. package/dist/open-link-lined-JWEKUKME.svg +0 -4
  116. package/dist/opencode-flat-filled-CYAJPX45.svg +0 -4
  117. package/dist/tutti-flat-filled-K32QBTZE.svg +0 -12
  118. /package/dist/{AgentRichTextReadonly-F6PHC5SX.js.map → AgentRichTextReadonly-42TUVYX5.js.map} +0 -0
  119. /package/dist/{chunk-OWW7CU4U.js.map → chunk-25BPR75P.js.map} +0 -0
  120. /package/dist/{chunk-N4WVVCNI.js.map → chunk-2QHKXI5N.js.map} +0 -0
  121. /package/dist/{chunk-4YG7YK7S.js.map → chunk-L2GENUG3.js.map} +0 -0
  122. /package/dist/{chunk-J2HG7UCP.js.map → chunk-OEYXSD3O.js.map} +0 -0
  123. /package/dist/{chunk-P3CVAWGJ.js.map → chunk-QTW5CH62.js.map} +0 -0
  124. /package/dist/{chunk-L3GMMGRS.js.map → chunk-R2ZADXRB.js.map} +0 -0
  125. /package/dist/{chunk-SN6UYX54.js.map → chunk-W6TO6K2X.js.map} +0 -0
  126. /package/dist/{chunk-UGVI47X6.js.map → chunk-YNSXUEIR.js.map} +0 -0
@@ -2,13 +2,14 @@ import * as react from 'react';
2
2
  import { PropsWithChildren, JSX, HTMLAttributes, ReactNode } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core';
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, 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-DbgQBiYz.js';
5
+ import { u as AgentHostAgentSessionComposerSettings, y as AgentHostUnactivateAgentSessionResult, h as AgentGUIAgentTarget, n as AgentGUIProvider, z as AgentPromptContentBlock, m as AgentGUINodeData, P as Point, o as AgentGUIProviderRailAllPresentation, p as AgentGUIProviderRailMode, q as AgentGUIProviderReadinessGate, l as AgentGUIHomeSuggestionId, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, k as AgentGUIAllAgentsPresentation } from './types-yF_0mrNS.js';
6
+ import { WorkspaceQueryCache } from './workspace-query-cache.js';
7
+ 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-B3N_hJZp.js';
7
8
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
9
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-B70VnPWO.js';
9
10
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
10
11
  import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
11
- import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from './agentConversationVM-Bf3Zv3iI.js';
12
+ import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from './agentConversationVM-D3Dn2LqN.js';
12
13
  import { AgentContextMentionProvider } from './context-mention-provider.js';
13
14
  import { WorkspaceUserProjectI18nRuntime } from '@tutti-os/workspace-user-project/i18n';
14
15
  import { WorkspaceUserProjectSelectChangeAction } from '@tutti-os/workspace-user-project/ui';
@@ -306,6 +307,7 @@ interface AgentActivityRuntime {
306
307
  updateSessionSettings(input: AgentActivityRuntimeUpdateSessionSettingsInput): Promise<AgentActivityRuntimeUpdateSessionSettingsResult>;
307
308
  getSnapshot(workspaceId: string): AgentActivitySnapshot;
308
309
  getSessionEngine(workspaceId: string): AgentSessionEngine;
310
+ getSessionSectionsQueryCache?(workspaceId: string): WorkspaceQueryCache<unknown>;
309
311
  listSessionMessages(input: AgentActivityRuntimeListSessionMessagesInput): Promise<AgentActivityMessagePage>;
310
312
  listAgentGeneratedFiles?(input: AgentActivityRuntimeListGeneratedFilesInput): Promise<AgentActivityRuntimeGeneratedFileList>;
311
313
  listSessionsPage?(input: AgentActivityRuntimeListSessionsPageInput): Promise<AgentActivityRuntimeSessionPageResult>;
@@ -692,6 +694,7 @@ interface AgentComposerProps {
692
694
  usageLimitsLabel: string;
693
695
  usageCompactAction: string;
694
696
  approvalLead: string;
697
+ fileChangeApprovalLead: string;
695
698
  planLead: string;
696
699
  planModes: Array<{
697
700
  id: string;
@@ -0,0 +1,18 @@
1
+ import {
2
+ AgentRichTextReadonly
3
+ } from "./chunk-JBX3JPTC.js";
4
+ import "./chunk-OEYXSD3O.js";
5
+ import "./chunk-LUGELG5V.js";
6
+ import "./chunk-KPMQGPYU.js";
7
+ import "./chunk-W6TO6K2X.js";
8
+ import "./chunk-PJP5BUU6.js";
9
+ import "./chunk-7KVZPJ3O.js";
10
+ import "./chunk-25BPR75P.js";
11
+ import "./chunk-7BN2WQ2M.js";
12
+ import "./chunk-D2JUDUYY.js";
13
+ import "./chunk-6CUELYIF.js";
14
+ import "./chunk-YNSXUEIR.js";
15
+ export {
16
+ AgentRichTextReadonly
17
+ };
18
+ //# sourceMappingURL=AgentRichTextReadonly-42TUVYX5.js.map
@@ -1,12 +1,12 @@
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-Bf3Zv3iI.js';
4
- export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-Bf3Zv3iI.js';
5
- import { d as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DbgQBiYz.js';
3
+ import { c as AgentConversationVM, e as WorkspaceLinkAction, d as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-D3Dn2LqN.js';
4
+ export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-D3Dn2LqN.js';
5
+ import { d as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-B3N_hJZp.js';
6
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
- import '../types-CnT8rNUI.js';
9
+ import '../types-yF_0mrNS.js';
10
10
  import '@tutti-os/workspace-user-project/contracts';
11
11
  import '../pastedTextKinds-D-XuInaS.js';
12
12
 
@@ -6,28 +6,29 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-IR2CL2X2.js";
10
- import "../chunk-UFIEUC3Y.js";
11
- import "../chunk-7BXWPI4F.js";
9
+ } from "../chunk-BRLKORQI.js";
10
+ import "../chunk-JBX3JPTC.js";
11
+ import "../chunk-VMQNG2KI.js";
12
12
  import "../chunk-FGLQZ6I4.js";
13
13
  import "../chunk-XJ34OIEQ.js";
14
- import "../chunk-J2HG7UCP.js";
14
+ import "../chunk-R7AXDQCA.js";
15
+ import "../chunk-OEYXSD3O.js";
15
16
  import "../chunk-LUGELG5V.js";
16
- import "../chunk-7MPN2JGL.js";
17
+ import "../chunk-U4CVBCHD.js";
17
18
  import "../chunk-KPMQGPYU.js";
18
- import "../chunk-LDZ6C3YV.js";
19
+ import "../chunk-E74BMFHI.js";
19
20
  import "../chunk-F5UR6EJG.js";
20
- import "../chunk-SN6UYX54.js";
21
+ import "../chunk-W6TO6K2X.js";
21
22
  import "../chunk-PJP5BUU6.js";
22
- import "../chunk-H6IQ63DQ.js";
23
+ import "../chunk-7KVZPJ3O.js";
23
24
  import "../chunk-MIJXEELH.js";
24
25
  import {
25
26
  translate
26
- } from "../chunk-OWW7CU4U.js";
27
- import "../chunk-TKBEVCHG.js";
27
+ } from "../chunk-25BPR75P.js";
28
+ import "../chunk-7BN2WQ2M.js";
28
29
  import "../chunk-D2JUDUYY.js";
29
- import "../chunk-KJQERFKX.js";
30
- import "../chunk-UGVI47X6.js";
30
+ import "../chunk-6CUELYIF.js";
31
+ import "../chunk-YNSXUEIR.js";
31
32
 
32
33
  // shared/WorkspaceAgentSessionDetail.tsx
33
34
  import { useMemo } from "react";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
@@ -5,7 +5,7 @@ import {
5
5
  openAgentEnvPanel,
6
6
  resolveAgentErrorPresentation,
7
7
  useAgentEnvPanelRequest
8
- } from "../chunk-7BXWPI4F.js";
8
+ } from "../chunk-VMQNG2KI.js";
9
9
 
10
10
  // shared/agentEnv/codexSetupContract.ts
11
11
  function readCodexSetupActiveAction(status) {
@@ -1,15 +1,16 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-Do6py-T_.js';
4
- import './agentGuiNodeTypes-DbgQBiYz.js';
5
- export { l as AgentGUIHomeSuggestionId } from './types-CnT8rNUI.js';
3
+ export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-CkxdEB8F.js';
4
+ import './agentGuiNodeTypes-B3N_hJZp.js';
5
+ export { l as AgentGUIHomeSuggestionId } from './types-yF_0mrNS.js';
6
6
  import './runtime-BBNdWgDU.js';
7
7
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  import '@tutti-os/agent-activity-core';
9
+ import './workspace-query-cache.js';
9
10
  import './agentFileMentionContracts-B70VnPWO.js';
10
11
  import '@tutti-os/workspace-file-manager/services';
11
12
  import '@tutti-os/workspace-file-reference/core';
12
- import './agentConversationVM-Bf3Zv3iI.js';
13
+ import './agentConversationVM-D3Dn2LqN.js';
13
14
  import '@tutti-os/workspace-issue-manager/core';
14
15
  import './workspaceAgentActivityListTypes-DZfS_HgG.js';
15
16
  import './context-mention-provider.js';
package/dist/agent-gui.js CHANGED
@@ -1,42 +1,44 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-4HSLSSPJ.js";
4
- import "./chunk-ZSJBCZUH.js";
5
- import "./chunk-V5ROOS2O.js";
6
- import "./chunk-4YVKAPKW.js";
7
- import "./chunk-QY22OBJS.js";
8
- import "./chunk-L3GMMGRS.js";
3
+ } from "./chunk-KXZMIZ5H.js";
4
+ import "./chunk-J4K7KIFZ.js";
5
+ import "./chunk-EBXOSQ5G.js";
6
+ import "./chunk-AY5AFMT2.js";
7
+ import "./chunk-BM3CSFWU.js";
8
+ import "./chunk-JLRPIEIE.js";
9
+ import "./chunk-R2ZADXRB.js";
9
10
  import "./chunk-UHBCM6RO.js";
10
- import "./chunk-IR2CL2X2.js";
11
- import "./chunk-UFIEUC3Y.js";
12
- import "./chunk-7BXWPI4F.js";
13
- import "./chunk-P3CVAWGJ.js";
14
- import "./chunk-C35SNDVZ.js";
11
+ import "./chunk-BRLKORQI.js";
12
+ import "./chunk-JBX3JPTC.js";
13
+ import "./chunk-VMQNG2KI.js";
14
+ import "./chunk-QTW5CH62.js";
15
+ import "./chunk-7OYHDOGG.js";
15
16
  import "./chunk-FGLQZ6I4.js";
16
- import "./chunk-4YG7YK7S.js";
17
- import "./chunk-BXOKBZH4.js";
18
- import "./chunk-4YCCATI4.js";
17
+ import "./chunk-L2GENUG3.js";
18
+ import "./chunk-UFD2QKGC.js";
19
+ import "./chunk-USIFGHT3.js";
19
20
  import "./chunk-XJ34OIEQ.js";
20
- import "./chunk-J2HG7UCP.js";
21
+ import "./chunk-R7AXDQCA.js";
22
+ import "./chunk-OEYXSD3O.js";
21
23
  import "./chunk-LUGELG5V.js";
22
24
  import "./chunk-JM24HADP.js";
23
- import "./chunk-4ZWV57MF.js";
25
+ import "./chunk-AIZJHA4Q.js";
24
26
  import "./chunk-2RQM7PJN.js";
25
- import "./chunk-7MPN2JGL.js";
27
+ import "./chunk-U4CVBCHD.js";
26
28
  import "./chunk-KPMQGPYU.js";
27
- import "./chunk-N4WVVCNI.js";
29
+ import "./chunk-2QHKXI5N.js";
28
30
  import "./chunk-YMXYBG7U.js";
29
- import "./chunk-LDZ6C3YV.js";
31
+ import "./chunk-E74BMFHI.js";
30
32
  import "./chunk-F5UR6EJG.js";
31
- import "./chunk-SN6UYX54.js";
33
+ import "./chunk-W6TO6K2X.js";
32
34
  import "./chunk-PJP5BUU6.js";
33
- import "./chunk-H6IQ63DQ.js";
35
+ import "./chunk-7KVZPJ3O.js";
34
36
  import "./chunk-MIJXEELH.js";
35
- import "./chunk-OWW7CU4U.js";
36
- import "./chunk-TKBEVCHG.js";
37
+ import "./chunk-25BPR75P.js";
38
+ import "./chunk-7BN2WQ2M.js";
37
39
  import "./chunk-D2JUDUYY.js";
38
- import "./chunk-KJQERFKX.js";
39
- import "./chunk-UGVI47X6.js";
40
+ import "./chunk-6CUELYIF.js";
41
+ import "./chunk-YNSXUEIR.js";
40
42
  export {
41
43
  AgentGUI
42
44
  };
@@ -2,7 +2,7 @@ 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-Bf3Zv3iI.js';
5
+ import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from '../agentConversationVM-D3Dn2LqN.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
8
  import { a as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListTypes-DZfS_HgG.js';
@@ -135,6 +135,7 @@ declare function resolveMessageCenterNotificationAction(item: WorkspaceAgentMess
135
135
  }): string | null;
136
136
  declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof useTranslation>["t"], provider?: string): {
137
137
  approvalLead: string;
138
+ fileChangeApprovalLead: string;
138
139
  planLead: string;
139
140
  planModes: {
140
141
  id: string;
@@ -365,6 +366,7 @@ interface AgentInteractivePromptSurfaceProps {
365
366
  }) => void;
366
367
  labels: {
367
368
  approvalLead: string;
369
+ fileChangeApprovalLead: string;
368
370
  planLead: string;
369
371
  planModes: Array<{
370
372
  id: string;
@@ -6,7 +6,7 @@ import {
6
6
  dispatchAgentPlanPromptAction,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-4ZWV57MF.js";
9
+ } from "../chunk-AIZJHA4Q.js";
10
10
  import {
11
11
  useEngineSelector
12
12
  } from "../chunk-2RQM7PJN.js";
@@ -17,27 +17,28 @@ import {
17
17
  extractExitPlanKeepPlanningOptionId,
18
18
  extractExitPlanModeOptions,
19
19
  isExitPlanSwitchModeInput,
20
+ normalizeAgentApprovalPurpose,
20
21
  normalizeAskUserQuestions
21
- } from "../chunk-7MPN2JGL.js";
22
+ } from "../chunk-U4CVBCHD.js";
22
23
  import {
23
24
  cn
24
25
  } from "../chunk-KPMQGPYU.js";
25
26
  import {
26
27
  userAvatarPlaceholderUrl,
27
28
  workspaceAgentActivityStatusLabel
28
- } from "../chunk-N4WVVCNI.js";
29
+ } from "../chunk-2QHKXI5N.js";
29
30
  import {
30
31
  resolveWorkspaceAgentSessionSortTimeUnixMs
31
32
  } from "../chunk-YMXYBG7U.js";
32
33
  import {
33
34
  workspaceAgentProviderLabel
34
- } from "../chunk-LDZ6C3YV.js";
35
+ } from "../chunk-E74BMFHI.js";
35
36
  import "../chunk-F5UR6EJG.js";
36
37
  import {
37
38
  managedAgentRoundedIconUrl
38
- } from "../chunk-SN6UYX54.js";
39
+ } from "../chunk-W6TO6K2X.js";
39
40
  import "../chunk-PJP5BUU6.js";
40
- import "../chunk-H6IQ63DQ.js";
41
+ import "../chunk-7KVZPJ3O.js";
41
42
  import {
42
43
  normalizeAgentTitleText
43
44
  } from "../chunk-MIJXEELH.js";
@@ -45,11 +46,11 @@ import {
45
46
  AgentGuiI18nProvider,
46
47
  getActiveUiLanguage,
47
48
  useTranslation
48
- } from "../chunk-OWW7CU4U.js";
49
- import "../chunk-TKBEVCHG.js";
49
+ } from "../chunk-25BPR75P.js";
50
+ import "../chunk-7BN2WQ2M.js";
50
51
  import "../chunk-D2JUDUYY.js";
51
- import "../chunk-KJQERFKX.js";
52
- import "../chunk-UGVI47X6.js";
52
+ import "../chunk-6CUELYIF.js";
53
+ import "../chunk-YNSXUEIR.js";
53
54
 
54
55
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
55
56
  import {
@@ -704,12 +705,16 @@ function approvalPromptFromMessage(message) {
704
705
  return null;
705
706
  }
706
707
  const mcpTarget = extractAgentMcpToolTarget({ payload });
708
+ const approvalPurpose = normalizeAgentApprovalPurpose(
709
+ payload.approvalPurpose
710
+ );
707
711
  return {
708
712
  kind: "approval",
709
713
  id: `approval:${requestId}`,
710
714
  turnId: message.turnId ?? "turn:unknown",
711
715
  requestId,
712
716
  callId: stringValue2(payload.callId) ?? message.messageId,
717
+ ...approvalPurpose ? { approvalPurpose } : {},
713
718
  title: firstNonEmptyString2(
714
719
  mcpTarget?.displayName ?? null,
715
720
  stringValue2(payload.summary),
@@ -1438,6 +1443,9 @@ function buildWorkspaceAgentInteractivePromptLabels(t, provider) {
1438
1443
  approvalLead: t("agentHost.agentGui.approvalRequired", {
1439
1444
  provider: provider ? workspaceAgentProviderLabel(provider) : t("agentHost.workspaceAgentsGenericAgentName")
1440
1445
  }),
1446
+ fileChangeApprovalLead: t("agentHost.agentGui.fileChangeApprovalRequired", {
1447
+ provider: provider ? workspaceAgentProviderLabel(provider) : t("agentHost.workspaceAgentsGenericAgentName")
1448
+ }),
1441
1449
  planLead: t("agentHost.agentGui.planLead"),
1442
1450
  planModes: [
1443
1451
  {
@@ -3594,12 +3602,16 @@ function promptFromInteraction(interaction) {
3594
3602
  }
3595
3603
  ] : [];
3596
3604
  });
3605
+ const approvalPurpose = normalizeAgentApprovalPurpose(
3606
+ interaction.metadata?.approvalPurpose
3607
+ );
3597
3608
  return {
3598
3609
  kind: "approval",
3599
3610
  id: `approval:${interaction.requestId}`,
3600
3611
  turnId: interaction.turnId,
3601
3612
  requestId: interaction.requestId,
3602
3613
  callId: textValue(input.callId) ?? interaction.requestId,
3614
+ ...approvalPurpose ? { approvalPurpose } : {},
3603
3615
  title: interactionSummary(interaction),
3604
3616
  toolName: interaction.toolName ?? null,
3605
3617
  status: interaction.status,