@google/gemini-cli 0.36.0 → 0.37.0-preview.1
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.
- package/bundle/{chunk-UNM3DGTG.js → chunk-33B2YA3V.js} +711 -240
- package/bundle/{chunk-2OFO4ODK.js → chunk-43UUP7VO.js} +6717 -4203
- package/bundle/{chunk-MYI75E6G.js → chunk-5OOT636U.js} +262 -92
- package/bundle/{chunk-GHJNEZXJ.js → chunk-BLL44IGV.js} +777 -294
- package/bundle/{chunk-S2IQOR7T.js → chunk-JS5WSGB2.js} +243 -88
- package/bundle/{chunk-QVTX2M5J.js → chunk-PPWUMHZT.js} +6355 -4117
- package/bundle/chunk-TSSVZ7RZ.js +98376 -0
- package/bundle/chunk-U4FACSVX.js +30 -0
- package/bundle/{chunk-VB55KQW3.js → chunk-VSXV53B7.js} +11735 -14377
- package/bundle/{chunk-EAXTBDLN.js → chunk-WZB27TDF.js} +711 -240
- package/bundle/chunk-ZB4UQCX5.js +356418 -0
- package/bundle/{core-6V2OYDRU.js → core-RMRIZ3E5.js} +60 -4
- package/bundle/{devtoolsService-ZKU2HLK2.js → devtoolsService-2ULAA43E.js} +20 -3
- package/bundle/{devtoolsService-UL6JE436.js → devtoolsService-AWVCG2N2.js} +22 -4
- package/bundle/devtoolsService-IWSTJYRB.js +871 -0
- package/bundle/{devtoolsService-QTW7GHQP.js → devtoolsService-SZYXXACN.js} +20 -3
- package/bundle/{core-BMLL5RF4.js → dist-4FKFY6XB.js} +60 -4
- package/bundle/{dist-PYC2JXAJ.js → dist-PRDBNGX2.js} +60 -4
- package/bundle/dist-TCCEQJDV.js +1942 -0
- package/bundle/docs/CONTRIBUTING.md +10 -7
- package/bundle/docs/assets/theme-tokyonight-dark.png +0 -0
- package/bundle/docs/changelogs/index.md +24 -0
- package/bundle/docs/changelogs/latest.md +366 -459
- package/bundle/docs/changelogs/preview.md +362 -356
- package/bundle/docs/cli/acp-mode.md +126 -0
- package/bundle/docs/cli/cli-reference.md +1 -1
- package/bundle/docs/cli/notifications.md +5 -5
- package/bundle/docs/cli/plan-mode.md +22 -11
- package/bundle/docs/cli/sandbox.md +1 -1
- package/bundle/docs/cli/settings.md +14 -13
- package/bundle/docs/cli/themes.md +5 -0
- package/bundle/docs/core/index.md +2 -2
- package/bundle/docs/core/subagents.md +134 -23
- package/bundle/docs/get-started/gemini-3.md +1 -1
- package/bundle/docs/get-started/index.md +127 -1
- package/bundle/docs/ide-integration/index.md +99 -24
- package/bundle/docs/index.md +0 -2
- package/bundle/docs/redirects.json +1 -0
- package/bundle/docs/reference/commands.md +1 -3
- package/bundle/docs/reference/configuration.md +182 -91
- package/bundle/docs/reference/keyboard-shortcuts.md +14 -6
- package/bundle/docs/reference/policy-engine.md +36 -31
- package/bundle/docs/reference/tools.md +56 -23
- package/bundle/docs/resources/quota-and-pricing.md +23 -9
- package/bundle/docs/sidebar.json +11 -4
- package/bundle/docs/tools/planning.md +6 -4
- package/bundle/events-CLX3JQHP.js +12 -0
- package/bundle/gemini.js +342 -52
- package/bundle/{interactiveCli-VLQHRXHU.js → interactiveCli-24VGI5NV.js} +5066 -4010
- package/bundle/{interactiveCli-A6HZ2TDO.js → interactiveCli-D2MTTARB.js} +5066 -4010
- package/bundle/{interactiveCli-DWMSDCKV.js → interactiveCli-DX76MWWT.js} +5296 -4223
- package/bundle/interactiveCli-VNDJAKWG.js +50355 -0
- package/bundle/{memoryDiscovery-BQGYT4OD.js → memoryDiscovery-A265O6ML.js} +3 -1
- package/bundle/{memoryDiscovery-FCEPFZ3M.js → memoryDiscovery-H6J7KIH2.js} +3 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js +26 -19
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.d.ts +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js.map +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js +35 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js.map +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/package.json +1 -1
- package/bundle/{oauth2-provider-5ENESIRQ.js → oauth2-provider-FZUTS3SV.js} +2 -2
- package/bundle/{oauth2-provider-CAKFQRQV.js → oauth2-provider-K25DXIWC.js} +2 -2
- package/bundle/{oauth2-provider-RVED6DAZ.js → oauth2-provider-N73M7SQI.js} +39 -73
- package/bundle/oauth2-provider-RMDEEXSP.js +237 -0
- package/bundle/policies/discovered.toml +7 -0
- package/bundle/policies/non-interactive.toml +7 -0
- package/bundle/policies/plan.toml +25 -0
- package/bundle/policies/read-only.toml +6 -0
- package/bundle/policies/sandbox-default.toml +3 -2
- package/bundle/policies/write.toml +21 -0
- package/bundle/policies/yolo.toml +1 -1
- package/package.json +1 -1
- package/bundle/docs/get-started/examples.md +0 -141
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_client-assets.js","sourceRoot":"","sources":["../../src/_client-assets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG,ynBAAynB,CAAC;AACppB,MAAM,CAAC,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"_client-assets.js","sourceRoot":"","sources":["../../src/_client-assets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG,ynBAAynB,CAAC;AACppB,MAAM,CAAC,MAAM,SAAS,GAAG,k28NAAk28N,CAAC"}
|
|
@@ -138,7 +138,41 @@ export class DevTools extends EventEmitter {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
// API routes
|
|
141
|
-
if (req.url === '/
|
|
141
|
+
if (req.url === '/api/trigger-debugger' && req.method === 'POST') {
|
|
142
|
+
let body = '';
|
|
143
|
+
req.on('data', (chunk) => {
|
|
144
|
+
body += chunk;
|
|
145
|
+
});
|
|
146
|
+
req.on('end', () => {
|
|
147
|
+
try {
|
|
148
|
+
const parsed = JSON.parse(body);
|
|
149
|
+
if (typeof parsed !== 'object' ||
|
|
150
|
+
parsed === null ||
|
|
151
|
+
!('sessionId' in parsed) ||
|
|
152
|
+
typeof parsed.sessionId !== 'string') {
|
|
153
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
154
|
+
res.end(JSON.stringify({ error: 'Invalid request' }));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const sessionId = parsed.sessionId;
|
|
158
|
+
const session = this.sessions.get(sessionId);
|
|
159
|
+
if (session) {
|
|
160
|
+
session.ws.send(JSON.stringify({ type: 'trigger-debugger' }));
|
|
161
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
162
|
+
res.end(JSON.stringify({ success: true }));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
166
|
+
res.end(JSON.stringify({ error: 'Session not found' }));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (_err) {
|
|
170
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
171
|
+
res.end(JSON.stringify({ error: 'Invalid request' }));
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else if (req.url === '/events') {
|
|
142
176
|
res.writeHead(200, {
|
|
143
177
|
'Content-Type': 'text/event-stream',
|
|
144
178
|
'Cache-Control': 'no-cache',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
openBrowserSecurely,
|
|
12
12
|
refreshAccessToken,
|
|
13
13
|
startCallbackServer
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-43UUP7VO.js";
|
|
15
15
|
import {
|
|
16
16
|
FatalCancellationError,
|
|
17
17
|
Storage,
|
|
18
18
|
coreEvents,
|
|
19
19
|
debugLogger,
|
|
20
20
|
getErrorMessage
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-5OOT636U.js";
|
|
22
22
|
import "./chunk-664ZODQF.js";
|
|
23
23
|
import "./chunk-RJTRUG2J.js";
|
|
24
24
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
openBrowserSecurely,
|
|
12
12
|
refreshAccessToken,
|
|
13
13
|
startCallbackServer
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ZB4UQCX5.js";
|
|
15
15
|
import {
|
|
16
16
|
FatalCancellationError,
|
|
17
17
|
Storage,
|
|
18
18
|
coreEvents,
|
|
19
19
|
debugLogger,
|
|
20
20
|
getErrorMessage
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-JS5WSGB2.js";
|
|
22
22
|
import "./chunk-664ZODQF.js";
|
|
23
23
|
import "./chunk-RJTRUG2J.js";
|
|
24
24
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -11,42 +11,42 @@ import {
|
|
|
11
11
|
openBrowserSecurely,
|
|
12
12
|
refreshAccessToken,
|
|
13
13
|
startCallbackServer
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-PPWUMHZT.js";
|
|
15
15
|
import {
|
|
16
16
|
FatalCancellationError,
|
|
17
17
|
Storage,
|
|
18
18
|
coreEvents,
|
|
19
19
|
debugLogger,
|
|
20
20
|
getErrorMessage
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-JS5WSGB2.js";
|
|
22
22
|
import "./chunk-664ZODQF.js";
|
|
23
23
|
import "./chunk-RJTRUG2J.js";
|
|
24
24
|
import "./chunk-IUUIT4SU.js";
|
|
25
25
|
import "./chunk-34MYV7JD.js";
|
|
26
26
|
|
|
27
|
-
// packages/core/src/agents/auth-provider/oauth2-provider.
|
|
27
|
+
// packages/core/dist/src/agents/auth-provider/oauth2-provider.js
|
|
28
28
|
var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
29
|
+
config;
|
|
30
|
+
agentName;
|
|
31
|
+
agentCardUrl;
|
|
32
|
+
type = "oauth2";
|
|
33
|
+
tokenStorage;
|
|
34
|
+
cachedToken = null;
|
|
35
|
+
/** Resolved OAuth URLs — may come from config or agent card. */
|
|
36
|
+
authorizationUrl;
|
|
37
|
+
tokenUrl;
|
|
38
|
+
scopes;
|
|
29
39
|
constructor(config, agentName, agentCard, agentCardUrl) {
|
|
30
40
|
super();
|
|
31
41
|
this.config = config;
|
|
32
42
|
this.agentName = agentName;
|
|
33
43
|
this.agentCardUrl = agentCardUrl;
|
|
34
|
-
this.tokenStorage = new MCPOAuthTokenStorage(
|
|
35
|
-
Storage.getA2AOAuthTokensPath(),
|
|
36
|
-
"gemini-cli-a2a"
|
|
37
|
-
);
|
|
44
|
+
this.tokenStorage = new MCPOAuthTokenStorage(Storage.getA2AOAuthTokensPath(), "gemini-cli-a2a");
|
|
38
45
|
this.authorizationUrl = config.authorization_url;
|
|
39
46
|
this.tokenUrl = config.token_url;
|
|
40
47
|
this.scopes = config.scopes;
|
|
41
48
|
this.mergeAgentCardDefaults(agentCard);
|
|
42
49
|
}
|
|
43
|
-
type = "oauth2";
|
|
44
|
-
tokenStorage;
|
|
45
|
-
cachedToken = null;
|
|
46
|
-
/** Resolved OAuth URLs — may come from config or agent card. */
|
|
47
|
-
authorizationUrl;
|
|
48
|
-
tokenUrl;
|
|
49
|
-
scopes;
|
|
50
50
|
/**
|
|
51
51
|
* Initialize the provider by loading any persisted token from storage.
|
|
52
52
|
* Also discovers OAuth URLs from the agent card if not yet resolved.
|
|
@@ -58,9 +58,7 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
58
58
|
const credentials = await this.tokenStorage.getCredentials(this.agentName);
|
|
59
59
|
if (credentials && !this.tokenStorage.isTokenExpired(credentials.token)) {
|
|
60
60
|
this.cachedToken = credentials.token;
|
|
61
|
-
debugLogger.debug(
|
|
62
|
-
`[OAuth2AuthProvider] Loaded valid cached token for "${this.agentName}"`
|
|
63
|
-
);
|
|
61
|
+
debugLogger.debug(`[OAuth2AuthProvider] Loaded valid cached token for "${this.agentName}"`);
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
/**
|
|
@@ -73,25 +71,16 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
73
71
|
}
|
|
74
72
|
if (this.cachedToken?.refreshToken && this.tokenUrl && this.config.client_id) {
|
|
75
73
|
try {
|
|
76
|
-
const refreshed = await refreshAccessToken(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
this.cachedToken.refreshToken,
|
|
83
|
-
this.tokenUrl
|
|
84
|
-
);
|
|
85
|
-
this.cachedToken = this.toOAuthToken(
|
|
86
|
-
refreshed,
|
|
87
|
-
this.cachedToken.refreshToken
|
|
88
|
-
);
|
|
74
|
+
const refreshed = await refreshAccessToken({
|
|
75
|
+
clientId: this.config.client_id,
|
|
76
|
+
clientSecret: this.config.client_secret,
|
|
77
|
+
scopes: this.scopes
|
|
78
|
+
}, this.cachedToken.refreshToken, this.tokenUrl);
|
|
79
|
+
this.cachedToken = this.toOAuthToken(refreshed, this.cachedToken.refreshToken);
|
|
89
80
|
await this.persistToken();
|
|
90
81
|
return { Authorization: `Bearer ${this.cachedToken.accessToken}` };
|
|
91
82
|
} catch (error) {
|
|
92
|
-
debugLogger.debug(
|
|
93
|
-
`[OAuth2AuthProvider] Refresh failed, falling back to interactive flow: ${getErrorMessage(error)}`
|
|
94
|
-
);
|
|
83
|
+
debugLogger.debug(`[OAuth2AuthProvider] Refresh failed, falling back to interactive flow: ${getErrorMessage(error)}`);
|
|
95
84
|
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
96
85
|
}
|
|
97
86
|
}
|
|
@@ -110,9 +99,7 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
110
99
|
return void 0;
|
|
111
100
|
}
|
|
112
101
|
this.authRetryCount++;
|
|
113
|
-
debugLogger.debug(
|
|
114
|
-
"[OAuth2AuthProvider] Auth failure, clearing token and re-authenticating"
|
|
115
|
-
);
|
|
102
|
+
debugLogger.debug("[OAuth2AuthProvider] Auth failure, clearing token and re-authenticating");
|
|
116
103
|
this.cachedToken = null;
|
|
117
104
|
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
118
105
|
return this.headers();
|
|
@@ -125,7 +112,8 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
125
112
|
* `securitySchemes` when not already provided via user config.
|
|
126
113
|
*/
|
|
127
114
|
mergeAgentCardDefaults(agentCard) {
|
|
128
|
-
if (!agentCard?.securitySchemes)
|
|
115
|
+
if (!agentCard?.securitySchemes)
|
|
116
|
+
return;
|
|
129
117
|
for (const scheme of Object.values(agentCard.securitySchemes)) {
|
|
130
118
|
if (scheme.type === "oauth2" && scheme.flows.authorizationCode) {
|
|
131
119
|
const flow = scheme.flows.authorizationCode;
|
|
@@ -141,18 +129,15 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
141
129
|
* (which normalizes proto-format cards) and extract OAuth2 URLs.
|
|
142
130
|
*/
|
|
143
131
|
async fetchAgentCardDefaults() {
|
|
144
|
-
if (!this.agentCardUrl)
|
|
132
|
+
if (!this.agentCardUrl)
|
|
133
|
+
return;
|
|
145
134
|
try {
|
|
146
|
-
debugLogger.debug(
|
|
147
|
-
`[OAuth2AuthProvider] Fetching agent card from ${this.agentCardUrl}`
|
|
148
|
-
);
|
|
135
|
+
debugLogger.debug(`[OAuth2AuthProvider] Fetching agent card from ${this.agentCardUrl}`);
|
|
149
136
|
const resolver = new DefaultAgentCardResolver();
|
|
150
137
|
const card = await resolver.resolve(this.agentCardUrl, "");
|
|
151
138
|
this.mergeAgentCardDefaults(card);
|
|
152
139
|
} catch (error) {
|
|
153
|
-
debugLogger.warn(
|
|
154
|
-
`[OAuth2AuthProvider] Could not fetch agent card for OAuth URL discovery: ${getErrorMessage(error)}`
|
|
155
|
-
);
|
|
140
|
+
debugLogger.warn(`[OAuth2AuthProvider] Could not fetch agent card for OAuth URL discovery: ${getErrorMessage(error)}`);
|
|
156
141
|
}
|
|
157
142
|
}
|
|
158
143
|
/**
|
|
@@ -160,14 +145,10 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
160
145
|
*/
|
|
161
146
|
async authenticateInteractively() {
|
|
162
147
|
if (!this.config.client_id) {
|
|
163
|
-
throw new Error(
|
|
164
|
-
`OAuth2 authentication for agent "${this.agentName}" requires a client_id. Add client_id to the auth config in your agent definition.`
|
|
165
|
-
);
|
|
148
|
+
throw new Error(`OAuth2 authentication for agent "${this.agentName}" requires a client_id. Add client_id to the auth config in your agent definition.`);
|
|
166
149
|
}
|
|
167
150
|
if (!this.authorizationUrl || !this.tokenUrl) {
|
|
168
|
-
throw new Error(
|
|
169
|
-
`OAuth2 authentication for agent "${this.agentName}" requires authorization_url and token_url. Provide them in the auth config or ensure the agent card exposes an oauth2 security scheme.`
|
|
170
|
-
);
|
|
151
|
+
throw new Error(`OAuth2 authentication for agent "${this.agentName}" requires authorization_url and token_url. Provide them in the auth config or ensure the agent card exposes an oauth2 security scheme.`);
|
|
171
152
|
}
|
|
172
153
|
const flowConfig = {
|
|
173
154
|
clientId: this.config.client_id,
|
|
@@ -186,36 +167,25 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
186
167
|
redirectPort,
|
|
187
168
|
/* resource= */
|
|
188
169
|
void 0
|
|
189
|
-
// No MCP resource parameter for A2A.
|
|
190
|
-
);
|
|
191
|
-
const consent = await getConsentForOauth(
|
|
192
|
-
`Authentication required for A2A agent: '${this.agentName}'.`
|
|
193
170
|
);
|
|
171
|
+
const consent = await getConsentForOauth(`Authentication required for A2A agent: '${this.agentName}'.`);
|
|
194
172
|
if (!consent) {
|
|
195
173
|
throw new FatalCancellationError("Authentication cancelled by user.");
|
|
196
174
|
}
|
|
197
|
-
coreEvents.emitFeedback(
|
|
198
|
-
"info",
|
|
199
|
-
`\u2192 Opening your browser for OAuth sign-in...
|
|
175
|
+
coreEvents.emitFeedback("info", `\u2192 Opening your browser for OAuth sign-in...
|
|
200
176
|
|
|
201
177
|
If the browser does not open, copy and paste this URL into your browser:
|
|
202
178
|
${authUrl}
|
|
203
179
|
|
|
204
180
|
\u{1F4A1} TIP: Triple-click to select the entire URL, then copy and paste it into your browser.
|
|
205
|
-
\u26A0\uFE0F Make sure to copy the COMPLETE URL - it may wrap across multiple lines.`
|
|
206
|
-
);
|
|
181
|
+
\u26A0\uFE0F Make sure to copy the COMPLETE URL - it may wrap across multiple lines.`);
|
|
207
182
|
try {
|
|
208
183
|
await openBrowserSecurely(authUrl);
|
|
209
184
|
} catch (error) {
|
|
210
|
-
debugLogger.warn(
|
|
211
|
-
"Failed to open browser automatically:",
|
|
212
|
-
getErrorMessage(error)
|
|
213
|
-
);
|
|
185
|
+
debugLogger.warn("Failed to open browser automatically:", getErrorMessage(error));
|
|
214
186
|
}
|
|
215
187
|
const { code } = await callbackServer.response;
|
|
216
|
-
debugLogger.debug(
|
|
217
|
-
"\u2713 Authorization code received, exchanging for tokens..."
|
|
218
|
-
);
|
|
188
|
+
debugLogger.debug("\u2713 Authorization code received, exchanging for tokens...");
|
|
219
189
|
const tokenResponse = await exchangeCodeForToken(
|
|
220
190
|
flowConfig,
|
|
221
191
|
code,
|
|
@@ -252,13 +222,9 @@ ${authUrl}
|
|
|
252
222
|
* Persist the current cached token to disk.
|
|
253
223
|
*/
|
|
254
224
|
async persistToken() {
|
|
255
|
-
if (!this.cachedToken)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
this.cachedToken,
|
|
259
|
-
this.config.client_id,
|
|
260
|
-
this.tokenUrl
|
|
261
|
-
);
|
|
225
|
+
if (!this.cachedToken)
|
|
226
|
+
return;
|
|
227
|
+
await this.tokenStorage.saveToken(this.agentName, this.cachedToken, this.config.client_id, this.tokenUrl);
|
|
262
228
|
}
|
|
263
229
|
};
|
|
264
230
|
export {
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
const require = (await import('node:module')).createRequire(import.meta.url); const __chunk_filename = (await import('node:url')).fileURLToPath(import.meta.url); const __chunk_dirname = (await import('node:path')).dirname(__chunk_filename);
|
|
2
|
+
import {
|
|
3
|
+
BaseA2AAuthProvider,
|
|
4
|
+
DefaultAgentCardResolver,
|
|
5
|
+
MCPOAuthTokenStorage,
|
|
6
|
+
buildAuthorizationUrl,
|
|
7
|
+
exchangeCodeForToken,
|
|
8
|
+
generatePKCEParams,
|
|
9
|
+
getConsentForOauth,
|
|
10
|
+
getPortFromUrl,
|
|
11
|
+
openBrowserSecurely,
|
|
12
|
+
refreshAccessToken,
|
|
13
|
+
startCallbackServer
|
|
14
|
+
} from "./chunk-VSXV53B7.js";
|
|
15
|
+
import {
|
|
16
|
+
FatalCancellationError,
|
|
17
|
+
Storage,
|
|
18
|
+
coreEvents,
|
|
19
|
+
debugLogger,
|
|
20
|
+
getErrorMessage
|
|
21
|
+
} from "./chunk-JS5WSGB2.js";
|
|
22
|
+
import "./chunk-664ZODQF.js";
|
|
23
|
+
import "./chunk-RJTRUG2J.js";
|
|
24
|
+
import "./chunk-IUUIT4SU.js";
|
|
25
|
+
import "./chunk-34MYV7JD.js";
|
|
26
|
+
|
|
27
|
+
// packages/core/dist/src/agents/auth-provider/oauth2-provider.js
|
|
28
|
+
var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
29
|
+
config;
|
|
30
|
+
agentName;
|
|
31
|
+
agentCardUrl;
|
|
32
|
+
type = "oauth2";
|
|
33
|
+
tokenStorage;
|
|
34
|
+
cachedToken = null;
|
|
35
|
+
/** Resolved OAuth URLs — may come from config or agent card. */
|
|
36
|
+
authorizationUrl;
|
|
37
|
+
tokenUrl;
|
|
38
|
+
scopes;
|
|
39
|
+
constructor(config, agentName, agentCard, agentCardUrl) {
|
|
40
|
+
super();
|
|
41
|
+
this.config = config;
|
|
42
|
+
this.agentName = agentName;
|
|
43
|
+
this.agentCardUrl = agentCardUrl;
|
|
44
|
+
this.tokenStorage = new MCPOAuthTokenStorage(Storage.getA2AOAuthTokensPath(), "gemini-cli-a2a");
|
|
45
|
+
this.authorizationUrl = config.authorization_url;
|
|
46
|
+
this.tokenUrl = config.token_url;
|
|
47
|
+
this.scopes = config.scopes;
|
|
48
|
+
this.mergeAgentCardDefaults(agentCard);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Initialize the provider by loading any persisted token from storage.
|
|
52
|
+
* Also discovers OAuth URLs from the agent card if not yet resolved.
|
|
53
|
+
*/
|
|
54
|
+
async initialize() {
|
|
55
|
+
if ((!this.authorizationUrl || !this.tokenUrl) && this.agentCardUrl) {
|
|
56
|
+
await this.fetchAgentCardDefaults();
|
|
57
|
+
}
|
|
58
|
+
const credentials = await this.tokenStorage.getCredentials(this.agentName);
|
|
59
|
+
if (credentials && !this.tokenStorage.isTokenExpired(credentials.token)) {
|
|
60
|
+
this.cachedToken = credentials.token;
|
|
61
|
+
debugLogger.debug(`[OAuth2AuthProvider] Loaded valid cached token for "${this.agentName}"`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Return an Authorization header with a valid Bearer token.
|
|
66
|
+
* Refreshes or triggers interactive auth as needed.
|
|
67
|
+
*/
|
|
68
|
+
async headers() {
|
|
69
|
+
if (this.cachedToken && !this.tokenStorage.isTokenExpired(this.cachedToken)) {
|
|
70
|
+
return { Authorization: `Bearer ${this.cachedToken.accessToken}` };
|
|
71
|
+
}
|
|
72
|
+
if (this.cachedToken?.refreshToken && this.tokenUrl && this.config.client_id) {
|
|
73
|
+
try {
|
|
74
|
+
const refreshed = await refreshAccessToken({
|
|
75
|
+
clientId: this.config.client_id,
|
|
76
|
+
clientSecret: this.config.client_secret,
|
|
77
|
+
scopes: this.scopes
|
|
78
|
+
}, this.cachedToken.refreshToken, this.tokenUrl);
|
|
79
|
+
this.cachedToken = this.toOAuthToken(refreshed, this.cachedToken.refreshToken);
|
|
80
|
+
await this.persistToken();
|
|
81
|
+
return { Authorization: `Bearer ${this.cachedToken.accessToken}` };
|
|
82
|
+
} catch (error) {
|
|
83
|
+
debugLogger.debug(`[OAuth2AuthProvider] Refresh failed, falling back to interactive flow: ${getErrorMessage(error)}`);
|
|
84
|
+
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
this.cachedToken = await this.authenticateInteractively();
|
|
88
|
+
return { Authorization: `Bearer ${this.cachedToken.accessToken}` };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* On 401/403, clear the cached token and re-authenticate (up to MAX_AUTH_RETRIES).
|
|
92
|
+
*/
|
|
93
|
+
async shouldRetryWithHeaders(_req, res) {
|
|
94
|
+
if (res.status !== 401 && res.status !== 403) {
|
|
95
|
+
this.authRetryCount = 0;
|
|
96
|
+
return void 0;
|
|
97
|
+
}
|
|
98
|
+
if (this.authRetryCount >= BaseA2AAuthProvider.MAX_AUTH_RETRIES) {
|
|
99
|
+
return void 0;
|
|
100
|
+
}
|
|
101
|
+
this.authRetryCount++;
|
|
102
|
+
debugLogger.debug("[OAuth2AuthProvider] Auth failure, clearing token and re-authenticating");
|
|
103
|
+
this.cachedToken = null;
|
|
104
|
+
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
105
|
+
return this.headers();
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Private helpers
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Merge authorization_url, token_url, and scopes from the agent card's
|
|
112
|
+
* `securitySchemes` when not already provided via user config.
|
|
113
|
+
*/
|
|
114
|
+
mergeAgentCardDefaults(agentCard) {
|
|
115
|
+
if (!agentCard?.securitySchemes)
|
|
116
|
+
return;
|
|
117
|
+
for (const scheme of Object.values(agentCard.securitySchemes)) {
|
|
118
|
+
if (scheme.type === "oauth2" && scheme.flows.authorizationCode) {
|
|
119
|
+
const flow = scheme.flows.authorizationCode;
|
|
120
|
+
this.authorizationUrl ??= flow.authorizationUrl;
|
|
121
|
+
this.tokenUrl ??= flow.tokenUrl;
|
|
122
|
+
this.scopes ??= Object.keys(flow.scopes);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Fetch the agent card from `agentCardUrl` using `DefaultAgentCardResolver`
|
|
129
|
+
* (which normalizes proto-format cards) and extract OAuth2 URLs.
|
|
130
|
+
*/
|
|
131
|
+
async fetchAgentCardDefaults() {
|
|
132
|
+
if (!this.agentCardUrl)
|
|
133
|
+
return;
|
|
134
|
+
try {
|
|
135
|
+
debugLogger.debug(`[OAuth2AuthProvider] Fetching agent card from ${this.agentCardUrl}`);
|
|
136
|
+
const resolver = new DefaultAgentCardResolver();
|
|
137
|
+
const card = await resolver.resolve(this.agentCardUrl, "");
|
|
138
|
+
this.mergeAgentCardDefaults(card);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
debugLogger.warn(`[OAuth2AuthProvider] Could not fetch agent card for OAuth URL discovery: ${getErrorMessage(error)}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Run a full OAuth 2.0 Authorization Code + PKCE flow through the browser.
|
|
145
|
+
*/
|
|
146
|
+
async authenticateInteractively() {
|
|
147
|
+
if (!this.config.client_id) {
|
|
148
|
+
throw new Error(`OAuth2 authentication for agent "${this.agentName}" requires a client_id. Add client_id to the auth config in your agent definition.`);
|
|
149
|
+
}
|
|
150
|
+
if (!this.authorizationUrl || !this.tokenUrl) {
|
|
151
|
+
throw new Error(`OAuth2 authentication for agent "${this.agentName}" requires authorization_url and token_url. Provide them in the auth config or ensure the agent card exposes an oauth2 security scheme.`);
|
|
152
|
+
}
|
|
153
|
+
const flowConfig = {
|
|
154
|
+
clientId: this.config.client_id,
|
|
155
|
+
clientSecret: this.config.client_secret,
|
|
156
|
+
authorizationUrl: this.authorizationUrl,
|
|
157
|
+
tokenUrl: this.tokenUrl,
|
|
158
|
+
scopes: this.scopes
|
|
159
|
+
};
|
|
160
|
+
const pkceParams = generatePKCEParams();
|
|
161
|
+
const preferredPort = getPortFromUrl(flowConfig.redirectUri);
|
|
162
|
+
const callbackServer = startCallbackServer(pkceParams.state, preferredPort);
|
|
163
|
+
const redirectPort = await callbackServer.port;
|
|
164
|
+
const authUrl = buildAuthorizationUrl(
|
|
165
|
+
flowConfig,
|
|
166
|
+
pkceParams,
|
|
167
|
+
redirectPort,
|
|
168
|
+
/* resource= */
|
|
169
|
+
void 0
|
|
170
|
+
);
|
|
171
|
+
const consent = await getConsentForOauth(`Authentication required for A2A agent: '${this.agentName}'.`);
|
|
172
|
+
if (!consent) {
|
|
173
|
+
throw new FatalCancellationError("Authentication cancelled by user.");
|
|
174
|
+
}
|
|
175
|
+
coreEvents.emitFeedback("info", `\u2192 Opening your browser for OAuth sign-in...
|
|
176
|
+
|
|
177
|
+
If the browser does not open, copy and paste this URL into your browser:
|
|
178
|
+
${authUrl}
|
|
179
|
+
|
|
180
|
+
\u{1F4A1} TIP: Triple-click to select the entire URL, then copy and paste it into your browser.
|
|
181
|
+
\u26A0\uFE0F Make sure to copy the COMPLETE URL - it may wrap across multiple lines.`);
|
|
182
|
+
try {
|
|
183
|
+
await openBrowserSecurely(authUrl);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
debugLogger.warn("Failed to open browser automatically:", getErrorMessage(error));
|
|
186
|
+
}
|
|
187
|
+
const { code } = await callbackServer.response;
|
|
188
|
+
debugLogger.debug("\u2713 Authorization code received, exchanging for tokens...");
|
|
189
|
+
const tokenResponse = await exchangeCodeForToken(
|
|
190
|
+
flowConfig,
|
|
191
|
+
code,
|
|
192
|
+
pkceParams.codeVerifier,
|
|
193
|
+
redirectPort,
|
|
194
|
+
/* resource= */
|
|
195
|
+
void 0
|
|
196
|
+
);
|
|
197
|
+
if (!tokenResponse.access_token) {
|
|
198
|
+
throw new Error("No access token received from token endpoint");
|
|
199
|
+
}
|
|
200
|
+
const token = this.toOAuthToken(tokenResponse);
|
|
201
|
+
this.cachedToken = token;
|
|
202
|
+
await this.persistToken();
|
|
203
|
+
debugLogger.debug("\u2713 OAuth2 authentication successful! Token saved.");
|
|
204
|
+
return token;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Convert an `OAuthTokenResponse` into the internal `OAuthToken` format.
|
|
208
|
+
*/
|
|
209
|
+
toOAuthToken(response, fallbackRefreshToken) {
|
|
210
|
+
const token = {
|
|
211
|
+
accessToken: response.access_token,
|
|
212
|
+
tokenType: response.token_type || "Bearer",
|
|
213
|
+
refreshToken: response.refresh_token || fallbackRefreshToken,
|
|
214
|
+
scope: response.scope
|
|
215
|
+
};
|
|
216
|
+
if (response.expires_in) {
|
|
217
|
+
token.expiresAt = Date.now() + response.expires_in * 1e3;
|
|
218
|
+
}
|
|
219
|
+
return token;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Persist the current cached token to disk.
|
|
223
|
+
*/
|
|
224
|
+
async persistToken() {
|
|
225
|
+
if (!this.cachedToken)
|
|
226
|
+
return;
|
|
227
|
+
await this.tokenStorage.saveToken(this.agentName, this.cachedToken, this.config.client_id, this.tokenUrl);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
export {
|
|
231
|
+
OAuth2AuthProvider
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* @license
|
|
235
|
+
* Copyright 2026 Google LLC
|
|
236
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
237
|
+
*/
|
|
@@ -86,6 +86,16 @@ toolAnnotations = { readOnlyHint = true }
|
|
|
86
86
|
decision = "ask_user"
|
|
87
87
|
priority = 70
|
|
88
88
|
modes = ["plan"]
|
|
89
|
+
interactive = true
|
|
90
|
+
|
|
91
|
+
[[rule]]
|
|
92
|
+
toolName = "*"
|
|
93
|
+
mcpName = "*"
|
|
94
|
+
toolAnnotations = { readOnlyHint = true }
|
|
95
|
+
decision = "deny"
|
|
96
|
+
priority = 70
|
|
97
|
+
modes = ["plan"]
|
|
98
|
+
interactive = false
|
|
89
99
|
|
|
90
100
|
[[rule]]
|
|
91
101
|
toolName = [
|
|
@@ -103,11 +113,26 @@ decision = "allow"
|
|
|
103
113
|
priority = 70
|
|
104
114
|
modes = ["plan"]
|
|
105
115
|
|
|
116
|
+
# Topic grouping tool is innocuous and used for UI organization.
|
|
117
|
+
[[rule]]
|
|
118
|
+
toolName = "update_topic"
|
|
119
|
+
decision = "allow"
|
|
120
|
+
priority = 70
|
|
121
|
+
modes = ["plan"]
|
|
122
|
+
|
|
106
123
|
[[rule]]
|
|
107
124
|
toolName = ["ask_user", "save_memory"]
|
|
108
125
|
decision = "ask_user"
|
|
109
126
|
priority = 70
|
|
110
127
|
modes = ["plan"]
|
|
128
|
+
interactive = true
|
|
129
|
+
|
|
130
|
+
[[rule]]
|
|
131
|
+
toolName = ["ask_user", "save_memory"]
|
|
132
|
+
decision = "deny"
|
|
133
|
+
priority = 70
|
|
134
|
+
modes = ["plan"]
|
|
135
|
+
interactive = false
|
|
111
136
|
|
|
112
137
|
# Allow write_file and replace for .md files in the plans directory (cross-platform)
|
|
113
138
|
# We split this into two rules to avoid ReDoS checker issues with nested optional segments.
|
|
@@ -55,4 +55,10 @@ priority = 50
|
|
|
55
55
|
[[rule]]
|
|
56
56
|
toolName = ["codebase_investigator", "cli_help", "get_internal_docs"]
|
|
57
57
|
decision = "allow"
|
|
58
|
+
priority = 50
|
|
59
|
+
|
|
60
|
+
# Topic grouping tool is innocuous and used for UI organization.
|
|
61
|
+
[[rule]]
|
|
62
|
+
toolName = "update_topic"
|
|
63
|
+
decision = "allow"
|
|
58
64
|
priority = 50
|