Skip to content

Commit 65ce1d7

Browse files
NTaylorMullengemini-cli-robot
authored andcommitted
fix(core): ensure --yolo does not force headless mode (#18976)
# Conflicts: # packages/core/src/utils/headless.test.ts # packages/core/src/utils/headless.ts
1 parent a212e5c commit 65ce1d7

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

packages/core/src/utils/headless.test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,49 @@ describe('isHeadlessMode', () => {
9999
expect(isHeadlessMode({ prompt: true })).toBe(true);
100100
});
101101

102+
<<<<<<< HEAD
102103
it('should return false if query is provided but it is still a TTY', () => {
103104
// Note: per current logic, query alone doesn't force headless if TTY
104105
// This matches the existing behavior in packages/cli/src/config/config.ts
105106
expect(isHeadlessMode({ query: 'test query' })).toBe(false);
107+
=======
108+
it('should return true if query is provided', () => {
109+
expect(isHeadlessMode({ query: 'test query' })).toBe(true);
110+
});
111+
112+
it('should return true if -p or --prompt is in process.argv as a fallback', () => {
113+
const originalArgv = process.argv;
114+
process.argv = ['node', 'index.js', '-p', 'hello'];
115+
try {
116+
expect(isHeadlessMode()).toBe(true);
117+
} finally {
118+
process.argv = originalArgv;
119+
}
120+
121+
process.argv = ['node', 'index.js', '--prompt', 'hello'];
122+
try {
123+
expect(isHeadlessMode()).toBe(true);
124+
} finally {
125+
process.argv = originalArgv;
126+
}
127+
});
128+
129+
it('should return false if -y or --yolo is in process.argv as a fallback', () => {
130+
const originalArgv = process.argv;
131+
process.argv = ['node', 'index.js', '-y'];
132+
try {
133+
expect(isHeadlessMode()).toBe(false);
134+
} finally {
135+
process.argv = originalArgv;
136+
}
137+
138+
process.argv = ['node', 'index.js', '--yolo'];
139+
try {
140+
expect(isHeadlessMode()).toBe(false);
141+
} finally {
142+
process.argv = originalArgv;
143+
}
144+
>>>>>>> d0c6a56c6 (fix(core): ensure --yolo does not force headless mode (#18976))
106145
});
107146

108147
it('should handle undefined process.stdout gracefully', () => {

packages/core/src/utils/headless.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,17 @@ export function isHeadlessMode(options?: HeadlessModeOptions): boolean {
4040
process.env['GITHUB_ACTIONS'] === 'true' ||
4141
!!options?.prompt ||
4242
(!!process.stdin && !process.stdin.isTTY) ||
43+
<<<<<<< HEAD
4344
(!!process.stdout && !process.stdout.isTTY)
4445
);
46+
=======
47+
(!!process.stdout && !process.stdout.isTTY);
48+
49+
if (isNotTTY || !!options?.prompt || !!options?.query) {
50+
return true;
51+
}
52+
53+
// Fallback: check process.argv for flags that imply headless mode.
54+
return process.argv.some((arg) => arg === '-p' || arg === '--prompt');
55+
>>>>>>> d0c6a56c6 (fix(core): ensure --yolo does not force headless mode (#18976))
4556
}

0 commit comments

Comments
 (0)