feat(config): add experimental.adk.agentSessionNoninteractiveEnabled setting (#24439)

This commit is contained in:
Adam Weidman
2026-04-01 16:41:38 -04:00
committed by GitHub
parent d00b43733c
commit b5f568fefe
7 changed files with 107 additions and 0 deletions
+1
View File
@@ -1009,6 +1009,7 @@ export async function loadCliConfig(
format: (argv.outputFormat ?? settings.output?.format) as OutputFormat,
},
gemmaModelRouter: settings.experimental?.gemmaModelRouter,
adk: settings.experimental?.adk,
fakeResponses: argv.fakeResponses,
recordResponses: argv.recordResponses,
retryFetchErrors: settings.general?.retryFetchErrors,
@@ -505,6 +505,31 @@ describe('SettingsSchema', () => {
'The model to use for the classifier. Only tested on `gemma3-1b-gpu-custom`.',
);
});
it('should have adk setting in schema', () => {
const adk = getSettingsSchema().experimental.properties.adk;
expect(adk).toBeDefined();
expect(adk.type).toBe('object');
expect(adk.category).toBe('Experimental');
expect(adk.default).toEqual({});
expect(adk.requiresRestart).toBe(true);
expect(adk.showInDialog).toBe(false);
expect(adk.description).toBe(
'Settings for the Agent Development Kit (ADK).',
);
const agentSessionNoninteractiveEnabled =
adk.properties.agentSessionNoninteractiveEnabled;
expect(agentSessionNoninteractiveEnabled).toBeDefined();
expect(agentSessionNoninteractiveEnabled.type).toBe('boolean');
expect(agentSessionNoninteractiveEnabled.category).toBe('Experimental');
expect(agentSessionNoninteractiveEnabled.default).toBe(false);
expect(agentSessionNoninteractiveEnabled.requiresRestart).toBe(true);
expect(agentSessionNoninteractiveEnabled.showInDialog).toBe(false);
expect(agentSessionNoninteractiveEnabled.description).toBe(
'Enable non-interactive agent sessions.',
);
});
});
it('has JSON schema definitions for every referenced ref', () => {
+20
View File
@@ -1933,6 +1933,26 @@ const SETTINGS_SCHEMA = {
description: 'Setting to enable experimental features',
showInDialog: false,
properties: {
adk: {
type: 'object',
label: 'ADK',
category: 'Experimental',
requiresRestart: true,
default: {},
description: 'Settings for the Agent Development Kit (ADK).',
showInDialog: false,
properties: {
agentSessionNoninteractiveEnabled: {
type: 'boolean',
label: 'Agent Session Non-interactive Enabled',
category: 'Experimental',
requiresRestart: true,
default: false,
description: 'Enable non-interactive agent sessions.',
showInDialog: false,
},
},
},
enableAgents: {
type: 'boolean',
label: 'Enable Agents',
+26
View File
@@ -3445,3 +3445,29 @@ describe('ConfigSchema validation', () => {
}
});
});
describe('ADKSettings', () => {
const baseParams: ConfigParameters = {
sessionId: 'test',
targetDir: '.',
debugMode: false,
model: 'test-model',
cwd: '.',
};
it('should default agentSessionNoninteractiveEnabled to false', () => {
const config = new Config(baseParams);
expect(config.getAgentSessionNoninteractiveEnabled()).toBe(false);
});
it('should return provided agentSessionNoninteractiveEnabled', () => {
const params: ConfigParameters = {
...baseParams,
adk: {
agentSessionNoninteractiveEnabled: true,
},
};
const config = new Config(params);
expect(config.getAgentSessionNoninteractiveEnabled()).toBe(true);
});
});
+13
View File
@@ -240,6 +240,10 @@ export interface GemmaModelRouterSettings {
};
}
export interface ADKSettings {
agentSessionNoninteractiveEnabled?: boolean;
}
export interface ExtensionSetting {
name: string;
description: string;
@@ -677,6 +681,7 @@ export interface ConfigParameters {
policyUpdateConfirmationRequest?: PolicyUpdateConfirmationRequest;
output?: OutputSettings;
gemmaModelRouter?: GemmaModelRouterSettings;
adk?: ADKSettings;
disableModelRouterForAuth?: AuthType[];
continueOnFailedApiCall?: boolean;
retryFetchErrors?: boolean;
@@ -899,6 +904,7 @@ export class Config implements McpContext, AgentLoopContext {
private readonly outputSettings: OutputSettings;
private readonly gemmaModelRouter: GemmaModelRouterSettings;
private readonly agentSessionNoninteractiveEnabled: boolean;
private readonly continueOnFailedApiCall: boolean;
private readonly retryFetchErrors: boolean;
@@ -1316,6 +1322,9 @@ export class Config implements McpContext, AgentLoopContext {
params.gemmaModelRouter?.classifier?.model ?? 'gemma3-1b-gpu-custom',
},
};
this.agentSessionNoninteractiveEnabled =
params.adk?.agentSessionNoninteractiveEnabled ?? false;
this.retryFetchErrors = params.retryFetchErrors ?? true;
this.maxAttempts = Math.min(
params.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
@@ -3367,6 +3376,10 @@ export class Config implements McpContext, AgentLoopContext {
return this.gemmaModelRouter;
}
getAgentSessionNoninteractiveEnabled(): boolean {
return this.agentSessionNoninteractiveEnabled;
}
/**
* Get override settings for a specific agent.
* Reads from agents.overrides.<agentName>.