1383
*/
1384
private async _resolveParentSession(session: URI, parentSessionId: string): Promise<{ workingDirectory: URI; project: IAgentSessionProjectInfo | undefined; model: ModelSelection | undefined; agent: AgentSelection | undefined; permissionMode: ClaudePermissionMode }> {
1385
>
const parent = this._findAnySession(parentSessionId);
claudeAgent.ts
1386
>
let workingDirectory = parent?.workingDirectory;
1387
>
let project = parent?.project;
1388
>
if (!workingDirectory) {
1389
const sdkInfo = await this._sdkService.getSessionInfo(parentSessionId);
1390
workingDirectory = sdkInfo?.cwd ? URI.file(sdkInfo.cwd) : undefined;
1391
}
1393
throw new Error(`[Claude] createChat: cannot resolve working directory for parent session ${session.toString()}`);
1394
}
1396
>
try {
1397
>
project = await projectFromCopilotContext({ cwd: workingDirectory.fsPath }, this._gitService);
1398
>
} catch (err) {
1399
this._logService.warn(`[Claude] createChat: project resolution failed for ${session.toString()}; continuing without project`, err);
1400
}
1402
>
let overlay: IClaudeSessionOverlay = {};
1403
>
try {
1404
>
overlay = await this._metadataStore.read(session);
1405
>
} catch (err) {
1406
this._logService.warn(`[Claude] createChat: parent overlay read failed for ${session.toString()}; continuing with defaults`, err);
1407
}
1408
>
const permissionMode = readClaudePermissionMode(this._configurationService, session) ?? overlay.permissionMode ?? 'default';
claudeAgent.ts
1409
>
return { workingDirectory, project, model: overlay.model, agent: overlay.agent, permissionMode };
1410
>
}
1411
1412
/**