1
>
/*---------------------------------------------------------------------------------------------
sessionActions.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
// Action and notification types for the sessions process protocol.
7
>
// Re-exports from the auto-generated protocol layer with local aliases.
8
>
//
9
>
// VS Code-specific additions:
10
>
// - IToolCallStartAction extends protocol with `toolKind` and `language`
11
>
// - isRootAction / isSessionAction type guards
12
>
// - INotification alias for ProtocolNotification
13
>
14
>
// ---- Re-exports from protocol -----------------------------------------------
15
>
16
>
export {
17
>
ActionType,
18
>
type ActionEnvelope,
19
>
type ActionOrigin,
20
>
type RootAgentsChangedAction,
21
>
type RootActiveSessionsChangedAction,
22
>
type SessionCreationFailedAction,
23
>
type SessionChatAddedAction,
24
>
type SessionChatRemovedAction,
25
>
type SessionChatUpdatedAction,
26
>
type SessionDefaultChatChangedAction,
27
>
type ChatDeltaAction,
28
>
type ChatErrorAction,
29
>
type SessionReadyAction,
30
>
type ChatReasoningAction,
31
>
type ChatResponsePartAction,
32
>
type ChatToolCallCompleteAction,
33
>
type ChatToolCallConfirmedAction,
34
>
type ChatToolCallApprovedAction,
35
>
type ChatToolCallDeniedAction,
36
>
type ChatToolCallDeltaAction,
37
>
type ChatToolCallReadyAction,
38
>
type ChatToolCallResultConfirmedAction,
39
>
type ChatToolCallStartAction,
40
>
type SessionTitleChangedAction,
41
>
type ChatTurnCancelledAction,
42
>
type ChatTurnCompleteAction,
43
>
type ChatTurnStartedAction,
44
>
type ChatUsageAction,
45
>
type SessionServerToolsChangedAction,
46
>
type SessionActiveClientSetAction,
47
>
type SessionActiveClientRemovedAction,
48
>
type SessionCustomizationsChangedAction,
49
>
type SessionCustomizationToggledAction,
50
>
type ChatPendingMessageSetAction,
51
>
type ChatPendingMessageRemovedAction,
52
>
type ChatQueuedMessagesReorderedAction,
53
>
type ChatInputRequestedAction,
54
>
type ChatInputCompletedAction,
55
>
type ChatInputAnswerChangedAction,
56
>
type SessionIsReadChangedAction,
57
>
type SessionIsArchivedChangedAction,
58
>
type ChatToolCallContentChangedAction,
59
>
type ChatTruncatedAction,
60
>
type ChangesetStatusChangedAction,
61
>
type ChangesetFileSetAction,
62
>
type ChangesetFileRemovedAction,
63
>
type ChangesetContentChangedAction,
64
>
type ChangesetOperationsChangedAction,
65
>
type ChangesetClearedAction,
66
>
type AnnotationsSetAction,
67
>
type AnnotationsUpdatedAction,
68
>
type AnnotationsRemovedAction,
69
>
type AnnotationsEntrySetAction,
70
>
type AnnotationsEntryRemovedAction,
71
>
type ResourceWatchChangedAction,
72
>
type StateAction,
73
>
} from './protocol/actions.js';
74
>
75
>
export {
76
>
AuthRequiredReason,
77
>
type SessionAddedParams,
78
>
type SessionRemovedParams,
79
>
type SessionSummaryChangedParams,
80
>
type ProgressParams,
81
>
type AuthRequiredParams,
82
>
} from './protocol/notifications.js';
83
>
84
>
/**
85
>
* String discriminants for the protocol notification methods that previously
86
>
* lived inside a `notification` wrapper. These values are the JSON-RPC method
87
>
* names sent over the wire by a channels-era server; they are also the `type`
88
>
* discriminant on {@link ProtocolNotification} variants.
89
>
*/
90
>
export const NotificationType = {
91
>
SessionAdded: 'root/sessionAdded',
92
>
SessionRemoved: 'root/sessionRemoved',
93
>
SessionSummaryChanged: 'root/sessionSummaryChanged',
94
>
Progress: 'root/progress',
95
>
AuthRequired: 'auth/required',
96
>
} as const;
97
>
export type NotificationType = typeof NotificationType[keyof typeof NotificationType];
98
>
99
>
// ---- Local aliases for short names ------------------------------------------
100
>
// Consumers use these shorter names; they're type-only aliases.
101
>
102
>
import type {
103
>
RootAgentsChangedAction,
104
>
RootActiveSessionsChangedAction,
105
>
ChatDeltaAction,
106
>
ChatReasoningAction,
107
>
ChatResponsePartAction,
108
>
ChatToolCallApprovedAction,
109
>
ChatToolCallCompleteAction,
110
>
ChatToolCallConfirmedAction,
111
>
ChatToolCallDeniedAction,
112
>
ChatToolCallDeltaAction,
113
>
ChatToolCallReadyAction,
114
>
ChatToolCallResultConfirmedAction,
115
>
ChatToolCallStartAction,
116
>
SessionTitleChangedAction,
117
>
ChatTurnCancelledAction,
118
>
ChatTurnCompleteAction,
119
>
ChatTurnStartedAction,
120
>
ChatErrorAction,
121
>
ChatUsageAction,
122
>
ChatToolCallContentChangedAction,
123
>
StateAction,
124
>
ChatPendingMessageSetAction,
125
>
ChatPendingMessageRemovedAction,
126
>
ChatQueuedMessagesReorderedAction,
127
>
SessionIsReadChangedAction,
128
>
SessionIsArchivedChangedAction,
129
>
RootConfigChangedAction,
130
>
} from './protocol/actions.js';
131
>
132
>
import type { SessionAddedParams, SessionRemovedParams, SessionSummaryChangedParams, ProgressParams, AuthRequiredParams } from './protocol/notifications.js';
133
>
import type { RootAction as IRootAction_, SessionAction as ISessionAction_, ChatAction as IChatAction_, ClientSessionAction as IClientSessionAction_, ServerSessionAction as IServerSessionAction_, ClientChatAction as IClientChatAction_, ServerChatAction as IServerChatAction_, TerminalAction as ITerminalAction_, ClientTerminalAction as IClientTerminalAction_, ChangesetAction as IChangesetAction_, ClientChangesetAction as IClientChangesetAction_, AnnotationsAction as IAnnotationsAction_, ClientAnnotationsAction as IClientAnnotationsAction_ } from './protocol/action-origin.generated.js';
134
>
135
>
/**
136
>
* Discriminated union of all server→client protocol notifications other than
137
>
* the action envelope. Each variant carries its protocol `method` so callers
138
>
* can switch on `type` the same way they did against the old `NotificationType`
139
>
* enum.
140
>
*/
141
>
export type ProtocolNotification =
142
>
| ({ type: 'root/sessionAdded' } & SessionAddedParams)
143
>
| ({ type: 'root/sessionRemoved' } & SessionRemovedParams)
144
>
| ({ type: 'root/sessionSummaryChanged' } & SessionSummaryChangedParams)
145
>
| ({ type: 'root/progress' } & ProgressParams)
146
>
| ({ type: 'auth/required' } & AuthRequiredParams);
147
>
148
>
export type RootAction = IRootAction_;
149
>
export type SessionAction = ISessionAction_;
150
>
export type ChatAction = IChatAction_;
151
>
export type ClientSessionAction = IClientSessionAction_;
152
>
export type ServerSessionAction = IServerSessionAction_;
153
>
export type ClientChatAction = IClientChatAction_;
154
>
export type ServerChatAction = IServerChatAction_;
155
>
export type TerminalAction = ITerminalAction_;
156
>
export type ClientTerminalAction = IClientTerminalAction_;
157
>
export type ChangesetAction = IChangesetAction_;
158
>
export type ClientChangesetAction = IClientChangesetAction_;
159
>
export type AnnotationsAction = IAnnotationsAction_;
160
>
export type ClientAnnotationsAction = IClientAnnotationsAction_;
161
>
162
>
// Root actions
163
>
export type IAgentsChangedAction = RootAgentsChangedAction;
164
>
export type IActiveSessionsChangedAction = RootActiveSessionsChangedAction;
165
>
export type IRootConfigChangedAction = RootConfigChangedAction;
166
>
167
>
// Chat/turn actions — short aliases (turns now live on the chat channel)
168
>
export type ITurnStartedAction = ChatTurnStartedAction;
169
>
export type IDeltaAction = ChatDeltaAction;
170
>
export type IResponsePartAction = ChatResponsePartAction;
171
>
export type IToolCallStartAction = ChatToolCallStartAction;
172
>
export type IToolCallDeltaAction = ChatToolCallDeltaAction;
173
>
export type IToolCallReadyAction = ChatToolCallReadyAction;
174
>
export type IToolCallApprovedAction = ChatToolCallApprovedAction;
175
>
export type IToolCallDeniedAction = ChatToolCallDeniedAction;
176
>
export type IToolCallConfirmedAction = ChatToolCallConfirmedAction;
177
>
export type IToolCallCompleteAction = ChatToolCallCompleteAction;
178
>
export type IToolCallResultConfirmedAction = ChatToolCallResultConfirmedAction;
179
>
export type ITurnCompleteAction = ChatTurnCompleteAction;
180
>
export type ITurnCancelledAction = ChatTurnCancelledAction;
181
>
export type ITitleChangedAction = SessionTitleChangedAction;
182
>
export type IUsageAction = ChatUsageAction;
183
>
export type IReasoningAction = ChatReasoningAction;
184
>
export type IErrorAction = ChatErrorAction;
185
>
export type IToolCallContentChangedAction = ChatToolCallContentChangedAction;
186
>
export type ICustomizationsChangedAction = import('./protocol/actions.js').SessionCustomizationsChangedAction;
187
>
export type ICustomizationToggledAction = import('./protocol/actions.js').SessionCustomizationToggledAction;
188
>
189
>
export type IPendingMessageSetAction = ChatPendingMessageSetAction;
190
>
export type IPendingMessageRemovedAction = ChatPendingMessageRemovedAction;
191
>
export type IQueuedMessagesReorderedAction = ChatQueuedMessagesReorderedAction;
192
>
export type IIsReadChangedAction = SessionIsReadChangedAction;
193
>
export type IIsArchivedChangedAction = SessionIsArchivedChangedAction;
194
>
195
>
// Notifications
196
>
export type INotification = ProtocolNotification;
197
>
198
>
// ---- Type guards ------------------------------------------------------------
199
>
200
>
export function isRootAction(action: StateAction): action is RootAction {
201
return action.type.startsWith('root/');
202
}
204
>
export function isSessionAction(action: StateAction): action is SessionAction {
205
return action.type.startsWith('session/');
206
}
208
>
export function isChatAction(action: StateAction): action is ChatAction {
209
return action.type.startsWith('chat/');
210
}
212
>
export function isTerminalAction(action: StateAction): action is TerminalAction {
213
return action.type.startsWith('terminal/');
214
}
216
>
export function isChangesetAction(action: StateAction): action is ChangesetAction {
217
return action.type.startsWith('changeset/');
218
}
220
>
export function isAnnotationsAction(action: StateAction): action is AnnotationsAction {
221
return action.type.startsWith('annotations/');
222
}