1106
throw new Error(`Cannot resume session ${sessionId}: workingDirectory missing from SDK transcript`);
1107
}
1109
>
try {
1110
>
overlay = await this._metadataStore.read(sessionUri);
1111
>
} catch (err) {
1112
this._logService.warn(`[Claude:${sessionId}] overlay read failed during resume; continuing with defaults`, err);
1113
}
1114
>
const permissionMode = readClaudePermissionMode(this._configurationService, sessionUri)
claudeAgent.ts
1115
>
?? overlay.permissionMode
1116
?? 'default';
1117
let project: IAgentSessionProjectInfo | undefined;
1118
try {
1119
project = await projectFromCopilotContext({ cwd: workingDirectory.fsPath }, this._gitService);
1121
this._logService.warn(`[Claude:${sessionId}] project resolution failed during resume; continuing without project`, err);
1122
}
1124
>
const session = ClaudeAgentSession.createProvisional(
1125
>
sessionId,
1126
>
sessionUri,
1127
>
URI.parse(buildDefaultChatUri(sessionUri)),
1128
>
workingDirectory,
1129
>
project,
1130
>
overlay.model,
1131
>
overlay.agent,
1132
>
undefined,
1133
>
new PendingRequestRegistry<CallToolResult>(),
1134
>
permissionMode,
1135
>
this._metadataStore,
1136
>
this._instantiationService,
1137
>
);
1138
>
this._seedSessionEntry(sessionId, sessionUri, session);
1139
>
1140
>
const canUseTool = this._makeCanUseTool(sessionId);
1141
>
const onElicitation = this._makeOnElicitation(sessionId);
1142
>
try {
1143
>
await session.materialize({ transport, canUseTool, onElicitation, isResume: true, serverToolHost: this._serverToolHost });
1144
>
} catch (err) {
1145
this._sessions.deleteAndDispose(sessionId);
1146
throw err;
1147
}
1149
>
this._onDidMaterializeSession.fire({
1150
>
session: sessionUri,
1151
>
workingDirectory,
1152
>
project,
1153
>
});
1154
>
1155
>
return session;
1156
}
1157