address feedback and make no permanent

This commit is contained in:
A.K.M. Adib
2026-03-07 15:04:04 -05:00
parent 0b303fd613
commit dbc64704d0
5 changed files with 80 additions and 15 deletions
+39
View File
@@ -3117,3 +3117,42 @@ describe('Model Persistence Bug Fix (#19864)', () => {
expect(config.getModel()).toBe(PREVIEW_GEMINI_3_1_MODEL);
});
});
describe('isClearContextOnPlanApprovalEnabled', () => {
const baseParams: ConfigParameters = {
sessionId: 'test',
targetDir: '.',
debugMode: false,
model: 'test-model',
cwd: '.',
};
it('should return false by default when no setting or override is present', () => {
const config = new Config(baseParams);
expect(config.isClearContextOnPlanApprovalEnabled()).toBe(false);
});
it('should return true when a session override is set to true', () => {
const config = new Config(baseParams);
config.setClearContextOnPlanApprovalSessionOverride(true);
expect(config.isClearContextOnPlanApprovalEnabled()).toBe(true);
});
it('should return false when a session override is set to false', () => {
const config = new Config(baseParams);
config.setClearContextOnPlanApprovalSessionOverride(false);
expect(config.isClearContextOnPlanApprovalEnabled()).toBe(false);
});
it('should prefer session override over persistent setting', () => {
const config = new Config({
...baseParams,
planSettings: {
clearContextOnApproval: true,
},
} as unknown as ConfigParameters);
expect(config.isClearContextOnPlanApprovalEnabled()).toBe(true);
config.setClearContextOnPlanApprovalSessionOverride(false);
expect(config.isClearContextOnPlanApprovalEnabled()).toBe(false);
});
});
+1 -1
View File
@@ -2487,7 +2487,7 @@ export class Config implements McpContext {
}
isClearContextOnPlanApprovalEnabled(): boolean {
return this.getClearContextOnPlanApproval() ?? true;
return this.getClearContextOnPlanApproval() ?? false;
}
setClearContextOnPlanApprovalSessionOverride(value: boolean): void {
+21 -6
View File
@@ -220,13 +220,28 @@ export class ExitPlanModeInvocation extends BaseToolInvocation<
const history = geminiClient.getHistory();
const startIndex = this.config.getPlanModeHistoryStartIndex();
// Find the first user message at or after the start index.
// This represents the beginning of the current planning phase.
// Find the user message that initiated the plan mode.
let planningUserIndex = -1;
for (let i = startIndex; i < history.length - 1; i++) {
if (history[i].role === 'user') {
planningUserIndex = i;
break;
// If the message exactly at startIndex is a user message, then plan mode
// was initiated via a UI/CLI command before the message was added to history.
if (
startIndex < history.length &&
history[startIndex].role === 'user'
) {
planningUserIndex = startIndex;
} else {
// Otherwise, Plan mode was initiated via the `enter_plan_mode` tool.
// The initiating user message is the last user message before startIndex.
for (
let i = Math.min(startIndex, history.length - 1);
i >= 0;
i--
) {
if (history[i].role === 'user') {
planningUserIndex = i;
break;
}
}
}