@google/gemini-cli-core 0.28.0-preview.7 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/src/config/config.test.js +8 -3
  2. package/dist/src/config/config.test.js.map +1 -1
  3. package/dist/src/config/models.d.ts +0 -7
  4. package/dist/src/config/models.js +0 -10
  5. package/dist/src/config/models.js.map +1 -1
  6. package/dist/src/config/models.test.js +1 -20
  7. package/dist/src/config/models.test.js.map +1 -1
  8. package/dist/src/generated/git-commit.d.ts +2 -2
  9. package/dist/src/generated/git-commit.js +2 -2
  10. package/dist/src/generated/git-commit.js.map +1 -1
  11. package/dist/src/index.d.ts +1 -0
  12. package/dist/src/index.js +1 -0
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/routing/strategies/classifierStrategy.js +3 -5
  15. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  16. package/dist/src/routing/strategies/classifierStrategy.test.js +4 -16
  17. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  18. package/dist/src/routing/strategies/numericalClassifierStrategy.js +2 -6
  19. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
  20. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +13 -25
  21. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
  22. package/dist/src/utils/authConsent.js +2 -1
  23. package/dist/src/utils/authConsent.js.map +1 -1
  24. package/dist/src/utils/authConsent.test.js +8 -20
  25. package/dist/src/utils/authConsent.test.js.map +1 -1
  26. package/dist/src/utils/headless.d.ts +26 -0
  27. package/dist/src/utils/headless.js +30 -0
  28. package/dist/src/utils/headless.js.map +1 -0
  29. package/dist/src/utils/headless.test.d.ts +6 -0
  30. package/dist/src/utils/headless.test.js +131 -0
  31. package/dist/src/utils/headless.test.js.map +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/dist/google-gemini-cli-core-0.28.0-preview.6.tgz +0 -0
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { isHeadlessMode } from './headless.js';
8
+ import process from 'node:process';
9
+ describe('isHeadlessMode', () => {
10
+ const originalStdoutIsTTY = process.stdout.isTTY;
11
+ const originalStdinIsTTY = process.stdin.isTTY;
12
+ beforeEach(() => {
13
+ vi.stubEnv('CI', '');
14
+ vi.stubEnv('GITHUB_ACTIONS', '');
15
+ // We can't easily stub process.stdout.isTTY with vi.stubEnv
16
+ // So we'll use Object.defineProperty
17
+ Object.defineProperty(process.stdout, 'isTTY', {
18
+ value: true,
19
+ configurable: true,
20
+ });
21
+ Object.defineProperty(process.stdin, 'isTTY', {
22
+ value: true,
23
+ configurable: true,
24
+ });
25
+ });
26
+ afterEach(() => {
27
+ vi.unstubAllEnvs();
28
+ Object.defineProperty(process.stdout, 'isTTY', {
29
+ value: originalStdoutIsTTY,
30
+ configurable: true,
31
+ });
32
+ Object.defineProperty(process.stdin, 'isTTY', {
33
+ value: originalStdinIsTTY,
34
+ configurable: true,
35
+ });
36
+ vi.restoreAllMocks();
37
+ });
38
+ it('should return false in a normal TTY environment', () => {
39
+ expect(isHeadlessMode()).toBe(false);
40
+ });
41
+ it('should return true if CI environment variable is "true"', () => {
42
+ vi.stubEnv('CI', 'true');
43
+ expect(isHeadlessMode()).toBe(true);
44
+ });
45
+ it('should return true if GITHUB_ACTIONS environment variable is "true"', () => {
46
+ vi.stubEnv('GITHUB_ACTIONS', 'true');
47
+ expect(isHeadlessMode()).toBe(true);
48
+ });
49
+ it('should return true if stdout is not a TTY', () => {
50
+ Object.defineProperty(process.stdout, 'isTTY', {
51
+ value: false,
52
+ configurable: true,
53
+ });
54
+ expect(isHeadlessMode()).toBe(true);
55
+ });
56
+ it('should return true if stdin is not a TTY', () => {
57
+ Object.defineProperty(process.stdin, 'isTTY', {
58
+ value: false,
59
+ configurable: true,
60
+ });
61
+ expect(isHeadlessMode()).toBe(true);
62
+ });
63
+ it('should return true if stdin is a TTY but stdout is not', () => {
64
+ Object.defineProperty(process.stdin, 'isTTY', {
65
+ value: true,
66
+ configurable: true,
67
+ });
68
+ Object.defineProperty(process.stdout, 'isTTY', {
69
+ value: false,
70
+ configurable: true,
71
+ });
72
+ expect(isHeadlessMode()).toBe(true);
73
+ });
74
+ it('should return true if stdout is a TTY but stdin is not', () => {
75
+ Object.defineProperty(process.stdin, 'isTTY', {
76
+ value: false,
77
+ configurable: true,
78
+ });
79
+ Object.defineProperty(process.stdout, 'isTTY', {
80
+ value: true,
81
+ configurable: true,
82
+ });
83
+ expect(isHeadlessMode()).toBe(true);
84
+ });
85
+ it('should return true if a prompt option is provided', () => {
86
+ expect(isHeadlessMode({ prompt: 'test prompt' })).toBe(true);
87
+ expect(isHeadlessMode({ prompt: true })).toBe(true);
88
+ });
89
+ it('should return false if query is provided but it is still a TTY', () => {
90
+ // Note: per current logic, query alone doesn't force headless if TTY
91
+ // This matches the existing behavior in packages/cli/src/config/config.ts
92
+ expect(isHeadlessMode({ query: 'test query' })).toBe(false);
93
+ });
94
+ it('should handle undefined process.stdout gracefully', () => {
95
+ const originalStdout = process.stdout;
96
+ // @ts-expect-error - testing edge case
97
+ delete process.stdout;
98
+ try {
99
+ expect(isHeadlessMode()).toBe(false);
100
+ }
101
+ finally {
102
+ Object.defineProperty(process, 'stdout', {
103
+ value: originalStdout,
104
+ configurable: true,
105
+ });
106
+ }
107
+ });
108
+ it('should handle undefined process.stdin gracefully', () => {
109
+ const originalStdin = process.stdin;
110
+ // @ts-expect-error - testing edge case
111
+ delete process.stdin;
112
+ try {
113
+ expect(isHeadlessMode()).toBe(false);
114
+ }
115
+ finally {
116
+ Object.defineProperty(process, 'stdin', {
117
+ value: originalStdin,
118
+ configurable: true,
119
+ });
120
+ }
121
+ });
122
+ it('should return true if multiple headless indicators are set', () => {
123
+ vi.stubEnv('CI', 'true');
124
+ Object.defineProperty(process.stdout, 'isTTY', {
125
+ value: false,
126
+ configurable: true,
127
+ });
128
+ expect(isHeadlessMode({ prompt: true })).toBe(true);
129
+ });
130
+ });
131
+ //# sourceMappingURL=headless.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.test.js","sourceRoot":"","sources":["../../../src/utils/headless.test.ts"],"names":[],"mappings":"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"}