@google/gemini-cli-core 0.23.0-preview.3 → 0.24.0-nightly.20251227.37be16243

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 (151) hide show
  1. package/dist/docs/cli/settings.md +7 -5
  2. package/dist/docs/get-started/configuration.md +67 -0
  3. package/dist/google-gemini-cli-core-0.24.0-nightly.20251226.546baf993.tgz +0 -0
  4. package/dist/src/agents/a2a-client-manager.d.ts +73 -0
  5. package/dist/src/agents/a2a-client-manager.js +165 -0
  6. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  7. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  8. package/dist/src/agents/a2a-client-manager.test.js +211 -0
  9. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  10. package/dist/src/agents/local-executor.js +1 -0
  11. package/dist/src/agents/local-executor.js.map +1 -1
  12. package/dist/src/availability/policyHelpers.js +0 -2
  13. package/dist/src/availability/policyHelpers.js.map +1 -1
  14. package/dist/src/code_assist/server.js +7 -2
  15. package/dist/src/code_assist/server.js.map +1 -1
  16. package/dist/src/code_assist/server.test.js +3 -0
  17. package/dist/src/code_assist/server.test.js.map +1 -1
  18. package/dist/src/config/config.d.ts +25 -4
  19. package/dist/src/config/config.js +37 -6
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +18 -0
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/models.d.ts +1 -9
  24. package/dist/src/config/models.js +1 -11
  25. package/dist/src/config/models.js.map +1 -1
  26. package/dist/src/config/models.test.js +16 -16
  27. package/dist/src/config/models.test.js.map +1 -1
  28. package/dist/src/core/client.d.ts +1 -1
  29. package/dist/src/core/client.js +3 -3
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/contentGenerator.js +2 -2
  32. package/dist/src/core/contentGenerator.js.map +1 -1
  33. package/dist/src/core/coreToolScheduler.d.ts +5 -85
  34. package/dist/src/core/coreToolScheduler.js +13 -184
  35. package/dist/src/core/coreToolScheduler.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +18 -365
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/turn.d.ts +3 -21
  39. package/dist/src/core/turn.js +1 -0
  40. package/dist/src/core/turn.js.map +1 -1
  41. package/dist/src/fallback/handler.js +0 -6
  42. package/dist/src/fallback/handler.js.map +1 -1
  43. package/dist/src/generated/git-commit.d.ts +2 -2
  44. package/dist/src/generated/git-commit.js +2 -2
  45. package/dist/src/generated/git-commit.js.map +1 -1
  46. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  47. package/dist/src/hooks/hookPlanner.js +2 -9
  48. package/dist/src/hooks/hookPlanner.js.map +1 -1
  49. package/dist/src/hooks/hookPlanner.test.js +1 -2
  50. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  51. package/dist/src/hooks/hookRegistry.d.ts +5 -10
  52. package/dist/src/hooks/hookRegistry.js +39 -12
  53. package/dist/src/hooks/hookRegistry.js.map +1 -1
  54. package/dist/src/hooks/hookRegistry.test.js +93 -2
  55. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  56. package/dist/src/hooks/hookRunner.d.ts +3 -1
  57. package/dist/src/hooks/hookRunner.js +20 -3
  58. package/dist/src/hooks/hookRunner.js.map +1 -1
  59. package/dist/src/hooks/hookRunner.test.js +58 -2
  60. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  61. package/dist/src/hooks/hookSystem.js +1 -1
  62. package/dist/src/hooks/hookSystem.js.map +1 -1
  63. package/dist/src/hooks/index.d.ts +1 -1
  64. package/dist/src/hooks/index.js +1 -1
  65. package/dist/src/hooks/index.js.map +1 -1
  66. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  67. package/dist/src/hooks/trustedHooks.js +90 -0
  68. package/dist/src/hooks/trustedHooks.js.map +1 -0
  69. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  70. package/dist/src/hooks/trustedHooks.test.js +154 -0
  71. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  72. package/dist/src/hooks/types.d.ts +15 -11
  73. package/dist/src/hooks/types.js +19 -30
  74. package/dist/src/hooks/types.js.map +1 -1
  75. package/dist/src/hooks/types.test.js +1 -24
  76. package/dist/src/hooks/types.test.js.map +1 -1
  77. package/dist/src/ide/ide-client.js +3 -0
  78. package/dist/src/ide/ide-client.js.map +1 -1
  79. package/dist/src/index.d.ts +1 -0
  80. package/dist/src/index.js +1 -0
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/policy/config.js +2 -1
  83. package/dist/src/policy/config.js.map +1 -1
  84. package/dist/src/policy/persistence.test.js +6 -1
  85. package/dist/src/policy/persistence.test.js.map +1 -1
  86. package/dist/src/policy/policy-engine.d.ts +10 -1
  87. package/dist/src/policy/policy-engine.js +24 -4
  88. package/dist/src/policy/policy-engine.js.map +1 -1
  89. package/dist/src/policy/policy-engine.test.js +26 -2
  90. package/dist/src/policy/policy-engine.test.js.map +1 -1
  91. package/dist/src/policy/shell-safety.test.js +2 -1
  92. package/dist/src/policy/shell-safety.test.js.map +1 -1
  93. package/dist/src/policy/toml-loader.d.ts +3 -5
  94. package/dist/src/policy/toml-loader.js +35 -20
  95. package/dist/src/policy/toml-loader.js.map +1 -1
  96. package/dist/src/policy/toml-loader.test.js +28 -7
  97. package/dist/src/policy/toml-loader.test.js.map +1 -1
  98. package/dist/src/policy/types.d.ts +15 -0
  99. package/dist/src/routing/strategies/overrideStrategy.js +2 -2
  100. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  101. package/dist/src/scheduler/types.d.ts +95 -0
  102. package/dist/src/scheduler/types.js +7 -0
  103. package/dist/src/scheduler/types.js.map +1 -0
  104. package/dist/src/services/environmentSanitization.d.ts +15 -0
  105. package/dist/src/services/environmentSanitization.js +141 -0
  106. package/dist/src/services/environmentSanitization.js.map +1 -0
  107. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  108. package/dist/src/services/environmentSanitization.test.js +284 -0
  109. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  110. package/dist/src/services/gitService.js +10 -1
  111. package/dist/src/services/gitService.js.map +1 -1
  112. package/dist/src/services/gitService.test.js +18 -0
  113. package/dist/src/services/gitService.test.js.map +1 -1
  114. package/dist/src/services/shellExecutionService.d.ts +2 -0
  115. package/dist/src/services/shellExecutionService.js +5 -65
  116. package/dist/src/services/shellExecutionService.js.map +1 -1
  117. package/dist/src/services/shellExecutionService.test.js +26 -3
  118. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  119. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  120. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  121. package/dist/src/tools/mcp-client.d.ts +3 -2
  122. package/dist/src/tools/mcp-client.js +7 -6
  123. package/dist/src/tools/mcp-client.js.map +1 -1
  124. package/dist/src/tools/mcp-client.test.js +47 -42
  125. package/dist/src/tools/mcp-client.test.js.map +1 -1
  126. package/dist/src/tools/shell.js +6 -1
  127. package/dist/src/tools/shell.js.map +1 -1
  128. package/dist/src/tools/tools.d.ts +1 -1
  129. package/dist/src/tools/tools.js +1 -1
  130. package/dist/src/utils/checkpointUtils.d.ts +1 -1
  131. package/dist/src/utils/fileUtils.d.ts +4 -0
  132. package/dist/src/utils/fileUtils.js +53 -0
  133. package/dist/src/utils/fileUtils.js.map +1 -1
  134. package/dist/src/utils/fileUtils.test.js +112 -1
  135. package/dist/src/utils/fileUtils.test.js.map +1 -1
  136. package/dist/src/utils/generateContentResponseUtilities.d.ts +2 -1
  137. package/dist/src/utils/generateContentResponseUtilities.js +96 -0
  138. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  139. package/dist/src/utils/generateContentResponseUtilities.test.js +221 -1
  140. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  141. package/dist/src/utils/terminal.d.ts +2 -0
  142. package/dist/src/utils/terminal.js +6 -0
  143. package/dist/src/utils/terminal.js.map +1 -1
  144. package/dist/src/utils/tool-utils.d.ts +9 -0
  145. package/dist/src/utils/tool-utils.js +29 -0
  146. package/dist/src/utils/tool-utils.js.map +1 -1
  147. package/dist/src/utils/tool-utils.test.js +15 -1
  148. package/dist/src/utils/tool-utils.test.js.map +1 -1
  149. package/dist/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +2 -1
  151. package/dist/google-gemini-cli-core-0.23.0-preview.2.tgz +0 -0
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { DEFAULT_GEMINI_MODEL_AUTO, getEffectiveModel, PREVIEW_GEMINI_MODEL_AUTO, } from '../../config/models.js';
6
+ import { DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL_AUTO, resolveModel, } from '../../config/models.js';
7
7
  /**
8
8
  * Handles cases where the user explicitly specifies a model (override).
9
9
  */
