@tutti-os/agent-gui 0.0.189 → 0.0.191

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 (94) hide show
  1. package/dist/AgentRichTextReadonly-HJQQ4KAL.js +19 -0
  2. package/dist/agent-conversation/index.d.ts +29 -15
  3. package/dist/agent-conversation/index.js +11 -11
  4. package/dist/agent-env/index.js +1 -1
  5. package/dist/agent-gui.d.ts +315 -13
  6. package/dist/agent-gui.js +23 -23
  7. package/dist/agent-message-center/index.d.ts +4 -7
  8. package/dist/agent-message-center/index.js +9 -9
  9. package/dist/{agentGuiNodeTypes-DAT3XJON.d.ts → agentGuiNodeTypes-B23ubO8n.d.ts} +21 -3
  10. package/dist/agents.d.ts +2 -1
  11. package/dist/app/renderer/agentactivity.css +20 -3
  12. package/dist/{chunk-YSA4MXR5.js → chunk-4CHBM3G3.js} +9 -3
  13. package/dist/chunk-4CHBM3G3.js.map +1 -0
  14. package/dist/{chunk-NCD5I4OB.js → chunk-5VECGOBU.js} +3 -3
  15. package/dist/{chunk-F5YFT4VB.js → chunk-73FNXLC6.js} +5431 -2202
  16. package/dist/chunk-73FNXLC6.js.map +1 -0
  17. package/dist/{chunk-AODSTIED.js → chunk-AFUVWWQY.js} +2 -2
  18. package/dist/{chunk-MHOYBRCY.js → chunk-CBMWHQ7P.js} +1 -1
  19. package/dist/chunk-CBMWHQ7P.js.map +1 -0
  20. package/dist/{chunk-THBCAUBR.js → chunk-CXC3ROXQ.js} +2 -2
  21. package/dist/{chunk-THBCAUBR.js.map → chunk-CXC3ROXQ.js.map} +1 -1
  22. package/dist/{chunk-CAZ7NYUE.js → chunk-DKGFEIZ7.js} +2 -2
  23. package/dist/{chunk-5UTK6FDH.js → chunk-DNHDR2YC.js} +3 -3
  24. package/dist/{chunk-U7GYZU6V.js → chunk-E2Y4FFQW.js} +5 -5
  25. package/dist/{chunk-KAF6JPGL.js → chunk-FGD2K7AB.js} +3 -3
  26. package/dist/chunk-FGD2K7AB.js.map +1 -0
  27. package/dist/{chunk-ZREBC77R.js → chunk-G7DS23D4.js} +2 -2
  28. package/dist/{chunk-VGUKS6JR.js → chunk-I4ICM3U4.js} +297 -43
  29. package/dist/chunk-I4ICM3U4.js.map +1 -0
  30. package/dist/{chunk-6II57C72.js → chunk-KDN6SLJM.js} +2 -2
  31. package/dist/{chunk-E5X3DSQZ.js → chunk-L3YCXXMA.js} +9 -9
  32. package/dist/{chunk-2674YZOF.js → chunk-M6HTOCQK.js} +3 -3
  33. package/dist/{chunk-SZVHT57M.js → chunk-MGSRWYRN.js} +2 -2
  34. package/dist/{chunk-5CLSJWUN.js → chunk-O433KXLK.js} +8 -1
  35. package/dist/chunk-O433KXLK.js.map +1 -0
  36. package/dist/{chunk-Z5IASLIU.js → chunk-PFTST5V6.js} +4 -4
  37. package/dist/{chunk-LLIM2OX6.js → chunk-S7OROGUS.js} +2 -2
  38. package/dist/{chunk-BVA5SVOD.js → chunk-U6TH4RJJ.js} +1394 -784
  39. package/dist/chunk-U6TH4RJJ.js.map +1 -0
  40. package/dist/{chunk-ETJFWUCA.js → chunk-V2BMPPOE.js} +4 -4
  41. package/dist/{chunk-OKBVGNH7.js → chunk-Z5Y3RB2U.js} +2 -2
  42. package/dist/{chunk-V3QHMEJZ.js → chunk-ZE6VLLFC.js} +51 -4
  43. package/dist/chunk-ZE6VLLFC.js.map +1 -0
  44. package/dist/context-mention-palette/index.js +10 -10
  45. package/dist/context-mention-provider.d.ts +1 -0
  46. package/dist/{contribution-C0MnLVKF.d.ts → contribution-DfeuQHH6.d.ts} +39 -0
  47. package/dist/conversation-rail-runtime.d.ts +10 -3
  48. package/dist/dock-icons.js +2 -2
  49. package/dist/i18n/index.d.ts +370 -168
  50. package/dist/i18n/index.js +2 -2
  51. package/dist/index.d.ts +1199 -580
  52. package/dist/index.js +23 -23
  53. package/dist/index.js.map +1 -1
  54. package/dist/mention-search.js +8 -8
  55. package/dist/planImplementationPresentation-BxVOLt6A.d.ts +24 -0
  56. package/dist/provider-identity.js +1 -1
  57. package/dist/{types-CWFDZVkv.d.ts → types-CWKbqBmi.d.ts} +44 -0
  58. package/dist/workbench/contribution.d.ts +1 -1
  59. package/dist/workbench/contribution.js +10 -10
  60. package/dist/workbench/index.d.ts +2 -2
  61. package/dist/workbench/index.js +10 -10
  62. package/dist/workbench/launch.d.ts +4 -0
  63. package/dist/workbench/launch.js +4 -4
  64. package/dist/workbench/providerCatalog.js +2 -2
  65. package/dist/workbench/sessionTitle.js +3 -3
  66. package/dist/workbench/state.js +3 -3
  67. package/dist/workbench/types.d.ts +3 -0
  68. package/dist/workbench/types.js +1 -1
  69. package/dist/{agentConversationVM-CYXZSrh9.d.ts → workspaceLinkActions-BmVLZszV.d.ts} +110 -73
  70. package/package.json +14 -14
  71. package/dist/AgentRichTextReadonly-OKZPTCIX.js +0 -19
  72. package/dist/chunk-5CLSJWUN.js.map +0 -1
  73. package/dist/chunk-BVA5SVOD.js.map +0 -1
  74. package/dist/chunk-F5YFT4VB.js.map +0 -1
  75. package/dist/chunk-KAF6JPGL.js.map +0 -1
  76. package/dist/chunk-MHOYBRCY.js.map +0 -1
  77. package/dist/chunk-V3QHMEJZ.js.map +0 -1
  78. package/dist/chunk-VGUKS6JR.js.map +0 -1
  79. package/dist/chunk-YSA4MXR5.js.map +0 -1
  80. /package/dist/{AgentRichTextReadonly-OKZPTCIX.js.map → AgentRichTextReadonly-HJQQ4KAL.js.map} +0 -0
  81. /package/dist/{chunk-NCD5I4OB.js.map → chunk-5VECGOBU.js.map} +0 -0
  82. /package/dist/{chunk-AODSTIED.js.map → chunk-AFUVWWQY.js.map} +0 -0
  83. /package/dist/{chunk-CAZ7NYUE.js.map → chunk-DKGFEIZ7.js.map} +0 -0
  84. /package/dist/{chunk-5UTK6FDH.js.map → chunk-DNHDR2YC.js.map} +0 -0
  85. /package/dist/{chunk-U7GYZU6V.js.map → chunk-E2Y4FFQW.js.map} +0 -0
  86. /package/dist/{chunk-ZREBC77R.js.map → chunk-G7DS23D4.js.map} +0 -0
  87. /package/dist/{chunk-6II57C72.js.map → chunk-KDN6SLJM.js.map} +0 -0
  88. /package/dist/{chunk-E5X3DSQZ.js.map → chunk-L3YCXXMA.js.map} +0 -0
  89. /package/dist/{chunk-2674YZOF.js.map → chunk-M6HTOCQK.js.map} +0 -0
  90. /package/dist/{chunk-SZVHT57M.js.map → chunk-MGSRWYRN.js.map} +0 -0
  91. /package/dist/{chunk-Z5IASLIU.js.map → chunk-PFTST5V6.js.map} +0 -0
  92. /package/dist/{chunk-LLIM2OX6.js.map → chunk-S7OROGUS.js.map} +0 -0
  93. /package/dist/{chunk-ETJFWUCA.js.map → chunk-V2BMPPOE.js.map} +0 -0
  94. /package/dist/{chunk-OKBVGNH7.js.map → chunk-Z5Y3RB2U.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import react__default, { ReactNode, PropsWithChildren, JSX } from 'react';
3
3
  import * as _tutti_os_ui_i18n_runtime from '@tutti-os/ui-i18n-runtime';
4
4
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
5
5
  import * as _tutti_os_agent_activity_core from '@tutti-os/agent-activity-core';
6
- import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityInitialGoalControl, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivityMessageSemantics, AgentActivityGoalControlAction, AgentActivityTurn, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession, AgentActivitySubmitSettingsPatch, AgentSessionEngineState } from '@tutti-os/agent-activity-core';
6
+ import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivityUpdateTuttiModeActivationInput, AgentActivityUpdateTuttiModeActivationResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySetCollaborationAdoptionInput, AgentActivityCollaborationRun, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivityMessageSemantics, AgentActivityGoalControlAction, AgentActivityTurn, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession, AgentActivitySubmitSettingsPatch, AgentSessionEngineState } from '@tutti-os/agent-activity-core';
7
7
  export { AgentActivityAdapter, AgentActivityMessage, AgentActivityNeedsAttentionItem, AgentActivitySnapshot, selectNeedsAttentionCount, selectNeedsAttentionItems } from '@tutti-os/agent-activity-core';
8
8
  import { WorkspaceUserProjectService, WorkspaceUserProject } from '@tutti-os/workspace-user-project/contracts';
9
9
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
@@ -91,6 +91,7 @@ interface AgentHostAgentSessionPermissionConfig {
91
91
  }
