80
81
async invoke(params: InvokeChangesetOperationParams, token: CancellationToken): Promise<InvokeChangesetOperationResult> {
83
>
if (token.isCancellationRequested) {
84
abortController.abort();
85
}
87
>
try {
88
>
return await this._invoke(params, token, abortController.signal);
89
>
} finally {
90
>
cancellationListener.dispose();
91
>
}
92
>
}
93
94
private async _invoke(params: InvokeChangesetOperationParams, token: CancellationToken, signal: AbortSignal): Promise<InvokeChangesetOperationResult> {
96
>
if (!parsed) {
97
throw new ProtocolError(JsonRpcErrorCodes.InvalidParams, `Not a changeset URI: ${params.channel}`);
98
}
100
>
const sessionUri = parsed.sessionUri;
101
>
102
>
const sessionState = this._getSessionState(sessionUri);
103
>
if (!sessionState) {
104
throw new ProtocolError(AHP_SESSION_NOT_FOUND, `Session not found: ${sessionUri}`);
105
}
106
107
const workingDirectoryStr = sessionState.workingDirectories?.[0];
109
throw new ProtocolError(JsonRpcErrorCodes.InternalError, `Session has no working directory: ${sessionUri}`);
110
}
111
112
const gitHubState = readSessionGitHubState(sessionState._meta);
114
throw new ProtocolError(
115
JsonRpcErrorCodes.InternalError,