Download packages/cli/src/integration-tests/modelSteering.test.tsx from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 2.15 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/integration-tests/modelSteering.test.tsx
- Command line
-
hf download hf://SaylorTwift/gemini-cli/packages/cli/src/integration-tests/modelSteering.test.tsx
-
curl -L -o modelSteering.test.tsx https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/integration-tests/modelSteering.test.tsx
2.15 kB
| /** | |
| * @license | |
| * Copyright 2026 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { describe, it, afterEach } from 'vitest'; | |
| import { AppRig } from '../test-utils/AppRig.js'; | |
| import path from 'node:path'; | |
| import { fileURLToPath } from 'node:url'; | |
| import { PolicyDecision } from '@google/gemini-cli-core'; | |
| const __dirname = path.dirname(fileURLToPath(import.meta.url)); | |
| describe('Model Steering Integration', () => { | |
| let rig: AppRig | undefined; | |
| afterEach(async () => { | |
| await rig?.unmount(); | |
| }); | |
| it('should steer the model using a hint during a tool turn', async () => { | |
| const fakeResponsesPath = path.join( | |
| __dirname, | |
| '../test-utils/fixtures/steering.responses', | |
| ); | |
| rig = new AppRig({ | |
| fakeResponsesPath, | |
| configOverrides: { modelSteering: true }, | |
| }); | |
| await rig.initialize(); | |
| await rig.render(); | |
| await rig.waitForIdle(); | |
| rig.setToolPolicy('list_directory', PolicyDecision.ASK_USER); | |
| rig.setToolPolicy('read_file', PolicyDecision.ASK_USER); | |
| rig.setMockCommands([ | |
| { | |
| command: /list_directory/, | |
| result: { | |
| output: 'file1.txt\nfile2.js\nfile3.md', | |
| exitCode: 0, | |
| }, | |
| }, | |
| { | |
| command: /read_file file1.txt/, | |
| result: { | |
| output: 'This is file1.txt content.', | |
| exitCode: 0, | |
| }, | |
| }, | |
| ]); | |
| // Start a long task | |
| await rig.type('Start long task'); | |
| await rig.pressEnter(); | |
| // Wait for the model to call 'list_directory' (Confirming state) | |
| await rig.waitForOutput('ReadFolder'); | |
| // Injected a hint while the model is in a tool turn | |
| await rig.addUserHint('focus on .txt'); | |
| // Resolve list_directory (Proceed) | |
| await rig.resolveTool('ReadFolder'); | |
| // Then it should proceed with the next action | |
| await rig.waitForOutput( | |
| /Since you want me to focus on \.txt[\s\S]*files,[\s\S]*I will read file1\.txt/, | |
| ); | |
| await rig.waitForOutput('ReadFile'); | |
| // Resolve read_file (Proceed) | |
| await rig.resolveTool('ReadFile'); | |
| // Wait for final completion | |
| await rig.waitForOutput('Task complete.'); | |
| }); | |
| }); | |