@google/gemini-cli 0.45.0-preview.1 → 0.46.0-preview.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.
- package/bundle/{chunk-OWSYSTWM.js → chunk-2GMVQS2Q.js} +1 -1
- package/bundle/{chunk-5BX5PJIE.js → chunk-4AGOZ7LL.js} +7 -7
- package/bundle/{chunk-6WWGBNKT.js → chunk-4K3E3G6Z.js} +1 -1
- package/bundle/{chunk-BLUAEAZN.js → chunk-5LUCCXOB.js} +1 -1
- package/bundle/{chunk-BO72FGK2.js → chunk-773AJHDP.js} +7 -7
- package/bundle/{chunk-3NDAYKF4.js → chunk-BOJOJVNV.js} +1 -1
- package/bundle/{chunk-JXVK53RJ.js → chunk-F2LLVPPS.js} +2 -2
- package/bundle/{chunk-5YTIYFJO.js → chunk-FIM2LOYZ.js} +133 -44
- package/bundle/{chunk-CJHCK2YW.js → chunk-GTRQQGSJ.js} +1 -1
- package/bundle/{chunk-R52453KY.js → chunk-HHFFICNK.js} +154 -44
- package/bundle/{chunk-Y6SLZFPD.js → chunk-HMR43ZX2.js} +2 -2
- package/bundle/{chunk-4KX3ETW3.js → chunk-HZNEV3DS.js} +1 -1
- package/bundle/{chunk-IGJG7DNZ.js → chunk-J444UQD3.js} +1 -1
- package/bundle/{chunk-2ZH72RHY.js → chunk-LBE2WKE7.js} +3 -3
- package/bundle/{chunk-JWWA32XO.js → chunk-MFYAVF7Y.js} +54 -67
- package/bundle/{chunk-S6AQSJNU.js → chunk-QFEJQS5X.js} +1 -1
- package/bundle/{chunk-WTRP3GGZ.js → chunk-RXG3JOOZ.js} +1 -1
- package/bundle/{chunk-CJTRYZPP.js → chunk-S2ICEQVC.js} +3 -3
- package/bundle/{chunk-NB2NOE4L.js → chunk-SHFHGDWR.js} +2 -2
- package/bundle/{chunk-E3KBY4EQ.js → chunk-TDYUKPZH.js} +1 -1
- package/bundle/{chunk-DDJWQSDN.js → chunk-XRDSBRG4.js} +14166 -7548
- package/bundle/{chunk-FEY3T6LA.js → chunk-YMNECODB.js} +8 -9
- package/bundle/{chunk-HA5VES5S.js → chunk-ZQGZKIDD.js} +3 -3
- package/bundle/{chunk-K43EAKOP.js → chunk-ZXN4VW7M.js} +5 -8
- package/bundle/{cleanup-2FHZMQ3Z.js → cleanup-2WXD6UQP.js} +2 -2
- package/bundle/{cleanup-F7XRM3DT.js → cleanup-L3CLNVX6.js} +2 -2
- package/bundle/{cleanup-OZH3SJVM.js → cleanup-SUDL37MT.js} +2 -2
- package/bundle/{core-B47ZXN3Y.js → core-MOYKPEYV.js} +5 -1
- package/bundle/{dist-C6L3MGQS.js → core-VVRQ2GQD.js} +5 -1
- package/bundle/{devtoolsService-XYSZCMQM.js → devtoolsService-E62WA3CY.js} +2 -2
- package/bundle/{devtoolsService-OYQJHPEW.js → devtoolsService-GLW7S6PS.js} +3 -4
- package/bundle/{devtoolsService-L7PYKOHR.js → devtoolsService-ZYCBBAV3.js} +2 -2
- package/bundle/{dist-MOEHPHUN.js → dist-GPCRVPKS.js} +5 -1
- package/bundle/docs/changelogs/index.md +14 -0
- package/bundle/docs/changelogs/latest.md +202 -199
- package/bundle/docs/changelogs/preview.md +44 -200
- package/bundle/docs/issue-and-pr-automation.md +29 -1
- package/bundle/docs/reference/configuration.md +69 -0
- package/bundle/{gemini-LT5MWLZQ.js → gemini-2JTOIMGM.js} +14 -14
- package/bundle/{gemini-2XSNIT2N.js → gemini-KV5CHM4H.js} +14 -14
- package/bundle/{gemini-CHS2YNJG.js → gemini-R5NCXCEL.js} +196 -212
- package/bundle/gemini.js +7 -7
- package/bundle/{interactiveCli-UUI7OUZK.js → interactiveCli-7SIMXKNU.js} +20 -10
- package/bundle/{interactiveCli-6EFCVZP7.js → interactiveCli-HVAQTBJK.js} +307 -316
- package/bundle/{interactiveCli-2YFAMDR5.js → interactiveCli-RMWTSIEN.js} +20 -10
- package/bundle/{liteRtServerManager-2VKZTPMY.js → liteRtServerManager-BP7XKGNU.js} +4 -4
- package/bundle/{liteRtServerManager-4PZ3X7SS.js → liteRtServerManager-FY23PYSD.js} +4 -4
- package/bundle/{liteRtServerManager-GH6VHWTU.js → liteRtServerManager-LDS45QKP.js} +4 -4
- package/bundle/{oauth2-provider-4UIWNIX3.js → oauth2-provider-4SSSEI6P.js} +1 -1
- package/bundle/{oauth2-provider-N2ZY2DXQ.js → oauth2-provider-KL44D6HV.js} +72 -38
- package/bundle/{oauth2-provider-BDX6V2YX.js → oauth2-provider-VVNBQH45.js} +1 -1
- package/bundle/{start-3LEQZELI.js → start-DLEOBFRC.js} +6 -6
- package/bundle/{start-FH2E2VQ2.js → start-FRM2XDGC.js} +6 -6
- package/bundle/{start-FPEO7KCZ.js → start-OEPJINIW.js} +6 -6
- package/package.json +1 -1
- package/bundle/chunk-565MWDPP.js +0 -394439
- package/bundle/chunk-HVWNKZSB.js +0 -154
- package/bundle/chunk-HZCAEM2F.js +0 -398
- package/bundle/chunk-NVJOR76X.js +0 -1571
- package/bundle/chunk-NYWYNF2Z.js +0 -81685
- package/bundle/chunk-OQLEYMM2.js +0 -512
- package/bundle/chunk-SKDT4PWC.js +0 -118
- package/bundle/chunk-TCAVPMJX.js +0 -17320
- package/bundle/cleanup-ZO5CVKGH.js +0 -32
- package/bundle/devtoolsService-SGV7MSUA.js +0 -856
- package/bundle/dist-WLKMTHZQ.js +0 -2134
- package/bundle/gemini-CQDPCFEE.js +0 -16406
- package/bundle/interactiveCli-HA3BASZN.js +0 -34726
- package/bundle/liteRtServerManager-OMSM6SJU.js +0 -65
- package/bundle/oauth2-provider-TRRJCE2P.js +0 -235
- package/bundle/start-J7G6YXDJ.js +0 -18
|
@@ -155,13 +155,13 @@ import {
|
|
|
155
155
|
widestLineFromStyledChars,
|
|
156
156
|
wordBreakStyledChars,
|
|
157
157
|
wrapStyledChars
|
|
158
|
-
} from "./chunk-
|
|
158
|
+
} from "./chunk-4AGOZ7LL.js";
|
|
159
159
|
import {
|
|
160
160
|
appEvents
|
|
161
161
|
} from "./chunk-5PS3AYFU.js";
|
|
162
162
|
import {
|
|
163
163
|
require_source
|
|
164
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-5LUCCXOB.js";
|
|
165
165
|
import {
|
|
166
166
|
ACTIVE_SHELL_MAX_LINES,
|
|
167
167
|
COMPACT_TOOL_SUBVIEW_MAX_LINES,
|
|
@@ -211,24 +211,24 @@ import {
|
|
|
211
211
|
stringWidth,
|
|
212
212
|
stripUnsafeCharacters,
|
|
213
213
|
toCodePoints
|
|
214
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-J444UQD3.js";
|
|
215
215
|
import {
|
|
216
216
|
handleAutoUpdate,
|
|
217
217
|
isDevelopment,
|
|
218
218
|
relaunchApp,
|
|
219
219
|
setUpdateHandler
|
|
220
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-HMR43ZX2.js";
|
|
221
221
|
import {
|
|
222
222
|
isTodoList,
|
|
223
223
|
mapCoreStatusToDisplayStatus,
|
|
224
224
|
require_react
|
|
225
|
-
} from "./chunk-
|
|
225
|
+
} from "./chunk-GTRQQGSJ.js";
|
|
226
226
|
import {
|
|
227
227
|
registerCleanup,
|
|
228
228
|
removeCleanup,
|
|
229
229
|
runExitCleanup,
|
|
230
230
|
setupTtyCheck
|
|
231
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-RXG3JOOZ.js";
|
|
232
232
|
import {
|
|
233
233
|
ACTIVATE_SKILL_TOOL_NAME,
|
|
234
234
|
AGENT_TOOL_NAME,
|
|
@@ -429,7 +429,7 @@ import {
|
|
|
429
429
|
validatePlanContent,
|
|
430
430
|
validatePlanPath,
|
|
431
431
|
writeToStdout
|
|
432
|
-
} from "./chunk-
|
|
432
|
+
} from "./chunk-FIM2LOYZ.js";
|
|
433
433
|
import "./chunk-6HI7VNOG.js";
|
|
434
434
|
import "./chunk-TUDYL3X4.js";
|
|
435
435
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -15046,9 +15046,18 @@ function EditorSettingsDialog({
|
|
|
15046
15046
|
let editorIndex = currentPreference ? editorItems.findIndex(
|
|
15047
15047
|
(item) => item.type === currentPreference
|
|
15048
15048
|
) : 0;
|
|
15049
|
-
|
|
15049
|
+
const isUnsupportedEditor = editorIndex === -1;
|
|
15050
|
+
if (isUnsupportedEditor) {
|
|
15050
15051
|
editorIndex = 0;
|
|
15051
15052
|
}
|
|
15053
|
+
(0, import_react50.useEffect)(() => {
|
|
15054
|
+
if (isUnsupportedEditor && currentPreference) {
|
|
15055
|
+
coreEvents.emitFeedback(
|
|
15056
|
+
"error",
|
|
15057
|
+
`Editor is not supported: ${currentPreference}`
|
|
15058
|
+
);
|
|
15059
|
+
}
|
|
15060
|
+
}, [isUnsupportedEditor, currentPreference]);
|
|
15052
15061
|
const scopeItems = [
|
|
15053
15062
|
{
|
|
15054
15063
|
label: "User Settings",
|
|
@@ -22619,7 +22628,8 @@ var WITTY_LOADING_PHRASES = [
|
|
|
22619
22628
|
"Have you tried turning it off and on again? (The loading screen, not me.)",
|
|
22620
22629
|
"Constructing additional pylons",
|
|
22621
22630
|
"New line? That\u2019s Ctrl+J.",
|
|
22622
|
-
"Releasing the HypnoDrones"
|
|
22631
|
+
"Releasing the HypnoDrones",
|
|
22632
|
+
"Pushing the button, Frank."
|
|
22623
22633
|
];
|
|
22624
22634
|
|
|
22625
22635
|
// packages/cli/src/ui/hooks/usePhraseCycler.ts
|
|
@@ -33721,7 +33731,7 @@ ${queuedText}` : queuedText;
|
|
|
33721
33731
|
if (keyMatchers["app.showErrorDetails" /* SHOW_ERROR_DETAILS */](key)) {
|
|
33722
33732
|
if (settings.merged.general.devtools) {
|
|
33723
33733
|
void (async () => {
|
|
33724
|
-
const { toggleDevToolsPanel } = await import("./devtoolsService-
|
|
33734
|
+
const { toggleDevToolsPanel } = await import("./devtoolsService-ZYCBBAV3.js");
|
|
33725
33735
|
await toggleDevToolsPanel(
|
|
33726
33736
|
config,
|
|
33727
33737
|
showErrorDetails,
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
DEFAULT_PORT,
|
|
4
4
|
getBinaryPath,
|
|
5
5
|
isServerRunning
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-ZXN4VW7M.js";
|
|
7
|
+
import "./chunk-YMNECODB.js";
|
|
8
8
|
import {
|
|
9
9
|
debugLogger
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XRDSBRG4.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -41,7 +41,7 @@ var LiteRtServerManager = class {
|
|
|
41
41
|
`[LiteRtServerManager] Auto-starting LiteRT server on port ${port}...`
|
|
42
42
|
);
|
|
43
43
|
try {
|
|
44
|
-
const { startServer } = await import("./start-
|
|
44
|
+
const { startServer } = await import("./start-FRM2XDGC.js");
|
|
45
45
|
const started = await startServer(binaryPath, port);
|
|
46
46
|
if (started) {
|
|
47
47
|
debugLogger.log(`[LiteRtServerManager] Server started on port ${port}`);
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
DEFAULT_PORT,
|
|
4
4
|
getBinaryPath,
|
|
5
5
|
isServerRunning
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-4K3E3G6Z.js";
|
|
7
|
+
import "./chunk-TDYUKPZH.js";
|
|
8
8
|
import {
|
|
9
9
|
debugLogger
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HHFFICNK.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -41,7 +41,7 @@ var LiteRtServerManager = class {
|
|
|
41
41
|
`[LiteRtServerManager] Auto-starting LiteRT server on port ${port}...`
|
|
42
42
|
);
|
|
43
43
|
try {
|
|
44
|
-
const { startServer } = await import("./start-
|
|
44
|
+
const { startServer } = await import("./start-OEPJINIW.js");
|
|
45
45
|
const started = await startServer(binaryPath, port);
|
|
46
46
|
if (started) {
|
|
47
47
|
debugLogger.log(`[LiteRtServerManager] Server started on port ${port}`);
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
DEFAULT_PORT,
|
|
4
4
|
getBinaryPath,
|
|
5
5
|
isServerRunning
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-J444UQD3.js";
|
|
7
|
+
import "./chunk-GTRQQGSJ.js";
|
|
8
8
|
import {
|
|
9
9
|
debugLogger
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-FIM2LOYZ.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -41,7 +41,7 @@ var LiteRtServerManager = class {
|
|
|
41
41
|
`[LiteRtServerManager] Auto-starting LiteRT server on port ${port}...`
|
|
42
42
|
);
|
|
43
43
|
try {
|
|
44
|
-
const { startServer } = await import("./start-
|
|
44
|
+
const { startServer } = await import("./start-DLEOBFRC.js");
|
|
45
45
|
const started = await startServer(binaryPath, port);
|
|
46
46
|
if (started) {
|
|
47
47
|
debugLogger.log(`[LiteRtServerManager] Server started on port ${port}`);
|
|
@@ -16,35 +16,35 @@ import {
|
|
|
16
16
|
openBrowserSecurely,
|
|
17
17
|
refreshAccessToken,
|
|
18
18
|
startCallbackServer
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-HHFFICNK.js";
|
|
20
20
|
import "./chunk-6HI7VNOG.js";
|
|
21
21
|
import "./chunk-TUDYL3X4.js";
|
|
22
22
|
import "./chunk-IUUIT4SU.js";
|
|
23
23
|
import "./chunk-34MYV7JD.js";
|
|
24
24
|
|
|
25
|
-
// packages/core/
|
|
25
|
+
// packages/core/src/agents/auth-provider/oauth2-provider.ts
|
|
26
26
|
var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
27
|
-
config;
|
|
28
|
-
agentName;
|
|
29
|
-
agentCardUrl;
|
|
30
|
-
type = "oauth2";
|
|
31
|
-
tokenStorage;
|
|
32
|
-
cachedToken = null;
|
|
33
|
-
/** Resolved OAuth URLs — may come from config or agent card. */
|
|
34
|
-
authorizationUrl;
|
|
35
|
-
tokenUrl;
|
|
36
|
-
scopes;
|
|
37
27
|
constructor(config, agentName, agentCard, agentCardUrl) {
|
|
38
28
|
super();
|
|
39
29
|
this.config = config;
|
|
40
30
|
this.agentName = agentName;
|
|
41
31
|
this.agentCardUrl = agentCardUrl;
|
|
42
|
-
this.tokenStorage = new MCPOAuthTokenStorage(
|
|
32
|
+
this.tokenStorage = new MCPOAuthTokenStorage(
|
|
33
|
+
Storage.getA2AOAuthTokensPath(),
|
|
34
|
+
"gemini-cli-a2a"
|
|
35
|
+
);
|
|
43
36
|
this.authorizationUrl = config.authorization_url;
|
|
44
37
|
this.tokenUrl = config.token_url;
|
|
45
38
|
this.scopes = config.scopes;
|
|
46
39
|
this.mergeAgentCardDefaults(agentCard);
|
|
47
40
|
}
|
|
41
|
+
type = "oauth2";
|
|
42
|
+
tokenStorage;
|
|
43
|
+
cachedToken = null;
|
|
44
|
+
/** Resolved OAuth URLs — may come from config or agent card. */
|
|
45
|
+
authorizationUrl;
|
|
46
|
+
tokenUrl;
|
|
47
|
+
scopes;
|
|
48
48
|
/**
|
|
49
49
|
* Initialize the provider by loading any persisted token from storage.
|
|
50
50
|
* Also discovers OAuth URLs from the agent card if not yet resolved.
|
|
@@ -56,7 +56,9 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
56
56
|
const credentials = await this.tokenStorage.getCredentials(this.agentName);
|
|
57
57
|
if (credentials && !this.tokenStorage.isTokenExpired(credentials.token)) {
|
|
58
58
|
this.cachedToken = credentials.token;
|
|
59
|
-
debugLogger.debug(
|
|
59
|
+
debugLogger.debug(
|
|
60
|
+
`[OAuth2AuthProvider] Loaded valid cached token for "${this.agentName}"`
|
|
61
|
+
);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
@@ -69,16 +71,25 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
69
71
|
}
|
|
70
72
|
if (this.cachedToken?.refreshToken && this.tokenUrl && this.config.client_id) {
|
|
71
73
|
try {
|
|
72
|
-
const refreshed = await refreshAccessToken(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
const refreshed = await refreshAccessToken(
|
|
75
|
+
{
|
|
76
|
+
clientId: this.config.client_id,
|
|
77
|
+
clientSecret: this.config.client_secret,
|
|
78
|
+
scopes: this.scopes
|
|
79
|
+
},
|
|
80
|
+
this.cachedToken.refreshToken,
|
|
81
|
+
this.tokenUrl
|
|
82
|
+
);
|
|
83
|
+
this.cachedToken = this.toOAuthToken(
|
|
84
|
+
refreshed,
|
|
85
|
+
this.cachedToken.refreshToken
|
|
86
|
+
);
|
|
78
87
|
await this.persistToken();
|
|
79
88
|
return { Authorization: `Bearer ${this.cachedToken.accessToken}` };
|
|
80
89
|
} catch (error) {
|
|
81
|
-
debugLogger.debug(
|
|
90
|
+
debugLogger.debug(
|
|
91
|
+
`[OAuth2AuthProvider] Refresh failed, falling back to interactive flow: ${getErrorMessage(error)}`
|
|
92
|
+
);
|
|
82
93
|
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
83
94
|
}
|
|
84
95
|
}
|
|
@@ -97,7 +108,9 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
97
108
|
return void 0;
|
|
98
109
|
}
|
|
99
110
|
this.authRetryCount++;
|
|
100
|
-
debugLogger.debug(
|
|
111
|
+
debugLogger.debug(
|
|
112
|
+
"[OAuth2AuthProvider] Auth failure, clearing token and re-authenticating"
|
|
113
|
+
);
|
|
101
114
|
this.cachedToken = null;
|
|
102
115
|
await this.tokenStorage.deleteCredentials(this.agentName);
|
|
103
116
|
return this.headers();
|
|
@@ -110,8 +123,7 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
110
123
|
* `securitySchemes` when not already provided via user config.
|
|
111
124
|
*/
|
|
112
125
|
mergeAgentCardDefaults(agentCard) {
|
|
113
|
-
if (!agentCard?.securitySchemes)
|
|
114
|
-
return;
|
|
126
|
+
if (!agentCard?.securitySchemes) return;
|
|
115
127
|
for (const scheme of Object.values(agentCard.securitySchemes)) {
|
|
116
128
|
if (scheme.type === "oauth2" && scheme.flows.authorizationCode) {
|
|
117
129
|
const flow = scheme.flows.authorizationCode;
|
|
@@ -127,15 +139,18 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
127
139
|
* (which normalizes proto-format cards) and extract OAuth2 URLs.
|
|
128
140
|
*/
|
|
129
141
|
async fetchAgentCardDefaults() {
|
|
130
|
-
if (!this.agentCardUrl)
|
|
131
|
-
return;
|
|
142
|
+
if (!this.agentCardUrl) return;
|
|
132
143
|
try {
|
|
133
|
-
debugLogger.debug(
|
|
144
|
+
debugLogger.debug(
|
|
145
|
+
`[OAuth2AuthProvider] Fetching agent card from ${this.agentCardUrl}`
|
|
146
|
+
);
|
|
134
147
|
const resolver = new DefaultAgentCardResolver();
|
|
135
148
|
const card = await resolver.resolve(this.agentCardUrl, "");
|
|
136
149
|
this.mergeAgentCardDefaults(card);
|
|
137
150
|
} catch (error) {
|
|
138
|
-
debugLogger.warn(
|
|
151
|
+
debugLogger.warn(
|
|
152
|
+
`[OAuth2AuthProvider] Could not fetch agent card for OAuth URL discovery: ${getErrorMessage(error)}`
|
|
153
|
+
);
|
|
139
154
|
}
|
|
140
155
|
}
|
|
141
156
|
/**
|
|
@@ -143,10 +158,14 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
143
158
|
*/
|
|
144
159
|
async authenticateInteractively() {
|
|
145
160
|
if (!this.config.client_id) {
|
|
146
|
-
throw new Error(
|
|
161
|
+
throw new Error(
|
|
162
|
+
`OAuth2 authentication for agent "${this.agentName}" requires a client_id. Add client_id to the auth config in your agent definition.`
|
|
163
|
+
);
|
|
147
164
|
}
|
|
148
165
|
if (!this.authorizationUrl || !this.tokenUrl) {
|
|
149
|
-
throw new Error(
|
|
166
|
+
throw new Error(
|
|
167
|
+
`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.`
|
|
168
|
+
);
|
|
150
169
|
}
|
|
151
170
|
const flowConfig = {
|
|
152
171
|
clientId: this.config.client_id,
|
|
@@ -165,25 +184,36 @@ var OAuth2AuthProvider = class extends BaseA2AAuthProvider {
|
|
|
165
184
|
redirectPort,
|
|
166
185
|
/* resource= */
|
|
167
186
|
void 0
|
|
187
|
+
// No MCP resource parameter for A2A.
|
|
188
|
+
);
|
|
189
|
+
const consent = await getConsentForOauth(
|
|
190
|
+
`Authentication required for A2A agent: '${this.agentName}'.`
|
|
168
191
|
);
|
|
169
|
-
const consent = await getConsentForOauth(`Authentication required for A2A agent: '${this.agentName}'.`);
|
|
170
192
|
if (!consent) {
|
|
171
193
|
throw new FatalCancellationError("Authentication cancelled by user.");
|
|
172
194
|
}
|
|
173
|
-
coreEvents.emitFeedback(
|
|
195
|
+
coreEvents.emitFeedback(
|
|
196
|
+
"info",
|
|
197
|
+
`\u2192 Opening your browser for OAuth sign-in...
|
|
174
198
|
|
|
175
199
|
If the browser does not open, copy and paste this URL into your browser:
|
|
176
200
|
${authUrl}
|
|
177
201
|
|
|
178
202
|
\u{1F4A1} TIP: Triple-click to select the entire URL, then copy and paste it into your browser.
|
|
179
|
-
\u26A0\uFE0F Make sure to copy the COMPLETE URL - it may wrap across multiple lines.`
|
|
203
|
+
\u26A0\uFE0F Make sure to copy the COMPLETE URL - it may wrap across multiple lines.`
|
|
204
|
+
);
|
|
180
205
|
try {
|
|
181
206
|
await openBrowserSecurely(authUrl);
|
|
182
207
|
} catch (error) {
|
|
183
|
-
debugLogger.warn(
|
|
208
|
+
debugLogger.warn(
|
|
209
|
+
"Failed to open browser automatically:",
|
|
210
|
+
getErrorMessage(error)
|
|
211
|
+
);
|
|
184
212
|
}
|
|
185
213
|
const { code } = await callbackServer.response;
|
|
186
|
-
debugLogger.debug(
|
|
214
|
+
debugLogger.debug(
|
|
215
|
+
"\u2713 Authorization code received, exchanging for tokens..."
|
|
216
|
+
);
|
|
187
217
|
const tokenResponse = await exchangeCodeForToken(
|
|
188
218
|
flowConfig,
|
|
189
219
|
code,
|
|
@@ -220,9 +250,13 @@ ${authUrl}
|
|
|
220
250
|
* Persist the current cached token to disk.
|
|
221
251
|
*/
|
|
222
252
|
async persistToken() {
|
|
223
|
-
if (!this.cachedToken)
|
|
224
|
-
|
|
225
|
-
|
|
253
|
+
if (!this.cachedToken) return;
|
|
254
|
+
await this.tokenStorage.saveToken(
|
|
255
|
+
this.agentName,
|
|
256
|
+
this.cachedToken,
|
|
257
|
+
this.config.client_id,
|
|
258
|
+
this.tokenUrl
|
|
259
|
+
);
|
|
226
260
|
}
|
|
227
261
|
};
|
|
228
262
|
export {
|
|
@@ -2,12 +2,12 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
|
|
|
2
2
|
import {
|
|
3
3
|
startCommand,
|
|
4
4
|
startServer
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-ZQGZKIDD.js";
|
|
6
|
+
import "./chunk-5LUCCXOB.js";
|
|
7
|
+
import "./chunk-J444UQD3.js";
|
|
8
|
+
import "./chunk-GTRQQGSJ.js";
|
|
9
|
+
import "./chunk-RXG3JOOZ.js";
|
|
10
|
+
import "./chunk-FIM2LOYZ.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -2,12 +2,12 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
|
|
|
2
2
|
import {
|
|
3
3
|
startCommand,
|
|
4
4
|
startServer
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-LBE2WKE7.js";
|
|
6
|
+
import "./chunk-HZNEV3DS.js";
|
|
7
|
+
import "./chunk-ZXN4VW7M.js";
|
|
8
|
+
import "./chunk-YMNECODB.js";
|
|
9
|
+
import "./chunk-QFEJQS5X.js";
|
|
10
|
+
import "./chunk-XRDSBRG4.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|
|
@@ -2,12 +2,12 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
|
|
|
2
2
|
import {
|
|
3
3
|
startCommand,
|
|
4
4
|
startServer
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-S2ICEQVC.js";
|
|
6
|
+
import "./chunk-BOJOJVNV.js";
|
|
7
|
+
import "./chunk-4K3E3G6Z.js";
|
|
8
|
+
import "./chunk-TDYUKPZH.js";
|
|
9
|
+
import "./chunk-2GMVQS2Q.js";
|
|
10
|
+
import "./chunk-HHFFICNK.js";
|
|
11
11
|
import "./chunk-6HI7VNOG.js";
|
|
12
12
|
import "./chunk-TUDYL3X4.js";
|
|
13
13
|
import "./chunk-IUUIT4SU.js";
|