feat(skills): add experimentation skill and metadata

Adds a new experimentation skill to allow users to easily manage, view, and override remote Gemini CLI experiments locally. This also introduces `ExperimentMetadata` to `flagNames.ts` to expose descriptions and default values for each experiment flag.
This commit is contained in:
mkorwel
2026-02-19 14:58:03 -06:00
committed by Matt Korwel
parent 0179726222
commit 50f71a8df5
4 changed files with 182 additions and 0 deletions
@@ -24,3 +24,67 @@ export const ExperimentFlags = {
export type ExperimentFlagName =
(typeof ExperimentFlags)[keyof typeof ExperimentFlags];
export interface ExperimentMetadataEntry {
description: string;
type: 'boolean' | 'number' | 'string';
defaultValue: boolean | number | string;
}
export const ExperimentMetadata: Record<number, ExperimentMetadataEntry> = {
[ExperimentFlags.CONTEXT_COMPRESSION_THRESHOLD]: {
description: 'Threshold at which context compression activates.',
type: 'number',
defaultValue: 0,
},
[ExperimentFlags.USER_CACHING]: {
description: 'Enables caching of user contexts.',
type: 'boolean',
defaultValue: false,
},
[ExperimentFlags.BANNER_TEXT_NO_CAPACITY_ISSUES]: {
description: 'Banner text displayed when there are no capacity issues.',
type: 'string',
defaultValue: '',
},
[ExperimentFlags.BANNER_TEXT_CAPACITY_ISSUES]: {
description: 'Banner text displayed during capacity issues.',
type: 'string',
defaultValue: '',
},
[ExperimentFlags.ENABLE_PREVIEW]: {
description: 'Enables preview features globally.',
type: 'boolean',
defaultValue: false,
},
[ExperimentFlags.ENABLE_NUMERICAL_ROUTING]: {
description: 'Enables numerical routing strategies for the model.',
type: 'boolean',
defaultValue: false,
},
[ExperimentFlags.CLASSIFIER_THRESHOLD]: {
description: 'Threshold for the intent classifier.',
type: 'number',
defaultValue: 0.5,
},
[ExperimentFlags.ENABLE_ADMIN_CONTROLS]: {
description: 'Enables admin control features in the CLI.',
type: 'boolean',
defaultValue: false,
},
[ExperimentFlags.MASKING_PROTECTION_THRESHOLD]: {
description: 'Threshold for masking protection logic.',
type: 'number',
defaultValue: 0,
},
[ExperimentFlags.MASKING_PRUNABLE_THRESHOLD]: {
description: 'Threshold for prunable masking.',
type: 'number',
defaultValue: 0,
},
[ExperimentFlags.MASKING_PROTECT_LATEST_TURN]: {
description: 'Protects the latest turn from being masked.',
type: 'boolean',
defaultValue: true,
},
};