@@ -17,7 +17,7 @@ export class OverrideStrategy {
17
17
  return null;
18
18
  // Return the overridden model name.
19
19
  return {
20
- model: getEffectiveModel(overrideModel, config.getPreviewFeatures()),
20
+ model: resolveModel(overrideModel, config.getPreviewFeatures()),
21
21
  metadata: {
22
22
  source: this.name,
23
23
  latencyMs: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"overrideStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/overrideStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAQhC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAU,CAAC;IAE3B,KAAK,CAAC,KAAK,CACT,QAAwB,EACxB,MAAc,EACd,cAA6B;QAE7B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAExC,8DAA8D;QAC9D,IACE,aAAa,KAAK,yBAAyB;YAC3C,aAAa,KAAK,yBAAyB;YAE3C,OAAO,IAAI,CAAC;QAEd,oCAAoC;QACpC,OAAO;YACL,KAAK,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACpE,QAAQ,EAAE;gBACR,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,sDAAsD,aAAa,EAAE;aACjF;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"overrideStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/overrideStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAQhC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAU,CAAC;IAE3B,KAAK,CAAC,KAAK,CACT,QAAwB,EACxB,MAAc,EACd,cAA6B;QAE7B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAExC,8DAA8D;QAC9D,IACE,aAAa,KAAK,yBAAyB;YAC3C,aAAa,KAAK,yBAAyB;YAE3C,OAAO,IAAI,CAAC;QAEd,oCAAoC;QACpC,OAAO;YACL,KAAK,EAAE,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC/D,QAAQ,EAAE;gBACR,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,sDAAsD,aAAa,EAAE;aACjF;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Part } from '@google/genai';
7
+ import type { AnyDeclarativeTool, AnyToolInvocation, ToolCallConfirmationDetails, ToolConfirmationOutcome, ToolResultDisplay } from '../tools/tools.js';
8
+ import type { AnsiOutput } from '../utils/terminalSerializer.js';
9
+ import type { ToolErrorType } from '../tools/tool-error.js';
10
+ export interface ToolCallRequestInfo {
11
+ callId: string;
12
+ name: string;
13
+ args: Record<string, unknown>;
14
+ isClientInitiated: boolean;
15
+ prompt_id: string;
16
+ checkpoint?: string;
17
+ traceId?: string;
18
+ }
19
+ export interface ToolCallResponseInfo {
20
+ callId: string;
21
+ responseParts: Part[];
22
+ resultDisplay: ToolResultDisplay | undefined;
23
+ error: Error | undefined;
24
+ errorType: ToolErrorType | undefined;
25
+ outputFile?: string | undefined;
26
+ contentLength?: number;
27
+ }
28
+ export type ValidatingToolCall = {
29
+ status: 'validating';
30
+ request: ToolCallRequestInfo;
31
+ tool: AnyDeclarativeTool;
32
+ invocation: AnyToolInvocation;
33
+ startTime?: number;
34
+ outcome?: ToolConfirmationOutcome;
35
+ };
36
+ export type ScheduledToolCall = {
37
+ status: 'scheduled';
38
+ request: ToolCallRequestInfo;
39
+ tool: AnyDeclarativeTool;
40
+ invocation: AnyToolInvocation;
41
+ startTime?: number;
42
+ outcome?: ToolConfirmationOutcome;
43
+ };
44
+ export type ErroredToolCall = {
45
+ status: 'error';
46
+ request: ToolCallRequestInfo;
47
+ response: ToolCallResponseInfo;
48
+ tool?: AnyDeclarativeTool;
49
+ durationMs?: number;
50
+ outcome?: ToolConfirmationOutcome;
51
+ };
52
+ export type SuccessfulToolCall = {
53
+ status: 'success';
54
+ request: ToolCallRequestInfo;
55
+ tool: AnyDeclarativeTool;
56
+ response: ToolCallResponseInfo;
57
+ invocation: AnyToolInvocation;
58
+ durationMs?: number;
59
+ outcome?: ToolConfirmationOutcome;
60
+ };
61
+ export type ExecutingToolCall = {
62
+ status: 'executing';
63
+ request: ToolCallRequestInfo;
64
+ tool: AnyDeclarativeTool;
65
+ invocation: AnyToolInvocation;
66
+ liveOutput?: string | AnsiOutput;
67
+ startTime?: number;
68
+ outcome?: ToolConfirmationOutcome;
69
+ pid?: number;
70
+ };
71
+ export type CancelledToolCall = {
72
+ status: 'cancelled';
73
+ request: ToolCallRequestInfo;
74
+ response: ToolCallResponseInfo;
75
+ tool: AnyDeclarativeTool;
76
+ invocation: AnyToolInvocation;
77
+ durationMs?: number;
78
+ outcome?: ToolConfirmationOutcome;
79
+ };
80
+ export type WaitingToolCall = {
81
+ status: 'awaiting_approval';
82
+ request: ToolCallRequestInfo;
83
+ tool: AnyDeclarativeTool;
84
+ invocation: AnyToolInvocation;
85
+ confirmationDetails: ToolCallConfirmationDetails;
86
+ startTime?: number;
87
+ outcome?: ToolConfirmationOutcome;
88
+ };
89
+ export type Status = ToolCall['status'];
90
+ export type ToolCall = ValidatingToolCall | ScheduledToolCall | ErroredToolCall | SuccessfulToolCall | ExecutingToolCall | CancelledToolCall | WaitingToolCall;
91
+ export type CompletedToolCall = SuccessfulToolCall | CancelledToolCall | ErroredToolCall;
92
+ export type ConfirmHandler = (toolCall: WaitingToolCall) => Promise<ToolConfirmationOutcome>;
93
+ export type OutputUpdateHandler = (toolCallId: string, outputChunk: string | AnsiOutput) => void;
94
+ export type AllToolCallsCompleteHandler = (completedToolCalls: CompletedToolCall[]) => Promise<void>;
95
+ export type ToolCallsUpdateHandler = (toolCalls: ToolCall[]) => void;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/scheduler/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export type EnvironmentSanitizationConfig = {
7
+ allowedEnvironmentVariables: string[];
8
+ blockedEnvironmentVariables: string[];
9
+ enableEnvironmentVariableRedaction: boolean;
10
+ };
11
+ export declare function sanitizeEnvironment(processEnv: NodeJS.ProcessEnv, config: EnvironmentSanitizationConfig): NodeJS.ProcessEnv;
12
+ export declare const ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES: ReadonlySet<string>;
13
+ export declare const NEVER_ALLOWED_ENVIRONMENT_VARIABLES: ReadonlySet<string>;
14
+ export declare const NEVER_ALLOWED_NAME_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
15
+ export declare const NEVER_ALLOWED_VALUE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export function sanitizeEnvironment(processEnv, config) {
7
+ if (!config.enableEnvironmentVariableRedaction) {
8
+ return { ...processEnv };
9
+ }
10
+ const results = {};
11
+ const allowedSet = new Set((config.allowedEnvironmentVariables || []).map((k) => k.toUpperCase()));
12
+ const blockedSet = new Set((config.blockedEnvironmentVariables || []).map((k) => k.toUpperCase()));
13
+ // Enable strict sanitization in GitHub actions.
14
+ const isStrictSanitization = !!processEnv['GITHUB_SHA'];
15
+ for (const key in processEnv) {
16
+ const value = processEnv[key];
17
+ if (!shouldRedactEnvironmentVariable(key, value, allowedSet, blockedSet, isStrictSanitization)) {
18
+ results[key] = value;
19
+ }
20
+ }
21
+ return results;
22
+ }
23
+ export const ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES = new Set([
24
+ // Cross-platform
25
+ 'PATH',
26
+ // Windows specific
27
+ 'SYSTEMROOT',
28
+ 'COMSPEC',
29
+ 'PATHEXT',
30
+ 'WINDIR',
31
+ 'TEMP',
32
+ 'TMP',
33
+ 'USERPROFILE',
34
+ 'SYSTEMDRIVE',
35
+ // Unix/Linux/macOS specific
36
+ 'HOME',
37
+ 'LANG',
38
+ 'SHELL',
39
+ 'TMPDIR',
40
+ 'USER',
41
+ 'LOGNAME',
42
+ // GitHub Action-related variables
43
+ 'ADDITIONAL_CONTEXT',
44
+ 'AVAILABLE_LABELS',
45
+ 'BRANCH_NAME',
46
+ 'DESCRIPTION',
47
+ 'EVENT_NAME',
48
+ 'GITHUB_ENV',
49
+ 'IS_PULL_REQUEST',
50
+ 'ISSUES_TO_TRIAGE',
51
+ 'ISSUE_BODY',
52
+ 'ISSUE_NUMBER',
53
+ 'ISSUE_TITLE',
54
+ 'PULL_REQUEST_NUMBER',
55
+ 'REPOSITORY',
56
+ 'TITLE',
57
+ 'TRIGGERING_ACTOR',
58
+ ]);
59
+ export const NEVER_ALLOWED_ENVIRONMENT_VARIABLES = new Set([
60
+ 'CLIENT_ID',
61
+ 'DB_URI',
62
+ 'CONNECTION_STRING',
63
+ 'AWS_DEFAULT_REGION',
64
+ 'AZURE_CLIENT_ID',
65
+ 'AZURE_TENANT_ID',
66
+ 'SLACK_WEBHOOK_URL',
67
+ 'TWILIO_ACCOUNT_SID',
68
+ 'DATABASE_URL',
69
+ 'GOOGLE_CLOUD_PROJECT',
70
+ 'GOOGLE_CLOUD_ACCOUNT',
71
+ 'FIREBASE_PROJECT_ID',
72
+ ]);
73
+ export const NEVER_ALLOWED_NAME_PATTERNS = [
74
+ /TOKEN/i,
75
+ /SECRET/i,
76
+ /PASSWORD/i,
77
+ /PASSWD/i,
78
+ /KEY/i,
79
+ /AUTH/i,
80
+ /CREDENTIAL/i,
81
+ /CREDS/i,
82
+ /PRIVATE/i,
83
+ /CERT/i,
84
+ ];
85
+ export const NEVER_ALLOWED_VALUE_PATTERNS = [
86
+ /-----BEGIN (RSA|OPENSSH|EC|PGP) PRIVATE KEY-----/i,
87
+ /-----BEGIN CERTIFICATE-----/i,
88
+ // Credentials in URL
89
+ /(https?|ftp|smtp):\/\/[^:]+:[^@]+@/i,
90
+ // GitHub tokens (classic, fine-grained, OAuth, etc.)
91
+ /(ghp|gho|ghu|ghs|ghr|github_pat)_[a-zA-Z0-9_]{36,}/i,
92
+ // Google API keys
93
+ /AIzaSy[a-zA-Z0-9_\\-]{33}/i,
94
+ // Amazon AWS Access Key ID
95
+ /AKIA[A-Z0-9]{16}/i,
96
+ // Generic OAuth/JWT tokens
97
+ /eyJ[a-zA-Z0-9_-]*\.[a-zA-Z0-9_-]*\.[a-zA-Z0-9_-]*/i,
98
+ // Stripe API keys
99
+ /(s|r)k_(live|test)_[0-9a-zA-Z]{24}/i,
100
+ // Slack tokens (bot, user, etc.)
101
+ /xox[abpr]-[a-zA-Z0-9-]+/i,
102
+ ];
103
+ function shouldRedactEnvironmentVariable(key, value, allowedSet, blockedSet, isStrictSanitization = false) {
104
+ key = key.toUpperCase();
105
+ value = value?.toUpperCase();
106
+ // User overrides take precedence.
107
+ if (allowedSet?.has(key)) {
108
+ return false;
109
+ }
110
+ if (blockedSet?.has(key)) {
111
+ return true;
112
+ }
113
+ // These are never redacted.
114
+ if (ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES.has(key) ||
115
+ key.startsWith('GEMINI_CLI_')) {
116
+ return false;
117
+ }
118
+ // These are always redacted.
119
+ if (NEVER_ALLOWED_ENVIRONMENT_VARIABLES.has(key)) {
120
+ return true;
121
+ }
122
+ // If in strict mode (e.g. GitHub Action), and not explicitly allowed, redact it.
123
+ if (isStrictSanitization) {
124
+ return true;
125
+ }
126
+ for (const pattern of NEVER_ALLOWED_NAME_PATTERNS) {
127
+ if (pattern.test(key)) {
128
+ return true;
129
+ }
130
+ }
131
+ // Redact if the value looks like a key/cert.
132
+ if (value) {
133
+ for (const pattern of NEVER_ALLOWED_VALUE_PATTERNS) {
134
+ if (pattern.test(value)) {
135
+ return true;
136
+ }
137
+ }
138
+ }
139
+ return false;
140
+ }
141
+ //# sourceMappingURL=environmentSanitization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environmentSanitization.js","sourceRoot":"","sources":["../../../src/services/environmentSanitization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,284 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, expect, it } from 'vitest';
7
+ import { ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES, NEVER_ALLOWED_ENVIRONMENT_VARIABLES, NEVER_ALLOWED_NAME_PATTERNS, NEVER_ALLOWED_VALUE_PATTERNS, sanitizeEnvironment, } from './environmentSanitization.js';
8
+ const EMPTY_OPTIONS = {
9
+ allowedEnvironmentVariables: [],
10
+ blockedEnvironmentVariables: [],
11
+ enableEnvironmentVariableRedaction: true,
12
+ };
13
+ describe('sanitizeEnvironment', () => {
14
+ it('should allow safe, common environment variables', () => {
15
+ const env = {
16
+ PATH: '/usr/bin',
17
+ HOME: '/home/user',
18
+ USER: 'user',
19
+ SystemRoot: 'C:\\Windows',
20
+ LANG: 'en_US.UTF-8',
21
+ };
22
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
23
+ expect(sanitized).toEqual(env);
24
+ });
25
+ it('should allow variables prefixed with GEMINI_CLI_', () => {
26
+ const env = {
27
+ GEMINI_CLI_FOO: 'bar',
28
+ GEMINI_CLI_BAZ: 'qux',
29
+ };
30
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
31
+ expect(sanitized).toEqual(env);
32
+ });
33
+ it('should redact variables with sensitive names from the denylist', () => {
34
+ const env = {
35
+ CLIENT_ID: 'sensitive-id',
36
+ DB_URI: 'sensitive-uri',
37
+ DATABASE_URL: 'sensitive-url',
38
+ SAFE_VAR: 'is-safe',
39
+ };
40
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
41
+ expect(sanitized).toEqual({
42
+ SAFE_VAR: 'is-safe',
43
+ });
44
+ });
45
+ it('should redact variables with names matching all sensitive patterns (case-insensitive)', () => {
46
+ const env = {
47
+ // Patterns
48
+ MY_API_TOKEN: 'token-value',
49
+ AppSecret: 'secret-value',
50
+ db_password: 'password-value',
51
+ ORA_PASSWD: 'password-value',
52
+ ANOTHER_KEY: 'key-value',
53
+ some_auth_var: 'auth-value',
54
+ USER_CREDENTIAL: 'cred-value',
55
+ AWS_CREDS: 'creds-value',
56
+ PRIVATE_STUFF: 'private-value',
57
+ SSL_CERT: 'cert-value',
58
+ // Safe variable
59
+ USEFUL_INFO: 'is-ok',
60
+ };
61
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
62
+ expect(sanitized).toEqual({
63
+ USEFUL_INFO: 'is-ok',
64
+ });
65
+ });
66
+ it('should redact variables with values matching all private key patterns', () => {
67
+ const env = {
68
+ RSA_KEY: '-----BEGIN RSA PRIVATE KEY-----...',
69
+ OPENSSH_KEY: '-----BEGIN OPENSSH PRIVATE KEY-----...',
70
+ EC_KEY: '-----BEGIN EC PRIVATE KEY-----...',
71
+ PGP_KEY: '-----BEGIN PGP PRIVATE KEY-----...',
72
+ CERTIFICATE: '-----BEGIN CERTIFICATE-----...',
73
+ SAFE_VAR: 'is-safe',
74
+ };
75
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
76
+ expect(sanitized).toEqual({
77
+ SAFE_VAR: 'is-safe',
78
+ });
79
+ });
80
+ it('should redact variables with values matching all token and credential patterns', () => {
81
+ const env = {
82
+ // GitHub
83
+ GITHUB_TOKEN_GHP: 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
84
+ GITHUB_TOKEN_GHO: 'gho_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
85
+ GITHUB_TOKEN_GHU: 'ghu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
86
+ GITHUB_TOKEN_GHS: 'ghs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
87
+ GITHUB_TOKEN_GHR: 'ghr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
88
+ GITHUB_PAT: 'github_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
89
+ // Google
90
+ GOOGLE_KEY: 'AIzaSyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
91
+ // AWS
92
+ AWS_KEY: 'AKIAxxxxxxxxxxxxxxxx',
93
+ // JWT
94
+ JWT_TOKEN: 'eyJhbGciOiJIUzI1NiJ9.e30.ZRrHA157xAA_7962-a_3rA',
95
+ // Stripe
96
+ STRIPE_SK_LIVE: 'sk_live_xxxxxxxxxxxxxxxxxxxxxxxx',
97
+ STRIPE_RK_LIVE: 'rk_live_xxxxxxxxxxxxxxxxxxxxxxxx',
98
+ STRIPE_SK_TEST: 'sk_test_xxxxxxxxxxxxxxxxxxxxxxxx',
99
+ STRIPE_RK_TEST: 'rk_test_xxxxxxxxxxxxxxxxxxxxxxxx',
100
+ // Slack
101
+ SLACK_XOXB: 'xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxx',
102
+ SLACK_XOXA: 'xoxa-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxx',
103
+ SLACK_XOXP: 'xoxp-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxx',
104
+ SLACK_XOXB_2: 'xoxr-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxx',
105
+ // URL Credentials
106
+ CREDS_IN_HTTPS_URL: 'https://user:password@example.com',
107
+ CREDS_IN_HTTP_URL: 'http://user:password@example.com',
108
+ CREDS_IN_FTP_URL: 'ftp://user:password@example.com',
109
+ CREDS_IN_SMTP_URL: 'smtp://user:password@example.com',
110
+ // Safe variable
111
+ SAFE_VAR: 'is-safe',
112
+ };
113
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
114
+ expect(sanitized).toEqual({
115
+ SAFE_VAR: 'is-safe',
116
+ });
117
+ });
118
+ it('should not redact variables that look similar to sensitive patterns', () => {
119
+ const env = {
120
+ // Not a credential in URL
121
+ SAFE_URL: 'https://example.com/foo/bar',
122
+ // Not a real JWT
123
+ NOT_A_JWT: 'this.is.not.a.jwt',
124
+ // Too short to be a token
125
+ ALMOST_A_TOKEN: 'ghp_12345',
126
+ // Contains a sensitive word, but in a safe context in the value
127
+ PUBLIC_KEY_INFO: 'This value describes a public key',
128
+ // Variable names that could be false positives
129
+ KEYNOTE_SPEAKER: 'Dr. Jane Goodall',
130
+ CERTIFIED_DIVER: 'true',
131
+ AUTHENTICATION_FLOW: 'oauth',
132
+ PRIVATE_JET_OWNER: 'false',
133
+ };
134
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
135
+ expect(sanitized).toEqual({
136
+ SAFE_URL: 'https://example.com/foo/bar',
137
+ NOT_A_JWT: 'this.is.not.a.jwt',
138
+ });
139
+ });
140
+ it('should not redact variables with undefined or empty values if name is safe', () => {
141
+ const env = {
142
+ EMPTY_VAR: '',
143
+ UNDEFINED_VAR: undefined,
144
+ ANOTHER_SAFE_VAR: 'value',
145
+ };
146
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
147
+ expect(sanitized).toEqual({
148
+ EMPTY_VAR: '',
149
+ ANOTHER_SAFE_VAR: 'value',
150
+ });
151
+ });
152
+ it('should allow variables that do not match any redaction rules', () => {
153
+ const env = {
154
+ NODE_ENV: 'development',
155
+ APP_VERSION: '1.0.0',
156
+ };
157
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
158
+ expect(sanitized).toEqual(env);
159
+ });
160
+ it('should handle an empty environment', () => {
161
+ const env = {};
162
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
163
+ expect(sanitized).toEqual({});
164
+ });
165
+ it('should handle a mixed environment with allowed and redacted variables', () => {
166
+ const env = {
167
+ // Allowed
168
+ PATH: '/usr/bin',
169
+ HOME: '/home/user',
170
+ GEMINI_CLI_VERSION: '1.2.3',
171
+ NODE_ENV: 'production',
172
+ // Redacted by name
173
+ API_KEY: 'should-be-redacted',
174
+ MY_SECRET: 'super-secret',
175
+ // Redacted by value
176
+ GH_TOKEN: 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
177
+ JWT: 'eyJhbGciOiJIUzI1NiJ9.e30.ZRrHA157xAA_7962-a_3rA',
178
+ // Allowed by name but redacted by value
179
+ RANDOM_VAR: '-----BEGIN CERTIFICATE-----...',
180
+ };
181
+ const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
182
+ expect(sanitized).toEqual({
183
+ PATH: '/usr/bin',
184
+ HOME: '/home/user',
185
+ GEMINI_CLI_VERSION: '1.2.3',
186
+ NODE_ENV: 'production',
187
+ });
188
+ });
189
+ it('should ensure all names in the sets are capitalized', () => {
190
+ for (const name of ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES) {
191
+ expect(name).toBe(name.toUpperCase());
192
+ }
193
+ for (const name of NEVER_ALLOWED_ENVIRONMENT_VARIABLES) {
194
+ expect(name).toBe(name.toUpperCase());
195
+ }
196
+ });
197
+ it('should ensure all of the regex in the patterns lists are case insensitive', () => {
198
+ for (const pattern of NEVER_ALLOWED_NAME_PATTERNS) {
199
+ expect(pattern.flags).toContain('i');
200
+ }
201
+ for (const pattern of NEVER_ALLOWED_VALUE_PATTERNS) {
202
+ expect(pattern.flags).toContain('i');
203
+ }
204
+ });
205
+ it('should allow variables specified in allowedEnvironmentVariables', () => {
206
+ const env = {
207
+ MY_TOKEN: 'secret-token',
208
+ OTHER_SECRET: 'another-secret',
209
+ };
210
+ const allowed = ['MY_TOKEN'];
211
+ const sanitized = sanitizeEnvironment(env, {
212
+ allowedEnvironmentVariables: allowed,
213
+ blockedEnvironmentVariables: [],
214
+ enableEnvironmentVariableRedaction: true,
215
+ });
216
+ expect(sanitized).toEqual({
217
+ MY_TOKEN: 'secret-token',
218
+ });
219
+ });
220
+ it('should block variables specified in blockedEnvironmentVariables', () => {
221
+ const env = {
222
+ SAFE_VAR: 'safe-value',
223
+ BLOCKED_VAR: 'blocked-value',
224
+ };
225
+ const blocked = ['BLOCKED_VAR'];
226
+ const sanitized = sanitizeEnvironment(env, {
227
+ allowedEnvironmentVariables: [],
228
+ blockedEnvironmentVariables: blocked,
229
+ enableEnvironmentVariableRedaction: true,
230
+ });
231
+ expect(sanitized).toEqual({
232
+ SAFE_VAR: 'safe-value',
233
+ });
234
+ });
235
+ it('should prioritize allowed over blocked if a variable is in both (though user configuration should avoid this)', () => {
236
+ const env = {
237
+ CONFLICT_VAR: 'value',
238
+ };
239
+ const allowed = ['CONFLICT_VAR'];
240
+ const blocked = ['CONFLICT_VAR'];
241
+ const sanitized = sanitizeEnvironment(env, {
242
+ allowedEnvironmentVariables: allowed,
243
+ blockedEnvironmentVariables: blocked,
244
+ enableEnvironmentVariableRedaction: true,
245
+ });
246
+ expect(sanitized).toEqual({
247
+ CONFLICT_VAR: 'value',
248
+ });
249
+ });
250
+ it('should be case insensitive for allowed and blocked lists', () => {
251
+ const env = {
252
+ MY_TOKEN: 'secret-token',
253
+ BLOCKED_VAR: 'blocked-value',
254
+ };
255
+ const allowed = ['my_token'];
256
+ const blocked = ['blocked_var'];
257
+ const sanitized = sanitizeEnvironment(env, {
258
+ allowedEnvironmentVariables: allowed,
259
+ blockedEnvironmentVariables: blocked,
260
+ enableEnvironmentVariableRedaction: true,
261
+ });
262
+ expect(sanitized).toEqual({
263
+ MY_TOKEN: 'secret-token',
264
+ });
265
+ });
266
+ it('should not perform any redaction if enableEnvironmentVariableRedaction is false', () => {
267
+ const env = {
268
+ MY_API_TOKEN: 'token-value',
269
+ AppSecret: 'secret-value',
270
+ db_password: 'password-value',
271
+ RSA_KEY: '-----BEGIN RSA PRIVATE KEY-----...',
272
+ GITHUB_TOKEN_GHP: 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
273
+ SAFE_VAR: 'is-safe',
274
+ };
275
+ const options = {
276
+ allowedEnvironmentVariables: [],
277
+ blockedEnvironmentVariables: [],
278
+ enableEnvironmentVariableRedaction: false,
279
+ };
280
+ const sanitized = sanitizeEnvironment(env, options);
281
+ expect(sanitized).toEqual(env);
282
+ });
283
+ });
284
+ //# sourceMappingURL=environmentSanitization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environmentSanitization.test.js","sourceRoot":"","sources":["../../../src/services/environmentSanitization.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import * as path from 'node:path';
8
8
  import { isNodeError } from '../utils/errors.js';
9
9
  import { spawnAsync } from '../utils/shell-utils.js';
10
10
  import { simpleGit, CheckRepoActions } from 'simple-git';
11
+ import { debugLogger } from '../utils/debugLogger.js';
11
12
  export class GitService {
12
13
  projectRoot;
13
14
  storage;
@@ -52,7 +53,15 @@ export class GitService {
52
53
  const gitConfigContent = '[user]\n name = Gemini CLI\n email = gemini-cli@google.com\n[commit]\n gpgsign = false\n';
53
54
  await fs.writeFile(gitConfigPath, gitConfigContent);
54
55
  const repo = simpleGit(repoDir);
55
- const isRepoDefined = await repo.checkIsRepo(CheckRepoActions.IS_REPO_ROOT);
56
+ let isRepoDefined = false;
57
+ try {
58
+ isRepoDefined = await repo.checkIsRepo(CheckRepoActions.IS_REPO_ROOT);
59
+ }
60
+ catch (error) {
61
+ // If checkIsRepo fails (e.g., on certain Git versions like macOS 2.39.5),
62
+ // log the error and assume repo is not defined, then proceed with initialization
63
+ debugLogger.debug(`checkIsRepo failed, will initialize repository: ${error instanceof Error ? error.message : String(error)}`);
64
+ }
56
65
  if (!isRepoDefined) {
57
66
  await repo.init(false, {
58
67
  '--initial-branch': 'main',
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../../src/services/gitService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../../src/services/gitService.ts"],"names":[],"mappings":"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"}