mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-30 06:54:15 -07:00
address feedback and make no permanent
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2487,7 +2487,7 @@ export class Config implements McpContext {
|
||||
}
|
||||
|
||||
isClearContextOnPlanApprovalEnabled(): boolean {
|
||||
return this.getClearContextOnPlanApproval() ?? true;
|
||||
return this.getClearContextOnPlanApproval() ?? false;
|
||||
}
|
||||
|
||||
setClearContextOnPlanApprovalSessionOverride(value: boolean): void {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user