92
92
  interface AgentHostAgentSessionComposerSettings {
93
93
  model?: string | null;
94
+ modelPlanId?: string | null;
94
95
  reasoningEffort?: AgentHostAgentSessionReasoningEffort | null;
95
96
  speed?: AgentHostAgentSessionSpeed | null;
96
97
  planMode?: boolean;
@@ -396,6 +397,7 @@ interface AgentActivityRuntimeDiagnosticInput {
396
397
  }
397
398
  interface AgentActivityRuntimeActivateSessionInputBase {
398
399
  agentSessionId: string;
400
+ capabilityRefs?: AgentActivityCreateSessionInput["capabilityRefs"];
399
401
  cwd?: string;
400
402
  initialContent?: AgentActivitySendInput["content"];
401
403
  /** 仅展示用首轮文本(bundle 折叠成一个 chip);initialContent 仍带展开后的文件。 */
@@ -410,12 +412,11 @@ interface AgentActivityRuntimeActivateSessionInputBase {
410
412
  type AgentActivityRuntimeActivateSessionInput = (AgentActivityRuntimeActivateSessionInputBase & {
411
413
  agentTargetId: string;
412
414
  clientSubmitId: string;
413
- initialGoalControl?: AgentActivityInitialGoalControl;
415
+ initialTuttiModeActivation?: AgentActivityCreateSessionInput["initialTuttiModeActivation"];
414
416
  mode: "new";
415
417
  }) | (AgentActivityRuntimeActivateSessionInputBase & {
416
418
  agentTargetId?: string | null;
417
419
  clientSubmitId?: never;
418
- initialGoalControl?: never;
419
420
  mode: "existing";
420
421
  });
421
422
  interface AgentActivityRuntimeUnactivateSessionInput {
@@ -544,6 +545,7 @@ interface AgentActivityRuntime {
544
545
  getSession(workspaceId: string, agentSessionId: string): Promise<AgentActivitySession>;
545
546
  getComposerOptions(input: AgentActivityRuntimeGetComposerOptionsInput): Promise<unknown>;
546
547
  updateSessionSettings(input: AgentActivityRuntimeUpdateSessionSettingsInput): Promise<AgentActivityRuntimeUpdateSessionSettingsResult>;
548
+ updateTuttiModeActivation(input: AgentActivityUpdateTuttiModeActivationInput): Promise<AgentActivityUpdateTuttiModeActivationResult>;
547
549
  getSnapshot(workspaceId: string): AgentActivitySnapshot;
548
550
  getSessionEngine(workspaceId: string): AgentSessionEngine;
549
551
  getSessionSectionsQueryCache?(workspaceId: string): WorkspaceQueryCache<unknown>;
@@ -563,6 +565,11 @@ interface AgentActivityRuntime {
563
565
  readSessionAttachment?(input: AgentActivityRuntimeReadSessionAttachmentInput): Promise<AgentActivityRuntimeSessionAttachment>;
564
566
  readPromptAsset?(input: AgentActivityRuntimeReadPromptAssetInput): Promise<AgentActivityRuntimePromptAsset>;
565
567
  renameSession(input: AgentActivityRenameSessionInput): Promise<AgentActivitySession>;
568
+ /**
569
+ * Record whether a collaboration outcome was adopted.
570
+ * Optional; hosts without support omit it and adoption controls stay hidden.
571
+ */
572
+ setCollaborationAdoption?(input: AgentActivitySetCollaborationAdoptionInput): Promise<AgentActivityCollaborationRun>;
566
573
  setSessionPinned(input: AgentActivityRuntimeSetSessionPinnedInput): Promise<AgentActivitySession>;
567
574
  trackSettingsProjectChange?(input: AgentActivityRuntimeTrackSettingsProjectChangeInput): Promise<void>;
568
575
  trackDraftComposerSettingsChange?(input: AgentActivityRuntimeTrackDraftComposerSettingsChangeInput): Promise<void>;
@@ -1024,381 +1031,122 @@ interface AgentSettings {
1024
1031
  hideWorktreeMismatchDropWarning: boolean;
1025
1032
  }
1026
1033
 
1027
- interface AgentGUINodeData {
1028
- provider: AgentGUIProvider;
1029
- agentTargetId?: string | null;
1030
- lastActiveAgentSessionId: string | null;
1031
- lastActiveAgentSessionIdByAgentTargetId?: Record<string, string> | null;
1032
- conversationCount?: number | null;
1033
- conversationRailWidthPx?: number | null;
1034
- conversationRailCollapsed?: boolean | null;
1035
- composerOverrides?: AgentHostAgentSessionComposerSettings | null;
1036
- composerOverridesByAgentTargetId?: Record<string, AgentHostAgentSessionComposerSettings | null> | null;
1037
- composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
1034
+ interface WorkspaceAgentActivityFileChange {
1035
+ path: string;
1036
+ change?: "added" | "modified" | "deleted" | "moved" | string;
1037
+ tools?: string[];
1038
1038
  }
1039
- /**
1040
- * Open runtime metadata reported by an Agent Target.
1041
- *
1042
- * Built-in providers still use AgentProvider, while externally installed ACP
1043
- * extensions use namespaced values such as `acp:gemini`.
1044
- */
1045
- type AgentGUIProvider = string;
1046
- /**
1047
- * Stable identifiers for the starter entries shown below the empty new-session
1048
- * composer. Hosts can pass these values to `AgentGUI.disabled` to hide entries
1049
- * that should not be available in their integration.
1050
- */
1051
- type AgentGUIHomeSuggestionId = "meet-tutti" | "task-breakdown" | "quality-review" | "agent-interaction" | "import-session";
1052
- type AgentGUIAgentAvailabilityStatus = "ready" | "checking" | "coming_soon" | "not_installed" | "auth_required" | "unavailable";
1053
- type AgentGUIAgentAvailabilityAction = "install" | "login" | "refresh";
1054
- interface AgentGUIAgentAvailability {
1055
- status: AgentGUIAgentAvailabilityStatus;
1056
- reason?: string | null;
1057
- pendingAction?: AgentGUIAgentAvailabilityAction | null;
1039
+ interface WorkspaceAgentActivityFileChanges {
1040
+ coverage?: string;
1041
+ files?: WorkspaceAgentActivityFileChange[];
1058
1042
  }
1059
- interface AgentGUIAgentOwner {
1060
- name?: string | null;
1061
- avatarUrl?: string | null;
1043
+ interface WorkspaceAgentActivityTimelineItem {
1044
+ id: number;
1045
+ workspaceId?: string;
1046
+ agentSessionId: string;
1047
+ seq?: number;
1048
+ turnId?: string;
1049
+ eventSource?: string;
1050
+ eventId: string;
1051
+ actorType: string;
1052
+ actorId: string;
1053
+ itemType: "message" | "call" | "event" | "error" | "lifecycle" | string;
1054
+ role?: string;
1055
+ callType?: "tool" | "skill" | "subagent" | "approval" | "workflow" | string;
1056
+ callId?: string;
1057
+ name?: string;
1058
+ status?: string | null;
1059
+ messageSemantics?: AgentActivityMessageSemantics;
1060
+ content?: string;
1061
+ payload?: Record<string, unknown> & {
1062
+ content?: unknown;
1063
+ text?: unknown;
1064
+ fileChanges?: WorkspaceAgentActivityFileChanges;
1065
+ };
1066
+ occurredAtUnixMs?: number;
1067
+ createdAtUnixMs?: number;
1062
1068
  }
1063
- /** Host-authoritative ownership classification for Agent directory entries. */
1064
- type AgentGUIAgentOwnership = "self" | "shared";
1065
- /**
1066
- * Host-projected entry from the workspace `/agents` directory.
1067
- *
1068
- * `agentTargetId` is the only UI and launch identity. `provider` remains
1069
- * execution metadata for provider-native composer/runtime policy and must not
1070
- * be used to group, deduplicate, name, or select entries.
1071
- */
1072
- interface AgentGUIAgent {
1073
- agentTargetId: string;
1069
+
1070
+ type ToolCallStatusKind = "working" | "completed" | "failed" | "canceled" | "waiting";
1071
+ interface WorkspaceAgentToolCallDisplay {
1072
+ id: string;
1074
1073
  name: string;
1075
- iconUrl: string;
1076
- /** Single-color artwork rendered through the conversation rail CSS mask. */
1077
- maskIconUrl?: string | null;
1078
- heroImageUrl?: string | null;
1079
- description?: string | null;
1080
- /** Host-resolved display name of the device that owns this Agent target. */
1081
- ownerDeviceLabel?: string | null;
1082
- owner?: AgentGUIAgentOwner | null;
1083
- ownership?: AgentGUIAgentOwnership | null;
1084
- availability: AgentGUIAgentAvailability;
1085
- provider: AgentGUIProvider;
1086
- setupKind?: "target_runtime" | null;
1087
- }
1088
- type AgentGUIAgentDirectoryStatus = "idle" | "loading" | "ready" | "error";
1089
- interface AgentGUIAgentDirectorySnapshot {
1090
- agents: readonly AgentGUIAgent[];
1091
- capturedAtUnixMs: number | null;
1092
- error: string | null;
1093
- status: AgentGUIAgentDirectoryStatus;
1094
- }
1095
- interface AgentGUIAgentDirectoryPort {
1096
- getSnapshot(): AgentGUIAgentDirectorySnapshot;
1097
- subscribe(listener: () => void): () => void;
1098
- }
1099
- interface AgentGUIAllAgentsPresentation {
1100
- iconUrl?: string | null;
1101
- }
1102
- interface AgentGUIAgentTargetRef {
1103
- kind: string;
1104
- provider: AgentGUIProvider;
1105
- [key: string]: unknown;
1074
+ status: string | null;
1075
+ statusKind: ToolCallStatusKind | null;
1076
+ detail?: string;
1106
1077
  }
1107
- interface AgentGUIAgentTargetBadge {
1108
- iconUrl: string;
1109
- label?: string;
1078
+
1079
+ type WorkspaceAgentLatestActivityStatus = "working" | "waiting" | "idle" | "completed" | "canceled" | "failed";
1080
+ interface WorkspaceAgentConversationPreviewLine {
1081
+ actorName: string;
1082
+ summary: string;
1110
1083
  }
1111
- interface AgentGUIAgentTarget {
1112
- targetId: string;
1113
- agentTargetId?: string | null;
1114
- provider: AgentGUIProvider;
1115
- ref: AgentGUIAgentTargetRef;
1084
+
1085
+ type WorkspaceAgentActivityStatus = WorkspaceAgentLatestActivityStatus;
1086
+ interface WorkspaceAgentChangedFile {
1087
+ path: string;
1116
1088
  label: string;
1117
- description?: string;
1118
- iconUrl?: string | null;
1119
- maskIconUrl?: string | null;
1120
- heroImageUrl?: string | null;
1121
- badge?: AgentGUIAgentTargetBadge | null;
1122
- ownerLabel?: string;
1123
- ownerDeviceLabel?: string;
1124
- ownership?: AgentGUIAgentOwnership;
1125
- availability?: AgentGUIAgentAvailability;
1126
- disabled?: boolean;
1127
- unavailableReason?: string;
1128
- }
1129
- interface AgentGUIProviderRailAllPresentation {
1130
- iconUrl?: string | null;
1131
- }
1132
- /**
1133
- * How the provider rail composes the target list.
1134
- * - "catalog" (default): host-provided targets are augmented with the static
1135
- * local provider catalog, disabled placeholders (nexight/hermes/openclaw),
1136
- * and coming-soon markers. When no targets are provided, the full local
1137
- * catalog is shown.
1138
- * - "exact": the rail renders exactly the provided targets — no static catalog
1139
- * fallback, no disabled placeholders, no coming-soon injection. When the list
1140
- * is empty (and not loading) the host-provided empty renderer is shown. Use
1141
- * this when the list is fully orchestrated externally (e.g. shared agents,
1142
- * custom /agents).
1143
- */
1144
- type AgentGUIProviderRailMode = "catalog" | "exact";
1145
- type AgentGUIProviderReadinessGateStatus = "checking" | "coming_soon" | "not_installed" | "auth_required" | "unavailable";
1146
- type AgentGUIProviderReadinessGateAction = "install" | "login" | "refresh";
1147
- interface AgentGUIProviderReadinessGate {
1148
- status: AgentGUIProviderReadinessGateStatus;
1149
- pendingAction?: AgentGUIProviderReadinessGateAction | null;
1150
- onAction?: (provider: AgentGUIProvider, action: AgentGUIProviderReadinessGateAction) => void;
1151
- }
1152
- interface Size {
1153
- width: number;
1154
- height: number;
1155
- }
1156
- interface Point {
1157
- x: number;
1158
- y: number;
1159
1089
  }
1160
- interface NodeFrame {
1161
- position: Point;
1162
- size: Size;
1090
+ interface WorkspaceAgentActivityCard {
1091
+ id: string;
1092
+ sessionId: string;
1093
+ userId: string | null;
1094
+ userName: string;
1095
+ userAvatarUrl?: string;
1096
+ agentProvider: string;
1097
+ agentName: string;
1098
+ title: string;
1099
+ status: WorkspaceAgentActivityStatus;
1100
+ latestActivitySummary: string;
1101
+ /** User prompt + latest agent reply for task/issue execution cards; room status list uses single-line summary only. */
1102
+ conversationPreview?: WorkspaceAgentConversationPreviewLine[];
1103
+ latestActivityActorName?: string;
1104
+ toolCalls?: WorkspaceAgentToolCallDisplay[];
1105
+ changedFiles: WorkspaceAgentChangedFile[];
1106
+ sortTimeUnixMs: number;
1107
+ readTimeUnixMs?: number;
1163
1108
  }
1164
1109
 
1165
- type AgentGuiWorkbenchSessionAction = "rename" | "copy-markdown" | "copy-reference";
1166
- interface AgentGuiWorkbenchSessionActionRequest {
1167
- action: AgentGuiWorkbenchSessionAction;
1168
- agentSessionId: string | null;
1169
- sequence: number;
1110
+ interface WorkspaceAgentSessionDetailMessage {
1111
+ id: string;
1112
+ body: string;
1113
+ status?: string | null;
1114
+ statusKind?: ToolCallStatusKind | null;
1115
+ turnId?: string;
1116
+ occurredAtUnixMs?: number | null;
1117
+ sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1118
+ visibleError?: {
1119
+ code: string | null;
1120
+ phase: string | null;
1121
+ provider: string | null;
1122
+ detail: string | null;
1123
+ retryable: boolean | null;
1124
+ } | null;
1125
+ systemNotice?: {
1126
+ noticeKind: string | null;
1127
+ severity: string | null;
1128
+ source?: string | null;
1129
+ command?: AgentActivityMessageSemantics["noticeCommand"] | null;
1130
+ commandStatus?: AgentActivityMessageSemantics["noticeCommandStatus"] | null;
1131
+ title: string | null;
1132
+ detail: string | null;
1133
+ retryable: boolean | null;
1134
+ } | null;
1170
1135
  }
1171
-
1172
- type WorkspaceLinkActionSource = "agent-markdown" | "agent-file-change" | string;
1173
- interface OpenWorkspaceFileLinkAction {
1174
- type: "open-workspace-file";
1175
- mode?: "reveal" | "open-directory";
1176
- path: string;
1177
- directoryPath: string;
1178
- workspaceRoot: string;
1179
- source: WorkspaceLinkActionSource;
1180
- prefetchedDirectoryListing?: WorkspaceFileLinkDirectoryListing | null;
1136
+ interface WorkspaceAgentSessionDetailThinking {
1137
+ id: string;
1138
+ body: string;
1139
+ statusKind?: ToolCallStatusKind | null;
1140
+ turnId?: string;
1141
+ occurredAtUnixMs?: number | null;
1142
+ sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1181
1143
  }
1182
- interface OpenLocalAssetPreviewLinkAction {
1183
- type: "open-local-asset-preview";
1184
- path: string;
1185
- name: string;
1186
- source: WorkspaceLinkActionSource;
1187
- }
1188
- interface WorkspaceFileLinkDirectoryEntry {
1189
- path: string;
1190
- name: string;
1191
- kind: "file" | "directory" | "unknown";
1192
- hasChildren: boolean | null;
1193
- sizeBytes: number | null;
1194
- mtimeMs: number | null;
1195
- }
1196
- interface WorkspaceFileLinkDirectoryListing {
1197
- workspaceId: string;
1198
- root: string;
1199
- directoryPath: string;
1200
- entries: WorkspaceFileLinkDirectoryEntry[];
1201
- }
1202
- interface OpenWorkspaceUrlLinkAction {
1203
- type: "open-url";
1204
- url: string;
1205
- source: WorkspaceLinkActionSource;
1206
- }
1207
- interface OpenAgentSessionLinkAction {
1208
- type: "open-agent-session";
1209
- workspaceId: string;
1210
- agentSessionId: string;
1211
- agentTargetId?: string | null;
1212
- source: WorkspaceLinkActionSource;
1213
- }
1214
- interface OpenWorkspaceIssueLinkAction {
1215
- type: "open-workspace-issue";
1216
- workspaceId: string;
1217
- issueId: string | null;
1218
- mode?: WorkspaceIssueMentionMode;
1219
- outputDir?: string | null;
1220
- runId?: string | null;
1221
- taskId?: string | null;
1222
- topicId?: string | null;
1223
- source: WorkspaceLinkActionSource;
1224
- }
1225
- interface OpenWorkspaceAppLinkAction {
1226
- type: "open-workspace-app";
1227
- workspaceId: string;
1228
- appId: string;
1229
- conversationId?: string | null;
1230
- messageId?: string | null;
1231
- summaryTaskId?: string | null;
1232
- source: WorkspaceLinkActionSource;
1233
- }
1234
- interface OpenCustomMentionLinkAction {
1235
- type: "open-custom-mention";
1236
- /** 注册表里的 kind(= mention:// providerId)。 */
1237
- kind: string;
1238
- href: string;
1239
- source: WorkspaceLinkActionSource;
1240
- }
1241
- type WorkspaceLinkAction = OpenWorkspaceFileLinkAction | OpenLocalAssetPreviewLinkAction | OpenWorkspaceUrlLinkAction | OpenAgentSessionLinkAction | OpenWorkspaceIssueLinkAction | OpenWorkspaceAppLinkAction | OpenCustomMentionLinkAction;
1242
-
1243
- interface AgentMessageMarkdownWorkspaceAppIcon {
1244
- appId: string;
1245
- iconUrl: string | null;
1246
- workspaceId?: string | null;
1247
- }
1248
-
1249
- interface AgentGUIAccountMenuState {
1250
- user: {
1251
- userId: string;
1252
- name?: string | null;
1253
- email?: string | null;
1254
- avatar?: string | null;
1255
- } | null;
1256
- membershipLabel: string;
1257
- creditsLabel: string | null;
1258
- loading: boolean;
1259
- error: string | null;
1260
- partialError?: boolean;
1261
- registrationCreditsToast?: {
1262
- id: string;
1263
- creditsLabel: string;
1264
- visible: boolean;
1265
- autoDismissMs?: number;
1266
- onDismiss(): void;
1267
- } | null;
1268
- links: {
1269
- planUrl: string;
1270
- usageUrl: string;
1271
- settingsUrl: string;
1272
- };
1273
- onOpenChange(open: boolean): void;
1274
- onLogin(): void;
1275
- onLogout?(): void;
1276
- onSettings?(): void;
1277
- onOpenExternal(url: string): void;
1278
- }
1279
-
1280
- type AgentSessionCommand = AgentHostAgentSessionCommand;
1281
- type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
1282
- type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
1283
- type AgentSessionReasoningEffort = AgentHostAgentSessionReasoningEffort;
1284
- type AgentSessionSpeed = AgentHostAgentSessionSpeed;
1285
-
1286
- interface WorkspaceAgentActivityFileChange {
1287
- path: string;
1288
- change?: "added" | "modified" | "deleted" | "moved" | string;
1289
- tools?: string[];
1290
- }
1291
- interface WorkspaceAgentActivityFileChanges {
1292
- coverage?: string;
1293
- files?: WorkspaceAgentActivityFileChange[];
1294
- }
1295
- interface WorkspaceAgentActivityTimelineItem {
1296
- id: number;
1297
- workspaceId?: string;
1298
- agentSessionId: string;
1299
- seq?: number;
1300
- turnId?: string;
1301
- eventSource?: string;
1302
- eventId: string;
1303
- actorType: string;
1304
- actorId: string;
1305
- itemType: "message" | "call" | "event" | "error" | "lifecycle" | string;
1306
- role?: string;
1307
- callType?: "tool" | "skill" | "subagent" | "approval" | "workflow" | string;
1308
- callId?: string;
1309
- name?: string;
1310
- status?: string | null;
1311
- messageSemantics?: AgentActivityMessageSemantics;
1312
- content?: string;
1313
- payload?: Record<string, unknown> & {
1314
- content?: unknown;
1315
- text?: unknown;
1316
- fileChanges?: WorkspaceAgentActivityFileChanges;
1317
- };
1318
- occurredAtUnixMs?: number;
1319
- createdAtUnixMs?: number;
1320
- }
1321
-
1322
- type ToolCallStatusKind = "working" | "completed" | "failed" | "canceled" | "waiting";
1323
- interface WorkspaceAgentToolCallDisplay {
1324
- id: string;
1325
- name: string;
1326
- status: string | null;
1327
- statusKind: ToolCallStatusKind | null;
1328
- detail?: string;
1329
- }
1330
-
1331
- type WorkspaceAgentLatestActivityStatus = "working" | "waiting" | "idle" | "completed" | "canceled" | "failed";
1332
- interface WorkspaceAgentConversationPreviewLine {
1333
- actorName: string;
1334
- summary: string;
1335
- }
1336
-
1337
- type WorkspaceAgentActivityStatus = WorkspaceAgentLatestActivityStatus;
1338
- interface WorkspaceAgentChangedFile {
1339
- path: string;
1340
- label: string;
1341
- }
1342
- interface WorkspaceAgentActivityCard {
1343
- id: string;
1344
- sessionId: string;
1345
- userId: string | null;
1346
- userName: string;
1347
- userAvatarUrl?: string;
1348
- agentProvider: string;
1349
- agentName: string;
1350
- title: string;
1351
- status: WorkspaceAgentActivityStatus;
1352
- latestActivitySummary: string;
1353
- /** User prompt + latest agent reply for task/issue execution cards; room status list uses single-line summary only. */
1354
- conversationPreview?: WorkspaceAgentConversationPreviewLine[];
1355
- latestActivityActorName?: string;
1356
- toolCalls?: WorkspaceAgentToolCallDisplay[];
1357
- changedFiles: WorkspaceAgentChangedFile[];
1358
- sortTimeUnixMs: number;
1359
- readTimeUnixMs?: number;
1360
- }
1361
-
1362
- interface WorkspaceAgentSessionDetailMessage {
1363
- id: string;
1364
- body: string;
1365
- status?: string | null;
1366
- statusKind?: ToolCallStatusKind | null;
1367
- turnId?: string;
1368
- occurredAtUnixMs?: number | null;
1369
- sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1370
- visibleError?: {
1371
- code: string | null;
1372
- phase: string | null;
1373
- provider: string | null;
1374
- detail: string | null;
1375
- retryable: boolean | null;
1376
- } | null;
1377
- systemNotice?: {
1378
- noticeKind: string | null;
1379
- severity: string | null;
1380
- source?: string | null;
1381
- command?: AgentActivityMessageSemantics["noticeCommand"] | null;
1382
- commandStatus?: AgentActivityMessageSemantics["noticeCommandStatus"] | null;
1383
- title: string | null;
1384
- detail: string | null;
1385
- retryable: boolean | null;
1386
- } | null;
1387
- }
1388
- interface WorkspaceAgentSessionDetailThinking {
1389
- id: string;
1390
- body: string;
1391
- statusKind?: ToolCallStatusKind | null;
1392
- turnId?: string;
1393
- occurredAtUnixMs?: number | null;
1394
- sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1395
- }
1396
- interface WorkspaceAgentSessionDetailGoalControl {
1397
- id: string;
1398
- action: AgentActivityGoalControlAction;
1399
- body: string;
1400
- occurredAtUnixMs?: number | null;
1401
- sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1144
+ interface WorkspaceAgentSessionDetailGoalControl {
1145
+ id: string;
1146
+ action: AgentActivityGoalControlAction;
1147
+ body: string;
1148
+ occurredAtUnixMs?: number | null;
1149
+ sourceTimelineItems?: WorkspaceAgentActivityTimelineItem[];
1402
1150
  }
1403
1151
  interface WorkspaceAgentSessionDetailToolCall {
1404
1152
  id: string;
@@ -1528,6 +1276,41 @@ interface AgentGoalControlRowVM {
1528
1276
 
1529
1277
  type AgentTranscriptPresentationKind = "content" | "specific-progress" | "turn-boundary";
1530
1278
 
1279
+ interface AgentCollaborationUsageVM {
1280
+ inputTokens: number;
1281
+ outputTokens: number;
1282
+ }
1283
+ /**
1284
+ * Typed projection of one durable "collaboration" timeline message (the
1285
+ * daemon projects each collaboration run into the source session transcript
1286
+ * with messageId `collab:<runId>`; status transitions update the same message
1287
+ * in place). Pure data — rendering and adoption actions live in
1288
+ * `AgentCollaborationRow`.
1289
+ */
1290
+ interface AgentCollaborationVM {
1291
+ kind: "collaboration";
1292
+ runId: string;
1293
+ /** Session identity of the source transcript row, for adoption commands. */
1294
+ workspaceId: string | null;
1295
+ agentSessionId: string | null;
1296
+ mode: "consult" | "fork" | "delegate" | "handoff" | (string & {});
1297
+ status: "running" | "completed" | "failed" | "canceled" | (string & {});
1298
+ triggerSource: "user" | "agent" | "policy" | (string & {});
1299
+ triggerReason: string | null;
1300
+ targetSessionId: string | null;
1301
+ targetAgentTargetId: string | null;
1302
+ modelPlanId: string | null;
1303
+ /** Optional display name when the daemon payload carries it. */
1304
+ modelPlanName: string | null;
1305
+ model: string | null;
1306
+ contextScope: string | null;
1307
+ resultText: string | null;
1308
+ failureReason: string | null;
1309
+ durationMs: number | null;
1310
+ usage: AgentCollaborationUsageVM | null;
1311
+ adoption: "pending" | "adopted" | "rejected" | "not_applicable" | (string & {});
1312
+ }
1313
+
1531
1314
  interface AgentMessageContentVM {
1532
1315
  kind: "message-content";
1533
1316
  id: string;
@@ -1536,8 +1319,10 @@ interface AgentMessageContentVM {
1536
1319
  presentationKind: AgentTranscriptPresentationKind;
1537
1320
  copyText?: string | null;
1538
1321
  statusKind?: ToolCallStatusKind | null;
1539
- contentKind?: "text" | "image-grid" | "plan";
1322
+ contentKind?: "text" | "image-grid" | "plan" | "collaboration";
1540
1323
  isTurnFinalText?: true;
1324
+ /** Typed payload for `contentKind: "collaboration"` rows. */
1325
+ collaboration?: AgentCollaborationVM | null;
1541
1326
  images?: AgentMessageImageVM[];
1542
1327
  occurredAtUnixMs: number | null;
1543
1328
  visibleError?: {
@@ -1741,43 +1526,365 @@ interface AgentTurnSummaryPatchBatchVM {
1741
1526
  toolCallId: string;
1742
1527
  changes: AgentTurnSummaryPatchChangeVM[];
1743
1528
  }
1744
- interface AgentTurnSummaryRowVM {
1745
- kind: "turn-summary";
1746
- id: string;
1747
- turnId: string;
1748
- files: AgentTurnSummaryFileVM[];
1749
- patchBatches?: AgentTurnSummaryPatchBatchVM[];
1750
- fileCount: number;
1751
- modifiedCount: number;
1752
- createdCount: number;
1753
- occurredAtUnixMs: number | null;
1529
+ interface AgentTurnSummaryRowVM {
1530
+ kind: "turn-summary";
1531
+ id: string;
1532
+ turnId: string;
1533
+ files: AgentTurnSummaryFileVM[];
1534
+ patchBatches?: AgentTurnSummaryPatchBatchVM[];
1535
+ fileCount: number;
1536
+ modifiedCount: number;
1537
+ createdCount: number;
1538
+ occurredAtUnixMs: number | null;
1539
+ }
1540
+
1541
+ type AgentTranscriptRowVM = AgentGeneratedImageRowVM | AgentGoalControlRowVM | AgentMessageRowVM | AgentToolGroupRowVM | AgentTurnSummaryRowVM | AgentProcessingRowVM;
1542
+
1543
+ type AgentConversationPromptVM = AgentApprovalItemVM | {
1544
+ kind: "ask-user";
1545
+ requestId: string;
1546
+ title: string;
1547
+ questions: AgentAskUserQuestionVM[];
1548
+ } | {
1549
+ kind: "exit-plan";
1550
+ requestId: string;
1551
+ title: string;
1552
+ options: AgentApprovalOptionVM[];
1553
+ keepPlanningOptionId?: string;
1554
+ } | {
1555
+ kind: "plan-implementation";
1556
+ requestId: string;
1557
+ title: string;
1558
+ };
1559
+ interface AgentConversationVM {
1560
+ activity: WorkspaceAgentActivityCard;
1561
+ workspaceRoot: string | null;
1562
+ sourceDetail: WorkspaceAgentSessionDetailViewModel;
1563
+ rows: AgentTranscriptRowVM[];
1564
+ }
1565
+
1566
+ declare const PLAN_IMPLEMENTATION_ACTION_IMPLEMENT = "implement";
1567
+ declare const PLAN_IMPLEMENTATION_ACTION_FEEDBACK = "feedback";
1568
+ declare const PLAN_IMPLEMENTATION_ACTION_SKIP = "skip";
1569
+ interface PlanIssueExecutionProfile {
1570
+ reasoningIntensity: number;
1571
+ orchestrationIntensity: number;
1572
+ }
1573
+ interface PlanIssueBudget {
1574
+ mode: "auto" | "fixed";
1575
+ tokenLimit: number;
1576
+ quotaWaterlinePercent: number;
1577
+ }
1578
+ /**
1579
+ * Remembered planning defaults chosen before a Plan turn is submitted. The
1580
+ * generated plan can still provide explicit values; otherwise these values
1581
+ * seed the mandatory Issue-decomposition review.
1582
+ */
1583
+ interface PlanIssueBudgetPreset {
1584
+ executionProfile: PlanIssueExecutionProfile;
1585
+ budget: PlanIssueBudget;
1586
+ }
1587
+
1588
+ interface AgentGUINodeData {
1589
+ provider: AgentGUIProvider;
1590
+ agentTargetId?: string | null;
1591
+ lastActiveAgentSessionId: string | null;
1592
+ lastActiveAgentSessionIdByAgentTargetId?: Record<string, string> | null;
1593
+ conversationCount?: number | null;
1594
+ conversationRailWidthPx?: number | null;
1595
+ conversationRailCollapsed?: boolean | null;
1596
+ composerOverrides?: AgentHostAgentSessionComposerSettings | null;
1597
+ composerOverridesByAgentTargetId?: Record<string, AgentHostAgentSessionComposerSettings | null> | null;
1598
+ composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
1599
+ /** Remembered defaults for provider Plan decomposition review. */
1600
+ planIssueBudgetPreset?: PlanIssueBudgetPreset | null;
1601
+ }
1602
+ /**
1603
+ * Open runtime metadata reported by an Agent Target.
1604
+ *
1605
+ * Built-in providers still use AgentProvider, while externally installed ACP
1606
+ * extensions use namespaced values such as `acp:gemini`.
1607
+ */
1608
+ type AgentGUIProvider = string;
1609
+ /**
1610
+ * Stable identifiers for the starter entries shown below the empty new-session
1611
+ * composer. Hosts can pass these values to `AgentGUI.disabled` to hide entries
1612
+ * that should not be available in their integration.
1613
+ */
1614
+ type AgentGUIHomeSuggestionId = "meet-tutti" | "task-breakdown" | "quality-review" | "agent-interaction" | "import-session";
1615
+ type AgentGUIAgentAvailabilityStatus = "ready" | "checking" | "coming_soon" | "not_installed" | "auth_required" | "unavailable";
1616
+ type AgentGUIAgentAvailabilityAction = "install" | "login" | "refresh";
1617
+ interface AgentGUIAgentAvailability {
1618
+ status: AgentGUIAgentAvailabilityStatus;
1619
+ reason?: string | null;
1620
+ pendingAction?: AgentGUIAgentAvailabilityAction | null;
1621
+ }
1622
+ interface AgentGUIAgentOwner {
1623
+ userId?: string | null;
1624
+ name?: string | null;
1625
+ avatarUrl?: string | null;
1626
+ }
1627
+ /** Host-authoritative ownership classification for Agent directory entries. */
1628
+ type AgentGUIAgentOwnership = "self" | "shared";
1629
+ interface AgentGUISharedAgentQuota {
1630
+ unit: "runs" | "tokens";
1631
+ remaining: number;
1632
+ limit?: number;
1633
+ resetAt?: string | null;
1634
+ }
1635
+ interface AgentGUISharedAgentConcurrency {
1636
+ active: number;
1637
+ limit: number;
1638
+ }
1639
+ interface AgentGUISharedAgentCostQuota {
1640
+ currency: string;
1641
+ remainingMicros: number;
1642
+ limitMicros?: number;
1643
+ }
1644
+ interface AgentGUISharedAgentAllowedModel {
1645
+ modelPlanId?: string | null;
1646
+ model: string;
1647
+ }
1648
+ interface AgentGUISharedAgentPolicyPermissions {
1649
+ consult: boolean;
1650
+ review: boolean;
1651
+ delegate: boolean;
1652
+ upgrade: boolean;
1653
+ }
1654
+ /** Credential-free access snapshot supplied by the shared-Agent control plane. */
1655
+ interface AgentGUISharedAgentAccess {
1656
+ grantId: string;
1657
+ ownerUserId: string;
1658
+ ownerOnline: boolean;
1659
+ auditRequired: boolean;
1660
+ quota?: AgentGUISharedAgentQuota | null;
1661
+ concurrency?: AgentGUISharedAgentConcurrency | null;
1662
+ costQuota?: AgentGUISharedAgentCostQuota | null;
1663
+ allowedModels?: readonly AgentGUISharedAgentAllowedModel[] | null;
1664
+ policyPermissions?: AgentGUISharedAgentPolicyPermissions | null;
1665
+ }
1666
+ /**
1667
+ * Host-projected entry from the workspace `/agents` directory.
1668
+ *
1669
+ * `agentTargetId` is the only UI and launch identity. `provider` remains
1670
+ * execution metadata for provider-native composer/runtime policy and must not
1671
+ * be used to group, deduplicate, name, or select entries.
1672
+ */
1673
+ interface AgentGUIAgent {
1674
+ agentTargetId: string;
1675
+ name: string;
1676
+ iconUrl: string;
1677
+ /** Single-color artwork rendered through the conversation rail CSS mask. */
1678
+ maskIconUrl?: string | null;
1679
+ heroImageUrl?: string | null;
1680
+ description?: string | null;
1681
+ /** Host-resolved display name of the device that owns this Agent target. */
1682
+ ownerDeviceLabel?: string | null;
1683
+ owner?: AgentGUIAgentOwner | null;
1684
+ ownership?: AgentGUIAgentOwnership | null;
1685
+ sharedAccess?: AgentGUISharedAgentAccess | null;
1686
+ availability: AgentGUIAgentAvailability;
1687
+ provider: AgentGUIProvider;
1688
+ setupKind?: "target_runtime" | null;
1689
+ }
1690
+ type AgentGUIAgentDirectoryStatus = "idle" | "loading" | "ready" | "error";
1691
+ interface AgentGUIAgentDirectorySnapshot {
1692
+ agents: readonly AgentGUIAgent[];
1693
+ capturedAtUnixMs: number | null;
1694
+ error: string | null;
1695
+ status: AgentGUIAgentDirectoryStatus;
1696
+ }
1697
+ interface AgentGUIAgentDirectoryPort {
1698
+ getSnapshot(): AgentGUIAgentDirectorySnapshot;
1699
+ subscribe(listener: () => void): () => void;
1700
+ }
1701
+ interface AgentGUIAllAgentsPresentation {
1702
+ iconUrl?: string | null;
1703
+ }
1704
+ interface AgentGUIAgentTargetRef {
1705
+ kind: string;
1706
+ provider: AgentGUIProvider;
1707
+ [key: string]: unknown;
1708
+ }
1709
+ interface AgentGUIAgentTargetBadge {
1710
+ iconUrl: string;
1711
+ label?: string;
1712
+ }
1713
+ interface AgentGUIAgentTarget {
1714
+ targetId: string;
1715
+ agentTargetId?: string | null;
1716
+ provider: AgentGUIProvider;
1717
+ ref: AgentGUIAgentTargetRef;
1718
+ label: string;
1719
+ description?: string;
1720
+ iconUrl?: string | null;
1721
+ maskIconUrl?: string | null;
1722
+ heroImageUrl?: string | null;
1723
+ badge?: AgentGUIAgentTargetBadge | null;
1724
+ ownerLabel?: string;
1725
+ ownerDeviceLabel?: string;
1726
+ ownership?: AgentGUIAgentOwnership;
1727
+ availability?: AgentGUIAgentAvailability;
1728
+ disabled?: boolean;
1729
+ unavailableReason?: string;
1730
+ }
1731
+ interface AgentGUIProviderRailAllPresentation {
1732
+ iconUrl?: string | null;
1733
+ }
1734
+ /**
1735
+ * How the provider rail composes the target list.
1736
+ * - "catalog" (default): host-provided targets are augmented with the static
1737
+ * local provider catalog, disabled placeholders (nexight/hermes/openclaw),
1738
+ * and coming-soon markers. When no targets are provided, the full local
1739
+ * catalog is shown.
1740
+ * - "exact": the rail renders exactly the provided targets — no static catalog
1741
+ * fallback, no disabled placeholders, no coming-soon injection. When the list
1742
+ * is empty (and not loading) the host-provided empty renderer is shown. Use
1743
+ * this when the list is fully orchestrated externally (e.g. shared agents,
1744
+ * custom /agents).
1745
+ */
1746
+ type AgentGUIProviderRailMode = "catalog" | "exact";
1747
+ type AgentGUIProviderReadinessGateStatus = "checking" | "coming_soon" | "not_installed" | "auth_required" | "unavailable";
1748
+ type AgentGUIProviderReadinessGateAction = "install" | "login" | "refresh";
1749
+ interface AgentGUIProviderReadinessGate {
1750
+ status: AgentGUIProviderReadinessGateStatus;
1751
+ pendingAction?: AgentGUIProviderReadinessGateAction | null;
1752
+ onAction?: (provider: AgentGUIProvider, action: AgentGUIProviderReadinessGateAction) => void;
1753
+ }
1754
+ interface Size {
1755
+ width: number;
1756
+ height: number;
1757
+ }
1758
+ interface Point {
1759
+ x: number;
1760
+ y: number;
1761
+ }
1762
+ interface NodeFrame {
1763
+ position: Point;
1764
+ size: Size;
1765
+ }
1766
+
1767
+ type AgentGuiWorkbenchSessionAction = "rename" | "copy-markdown" | "copy-reference";
1768
+ interface AgentGuiWorkbenchSessionActionRequest {
1769
+ action: AgentGuiWorkbenchSessionAction;
1770
+ agentSessionId: string | null;
1771
+ sequence: number;
1772
+ }
1773
+
1774
+ type WorkspaceLinkActionSource = "agent-markdown" | "agent-file-change" | string;
1775
+ interface OpenWorkspaceFileLinkAction {
1776
+ type: "open-workspace-file";
1777
+ mode?: "reveal" | "open-directory";
1778
+ path: string;
1779
+ directoryPath: string;
1780
+ workspaceRoot: string;
1781
+ source: WorkspaceLinkActionSource;
1782
+ prefetchedDirectoryListing?: WorkspaceFileLinkDirectoryListing | null;
1783
+ }
1784
+ interface OpenLocalAssetPreviewLinkAction {
1785
+ type: "open-local-asset-preview";
1786
+ path: string;
1787
+ name: string;
1788
+ source: WorkspaceLinkActionSource;
1789
+ }
1790
+ interface WorkspaceFileLinkDirectoryEntry {
1791
+ path: string;
1792
+ name: string;
1793
+ kind: "file" | "directory" | "unknown";
1794
+ hasChildren: boolean | null;
1795
+ sizeBytes: number | null;
1796
+ mtimeMs: number | null;
1797
+ }
1798
+ interface WorkspaceFileLinkDirectoryListing {
1799
+ workspaceId: string;
1800
+ root: string;
1801
+ directoryPath: string;
1802
+ entries: WorkspaceFileLinkDirectoryEntry[];
1803
+ }
1804
+ interface OpenWorkspaceUrlLinkAction {
1805
+ type: "open-url";
1806
+ url: string;
1807
+ source: WorkspaceLinkActionSource;
1808
+ }
1809
+ interface OpenAgentSessionLinkAction {
1810
+ type: "open-agent-session";
1811
+ workspaceId: string;
1812
+ agentSessionId: string;
1813
+ agentTargetId?: string | null;
1814
+ source: WorkspaceLinkActionSource;
1815
+ }
1816
+ interface OpenWorkspaceIssueLinkAction {
1817
+ type: "open-workspace-issue";
1818
+ workspaceId: string;
1819
+ issueId: string | null;
1820
+ mode?: WorkspaceIssueMentionMode;
1821
+ outputDir?: string | null;
1822
+ runId?: string | null;
1823
+ taskId?: string | null;
1824
+ topicId?: string | null;
1825
+ source: WorkspaceLinkActionSource;
1826
+ }
1827
+ interface OpenWorkspaceAppLinkAction {
1828
+ type: "open-workspace-app";
1829
+ workspaceId: string;
1830
+ appId: string;
1831
+ conversationId?: string | null;
1832
+ messageId?: string | null;
1833
+ summaryTaskId?: string | null;
1834
+ source: WorkspaceLinkActionSource;
1835
+ }
1836
+ interface OpenCustomMentionLinkAction {
1837
+ type: "open-custom-mention";
1838
+ /** 注册表里的 kind(= mention:// providerId)。 */
1839
+ kind: string;
1840
+ href: string;
1841
+ source: WorkspaceLinkActionSource;
1754
1842
  }
1843
+ type WorkspaceLinkAction = OpenWorkspaceFileLinkAction | OpenLocalAssetPreviewLinkAction | OpenWorkspaceUrlLinkAction | OpenAgentSessionLinkAction | OpenWorkspaceIssueLinkAction | OpenWorkspaceAppLinkAction | OpenCustomMentionLinkAction;
1755
1844
 
1756
- type AgentTranscriptRowVM = AgentGeneratedImageRowVM | AgentGoalControlRowVM | AgentMessageRowVM | AgentToolGroupRowVM | AgentTurnSummaryRowVM | AgentProcessingRowVM;
1845
+ interface AgentMessageMarkdownWorkspaceAppIcon {
1846
+ appId: string;
1847
+ iconUrl: string | null;
1848
+ workspaceId?: string | null;
1849
+ }
1757
1850
 
1758
- type AgentConversationPromptVM = AgentApprovalItemVM | {
1759
- kind: "ask-user";
1760
- requestId: string;
1761
- title: string;
1762
- questions: AgentAskUserQuestionVM[];
1763
- } | {
1764
- kind: "exit-plan";
1765
- requestId: string;
1766
- title: string;
1767
- options: AgentApprovalOptionVM[];
1768
- keepPlanningOptionId?: string;
1769
- } | {
1770
- kind: "plan-implementation";
1771
- requestId: string;
1772
- title: string;
1773
- };
1774
- interface AgentConversationVM {
1775
- activity: WorkspaceAgentActivityCard;
1776
- workspaceRoot: string | null;
1777
- sourceDetail: WorkspaceAgentSessionDetailViewModel;
1778
- rows: AgentTranscriptRowVM[];
1851
+ interface AgentGUIAccountMenuState {
1852
+ user: {
1853
+ userId: string;
1854
+ name?: string | null;
1855
+ email?: string | null;
1856
+ avatar?: string | null;
1857
+ } | null;
1858
+ membershipLabel: string;
1859
+ creditsLabel: string | null;
1860
+ loading: boolean;
1861
+ error: string | null;
1862
+ partialError?: boolean;
1863
+ registrationCreditsToast?: {
1864
+ id: string;
1865
+ creditsLabel: string;
1866
+ visible: boolean;
1867
+ autoDismissMs?: number;
1868
+ onDismiss(): void;
1869
+ } | null;
1870
+ links: {
1871
+ planUrl: string;
1872
+ usageUrl: string;
1873
+ settingsUrl: string;
1874
+ };
1875
+ onOpenChange(open: boolean): void;
1876
+ onLogin(): void;
1877
+ onLogout?(): void;
1878
+ onSettings?(): void;
1879
+ onOpenExternal(url: string): void;
1779
1880
  }
1780
1881
 
1882
+ type AgentSessionCommand = AgentHostAgentSessionCommand;
1883
+ type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
1884
+ type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
1885
+ type AgentSessionReasoningEffort = AgentHostAgentSessionReasoningEffort;
1886
+ type AgentSessionSpeed = AgentHostAgentSessionSpeed;
1887
+
1781
1888
  type AgentFileMentionKind = "file" | "directory" | "unknown";
1782
1889
  type AgentMentionFileNavigationAction = "agent-generated-folder" | "agent-generated-folder-back" | "workspace-folder" | "workspace-folder-back";
1783
1890
  type AgentMentionScope = "my_sessions" | "collab_sessions";
@@ -1998,7 +2105,7 @@ type AgentCapabilityUse = "browserUse" | "computerUse";
1998
2105
 
1999
2106
  interface AgentSlashCommandCapability {
2000
2107
  aliases?: readonly string[];
2001
- capability: AgentCapabilityUse;
2108
+ capability: AgentCapabilityUse | "tutti";
2002
2109
  kind: "capability";
2003
2110
  name: string;
2004
2111
  }
@@ -2040,6 +2147,12 @@ interface AgentGUIComposerSettingOption {
2040
2147
  label: string;
2041
2148
  description?: string;
2042
2149
  supportsImageInput?: boolean;
2150
+ /** Bound plan identity for options aggregated from model access plans. */
2151
+ modelPlanId?: string | null;
2152
+ /** Display name of the plan (or provider) the option originates from. */
2153
+ sourceName?: string;
2154
+ /** When the option takes effect after selection. */
2155
+ effect?: "new_session" | "next_call";
2043
2156
  }
2044
2157
  interface AgentGUIProviderSkillOption {
2045
2158
  name: string;
@@ -2104,6 +2217,11 @@ type AgentComposerDraftContent = [
2104
2217
  /** One atomic, unsent composer message. */
2105
2218
  type AgentComposerDraft = AgentComposerDraftContent;
2106
2219
  type AgentComposerDraftFile = Omit<AgentComposerRegularFileBlock, "type" | "kind">;
2220
+ interface AgentGUIComposerModelPlanVM {
2221
+ id: string;
2222
+ name: string;
2223
+ protocol?: string | null;
2224
+ }
2107
2225
  interface AgentGUIComposerSettingsVM {
2108
2226
  sessionSettings: AgentSessionComposerSettings | null;
2109
2227
  draftSettings: {
@@ -2146,6 +2264,8 @@ interface AgentGUIComposerSettingsVM {
2146
2264
  projectLocked?: boolean;
2147
2265
  projectPathIsRemote?: boolean;
2148
2266
  collapseModelOptionsToLatest?: boolean;
2267
+ modelPlan?: AgentGUIComposerModelPlanVM | null;
2268
+ modelSwitchTakesEffectNextTurn?: boolean;
2149
2269
  availableModels: AgentGUIComposerSettingOption[];
2150
2270
  availableReasoningEfforts: AgentGUIComposerSettingOption[];
2151
2271
  availableSpeeds: AgentGUIComposerSettingOption[];
@@ -2208,6 +2328,11 @@ interface AgentGUIComposerViewModel {
2208
2328
  /** Provider goal exposes a real paused state and pause/resume controls. */
2209
2329
  goalPauseSupported: boolean;
2210
2330
  canSubmit: boolean;
2331
+ isTuttiModeActive: boolean;
2332
+ isTuttiModeUpdating: boolean;
2333
+ /** Effective Tutti orchestration intensity (0-100) for the budget popup. */
2334
+ tuttiModeOrchestrationIntensity: number;
2335
+ tuttiModeUpdateStatus: "idle" | "pending_create" | "updating" | "failed" | "uncertain";
2211
2336
  composerSettings: AgentGUIComposerSettingsVM;
2212
2337
  queuedPrompts: AgentGUIQueuedPromptVM[];
2213
2338
  queueStatus: AgentGUIQueueStatus;
@@ -2641,6 +2766,48 @@ declare const agentGuiI18nResources: {
2641
2766
  readonly workspaceCenterSearchAria: "Open room search";
2642
2767
  readonly workspaceCenterSearchTitle: "Search nodes, partitions, and notes in this room";
2643
2768
  readonly agentGui: {
2769
+ readonly collaborationModeConsult: "Consult";
2770
+ readonly collaborationModeFork: "Fork";
2771
+ readonly collaborationModeDelegate: "Delegate";
2772
+ readonly collaborationModeHandoff: "Handoff";
2773
+ readonly collaborationTriggerUser: "Manual";
2774
+ readonly collaborationTriggerAgent: "Agent";
2775
+ readonly collaborationTriggerPolicy: "Policy";
2776
+ readonly collaborationStatusRunning: "Running";
2777
+ readonly collaborationStatusCompleted: "Completed";
2778
+ readonly collaborationStatusFailed: "Failed";
2779
+ readonly collaborationStatusCanceled: "Canceled";
2780
+ readonly collaborationPlanLabel: "Plan: {{name}}";
2781
+ readonly collaborationUsageTokens: "Tokens: {{input}} in · {{output}} out";
2782
+ readonly collaborationFailureReason: "Failure: {{reason}}";
2783
+ readonly collaborationResultShow: "Show result";
2784
+ readonly collaborationResultHide: "Hide result";
2785
+ readonly collaborationAdopt: "Adopt";
2786
+ readonly collaborationReject: "Reject";
2787
+ readonly collaborationAdopted: "Adopted";
2788
+ readonly collaborationRejected: "Not adopted";
2789
+ readonly collaborationAdoptionFailed: "Failed to record the adoption decision.";
2790
+ readonly composerModelPlanBadge: "Plan: {{name}}";
2791
+ readonly composerModelSearchPlaceholder: "Search models";
2792
+ readonly composerModelSearchEmpty: "No matching models";
2793
+ readonly composerModelFavoritesGroup: "Favorites";
2794
+ readonly composerModelRecentsGroup: "Recently used";
2795
+ readonly composerModelSwitchNextTurnHint: "Applies from the next request";
2796
+ readonly composerModelFavoriteAdd: "Add to favorites";
2797
+ readonly composerModelFavoriteRemove: "Remove from favorites";
2798
+ readonly consultEntryLabel: "Consult model";
2799
+ readonly consultDialogTitle: "Consult a model";
2800
+ readonly consultPlanLabel: "Plan";
2801
+ readonly consultModelLabel: "Model";
2802
+ readonly consultQuestionLabel: "Question";
2803
+ readonly consultQuestionPlaceholder: "Ask another model for advice...";
2804
+ readonly consultIncludeContextLabel: "Attach the latest assistant reply as context";
2805
+ readonly consultSubmit: "Consult";
2806
+ readonly consultSubmitting: "Consulting...";
2807
+ readonly mentionFilterCollab: "Collaboration";
2808
+ readonly mentionGroupCollabSessions: "Collaboration sessions";
2809
+ readonly mentionEmptyCollabSessions: "No collaboration sessions yet";
2810
+ readonly mentionCollaboratorFallback: "Collaborator";
2644
2811
  readonly projectLocked: "Project cannot be changed after the session starts";
2645
2812
  readonly projectMissingDescription: "This conversation's working directory no longer exists";
2646
2813
  readonly fileMentionEnterFolder: "Enter folder";
@@ -2658,7 +2825,6 @@ declare const agentGuiI18nResources: {
2658
2825
  readonly provenanceFilterMembers: "Members";
2659
2826
  readonly provenanceFilterReset: "Reset";
2660
2827
  readonly mentionFilterSession: "Sessions";
2661
- readonly mentionFilterCollab: "Collaboration";
2662
2828
  readonly mentionFilterIssue: "Tasks";
2663
2829
  readonly mentionKindAgent: "Agent";
2664
2830
  readonly mentionKindApp: "App";
@@ -2673,10 +2839,8 @@ declare const agentGuiI18nResources: {
2673
2839
  readonly mentionGroupApps: "Apps";
2674
2840
  readonly mentionGroupAgents: "Agents";
2675
2841
  readonly mentionGroupMySessions: "My sessions";
2676
- readonly mentionGroupCollabSessions: "Collaboration sessions";
2677
2842
  readonly mentionGroupIssues: "Tasks";
2678
2843
  readonly mentionEmptyMySessions: "No sessions yet";
2679
- readonly mentionEmptyCollabSessions: "No collaboration sessions yet";
2680
2844
  readonly mentionEmptyApps: "No apps yet";
2681
2845
  readonly mentionEmptyAgents: "No agents available";
2682
2846
  readonly mentionEmptyIssues: "No tasks yet";
@@ -2703,7 +2867,6 @@ declare const agentGuiI18nResources: {
2703
2867
  readonly taskContentLabel: "Task content";
2704
2868
  readonly taskTitleLabel: "Task title";
2705
2869
  };
2706
- readonly mentionCollaboratorFallback: "Collaborator";
2707
2870
  readonly syncPending: "Saved locally, syncing to cloud";
2708
2871
  readonly syncSynced: "Synced to cloud";
2709
2872
  readonly syncFailed: "Cloud sync failed";
@@ -2909,9 +3072,6 @@ declare const agentGuiI18nResources: {
2909
3072
  readonly conversationCopyImagesOmitted: string;
2910
3073
  readonly conversationCopyInProgress: string;
2911
3074
  readonly sessionActionUnavailable: string;
2912
- readonly contextCompactionInProgress: "Compacting context";
2913
- readonly contextCompactionCompleted: "Context compacted.";
2914
- readonly contextCompactionInterrupted: "Context compaction interrupted.";
2915
3075
  readonly turnSummary: "Changed files";
2916
3076
  readonly userMessageLocator: "User messages";
2917
3077
  readonly turnSummaryFilesChanged: "{{count}} files changed";
@@ -2970,6 +3130,9 @@ declare const agentGuiI18nResources: {
2970
3130
  readonly showLessConversations: "Show less";
2971
3131
  readonly deleteSession: "Delete session";
2972
3132
  readonly pinSession: "Pin session";
3133
+ readonly contextCompactionInProgress: "Compacting context";
3134
+ readonly contextCompactionCompleted: "Context compacted.";
3135
+ readonly contextCompactionInterrupted: "Context compaction interrupted.";
2973
3136
  readonly visibleErrorStartFailed: "{{provider}} failed to start";
2974
3137
  readonly visibleErrorRequestFailed: "{{provider}} request failed";
2975
3138
  readonly visibleErrorAuthRequired: "{{provider}} needs authentication or configuration";
@@ -3128,6 +3291,223 @@ declare const agentGuiI18nResources: {
3128
3291
  readonly removeAgentFromSidebar: "Remove {{agent}} from sidebar";
3129
3292
  readonly addAgentToSidebar: "Add {{agent}} to sidebar";
3130
3293
  readonly dragAgentToReorder: "Drag {{agent}} to reorder";
3294
+ readonly planCardTitle: "Plan";
3295
+ readonly planCardCopy: "Copy plan";
3296
+ readonly copyCode: "Copy code";
3297
+ readonly planCardExpand: "Expand plan";
3298
+ readonly planCardCollapse: "Collapse plan";
3299
+ readonly planImplementationLead: "Implement this plan?";
3300
+ readonly planImplementationConfirm: "Yes, implement this plan";
3301
+ readonly planImplementationFeedbackPlaceholder: "No — tell the agent how to adjust the approach";
3302
+ readonly planImplementationSend: "Send";
3303
+ readonly planImplementationSkip: "Stay in Plan Mode";
3304
+ readonly noRunningResponse: "No running response to stop.";
3305
+ readonly composerTextMenu: "Composer text actions";
3306
+ readonly pastedTextFilesHeader: "Referenced pasted text files:";
3307
+ readonly pastedTextFileLine: "- pasted text file \"{{preview}}\": {{path}}. Read this file before continuing.";
3308
+ readonly pastedTextAttachmentTitle: "Pasted text";
3309
+ readonly pastedTextAttachmentFailed: "Pasted text couldn't be saved";
3310
+ readonly pastedTextRestoreToComposer: "Show in text field";
3311
+ readonly copyMessage: "Copy message";
3312
+ readonly copyImage: "Copy image";
3313
+ readonly messageCopied: "Copied";
3314
+ readonly promptTipsPrefix: "Tips: ";
3315
+ readonly reviewPicker: {
3316
+ readonly title: "Code review";
3317
+ readonly targetLabel: "What to review";
3318
+ readonly searchPlaceholder: "Search";
3319
+ readonly noResults: "No matches";
3320
+ readonly uncommitted: "Uncommitted changes";
3321
+ readonly baseBranch: "Compare against a branch";
3322
+ readonly commit: "A specific commit";
3323
+ readonly custom: "Custom instructions";
3324
+ readonly branchLabel: "Base branch";
3325
+ readonly branchPlaceholder: "Select a branch";
3326
+ readonly branchLoading: "Loading branches…";
3327
+ readonly branchEmpty: "No branches found";
3328
+ readonly commitPlaceholder: "Commit SHA";
3329
+ readonly customPlaceholder: "Describe what to review";
3330
+ readonly submit: "Start review";
3331
+ readonly cancel: "Cancel";
3332
+ };
3333
+ readonly promptTips: {
3334
+ readonly setWorkspace: {
3335
+ readonly label: "Set the workspace";
3336
+ readonly prompt: "Let the Agent know where to read files, run commands, and understand code.";
3337
+ };
3338
+ readonly useIssue: {
3339
+ readonly label: "Use Tasks well";
3340
+ readonly prompt: "Put requirements, constraints, and acceptance criteria in a Task so the Agent can work toward a clear target.";
3341
+ };
3342
+ readonly mapCurrentState: {
3343
+ readonly label: "Map the current state";
3344
+ readonly prompt: "When the next step is unclear, ask the Agent to summarize status, risks, and what to do next.";
3345
+ };
3346
+ readonly continueRecentSession: {
3347
+ readonly label: "Continue recent work";
3348
+ readonly prompt: "When resuming, have the Agent recap recent progress, unfinished work, and blockers first.";
3349
+ };
3350
+ readonly referenceOtherAgents: {
3351
+ readonly label: "Reference other Agent conversations";
3352
+ readonly prompt: "Make context handoffs more complete and reduce lost details.";
3353
+ };
3354
+ readonly controlPermissions: {
3355
+ readonly label: "Control permissions";
3356
+ readonly prompt: "Use Ask for approval when you want caution, then switch to higher access once file changes are expected.";
3357
+ };
3358
+ };
3359
+ readonly empty: "What can {{provider}} help you with?";
3360
+ readonly homeSuggestionsClose: "Close suggestions";
3361
+ readonly homeSuggestions: {
3362
+ readonly about: {
3363
+ readonly title: "Meet Tutti";
3364
+ readonly prompt: "Tell me what Tutti can help me do";
3365
+ };
3366
+ readonly breakdown: {
3367
+ readonly title: "Task breakdown";
3368
+ readonly taskCenterLabel: "Task management";
3369
+ readonly prompt: "Use {{taskCenterMention}} to help me break down the task, topic { enter here }";
3370
+ };
3371
+ readonly review: {
3372
+ readonly title: "Quality review";
3373
+ readonly prompt: "Have { @agent } review the output quality of { @agent session }";
3374
+ };
3375
+ readonly interaction: {
3376
+ readonly title: "Agent interaction";
3377
+ readonly prompt: "Have { @agent } and { @agent } work together to { do something }, topic { enter here }";
3378
+ };
3379
+ readonly import: {
3380
+ readonly title: "Import session";
3381
+ };
3382
+ };
3383
+ readonly conversations: "Sessions";
3384
+ readonly newConversation: "New session";
3385
+ readonly accountMenuTitle: "Tutti Agent";
3386
+ readonly accountMenuMember: "Membership";
3387
+ readonly accountMenuUpgrade: "Upgrade";
3388
+ readonly accountMenuCreditsBalance: "Credits";
3389
+ readonly accountMenuAccountCenter: "Account center";
3390
+ readonly accountMenuSettings: "Settings";
3391
+ readonly accountMenuFree: "Free";
3392
+ readonly accountMenuSignIn: "Sign in";
3393
+ readonly accountMenuSignOut: "Sign out";
3394
+ readonly accountMenuLoading: "Loading";
3395
+ readonly accountMenuUnavailable: "--";
3396
+ readonly accountMenuDataUnavailable: "Some account data is unavailable";
3397
+ readonly accountRewardToastTitle: "New user credits";
3398
+ readonly accountRewardToastCreditsUnit: "credits";
3399
+ readonly accountRewardToastDescription: "Added to account balance";
3400
+ readonly accountRewardToastClose: "Close credits reward notification";
3401
+ readonly agentConfig: "Check & Settings";
3402
+ readonly agentSettingsMenu: "Settings";
3403
+ readonly agentEnvSetup: "Environment Check";
3404
+ readonly noConversations: "No sessions yet";
3405
+ readonly emptyProjectConversations: "No chats yet";
3406
+ readonly agentsEmpty: "No agents are available";
3407
+ readonly conversationFilterAll: "All";
3408
+ readonly slashStatusTitle: "Status";
3409
+ readonly slashStatusSession: "Session";
3410
+ readonly slashStatusBaseUrl: "Base URL";
3411
+ readonly slashStatusContext: "Context";
3412
+ readonly slashStatusLimits: "Usage Limits";
3413
+ readonly slashStatusAccount: "Account";
3414
+ readonly slashStatusClose: "Close";
3415
+ readonly slashStatusFiveHourLimit: "5h limit";
3416
+ readonly slashStatusWeeklyLimit: "7d limit";
3417
+ readonly slashStatusLimitPercentLeft: "{{percent}}% left";
3418
+ readonly slashStatusLimitReset: "resets {{reset}}";
3419
+ readonly slashStatusContextValue: "{{percentLeft}}% left ({{usedTokens}} used / {{totalTokens}})";
3420
+ readonly slashStatusContextUnavailable: "Context usage unavailable";
3421
+ readonly slashStatusLimitsUnavailable: "Rate limits unavailable from this agent";
3422
+ readonly slashStatusEmptyValue: "—";
3423
+ readonly slashStatusUsageJustUpdated: "Updated just now";
3424
+ readonly slashStatusUsageMinutesAgo: "Updated {{count}}m ago";
3425
+ readonly slashStatusUsageHoursAgo: "Updated {{count}}h ago";
3426
+ readonly slashStatusUsageUpdating: "Updating…";
3427
+ readonly slashStatusUsageRefreshFailed: "Refresh failed";
3428
+ readonly slashStatusUsageRefreshAria: "Refresh usage";
3429
+ readonly usageChipLabel: "Context {{percent}}%";
3430
+ readonly usageTooltipLabel: "Context usage";
3431
+ readonly usagePopoverTitle: "Context Usage";
3432
+ readonly usageContextWindowLabel: "Context window";
3433
+ readonly usageTokensLabel: "Tokens";
3434
+ readonly usageLimitsLabel: "Limits";
3435
+ readonly usageCompactAction: "Compact";
3436
+ readonly queuedLabel: "Queued";
3437
+ readonly queuePausedByUserLabel: "The queue is paused because you interrupted the current response.";
3438
+ readonly sendQueuedPromptNext: "Send next";
3439
+ readonly editQueuedPrompt: "Edit";
3440
+ readonly deleteQueuedPrompt: "Delete";
3441
+ readonly queuedPromptMoreActions: "More queued prompt actions";
3442
+ readonly stop: "Stop";
3443
+ readonly stopping: "Stopping...";
3444
+ readonly planModeLabel: "Plan Mode";
3445
+ readonly normalModeLabel: "Normal";
3446
+ readonly normalModeDescription: "Execute the request directly";
3447
+ readonly tuttiModeLabel: "Tutti";
3448
+ readonly tuttiModeDescription: "Ask the agent to prefer Tutti's native workflow capabilities";
3449
+ readonly tuttiModeRemove: "Turn off Tutti mode";
3450
+ readonly tuttiBudgetTitle: "Tutti intensity";
3451
+ readonly tuttiBudgetIntensityLabel: "Intensity";
3452
+ readonly tuttiBudgetIntensityMin: "Minimal";
3453
+ readonly tuttiBudgetIntensityMax: "Maximal";
3454
+ readonly tuttiBudgetConfirm: "Confirm";
3455
+ readonly tuttiBudgetCancel: "Cancel";
3456
+ readonly tuttiModeUpdateFailed: "Tutti mode couldn't be updated. Try again.";
3457
+ readonly tuttiModeUpdateUncertain: "Tutti mode is still being reconciled. Try again after it finishes.";
3458
+ readonly tuttiModePlan: {
3459
+ readonly mode: "Tutti mode plan";
3460
+ readonly taskReview: "Plan review";
3461
+ readonly pending: "Needs review";
3462
+ readonly cancel: "Cancel plan";
3463
+ readonly reviewHint: "Send to accept · type feedback to request changes";
3464
+ readonly reviewHintReplan: "Intensity changed · send to re-plan at the new intensity";
3465
+ readonly sendAccept: "Accept plan";
3466
+ readonly sendRequestChanges: "Request changes";
3467
+ readonly replanFeedback: "Intensity was adjusted from {{from}} to {{to}}. Re-plan at the new intensity: rescale the task decomposition granularity and each task's model/reasoning tier.";
3468
+ readonly replanFeedbackSuffix: " (Intensity was adjusted to {{to}}; re-plan accordingly.)";
3469
+ readonly tasks: "Tasks";
3470
+ readonly priority: "Priority";
3471
+ readonly priorityHigh: "High";
3472
+ readonly priorityMedium: "Medium";
3473
+ readonly priorityLow: "Low";
3474
+ readonly agentTarget: "Agent";
3475
+ readonly model: "Model";
3476
+ readonly permissionMode: "Permission mode";
3477
+ readonly reasoningEffort: "Reasoning effort";
3478
+ readonly parallelizable: "Parallel";
3479
+ readonly autoAccept: "Auto-accept";
3480
+ readonly assignmentOptionsLoading: "Loading options...";
3481
+ readonly notSpecified: "Not specified";
3482
+ readonly loadFailed: "Tutti mode plans could not be loaded";
3483
+ readonly retry: "Try again";
3484
+ readonly issueOpen: "Open Issue";
3485
+ readonly issueStopExecution: "Stop";
3486
+ readonly issueListView: "List";
3487
+ readonly issueBoardView: "Board";
3488
+ readonly issueSummary: "{{done}}/{{total}} done · {{running}} running";
3489
+ readonly issueDependencies: "Depends";
3490
+ readonly issueAccept: "Accept";
3491
+ readonly issueRework: "Rework";
3492
+ readonly issueStageParallel: "Stage {{index}} · parallel ×{{count}}";
3493
+ readonly issueStageSequential: "Stage {{index}} · sequential";
3494
+ readonly issueStatusNotStarted: "Todo";
3495
+ readonly issueStatusRunning: "Running";
3496
+ readonly issueStatusPendingAcceptance: "In review";
3497
+ readonly issueStatusCompleted: "Done";
3498
+ readonly issueStatusFailed: "Failed";
3499
+ readonly issueStatusCanceled: "Canceled";
3500
+ readonly issueStripRunning: "{{count}} subtasks running";
3501
+ readonly issueStripPending: "{{count}} awaiting acceptance";
3502
+ readonly issueStripFailed: "{{count}} failed";
3503
+ readonly issueStripDone: "{{done}}/{{total}} done";
3504
+ readonly issueStripJump: "View the subtask board";
3505
+ readonly issueCreateFailed: "The approved plan could not create its Issue: {{message}}. Ask the Agent to revise the plan.";
3506
+ };
3507
+ readonly planModeDescription: "Plan first, then implement or break down into an Issue";
3508
+ readonly planModeOnLabel: "On";
3509
+ readonly planModeOffLabel: "Off";
3510
+ readonly planUnavailable: "Plan unavailable";
3131
3511
  readonly initialPlaceholder: "Type @ to reference sessions, files, tasks, and apps";
3132
3512
  readonly followupPlaceholder: "Request follow-up changes from {{provider}}";
3133
3513
  readonly installRequiredPlaceholder: "Connect {{provider}} to send messages";
@@ -3350,160 +3730,6 @@ declare const agentGuiI18nResources: {
3350
3730
  readonly professionalLongRunning: "Optimized for professional work and long-running agents";
3351
3731
  };
3352
3732
  readonly permissionLabel: "Run permissions";
3353
- readonly planModeLabel: "Plan Mode";
3354
- readonly planModeOnLabel: "On";
3355
- readonly planModeOffLabel: "Off";
3356
- readonly planUnavailable: "Plan unavailable";
3357
- readonly queuedLabel: "Queued";
3358
- readonly queuePausedByUserLabel: "The queue is paused because you interrupted the current response.";
3359
- readonly sendQueuedPromptNext: "Send next";
3360
- readonly editQueuedPrompt: "Edit";
3361
- readonly deleteQueuedPrompt: "Delete";
3362
- readonly queuedPromptMoreActions: "More queued prompt actions";
3363
- readonly stop: "Stop";
3364
- readonly stopping: "Stopping...";
3365
- readonly slashStatusTitle: "Status";
3366
- readonly slashStatusSession: "Session";
3367
- readonly slashStatusBaseUrl: "Base URL";
3368
- readonly slashStatusContext: "Context";
3369
- readonly slashStatusLimits: "Usage Limits";
3370
- readonly slashStatusAccount: "Account";
3371
- readonly slashStatusClose: "Close";
3372
- readonly slashStatusFiveHourLimit: "5h limit";
3373
- readonly slashStatusWeeklyLimit: "7d limit";
3374
- readonly slashStatusLimitPercentLeft: "{{percent}}% left";
3375
- readonly slashStatusLimitReset: "resets {{reset}}";
3376
- readonly slashStatusContextValue: "{{percentLeft}}% left ({{usedTokens}} used / {{totalTokens}})";
3377
- readonly slashStatusContextUnavailable: "—";
3378
- readonly slashStatusLimitsUnavailable: "Rate limits unavailable from this agent";
3379
- readonly slashStatusEmptyValue: "—";
3380
- readonly slashStatusUsageJustUpdated: "Updated just now";
3381
- readonly slashStatusUsageMinutesAgo: "Updated {{count}}m ago";
3382
- readonly slashStatusUsageHoursAgo: "Updated {{count}}h ago";
3383
- readonly slashStatusUsageUpdating: "Updating…";
3384
- readonly slashStatusUsageRefreshFailed: "Refresh failed";
3385
- readonly slashStatusUsageRefreshAria: "Refresh usage";
3386
- readonly usageChipLabel: "Context {{percent}}%";
3387
- readonly usageTooltipLabel: "Context usage";
3388
- readonly usagePopoverTitle: "Context Usage";
3389
- readonly usageContextWindowLabel: "Context window";
3390
- readonly usageTokensLabel: "Tokens";
3391
- readonly usageLimitsLabel: "Limits";
3392
- readonly usageCompactAction: "Compact";
3393
- readonly planCardTitle: "Plan";
3394
- readonly planCardCopy: "Copy plan";
3395
- readonly copyCode: "Copy code";
3396
- readonly planCardExpand: "Expand plan";
3397
- readonly planCardCollapse: "Collapse plan";
3398
- readonly planImplementationLead: "Implement this plan?";
3399
- readonly planImplementationConfirm: "Yes, implement this plan";
3400
- readonly planImplementationFeedbackPlaceholder: "No — tell the agent how to adjust the approach";
3401
- readonly planImplementationSend: "Send";
3402
- readonly planImplementationSkip: "Stay in Plan Mode";
3403
- readonly noRunningResponse: "No running response to stop.";
3404
- readonly composerTextMenu: "Composer text actions";
3405
- readonly pastedTextFilesHeader: "Referenced pasted text files:";
3406
- readonly pastedTextFileLine: "- pasted text file \"{{preview}}\": {{path}}. Read this file before continuing.";
3407
- readonly pastedTextAttachmentTitle: "Pasted text";
3408
- readonly pastedTextAttachmentFailed: "Pasted text couldn't be saved";
3409
- readonly pastedTextRestoreToComposer: "Show in text field";
3410
- readonly copyMessage: "Copy message";
3411
- readonly copyImage: "Copy image";
3412
- readonly messageCopied: "Copied";
3413
- readonly promptTipsPrefix: "Tips: ";
3414
- readonly reviewPicker: {
3415
- readonly title: "Code review";
3416
- readonly targetLabel: "What to review";
3417
- readonly searchPlaceholder: "Search";
3418
- readonly noResults: "No matches";
3419
- readonly uncommitted: "Uncommitted changes";
3420
- readonly baseBranch: "Compare against a branch";
3421
- readonly commit: "A specific commit";
3422
- readonly custom: "Custom instructions";
3423
- readonly branchLabel: "Base branch";
3424
- readonly branchPlaceholder: "Select a branch";
3425
- readonly branchLoading: "Loading branches…";
3426
- readonly branchEmpty: "No branches found";
3427
- readonly commitPlaceholder: "Commit SHA";
3428
- readonly customPlaceholder: "Describe what to review";
3429
- readonly submit: "Start review";
3430
- readonly cancel: "Cancel";
3431
- };
3432
- readonly promptTips: {
3433
- readonly setWorkspace: {
3434
- readonly label: "Set the workspace";
3435
- readonly prompt: "Let the Agent know where to read files, run commands, and understand code.";
3436
- };
3437
- readonly useIssue: {
3438
- readonly label: "Use Tasks well";
3439
- readonly prompt: "Put requirements, constraints, and acceptance criteria in a Task so the Agent can work toward a clear target.";
3440
- };
3441
- readonly mapCurrentState: {
3442
- readonly label: "Map the current state";
3443
- readonly prompt: "When the next step is unclear, ask the Agent to summarize status, risks, and what to do next.";
3444
- };
3445
- readonly continueRecentSession: {
3446
- readonly label: "Continue recent work";
3447
- readonly prompt: "When resuming, have the Agent recap recent progress, unfinished work, and blockers first.";
3448
- };
3449
- readonly referenceOtherAgents: {
3450
- readonly label: "Reference other Agent conversations";
3451
- readonly prompt: "Make context handoffs more complete and reduce lost details.";
3452
- };
3453
- readonly controlPermissions: {
3454
- readonly label: "Control permissions";
3455
- readonly prompt: "Use Ask for approval when you want caution, then switch to higher access once file changes are expected.";
3456
- };
3457
- };
3458
- readonly empty: "What can {{provider}} help you with?";
3459
- readonly homeSuggestionsClose: "Close suggestions";
3460
- readonly homeSuggestions: {
3461
- readonly about: {
3462
- readonly title: "Meet Tutti";
3463
- readonly prompt: "Tell me what Tutti can help me do";
3464
- };
3465
- readonly breakdown: {
3466
- readonly title: "Task breakdown";
3467
- readonly taskCenterLabel: "Task management";
3468
- readonly prompt: "Use {{taskCenterMention}} to help me break down the task, topic { enter here }";
3469
- };
3470
- readonly review: {
3471
- readonly title: "Quality review";
3472
- readonly prompt: "Have { @agent } review the output quality of { @agent session }";
3473
- };
3474
- readonly interaction: {
3475
- readonly title: "Agent interaction";
3476
- readonly prompt: "Have { @agent } and { @agent } work together to { do something }, topic { enter here }";
3477
- };
3478
- readonly import: {
3479
- readonly title: "Import session";
3480
- };
3481
- };
3482
- readonly conversations: "Sessions";
3483
- readonly newConversation: "New session";
3484
- readonly accountMenuTitle: "Tutti Agent";
3485
- readonly accountMenuMember: "Membership";
3486
- readonly accountMenuUpgrade: "Upgrade";
3487
- readonly accountMenuCreditsBalance: "Credits";
3488
- readonly accountMenuAccountCenter: "Account center";
3489
- readonly accountMenuSettings: "Settings";
3490
- readonly accountMenuFree: "Free";
3491
- readonly accountMenuSignIn: "Sign in";
3492
- readonly accountMenuSignOut: "Sign out";
3493
- readonly accountMenuLoading: "Loading";
3494
- readonly accountMenuUnavailable: "--";
3495
- readonly accountMenuDataUnavailable: "Some account data is unavailable";
3496
- readonly accountRewardToastTitle: "New user credits";
3497
- readonly accountRewardToastCreditsUnit: "credits";
3498
- readonly accountRewardToastDescription: "Added to account balance";
3499
- readonly accountRewardToastClose: "Close credits reward notification";
3500
- readonly agentConfig: "Check & Settings";
3501
- readonly agentSettingsMenu: "Settings";
3502
- readonly agentEnvSetup: "Environment Check";
3503
- readonly noConversations: "No sessions yet";
3504
- readonly emptyProjectConversations: "No chats yet";
3505
- readonly agentsEmpty: "No agents are available";
3506
- readonly conversationFilterAll: "All";
3507
3733
  };
3508
3734
  readonly workspaceInsights: {
3509
3735
  readonly runtimeTitle: "Runtime";
@@ -5327,6 +5553,48 @@ declare const agentGuiI18nResources: {
5327
5553
  readonly workspaceCenterSearchAria: "打开房间搜索";
5328
5554
  readonly workspaceCenterSearchTitle: "在当前房间搜索节点、分区与便签";
5329
5555
  readonly agentGui: {
5556
+ readonly collaborationModeConsult: "咨询";
5557
+ readonly collaborationModeFork: "Fork";
5558
+ readonly collaborationModeDelegate: "委派";
5559
+ readonly collaborationModeHandoff: "Handoff";
5560
+ readonly collaborationTriggerUser: "手动";
5561
+ readonly collaborationTriggerAgent: "Agent";
5562
+ readonly collaborationTriggerPolicy: "策略";
5563
+ readonly collaborationStatusRunning: "进行中";
5564
+ readonly collaborationStatusCompleted: "已完成";
5565
+ readonly collaborationStatusFailed: "失败";
5566
+ readonly collaborationStatusCanceled: "已取消";
5567
+ readonly collaborationPlanLabel: "方案:{{name}}";
5568
+ readonly collaborationUsageTokens: "Tokens:输入 {{input}} · 输出 {{output}}";
5569
+ readonly collaborationFailureReason: "失败原因:{{reason}}";
5570
+ readonly collaborationResultShow: "查看结果";
5571
+ readonly collaborationResultHide: "收起结果";
5572
+ readonly collaborationAdopt: "采纳";
5573
+ readonly collaborationReject: "不采纳";
5574
+ readonly collaborationAdopted: "已采纳";
5575
+ readonly collaborationRejected: "未采纳";
5576
+ readonly collaborationAdoptionFailed: "记录采纳状态失败";
5577
+ readonly composerModelPlanBadge: "方案:{{name}}";
5578
+ readonly composerModelSearchPlaceholder: "搜索模型";
5579
+ readonly composerModelSearchEmpty: "没有匹配的模型";
5580
+ readonly composerModelFavoritesGroup: "收藏";
5581
+ readonly composerModelRecentsGroup: "最近使用";
5582
+ readonly composerModelSwitchNextTurnHint: "下一次调用生效";
5583
+ readonly composerModelFavoriteAdd: "添加到收藏";
5584
+ readonly composerModelFavoriteRemove: "取消收藏";
5585
+ readonly consultEntryLabel: "咨询模型";
5586
+ readonly consultDialogTitle: "咨询模型";
5587
+ readonly consultPlanLabel: "方案";
5588
+ readonly consultModelLabel: "模型";
5589
+ readonly consultQuestionLabel: "问题";
5590
+ readonly consultQuestionPlaceholder: "向其他模型咨询建议…";
5591
+ readonly consultIncludeContextLabel: "附带当前会话最后回复作为上下文";
5592
+ readonly consultSubmit: "发起咨询";
5593
+ readonly consultSubmitting: "咨询中…";
5594
+ readonly mentionFilterCollab: "协作";
5595
+ readonly mentionGroupCollabSessions: "协作会话";
5596
+ readonly mentionEmptyCollabSessions: "暂无协作会话";
5597
+ readonly mentionCollaboratorFallback: "协作者";
5330
5598
  readonly projectLocked: "会话开始后项目不可更改";
5331
5599
  readonly projectMissingDescription: "此对话的工作目录已不存在";
5332
5600
  readonly fileMentionEnterFolder: "进入文件夹";
@@ -5344,7 +5612,6 @@ declare const agentGuiI18nResources: {
5344
5612
  readonly provenanceFilterMembers: "成员";
5345
5613
  readonly provenanceFilterReset: "重置";
5346
5614
  readonly mentionFilterSession: "会话";
5347
- readonly mentionFilterCollab: "协作";
5348
5615
  readonly mentionFilterIssue: "任务";
5349
5616
  readonly mentionKindAgent: "智能体";
5350
5617
  readonly mentionKindApp: "应用";
@@ -5359,10 +5626,8 @@ declare const agentGuiI18nResources: {
5359
5626
  readonly mentionGroupApps: "应用";
5360
5627
  readonly mentionGroupAgents: "智能体";
5361
5628
  readonly mentionGroupMySessions: "我的会话";
5362
- readonly mentionGroupCollabSessions: "协作会话";
5363
5629
  readonly mentionGroupIssues: "任务";
5364
5630
  readonly mentionEmptyMySessions: "暂无会话";
5365
- readonly mentionEmptyCollabSessions: "暂无协作会话";
5366
5631
  readonly mentionEmptyApps: "暂无应用";
5367
5632
  readonly mentionEmptyAgents: "暂无可用智能体";
5368
5633
  readonly mentionEmptyIssues: "暂无任务";
@@ -5389,7 +5654,6 @@ declare const agentGuiI18nResources: {
5389
5654
  readonly taskContentLabel: "任务内容";
5390
5655
  readonly taskTitleLabel: "任务标题";
5391
5656
  };
5392
- readonly mentionCollaboratorFallback: "协作者";
5393
5657
  readonly syncPending: "已保存到本地,正在同步到云端";
5394
5658
  readonly syncSynced: "已同步到云端";
5395
5659
  readonly syncFailed: "云端同步失败";
@@ -5595,9 +5859,6 @@ declare const agentGuiI18nResources: {
5595
5859
  readonly conversationCopyImagesOmitted: string;
5596
5860
  readonly conversationCopyInProgress: string;
5597
5861
  readonly sessionActionUnavailable: string;
5598
- readonly contextCompactionInProgress: "正在压缩上下文";
5599
- readonly contextCompactionCompleted: "已压缩上下文";
5600
- readonly contextCompactionInterrupted: "上下文压缩已中断";
5601
5862
  readonly turnSummary: "已变更文件";
5602
5863
  readonly userMessageLocator: "用户消息";
5603
5864
  readonly turnSummaryFilesChanged: "变更了 {{count}} 个文件";
@@ -5656,6 +5917,9 @@ declare const agentGuiI18nResources: {
5656
5917
  readonly showLessConversations: "收起";
5657
5918
  readonly deleteSession: "删除会话";
5658
5919
  readonly pinSession: "置顶会话";
5920
+ readonly contextCompactionInProgress: "正在压缩上下文";
5921
+ readonly contextCompactionCompleted: "已压缩上下文";
5922
+ readonly contextCompactionInterrupted: "上下文压缩已中断";
5659
5923
  readonly visibleErrorStartFailed: "{{provider}} 启动失败";
5660
5924
  readonly visibleErrorRequestFailed: "{{provider}} 请求失败";
5661
5925
  readonly visibleErrorAuthRequired: "{{provider}} 需要认证或配置";
@@ -6037,6 +6301,69 @@ declare const agentGuiI18nResources: {
6037
6301
  };
6038
6302
  readonly permissionLabel: "运行权限";
6039
6303
  readonly planModeLabel: "计划模式";
6304
+ readonly normalModeLabel: "普通";
6305
+ readonly normalModeDescription: "直接执行请求";
6306
+ readonly tuttiModeLabel: "Tutti";
6307
+ readonly tuttiModeDescription: "提示 Agent 优先使用 Tutti 原生工作流能力";
6308
+ readonly tuttiModeRemove: "关闭 Tutti mode";
6309
+ readonly tuttiBudgetTitle: "Tutti 强度";
6310
+ readonly tuttiBudgetIntensityLabel: "强度";
6311
+ readonly tuttiBudgetIntensityMin: "最低";
6312
+ readonly tuttiBudgetIntensityMax: "最高";
6313
+ readonly tuttiBudgetConfirm: "确认";
6314
+ readonly tuttiBudgetCancel: "取消";
6315
+ readonly tuttiModeUpdateFailed: "Tutti 模式更新失败,请重试";
6316
+ readonly tuttiModeUpdateUncertain: "Tutti 模式状态仍在确认中,请稍后重试";
6317
+ readonly tuttiModePlan: {
6318
+ readonly mode: "Tutti mode plan";
6319
+ readonly taskReview: "计划确认";
6320
+ readonly pending: "待确认";
6321
+ readonly cancel: "取消计划";
6322
+ readonly reviewHint: "直接发送即接受 · 输入反馈后发送即请求修改";
6323
+ readonly reviewHintReplan: "强度已调整 · 发送即按新强度重新规划";
6324
+ readonly sendAccept: "接受计划";
6325
+ readonly sendRequestChanges: "请求修改";
6326
+ readonly replanFeedback: "强度已从 {{from}} 调整为 {{to}}。请按新强度重新规划:调整任务拆解粒度与各任务的模型/推理档位。";
6327
+ readonly replanFeedbackSuffix: "(强度已调整为 {{to}},请一并按新强度重新规划。)";
6328
+ readonly tasks: "任务";
6329
+ readonly priority: "优先级";
6330
+ readonly priorityHigh: "高";
6331
+ readonly priorityMedium: "中";
6332
+ readonly priorityLow: "低";
6333
+ readonly agentTarget: "Agent";
6334
+ readonly model: "模型";
6335
+ readonly permissionMode: "权限模式";
6336
+ readonly reasoningEffort: "推理强度";
6337
+ readonly parallelizable: "可并行";
6338
+ readonly autoAccept: "自动验收";
6339
+ readonly assignmentOptionsLoading: "选项加载中...";
6340
+ readonly notSpecified: "未指定";
6341
+ readonly loadFailed: "无法加载 Tutti mode plan";
6342
+ readonly retry: "重试";
6343
+ readonly issueOpen: "打开 Issue";
6344
+ readonly issueStopExecution: "停止";
6345
+ readonly issueListView: "列表";
6346
+ readonly issueBoardView: "看板";
6347
+ readonly issueSummary: "{{done}}/{{total}} 已完成 · {{running}} 运行中";
6348
+ readonly issueDependencies: "依赖";
6349
+ readonly issueAccept: "验收";
6350
+ readonly issueRework: "重做";
6351
+ readonly issueStageParallel: "阶段 {{index}} · 并行 ×{{count}}";
6352
+ readonly issueStageSequential: "阶段 {{index}} · 串行";
6353
+ readonly issueStatusNotStarted: "待开始";
6354
+ readonly issueStatusRunning: "运行中";
6355
+ readonly issueStatusPendingAcceptance: "待验收";
6356
+ readonly issueStatusCompleted: "已完成";
6357
+ readonly issueStatusFailed: "失败";
6358
+ readonly issueStatusCanceled: "已取消";
6359
+ readonly issueStripRunning: "{{count}} 个子任务进行中";
6360
+ readonly issueStripPending: "{{count}} 待验收";
6361
+ readonly issueStripFailed: "{{count}} 失败";
6362
+ readonly issueStripDone: "{{done}}/{{total}} 已完成";
6363
+ readonly issueStripJump: "查看子任务面板";
6364
+ readonly issueCreateFailed: "已核准的计划未能创建 Issue:{{message}}。请让 Agent 修订计划。";
6365
+ };
6366
+ readonly planModeDescription: "先生成计划,再实施或拆解为 Issue";
6040
6367
  readonly planModeOnLabel: "开启";
6041
6368
  readonly planModeOffLabel: "关闭";
6042
6369
  readonly planUnavailable: "规划模式不可用";
@@ -7761,6 +8088,11 @@ interface AgentComposerReferenceProvenanceFilter {
7761
8088
  }
7762
8089
  interface AgentComposerSubmitOptions {
7763
8090
  requiredSettingsPatch?: AgentActivitySubmitSettingsPatch;
8091
+ capabilityRefs?: readonly AgentComposerCapabilityReference[];
8092
+ }
8093
+ interface AgentComposerCapabilityReference {
8094
+ capability: "tutti";
8095
+ source: "slash_command";
7764
8096
  }
7765
8097
  interface AgentComposerProps {
7766
8098
  workspaceId: string;
@@ -7780,6 +8112,10 @@ interface AgentComposerProps {
7780
8112
  disabled: boolean;
7781
8113
  disabledReason?: string | null;
7782
8114
  submitDisabled: boolean;
8115
+ /** Canonical engine projection of the independent TuttiModeActivation. */
8116
+ tuttiModeActive?: boolean;
8117
+ /** Blocks submission/removal while activation CAS or creation is unresolved. */
8118
+ tuttiModeUpdating?: boolean;
7783
8119
  placeholder: string;
7784
8120
  composerSettings: AgentGUIComposerSettingsVM;
7785
8121
  queueStatus?: AgentGUIQueueStatus;
@@ -7819,6 +8155,13 @@ interface AgentComposerProps {
7819
8155
  handoffMenuLabel?: string;
7820
8156
  labels: {
7821
8157
  send: string;
8158
+ /**
8159
+ * Plan-review send copy: with an empty-send override active the send
8160
+ * button reads sendAccept on an empty draft and sendRequestChanges once
8161
+ * feedback is typed, so the composer decision semantics stay legible.
8162
+ */
8163
+ sendAccept?: string;
8164
+ sendRequestChanges?: string;
7822
8165
  modelLabel: string;
7823
8166
  modelSelectionLabel: string;
7824
8167
  modelContextWindowSuffix: string;
@@ -7857,6 +8200,15 @@ interface AgentComposerProps {
7857
8200
  professionalLongRunning: string;
7858
8201
  };
7859
8202
  planModeLabel: string;
8203
+ tuttiModeLabel: string;
8204
+ tuttiModeDescription: string;
8205
+ tuttiBudgetTitle: string;
8206
+ tuttiBudgetIntensityLabel: string;
8207
+ tuttiBudgetIntensityMin: string;
8208
+ tuttiBudgetIntensityMax: string;
8209
+ tuttiBudgetConfirm: string;
8210
+ tuttiBudgetCancel: string;
8211
+ planModeDescription?: string;
7860
8212
  planModeOnLabel: string;
7861
8213
  planModeOffLabel: string;
7862
8214
  planUnavailable: string;
@@ -8013,6 +8365,7 @@ interface AgentComposerProps {
8013
8365
  computerUse?: boolean;
8014
8366
  permissionModeId?: string | null;
8015
8367
  }) => void;
8368
+ onTuttiModeChange?: (active: boolean) => void;
8016
8369
  capabilityMenuState?: AgentComposerCapabilityMenuState;
8017
8370
  capabilityControlsReadOnly?: boolean;
8018
8371
  onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void;
@@ -8020,7 +8373,19 @@ interface AgentComposerProps {
8020
8373
  onSlashStatusClose?: () => void;
8021
8374
  onSlashStatusRefresh?: () => void;
8022
8375
  onSubmit: (content: AgentPromptContentBlock[], displayPrompt?: string, options?: AgentComposerSubmitOptions) => void;
8023
- onSubmitGuidance?: (content: AgentPromptContentBlock[], displayPrompt?: string) => void;
8376
+ /**
8377
+ * When set, an empty-draft send is enabled and routed here instead of being
8378
+ * blocked (e.g. Tutti plan review: empty send = accept). Typed sends keep
8379
+ * flowing through onSubmit.
8380
+ */
8381
+ onSubmitEmpty?: () => void;
8382
+ /**
8383
+ * Overrides the empty-draft send button copy while the empty-send override
8384
+ * is active (e.g. plan review with a diverged intensity reads "Request
8385
+ * changes" instead of "Accept plan"). Falls back to labels.sendAccept.
8386
+ */
8387
+ emptySubmitLabel?: string;
8388
+ onSubmitGuidance?: (content: AgentPromptContentBlock[], displayPrompt?: string, options?: AgentComposerSubmitOptions) => void;
8024
8389
  onSendQueuedPromptNext: (queuedPromptId: string) => void;
8025
8390
  onRemoveQueuedPrompt: (queuedPromptId: string) => void;
8026
8391
  onEditQueuedPrompt: (queuedPromptId: string) => void;
@@ -8043,7 +8408,7 @@ interface AgentComposerProps {
8043
8408
  onRequestGitBranches?: AgentComposerGitBranchLoader | null;
8044
8409
  referenceProvenanceFilter?: AgentComposerReferenceProvenanceFilter | null;
8045
8410
  }
8046
- type AgentComposerCapabilitySettingsTarget = AgentSlashCommandCapability["capability"];
8411
+ type AgentComposerCapabilitySettingsTarget = Exclude<AgentSlashCommandCapability["capability"], "tutti">;
8047
8412
  interface AgentComposerCapabilityMenuState {
8048
8413
  browserUse?: {
8049
8414
  connectionMode?: "autoConnect" | "isolated" | null;
@@ -8052,6 +8417,9 @@ interface AgentComposerCapabilityMenuState {
8052
8417
  authorization?: AgentComposerComputerUseAuthorizationState | null;
8053
8418
  installed?: boolean | null;
8054
8419
  };
8420
+ tuttiMode?: {
8421
+ enabled?: boolean | null;
8422
+ };
8055
8423
  }
8056
8424
  type AgentComposerComputerUseAuthorizationState = "authorized" | "needs-authorization" | "unknown";
8057
8425
  interface AgentComposerGitBranches {
@@ -8102,6 +8470,256 @@ interface OpenAgentEnvPanelInput {
8102
8470
  focus?: AgentEnvPanelFocus | null;
8103
8471
  }
8104
8472
 
8473
+ type TuttiModePlanWorkflowStatus = "pending_review" | "in_progress" | "accepted" | "rejected" | "completed" | "failed" | "canceled";
8474
+ type TuttiModePlanCheckpointKind = "configuration_review" | "task_review";
8475
+ type TuttiModePlanCheckpointStatus = "pending" | "accepted" | "rejected" | "superseded" | "canceled";
8476
+ interface TuttiModePlanReviewSnapshot {
8477
+ workflow: TuttiModePlanWorkflow;
8478
+ revisions: TuttiModePlanRevision[];
8479
+ checkpoints: TuttiModePlanCheckpoint[];
8480
+ }
8481
+ interface TuttiModePlanWorkflow {
8482
+ id: string;
8483
+ workspaceId: string;
8484
+ type: string;
8485
+ owner: string;
8486
+ triggerKind: string;
8487
+ sourceSessionId: string;
8488
+ sourceTurnId?: string | null;
8489
+ sourceToolCallId?: string | null;
8490
+ status: TuttiModePlanWorkflowStatus;
8491
+ currentRevisionId: string;
8492
+ }
8493
+ interface TuttiModePlanRevision {
8494
+ id: string;
8495
+ workflowId: string;
8496
+ sequence: number;
8497
+ schemaVersion: string;
8498
+ documentPath: string;
8499
+ sha256: string;
8500
+ producedByTurnId?: string | null;
8501
+ createdAtUnixMs: number;
8502
+ document: TuttiModePlanDocument;
8503
+ }
8504
+ interface TuttiModePlanDocument {
8505
+ schema: string;
8506
+ phase: "configuration" | "task_graph";
8507
+ title: string;
8508
+ topicId: string;
8509
+ markdownBody: string;
8510
+ execution: TuttiModePlanExecution;
8511
+ budget: TuttiModePlanBudget;
8512
+ tasks: TuttiModePlanTask[];
8513
+ }
8514
+ interface TuttiModePlanExecution {
8515
+ mode: "sequential" | "parallel";
8516
+ reasoningIntensity: number;
8517
+ orchestrationIntensity: number;
8518
+ }
8519
+ interface TuttiModePlanBudget {
8520
+ mode: "auto" | "fixed";
8521
+ tokenLimit: number;
8522
+ quotaWaterlinePercent: number;
8523
+ }
8524
+ interface TuttiModePlanTask {
8525
+ id: string;
8526
+ title: string;
8527
+ content: string;
8528
+ priority: "high" | "medium" | "low";
8529
+ agentTargetId?: string | null;
8530
+ modelPlanId?: string | null;
8531
+ model?: string | null;
8532
+ permissionModeId?: string | null;
8533
+ reasoningEffort?: string | null;
8534
+ executionDirectory?: string | null;
8535
+ dependsOn: string[];
8536
+ parallelizable?: boolean;
8537
+ autoAccept?: boolean;
8538
+ }
8539
+ interface TuttiModePlanCheckpoint {
8540
+ id: string;
8541
+ workflowId: string;
8542
+ kind: TuttiModePlanCheckpointKind;
8543
+ revisionId: string;
8544
+ status: TuttiModePlanCheckpointStatus;
8545
+ decidedBy?: string | null;
8546
+ decisionReason?: string | null;
8547
+ createdAtUnixMs: number;
8548
+ updatedAtUnixMs: number;
8549
+ decidedAtUnixMs?: number | null;
8550
+ }
8551
+
8552
+ interface TuttiModePlanReviewUpdate {
8553
+ kind: "workflow_updated";
8554
+ workspaceId: string;
8555
+ workflowId: string;
8556
+ sourceSessionId: string;
8557
+ checkpointId: string;
8558
+ changeKind: "proposal_created" | "revision_created" | "checkpoint_decided" | "operation_updated";
8559
+ }
8560
+ interface TuttiModePlanReviewConnectionRestored {
8561
+ kind: "connection_restored";
8562
+ workspaceId: string;
8563
+ }
8564
+ /**
8565
+ * A root turn of the source session settled. The host derives this from the
8566
+ * daemon's canonical turn fan-out and relays it as a read-repair trigger: a
8567
+ * plan proposed mid-turn announces itself through one workflow event, and if
8568
+ * that single event is lost no later workflow signal re-reads review state.
8569
+ */
8570
+ interface TuttiModePlanReviewSessionSettled {
8571
+ kind: "session_settled";
8572
+ workspaceId: string;
8573
+ sourceSessionId: string;
8574
+ }
8575
+ type TuttiModePlanReviewInvalidation = TuttiModePlanReviewUpdate | TuttiModePlanReviewConnectionRestored | TuttiModePlanReviewSessionSettled;
8576
+ interface TuttiModePlanTaskAssignmentInput {
8577
+ taskId: string;
8578
+ agentTargetId?: string | null;
8579
+ modelPlanId?: string | null;
8580
+ model?: string | null;
8581
+ permissionModeId?: string | null;
8582
+ reasoningEffort?: string | null;
8583
+ parallelizable?: boolean | null;
8584
+ autoAccept?: boolean | null;
8585
+ }
8586
+ interface TuttiModePlanReviewDecisionInput {
8587
+ workspaceId: string;
8588
+ workflowId: string;
8589
+ checkpointId: string;
8590
+ decision: "accepted" | "rejected" | "canceled";
8591
+ decidedBy: string;
8592
+ reason?: string | null;
8593
+ /** Per-task overrides; only meaningful with an accepted task review. */
8594
+ taskAssignments?: readonly TuttiModePlanTaskAssignmentInput[];
8595
+ }
8596
+ interface TuttiModePlanAssignmentAgentOption {
8597
+ agentTargetId: string;
8598
+ label: string;
8599
+ }
8600
+ interface TuttiModePlanAssignmentAgentDetail {
8601
+ /** Provider-native models usable without a model plan. */
8602
+ models: readonly string[];
8603
+ modelPlans: readonly {
8604
+ modelPlanId: string;
8605
+ label: string;
8606
+ models: readonly string[];
8607
+ }[];
8608
+ permissionModes: readonly {
8609
+ id: string;
8610
+ label: string;
8611
+ }[];
8612
+ reasoningEfforts: readonly string[];
8613
+ }
8614
+ interface TuttiPlanIssueTaskSnapshot {
8615
+ taskId: string;
8616
+ title: string;
8617
+ content: string;
8618
+ status: string;
8619
+ sortIndex: number;
8620
+ parallelizable: boolean;
8621
+ autoAccept: boolean;
8622
+ dependencyTaskIds: string[];
8623
+ }
8624
+ /** Read-only snapshot of the Issue a session's accepted plan materialized. */
8625
+ interface TuttiPlanIssueSnapshot {
8626
+ workflowId: string;
8627
+ sourceTurnId: string | null;
8628
+ issueId: string;
8629
+ topicId: string;
8630
+ title: string;
8631
+ tasks: TuttiPlanIssueTaskSnapshot[];
8632
+ }
8633
+ /**
8634
+ * An accepted plan whose create_issue operation durably failed. The
8635
+ * conversation must surface this instead of rendering nothing: there is no
8636
+ * pending checkpoint (the review panel is gone) and no Issue (the issue panel
8637
+ * never appears), so silence would hide the failure entirely.
8638
+ */
8639
+ interface TuttiPlanIssueMaterializationFailure {
8640
+ workflowId: string;
8641
+ sourceTurnId: string | null;
8642
+ errorMessage: string | null;
8643
+ }
8644
+ type TuttiPlanIssueQueryResult = {
8645
+ kind: "issue";
8646
+ issue: TuttiPlanIssueSnapshot;
8647
+ } | ({
8648
+ kind: "materialization_failed";
8649
+ } & TuttiPlanIssueMaterializationFailure) | null;
8650
+ /**
8651
+ * Read-only source for the embedded plan-issue panel in the conversation.
8652
+ * The host resolves "the Issue this session's accepted plan created" and
8653
+ * relays live issue updates; all mutations stay in the Issue Manager.
8654
+ */
8655
+ interface TuttiPlanIssueSource {
8656
+ getSessionPlanIssue(input: {
8657
+ workspaceId: string;
8658
+ sourceSessionId: string;
8659
+ }): Promise<TuttiPlanIssueQueryResult>;
8660
+ subscribeIssueUpdates(workspaceId: string, listener: (update: {
8661
+ issueId: string;
8662
+ }) => void): () => void;
8663
+ /** Accepts a pending-acceptance task (the human gate) from the embed. */
8664
+ acceptTask(input: {
8665
+ workspaceId: string;
8666
+ issueId: string;
8667
+ taskId: string;
8668
+ }): Promise<void>;
8669
+ /** Sends a pending-acceptance task back to rework (re-dispatch). */
8670
+ rejectTask(input: {
8671
+ workspaceId: string;
8672
+ issueId: string;
8673
+ taskId: string;
8674
+ }): Promise<void>;
8675
+ /**
8676
+ * Stops the Issue's execution: pauses future dispatch and cancels every
8677
+ * running task run. Idempotent; the daemon owns the cascade.
8678
+ */
8679
+ cancelExecution(input: {
8680
+ workspaceId: string;
8681
+ issueId: string;
8682
+ }): Promise<void>;
8683
+ /**
8684
+ * Resolves the delegate agent session that ran (or is running) a task's
8685
+ * latest run, so a task card can jump straight into that conversation.
8686
+ * Null when the task has not launched yet.
8687
+ */
8688
+ resolveTaskSession(input: {
8689
+ workspaceId: string;
8690
+ issueId: string;
8691
+ taskId: string;
8692
+ }): Promise<{
8693
+ agentSessionId: string;
8694
+ } | null>;
8695
+ }
8696
+ /**
8697
+ * Option catalogs for per-task assignment editing. The desktop host reuses
8698
+ * its agent directory and composer capability catalogs; the panel never
8699
+ * hardcodes providers or modes.
8700
+ */
8701
+ interface TuttiModePlanAssignmentOptionsSource {
8702
+ listAgents(input: {
8703
+ workspaceId: string;
8704
+ }): Promise<readonly TuttiModePlanAssignmentAgentOption[]>;
8705
+ loadAgentOptions(input: {
8706
+ workspaceId: string;
8707
+ agentTargetId: string;
8708
+ }): Promise<TuttiModePlanAssignmentAgentDetail>;
8709
+ }
8710
+ interface TuttiModePlanReviewRuntime {
8711
+ listPending(input: {
8712
+ workspaceId: string;
8713
+ sourceSessionId: string;
8714
+ }): Promise<readonly TuttiModePlanReviewSnapshot[]>;
8715
+ decide(input: TuttiModePlanReviewDecisionInput): Promise<void>;
8716
+ subscribe(workspaceId: string, listener: (update: TuttiModePlanReviewInvalidation) => void): () => void;
8717
+ /** Optional; the panel degrades to read-only assignment display without it. */
8718
+ assignmentOptions?: TuttiModePlanAssignmentOptionsSource;
8719
+ /** Optional; without it the embedded plan-issue panel never renders. */
8720
+ planIssues?: TuttiPlanIssueSource;
8721
+ }
8722
+
8105
8723
  type AgentMentionReferenceTargetResolver = (item: AgentContextMentionItem) => ReferenceLocateTarget | null;
8106
8724
  interface AgentWorkspaceReferenceInitialTargetInput {
8107
8725
  activeConversation: AgentGUINodeViewModel["rail"]["activeConversation"];
@@ -8165,11 +8783,6 @@ interface AgentGUIRememberComposerDefaultsResult {
8165
8783
  supersededFields: AgentGUIComposerDefaultsField[];
8166
8784
  }
8167
8785
 
8168
- interface AgentGUIOpenSessionRequest {
8169
- agentSessionId: string;
8170
- sequence: number;
8171
- }
8172
-
8173
8786
  type AgentGUIComposerAppendRequest = {
8174
8787
  files: readonly AgentComposerDraftFile[];
8175
8788
  prompt?: string;
@@ -8184,11 +8797,18 @@ interface AgentGUIPrefillPromptRequest {
8184
8797
  agentTargetId?: string | null;
8185
8798
  autoSubmit?: boolean;
8186
8799
  draftPrompt: string;
8800
+ model?: string | null;
8801
+ modelPlanId?: string | null;
8187
8802
  provider?: AgentGUIProvider;
8188
8803
  sequence: number;
8189
8804
  userProjectPath?: string | null;
8190
8805
  }
8191
8806
 
8807
+ interface AgentGUIOpenSessionRequest {
8808
+ agentSessionId: string;
8809
+ sequence: number;
8810
+ }
8811
+
8192
8812
  declare const AGENT_CONVERSATION_BATCH_DELETION_RUNTIME_METHODS: readonly ["deleteSessionsBatch", "listSessionSectionDeletionCandidates"];
8193
8813
  declare const AGENT_CONVERSATION_RAIL_SOURCE_METHODS: readonly ["deleteSessionsBatch", "listPinnedSessionsPage", "listSessionSectionDeletionCandidates", "listSessionSectionPage", "listSessionSections", "listSessionsPage"];
8194
8814
  declare const AGENT_CONVERSATION_RAIL_RUNTIME_METHODS: readonly ["getSessionSectionsQueryCache", "deleteSessionsBatch", "listPinnedSessionsPage", "listSessionSectionDeletionCandidates", "listSessionSectionPage", "listSessionSections", "listSessionsPage"];
@@ -8372,6 +8992,7 @@ interface AgentGUINodeHostActions {
8372
8992
  agentTargetId?: string | null;
8373
8993
  draftPrompt: string;
8374
8994
  provider: AgentGUIProvider;
8995
+ sourceAgentSessionId: string;
8375
8996
  userProjectPath?: string | null;
8376
8997
  }) => void | Promise<void>;
8377
8998
  onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void;
@@ -8423,6 +9044,7 @@ interface AgentGUIProps extends Omit<AgentGUINodeProps, "hostCapabilities" | "re
8423
9044
  renderAgentsEmpty?: AgentGUIAgentsEmptyRenderer;
8424
9045
  agentActivityRuntime: AgentActivityRuntime;
8425
9046
  agentHostApi?: AgentHostInputApi | null;
9047
+ tuttiModePlanReviewRuntime?: TuttiModePlanReviewRuntime | null;
8426
9048
  /** Starter entries to hide below the empty new-session composer. */
8427
9049
  disabled?: readonly AgentGUIHomeSuggestionId[];
8428
9050
  i18n?: I18nRuntime<string> | null;
@@ -8538,6 +9160,7 @@ declare const AGENT_CONTEXT_MENTION_PROVIDER_IDS: {
8538
9160
  readonly file: "file";
8539
9161
  readonly workspaceApp: "workspace-app";
8540
9162
  readonly workspaceIssue: "workspace-issue";
9163
+ readonly workspaceModel: "workspace-model";
8541
9164
  };
8542
9165
  type AgentContextMentionProviderId = TuttiExternalAtProviderId;
8543
9166
  type AgentContextMentionQueryInput = RichTextTriggerQueryInput & {
@@ -8593,10 +9216,6 @@ interface EngineStateStore<TState> {
8593
9216
  }
8594
9217
  declare function useEngineSelector<TState, TSelected>(engine: EngineStateStore<TState>, selector: (state: TState) => TSelected, isEqual?: (a: TSelected, b: TSelected) => boolean): TSelected;
8595
9218
 
8596
- declare const PLAN_IMPLEMENTATION_ACTION_IMPLEMENT = "implement";
8597
- declare const PLAN_IMPLEMENTATION_ACTION_FEEDBACK = "feedback";
8598
- declare const PLAN_IMPLEMENTATION_ACTION_SKIP = "skip";
8599
-
8600
9219
  type AgentPlanPromptAction = typeof PLAN_IMPLEMENTATION_ACTION_IMPLEMENT | typeof PLAN_IMPLEMENTATION_ACTION_FEEDBACK | typeof PLAN_IMPLEMENTATION_ACTION_SKIP;
8601
9220
  declare function selectAgentPlanPromptTurn(state: AgentSessionEngineState, agentSessionId: string, requestId: string): _tutti_os_agent_activity_core.AgentActivityTurn | null;
8602
9221
  declare function dispatchAgentPlanPromptAction(input: {
@@ -8609,4 +9228,4 @@ declare function dispatchAgentPlanPromptAction(input: {
8609
9228
  workspaceId: string;
8610
9229
  }): boolean;
8611
9230
 
8612
- export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, AGENT_CONVERSATION_RAIL_RUNTIME_METHODS, AGENT_GUI_DETAIL_MIN_WIDTH_PX, AGENT_GUI_EXPANDED_TARGET_WIDTH_PX, AGENT_GUI_STANDALONE_AUTO_COLLAPSE_WIDTH_PX, AGENT_PASTED_TEXT_BLOCK_KIND, AGENT_PASTED_TEXT_MENTION_KIND, AgentActivityHostProvider, type AgentActivityHostProviderProps, type AgentActivityRuntime, type AgentActivityRuntimeDeleteSessionsBatchInput, type AgentActivityRuntimeDeleteSessionsBatchResult, type AgentActivityRuntimeListSessionMessagesInput, type AgentActivityRuntimePromptContentBlock, AgentActivityRuntimeProvider, type AgentActivityRuntimeProviderProps, type AgentActivityRuntimeSessionSectionDeletionCandidates, type AgentActivityRuntimeSessionSectionScopeInput, type AgentActivityRuntimeSetSessionPinnedInput, type AgentActivityRuntimeUpdateSessionSettingsInput, type AgentActivityRuntimeUpdateSessionSettingsResult, type AgentActivityRuntimeUploadPromptContentInput, type AgentActivityRuntimeUploadPromptContentResult, type AgentComposerDraftFile, type AgentContextMentionProvider, type AgentContextMentionProviderId, type AgentConversationBatchDeletionCapability, type AgentConversationRailRuntime, type AgentConversationRailRuntimeSource, type AgentCustomMentionChipContext, type AgentCustomMentionIdentity, type AgentCustomMentionKindDefinition, type AgentCustomMentionPresentation, type AgentExternalPromptEntryResolution, type AgentExternalPromptEntryResolver, type AgentExternalPromptFilePreparationErrorCode, type AgentExternalPromptFilePreparationResult, type AgentExternalPromptFilePreparer, AgentGUI, type AgentGUIAccountMenuState, type AgentGUIAgent, type AgentGUIAgentAvailability, type AgentGUIAgentAvailabilityAction, type AgentGUIAgentAvailabilityStatus, type AgentGUIAgentDirectoryPort, type AgentGUIAgentDirectorySnapshot, type AgentGUIAgentDirectoryStatus, type AgentGUIAgentOwner, type AgentGUIAgentOwnership, type AgentGUIAgentTarget, type AgentGUIAgentTargetBadge, type AgentGUIAgentTargetRef, type AgentGUIAgentsEmptyRenderer, type AgentGUIAllAgentsPresentation, type AgentGUIComposerAppendRequest, type AgentGUIComposerContentType, type AgentGUIComposerFocusMethod, type AgentGUIConversationRailLayout, type AgentGUIEngagementContext, type AgentGUIEngagementEvent, type AgentGUIEngagementEventSink, type AgentGUIHomeSuggestionId, type AgentGUIProps, type AgentGUIProvider, type AgentGUIProviderRailAllPresentation, type AgentGUIProviderRailMode, type AgentGUIProviderReadinessGate, type AgentGUIProviderReadinessGateAction, type AgentGUIProviderReadinessGateStatus, type AgentGUIProviderUnavailableStateContext, type AgentGUIProviderUnavailableStateRenderer, type AgentGUISidebarFooterContext, type AgentGUISidebarFooterRenderer, type AgentGuiI18nLocale, AgentGuiI18nProvider, AgentHandoffMenu, type AgentHandoffMenuLabels, type AgentHandoffMenuProps, type AgentHostAgentTargetAuthenticatedAccount, type AgentHostAgentTargetSetupSnapshot, type AgentHostAgentTargetSetupState, type AgentHostAgentTargetSetupWatch, type AgentHostApi, type AgentHostApplyWorkspaceGitPatchInput, type AgentHostInputApi, type AgentHostQuickPrompt, type AgentHostQuickPromptSnapshot, type AgentHostQuickPromptsApi, type AgentHostRuntimeApi, type AgentHostSelectFilesInput, type AgentHostUserProject, type AgentPlanPromptAction, type AgentPreparedExternalPromptFile, type AgentProbeProvider, type AgentProbeSnapshot, type AgentProviderProbeListInput, type AgentProviderProbeListResult, type AgentStatusController, type AgentStatusControllerOptions, type AgentStatusControllerSnapshot, type AgentStatusFrame, type AgentStatusQuery, type AgentStatusRequestPhase, type AgentStatusRequestReason, type AgentStatusSectionState, type AgentStatusSelectionKey, type AgentStatusSource, type AgentStatusSourceError, type AgentStatusStreamObserver, type AgentStatusValue, type AgentUsageQuota, type AgentUsageSnapshot, type CreateAgentSessionHandoffPromptInput, type CreateAgentSessionMarkdownLinkInput, type EngineStateStore, type PersistWriteResult, type ReadWorkspaceAgentReadStateInput, type WorkspaceAgentReadStateSnapshot, type WriteWorkspaceAgentReadStateInput, agentGUIAgentIsReady, agentGUIDefaultTargetProviders, agentGuiDockIconUrl, agentGuiDockIconUrls, agentGuiI18nModule, agentGuiI18nResources, createAgentConversationRailRuntime, createAgentSessionHandoffPrompt, createAgentSessionMarkdownLink, createAgentStatusController, createLocalAgentGUIAgentTarget, createLocalAgentGUIAgentTargets, createSharedAgentGUIAgentTarget, dispatchAgentPlanPromptAction, getAgentCustomMentionKind, inspectAgentConversationBatchDeletionCapability, localAgentGUIAgentTargetId, normalizeAgentGUIAgentTargets, normalizeAgentGUIAgents, preloadAgentMentionBrowse, projectAgentGUIAgentsToTargets, registerAgentCustomMentionKind, resetAgentActivityRuntimeForTests, resetAgentCustomMentionKindsForTests, resolveAgentGUIAgentTarget, resolveAgentGUIExpandedWindowFrame, resolveAgentGUISelectedDirectoryAgent, selectAgentPlanPromptTurn, selectAgentStatusControllerSnapshot, setAgentActivityRuntimeForTests, shouldAutoCollapseAgentGUIConversationRail, useAgentActivityRuntime, useAgentActivitySnapshot, useEngineSelector, useOptionalAgentActivityRuntime };
9231
+ export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, AGENT_CONVERSATION_RAIL_RUNTIME_METHODS, AGENT_GUI_DETAIL_MIN_WIDTH_PX, AGENT_GUI_EXPANDED_TARGET_WIDTH_PX, AGENT_GUI_STANDALONE_AUTO_COLLAPSE_WIDTH_PX, AGENT_PASTED_TEXT_BLOCK_KIND, AGENT_PASTED_TEXT_MENTION_KIND, AgentActivityHostProvider, type AgentActivityHostProviderProps, type AgentActivityRuntime, type AgentActivityRuntimeDeleteSessionsBatchInput, type AgentActivityRuntimeDeleteSessionsBatchResult, type AgentActivityRuntimeListSessionMessagesInput, type AgentActivityRuntimePromptContentBlock, AgentActivityRuntimeProvider, type AgentActivityRuntimeProviderProps, type AgentActivityRuntimeSessionSectionDeletionCandidates, type AgentActivityRuntimeSessionSectionScopeInput, type AgentActivityRuntimeSetSessionPinnedInput, type AgentActivityRuntimeUpdateSessionSettingsInput, type AgentActivityRuntimeUpdateSessionSettingsResult, type AgentActivityRuntimeUploadPromptContentInput, type AgentActivityRuntimeUploadPromptContentResult, type AgentComposerDraftFile, type AgentContextMentionProvider, type AgentContextMentionProviderId, type AgentConversationBatchDeletionCapability, type AgentConversationRailRuntime, type AgentConversationRailRuntimeSource, type AgentCustomMentionChipContext, type AgentCustomMentionIdentity, type AgentCustomMentionKindDefinition, type AgentCustomMentionPresentation, type AgentExternalPromptEntryResolution, type AgentExternalPromptEntryResolver, type AgentExternalPromptFilePreparationErrorCode, type AgentExternalPromptFilePreparationResult, type AgentExternalPromptFilePreparer, AgentGUI, type AgentGUIAccountMenuState, type AgentGUIAgent, type AgentGUIAgentAvailability, type AgentGUIAgentAvailabilityAction, type AgentGUIAgentAvailabilityStatus, type AgentGUIAgentDirectoryPort, type AgentGUIAgentDirectorySnapshot, type AgentGUIAgentDirectoryStatus, type AgentGUIAgentOwner, type AgentGUIAgentOwnership, type AgentGUIAgentTarget, type AgentGUIAgentTargetBadge, type AgentGUIAgentTargetRef, type AgentGUIAgentsEmptyRenderer, type AgentGUIAllAgentsPresentation, type AgentGUIComposerAppendRequest, type AgentGUIComposerContentType, type AgentGUIComposerFocusMethod, type AgentGUIConversationRailLayout, type AgentGUIEngagementContext, type AgentGUIEngagementEvent, type AgentGUIEngagementEventSink, type AgentGUIHomeSuggestionId, type AgentGUIProps, type AgentGUIProvider, type AgentGUIProviderRailAllPresentation, type AgentGUIProviderRailMode, type AgentGUIProviderReadinessGate, type AgentGUIProviderReadinessGateAction, type AgentGUIProviderReadinessGateStatus, type AgentGUIProviderUnavailableStateContext, type AgentGUIProviderUnavailableStateRenderer, type AgentGUISidebarFooterContext, type AgentGUISidebarFooterRenderer, type AgentGuiI18nLocale, AgentGuiI18nProvider, AgentHandoffMenu, type AgentHandoffMenuLabels, type AgentHandoffMenuProps, type AgentHostAgentTargetAuthenticatedAccount, type AgentHostAgentTargetSetupSnapshot, type AgentHostAgentTargetSetupState, type AgentHostAgentTargetSetupWatch, type AgentHostApi, type AgentHostApplyWorkspaceGitPatchInput, type AgentHostInputApi, type AgentHostQuickPrompt, type AgentHostQuickPromptSnapshot, type AgentHostQuickPromptsApi, type AgentHostRuntimeApi, type AgentHostSelectFilesInput, type AgentHostUserProject, type AgentPlanPromptAction, type AgentPreparedExternalPromptFile, type AgentProbeProvider, type AgentProbeSnapshot, type AgentProviderProbeListInput, type AgentProviderProbeListResult, type AgentStatusController, type AgentStatusControllerOptions, type AgentStatusControllerSnapshot, type AgentStatusFrame, type AgentStatusQuery, type AgentStatusRequestPhase, type AgentStatusRequestReason, type AgentStatusSectionState, type AgentStatusSelectionKey, type AgentStatusSource, type AgentStatusSourceError, type AgentStatusStreamObserver, type AgentStatusValue, type AgentUsageQuota, type AgentUsageSnapshot, type CreateAgentSessionHandoffPromptInput, type CreateAgentSessionMarkdownLinkInput, type EngineStateStore, type PersistWriteResult, type ReadWorkspaceAgentReadStateInput, type TuttiModePlanAssignmentAgentDetail, type TuttiModePlanAssignmentAgentOption, type TuttiModePlanAssignmentOptionsSource, type TuttiModePlanReviewRuntime, type TuttiModePlanReviewSnapshot, type TuttiModePlanTaskAssignmentInput, type TuttiPlanIssueMaterializationFailure, type TuttiPlanIssueQueryResult, type TuttiPlanIssueSnapshot, type TuttiPlanIssueSource, type TuttiPlanIssueTaskSnapshot, type WorkspaceAgentReadStateSnapshot, type WriteWorkspaceAgentReadStateInput, agentGUIAgentIsReady, agentGUIDefaultTargetProviders, agentGuiDockIconUrl, agentGuiDockIconUrls, agentGuiI18nModule, agentGuiI18nResources, createAgentConversationRailRuntime, createAgentSessionHandoffPrompt, createAgentSessionMarkdownLink, createAgentStatusController, createLocalAgentGUIAgentTarget, createLocalAgentGUIAgentTargets, createSharedAgentGUIAgentTarget, dispatchAgentPlanPromptAction, getAgentCustomMentionKind, inspectAgentConversationBatchDeletionCapability, localAgentGUIAgentTargetId, normalizeAgentGUIAgentTargets, normalizeAgentGUIAgents, preloadAgentMentionBrowse, projectAgentGUIAgentsToTargets, registerAgentCustomMentionKind, resetAgentActivityRuntimeForTests, resetAgentCustomMentionKindsForTests, resolveAgentGUIAgentTarget, resolveAgentGUIExpandedWindowFrame, resolveAgentGUISelectedDirectoryAgent, selectAgentPlanPromptTurn, selectAgentStatusControllerSnapshot, setAgentActivityRuntimeForTests, shouldAutoCollapseAgentGUIConversationRail, useAgentActivityRuntime, useAgentActivitySnapshot, useEngineSelector, useOptionalAgentActivityRuntime };