@google/gemini-cli 0.59.0-preview.0 → 0.60.0-nightly.20260904.g87a9c71d5
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/bundled/chrome-devtools-mcp.mjs +1 -1
- package/bundle/bundled/third_party/index.js +1 -1
- package/bundle/{chunk-KDHW7PJD.js → chunk-2KWYWFYH.js} +3 -3
- package/bundle/{chunk-D6XI6WNG.js → chunk-4EEPG33O.js} +1 -1
- package/bundle/{chunk-IJPZK2CD.js → chunk-4GN2ER63.js} +1 -1
- package/bundle/{chunk-NQC3UDKG.js → chunk-ETGYLAEQ.js} +1 -1
- package/bundle/{chunk-23C4TBLH.js → chunk-EY74BCUB.js} +2 -2
- package/bundle/{chunk-YLSAASP5.js → chunk-G5MKGD6A.js} +3 -3
- package/bundle/{chunk-52JU4ECF.js → chunk-GYIG2U5X.js} +275 -83
- package/bundle/{chunk-UA5K3TB5.js → chunk-IXEWV7DR.js} +324 -86
- package/bundle/{chunk-55V2C3NE.js → chunk-J4JXA5F5.js} +3 -3
- package/bundle/{chunk-DH76W27O.js → chunk-JYH2UAXZ.js} +2 -2
- package/bundle/{chunk-THPIH2AE.js → chunk-K6N5ALIZ.js} +1 -1
- package/bundle/{chunk-HSRFT2PV.js → chunk-KRBRLEZU.js} +2 -2
- package/bundle/{chunk-GOBGZY54.js → chunk-LJSQRVHR.js} +9 -8
- package/bundle/{chunk-ILPBRVSF.js → chunk-LSYJZADA.js} +1 -1
- package/bundle/{chunk-LXBSPQEH.js → chunk-LWVZ3TLL.js} +1 -1
- package/bundle/{chunk-M6UTVOUK.js → chunk-LZA2YQEZ.js} +1 -1
- package/bundle/chunk-MOGXAAGG.js +1571 -0
- package/bundle/chunk-NS2GPNSV.js +512 -0
- package/bundle/{chunk-YI5PKR5L.js → chunk-O2IBXKOU.js} +7924 -14468
- package/bundle/{chunk-7QCPYRGC.js → chunk-OPYHX5IV.js} +1 -1
- package/bundle/chunk-Q55A4HXI.js +398074 -0
- package/bundle/{chunk-UGT6DHAE.js → chunk-RHV3WXCU.js} +86 -21
- package/bundle/{chunk-UZXNPI5Z.js → chunk-RJWX5VWJ.js} +146 -68
- package/bundle/chunk-U5J4FOTE.js +398 -0
- package/bundle/{chunk-GPE57TQ5.js → chunk-UVTIYMGR.js} +8 -5
- package/bundle/chunk-UYHNS2XO.js +154 -0
- package/bundle/{chunk-VCQFRV5A.js → chunk-VI5CZJFJ.js} +1 -1
- package/bundle/chunk-VTRRZADJ.js +118 -0
- package/bundle/chunk-XFMJ4TE2.js +17332 -0
- package/bundle/{chunk-F45BTUYK.js → chunk-YSANBNNE.js} +1 -1
- package/bundle/chunk-YT4C25P2.js +102571 -0
- package/bundle/{chunk-FXZRZ2YL.js → chunk-ZUOQJLHX.js} +86 -21
- package/bundle/{cleanup-IGZ72X72.js → cleanup-DV5BMEOJ.js} +2 -2
- package/bundle/{cleanup-OHSG4ABA.js → cleanup-IFKZWM2L.js} +2 -2
- package/bundle/{cleanup-VTATI2S7.js → cleanup-K7NDCFZB.js} +2 -2
- package/bundle/cleanup-MIW3QRZK.js +32 -0
- package/bundle/{core-XJO3GR5B.js → core-4SZV5IEL.js} +9 -1
- package/bundle/{devtoolsService-OSXWGLT3.js → devtoolsService-AZ775QPY.js} +2 -2
- package/bundle/{devtoolsService-VQJ4XEED.js → devtoolsService-BZYE3B3A.js} +4 -3
- package/bundle/{devtoolsService-TJCP6X22.js → devtoolsService-DOIK3XII.js} +2 -2
- package/bundle/devtoolsService-NA732NIU.js +4359 -0
- package/bundle/{dist-KC5GXNU5.js → dist-267RSQ2G.js} +9 -1
- package/bundle/{core-Q2DBVF5E.js → dist-JUKO7MDI.js} +9 -1
- package/bundle/dist-VDX4TYXY.js +2196 -0
- package/bundle/docs/changelogs/index.md +20 -0
- package/bundle/docs/changelogs/latest.md +32 -281
- package/bundle/docs/changelogs/preview.md +18 -31
- package/bundle/docs/reference/tools.md +4 -4
- package/bundle/docs/tools/mcp-server.md +53 -0
- package/bundle/docs/tools/web-fetch.md +7 -3
- package/bundle/{gemini-FMVYHQ4P.js → gemini-4VYTZOFB.js} +56 -23
- package/bundle/{gemini-G4U2XJ5N.js → gemini-O2IKL5OT.js} +56 -23
- package/bundle/{gemini-G3Y4ZBUW.js → gemini-VJZ5KERB.js} +256 -207
- package/bundle/gemini-YNIYD6UU.js +17370 -0
- package/bundle/gemini.js +7 -7
- package/bundle/{interactiveCli-J7RHUM6Y.js → interactiveCli-GZR7TB7H.js} +8 -8
- package/bundle/{interactiveCli-ODBGO5ZB.js → interactiveCli-JBCVEYX6.js} +8 -8
- package/bundle/{interactiveCli-DFQDNRQR.js → interactiveCli-PVJP6K5G.js} +315 -296
- package/bundle/interactiveCli-ZALEAHV2.js +34983 -0
- package/bundle/{liteRtServerManager-FYXZXFSP.js → liteRtServerManager-BSKN2SW2.js} +4 -4
- package/bundle/{liteRtServerManager-H3DCLTFE.js → liteRtServerManager-KBSBWYVA.js} +4 -4
- package/bundle/{liteRtServerManager-BEQPNIUI.js → liteRtServerManager-L2BLDSGL.js} +4 -4
- package/bundle/liteRtServerManager-MWMPLFZ3.js +65 -0
- package/bundle/{oauth2-provider-2DCMBS2D.js → oauth2-provider-QK65ZFGG.js} +1 -1
- package/bundle/{oauth2-provider-3RBG2E74.js → oauth2-provider-U7ADSCRE.js} +1 -1
- package/bundle/{oauth2-provider-DX42O6UX.js → oauth2-provider-VY2YQMRH.js} +38 -72
- package/bundle/oauth2-provider-WRQZCFP6.js +235 -0
- package/bundle/{start-MJKXAIFL.js → start-IU76AAZM.js} +6 -6
- package/bundle/{start-R4LT7TW6.js → start-PDREREJZ.js} +6 -6
- package/bundle/{start-MIKPZTJ4.js → start-Y6MS5QLI.js} +6 -6
- package/bundle/start-ZYKP4UZO.js +18 -0
- package/package.json +1 -1
|
@@ -16728,7 +16728,7 @@ var require_dist2 = __commonJS({
|
|
|
16728
16728
|
};
|
|
16729
16729
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
16730
16730
|
exports2.HttpProxyAgent = void 0;
|
|
16731
|
-
var
|
|
16731
|
+
var net3 = __importStar(__require("net"));
|
|
16732
16732
|
var tls = __importStar(__require("tls"));
|
|
16733
16733
|
var debug_1 = __importDefault(require_src());
|
|
16734
16734
|
var events_1 = __require("events");
|
|
@@ -16801,7 +16801,7 @@ var require_dist2 = __commonJS({
|
|
|
16801
16801
|
socket = tls.connect(this.connectOpts);
|
|
16802
16802
|
} else {
|
|
16803
16803
|
debug2("Creating `net.Socket`: %o", this.connectOpts);
|
|
16804
|
-
socket =
|
|
16804
|
+
socket = net3.connect(this.connectOpts);
|
|
16805
16805
|
}
|
|
16806
16806
|
await (0, events_1.once)(socket, "connect");
|
|
16807
16807
|
return socket;
|
|
@@ -28153,8 +28153,8 @@ var require_utils = __commonJS({
|
|
|
28153
28153
|
var HOST_DELIMS = { "@": "%40", "/": "%2F", "?": "%3F", "#": "%23", ":": "%3A" };
|
|
28154
28154
|
var HOST_DELIM_RE = /[@/?#:]/g;
|
|
28155
28155
|
var HOST_DELIM_NO_COLON_RE = /[@/?#]/g;
|
|
28156
|
-
function reescapeHostDelimiters(host,
|
|
28157
|
-
const re =
|
|
28156
|
+
function reescapeHostDelimiters(host, isIP2) {
|
|
28157
|
+
const re = isIP2 ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE;
|
|
28158
28158
|
re.lastIndex = 0;
|
|
28159
28159
|
return host.replace(re, (ch) => HOST_DELIMS[ch]);
|
|
28160
28160
|
}
|
|
@@ -28636,7 +28636,7 @@ var require_fast_uri = __commonJS({
|
|
|
28636
28636
|
fragment: void 0
|
|
28637
28637
|
};
|
|
28638
28638
|
let malformedAuthorityOrPort = false;
|
|
28639
|
-
let
|
|
28639
|
+
let isIP2 = false;
|
|
28640
28640
|
if (options.reference === "suffix") {
|
|
28641
28641
|
if (options.scheme) {
|
|
28642
28642
|
uri = options.scheme + ":" + uri;
|
|
@@ -28666,9 +28666,9 @@ var require_fast_uri = __commonJS({
|
|
|
28666
28666
|
if (ipv4result === false) {
|
|
28667
28667
|
const ipv6result = normalizeIPv6(parsed.host);
|
|
28668
28668
|
parsed.host = ipv6result.host.toLowerCase();
|
|
28669
|
-
|
|
28669
|
+
isIP2 = ipv6result.isIPV6;
|
|
28670
28670
|
} else {
|
|
28671
|
-
|
|
28671
|
+
isIP2 = true;
|
|
28672
28672
|
}
|
|
28673
28673
|
}
|
|
28674
28674
|
if (parsed.scheme === void 0 && parsed.userinfo === void 0 && parsed.host === void 0 && parsed.port === void 0 && parsed.query === void 0 && !parsed.path) {
|
|
@@ -28685,7 +28685,7 @@ var require_fast_uri = __commonJS({
|
|
|
28685
28685
|
}
|
|
28686
28686
|
const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme);
|
|
28687
28687
|
if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
|
|
28688
|
-
if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) &&
|
|
28688
|
+
if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP2 === false && nonSimpleDomain(parsed.host)) {
|
|
28689
28689
|
try {
|
|
28690
28690
|
parsed.host = URL.domainToASCII(parsed.host.toLowerCase());
|
|
28691
28691
|
} catch (e2) {
|
|
@@ -28699,7 +28699,7 @@ var require_fast_uri = __commonJS({
|
|
|
28699
28699
|
parsed.scheme = unescape(parsed.scheme);
|
|
28700
28700
|
}
|
|
28701
28701
|
if (parsed.host !== void 0) {
|
|
28702
|
-
parsed.host = reescapeHostDelimiters(unescape(parsed.host),
|
|
28702
|
+
parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP2);
|
|
28703
28703
|
}
|
|
28704
28704
|
}
|
|
28705
28705
|
if (parsed.path) {
|
|
@@ -58752,7 +58752,7 @@ var require_transport = __commonJS({
|
|
|
58752
58752
|
var resolver_1 = require_resolver();
|
|
58753
58753
|
var subchannel_address_1 = require_subchannel_address();
|
|
58754
58754
|
var uri_parser_1 = require_uri_parser();
|
|
58755
|
-
var
|
|
58755
|
+
var net3 = __require("net");
|
|
58756
58756
|
var subchannel_call_1 = require_subchannel_call();
|
|
58757
58757
|
var call_number_1 = require_call_number();
|
|
58758
58758
|
var TRACER_NAME2 = "transport";
|
|
@@ -59219,7 +59219,7 @@ var require_transport = __commonJS({
|
|
|
59219
59219
|
const errorCallback = (error40) => {
|
|
59220
59220
|
reject(error40);
|
|
59221
59221
|
};
|
|
59222
|
-
const socket =
|
|
59222
|
+
const socket = net3.connect(address, () => {
|
|
59223
59223
|
socket.removeListener("close", closeCallback);
|
|
59224
59224
|
socket.removeListener("error", errorCallback);
|
|
59225
59225
|
resolve29(socket);
|
|
@@ -113721,13 +113721,13 @@ var require_internet = __commonJS({
|
|
|
113721
113721
|
var require_dockerSocket = __commonJS({
|
|
113722
113722
|
"packages/core/node_modules/systeminformation/lib/dockerSocket.js"(exports2, module2) {
|
|
113723
113723
|
"use strict";
|
|
113724
|
-
var
|
|
113724
|
+
var net3 = __require("net");
|
|
113725
113725
|
var isWin2 = __require("os").type() === "Windows_NT";
|
|
113726
113726
|
var socketPath = isWin2 ? "//./pipe/docker_engine" : "/var/run/docker.sock";
|
|
113727
113727
|
var DockerSocket = class {
|
|
113728
113728
|
getInfo(callback) {
|
|
113729
113729
|
try {
|
|
113730
|
-
let socket =
|
|
113730
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113731
113731
|
let alldata = "";
|
|
113732
113732
|
let data;
|
|
113733
113733
|
socket.on("connect", () => {
|
|
@@ -113757,7 +113757,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113757
113757
|
}
|
|
113758
113758
|
listImages(all2, callback) {
|
|
113759
113759
|
try {
|
|
113760
|
-
let socket =
|
|
113760
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113761
113761
|
let alldata = "";
|
|
113762
113762
|
let data;
|
|
113763
113763
|
socket.on("connect", () => {
|
|
@@ -113789,7 +113789,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113789
113789
|
id = id || "";
|
|
113790
113790
|
if (id) {
|
|
113791
113791
|
try {
|
|
113792
|
-
let socket =
|
|
113792
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113793
113793
|
let alldata = "";
|
|
113794
113794
|
let data;
|
|
113795
113795
|
socket.on("connect", () => {
|
|
@@ -113822,7 +113822,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113822
113822
|
}
|
|
113823
113823
|
listContainers(all2, callback) {
|
|
113824
113824
|
try {
|
|
113825
|
-
let socket =
|
|
113825
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113826
113826
|
let alldata = "";
|
|
113827
113827
|
let data;
|
|
113828
113828
|
socket.on("connect", () => {
|
|
@@ -113854,7 +113854,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113854
113854
|
id = id || "";
|
|
113855
113855
|
if (id) {
|
|
113856
113856
|
try {
|
|
113857
|
-
let socket =
|
|
113857
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113858
113858
|
let alldata = "";
|
|
113859
113859
|
let data;
|
|
113860
113860
|
socket.on("connect", () => {
|
|
@@ -113889,7 +113889,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113889
113889
|
id = id || "";
|
|
113890
113890
|
if (id) {
|
|
113891
113891
|
try {
|
|
113892
|
-
let socket =
|
|
113892
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113893
113893
|
let alldata = "";
|
|
113894
113894
|
let data;
|
|
113895
113895
|
socket.on("connect", () => {
|
|
@@ -113924,7 +113924,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113924
113924
|
id = id || "";
|
|
113925
113925
|
if (id) {
|
|
113926
113926
|
try {
|
|
113927
|
-
let socket =
|
|
113927
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113928
113928
|
let alldata = "";
|
|
113929
113929
|
let data;
|
|
113930
113930
|
socket.on("connect", () => {
|
|
@@ -113957,7 +113957,7 @@ var require_dockerSocket = __commonJS({
|
|
|
113957
113957
|
}
|
|
113958
113958
|
listVolumes(callback) {
|
|
113959
113959
|
try {
|
|
113960
|
-
let socket =
|
|
113960
|
+
let socket = net3.createConnection({ path: socketPath });
|
|
113961
113961
|
let alldata = "";
|
|
113962
113962
|
let data;
|
|
113963
113963
|
socket.on("connect", () => {
|
|
@@ -210580,7 +210580,7 @@ var require_util20 = __commonJS({
|
|
|
210580
210580
|
var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
|
|
210581
210581
|
var { IncomingMessage } = __require("node:http");
|
|
210582
210582
|
var stream2 = __require("node:stream");
|
|
210583
|
-
var
|
|
210583
|
+
var net3 = __require("node:net");
|
|
210584
210584
|
var { Blob: Blob2 } = __require("node:buffer");
|
|
210585
210585
|
var nodeUtil = __require("node:util");
|
|
210586
210586
|
var { stringify: stringify3 } = __require("node:querystring");
|
|
@@ -210726,7 +210726,7 @@ var require_util20 = __commonJS({
|
|
|
210726
210726
|
}
|
|
210727
210727
|
assert3(typeof host === "string");
|
|
210728
210728
|
const servername = getHostname(host);
|
|
210729
|
-
if (
|
|
210729
|
+
if (net3.isIP(servername)) {
|
|
210730
210730
|
return "";
|
|
210731
210731
|
}
|
|
210732
210732
|
return servername;
|
|
@@ -212038,7 +212038,7 @@ var require_dispatcher_base = __commonJS({
|
|
|
212038
212038
|
var require_connect = __commonJS({
|
|
212039
212039
|
"packages/core/node_modules/undici/lib/core/connect.js"(exports2, module2) {
|
|
212040
212040
|
"use strict";
|
|
212041
|
-
var
|
|
212041
|
+
var net3 = __require("node:net");
|
|
212042
212042
|
var assert3 = __require("node:assert");
|
|
212043
212043
|
var util4 = require_util20();
|
|
212044
212044
|
var { InvalidArgumentError } = require_errors6();
|
|
@@ -212092,7 +212092,7 @@ var require_connect = __commonJS({
|
|
|
212092
212092
|
}
|
|
212093
212093
|
};
|
|
212094
212094
|
}
|
|
212095
|
-
function
|
|
212095
|
+
function buildConnector2({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {
|
|
212096
212096
|
if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
|
|
212097
212097
|
throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero");
|
|
212098
212098
|
}
|
|
@@ -212130,7 +212130,7 @@ var require_connect = __commonJS({
|
|
|
212130
212130
|
} else {
|
|
212131
212131
|
assert3(!httpSocket, "httpSocket can only be sent on TLS update");
|
|
212132
212132
|
port = port || 80;
|
|
212133
|
-
socket =
|
|
212133
|
+
socket = net3.connect({
|
|
212134
212134
|
highWaterMark: 64 * 1024,
|
|
212135
212135
|
// Same as nodejs fs streams.
|
|
212136
212136
|
...options,
|
|
@@ -212162,7 +212162,7 @@ var require_connect = __commonJS({
|
|
|
212162
212162
|
return socket;
|
|
212163
212163
|
};
|
|
212164
212164
|
}
|
|
212165
|
-
module2.exports =
|
|
212165
|
+
module2.exports = buildConnector2;
|
|
212166
212166
|
}
|
|
212167
212167
|
});
|
|
212168
212168
|
|
|
@@ -217276,7 +217276,7 @@ var require_client2 = __commonJS({
|
|
|
217276
217276
|
"packages/core/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) {
|
|
217277
217277
|
"use strict";
|
|
217278
217278
|
var assert3 = __require("node:assert");
|
|
217279
|
-
var
|
|
217279
|
+
var net3 = __require("node:net");
|
|
217280
217280
|
var http3 = __require("node:http");
|
|
217281
217281
|
var util4 = require_util20();
|
|
217282
217282
|
var { ClientStats } = require_stats();
|
|
@@ -217288,7 +217288,7 @@ var require_client2 = __commonJS({
|
|
|
217288
217288
|
InformationalError,
|
|
217289
217289
|
ClientDestroyedError
|
|
217290
217290
|
} = require_errors6();
|
|
217291
|
-
var
|
|
217291
|
+
var buildConnector2 = require_connect();
|
|
217292
217292
|
var {
|
|
217293
217293
|
kUrl,
|
|
217294
217294
|
kServerName,
|
|
@@ -217423,7 +217423,7 @@ var require_client2 = __commonJS({
|
|
|
217423
217423
|
if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {
|
|
217424
217424
|
throw new InvalidArgumentError("maxRequestsPerClient must be a positive number");
|
|
217425
217425
|
}
|
|
217426
|
-
if (localAddress != null && (typeof localAddress !== "string" ||
|
|
217426
|
+
if (localAddress != null && (typeof localAddress !== "string" || net3.isIP(localAddress) === 0)) {
|
|
217427
217427
|
throw new InvalidArgumentError("localAddress must be valid string IP address");
|
|
217428
217428
|
}
|
|
217429
217429
|
if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {
|
|
@@ -217440,7 +217440,7 @@ var require_client2 = __commonJS({
|
|
|
217440
217440
|
}
|
|
217441
217441
|
super();
|
|
217442
217442
|
if (typeof connect2 !== "function") {
|
|
217443
|
-
connect2 =
|
|
217443
|
+
connect2 = buildConnector2({
|
|
217444
217444
|
...tls,
|
|
217445
217445
|
maxCachedSessions,
|
|
217446
217446
|
allowH2,
|
|
@@ -217578,7 +217578,7 @@ var require_client2 = __commonJS({
|
|
|
217578
217578
|
const idx = hostname3.indexOf("]");
|
|
217579
217579
|
assert3(idx !== -1);
|
|
217580
217580
|
const ip = hostname3.substring(1, idx);
|
|
217581
|
-
assert3(
|
|
217581
|
+
assert3(net3.isIPv6(ip));
|
|
217582
217582
|
hostname3 = ip;
|
|
217583
217583
|
}
|
|
217584
217584
|
client[kConnecting] = true;
|
|
@@ -218013,7 +218013,7 @@ var require_pool2 = __commonJS({
|
|
|
218013
218013
|
} = require_errors6();
|
|
218014
218014
|
var util4 = require_util20();
|
|
218015
218015
|
var { kUrl } = require_symbols();
|
|
218016
|
-
var
|
|
218016
|
+
var buildConnector2 = require_connect();
|
|
218017
218017
|
var kOptions = Symbol("options");
|
|
218018
218018
|
var kConnections = Symbol("connections");
|
|
218019
218019
|
var kFactory = Symbol("factory");
|
|
@@ -218046,7 +218046,7 @@ var require_pool2 = __commonJS({
|
|
|
218046
218046
|
}
|
|
218047
218047
|
super();
|
|
218048
218048
|
if (typeof connect !== "function") {
|
|
218049
|
-
connect =
|
|
218049
|
+
connect = buildConnector2({
|
|
218050
218050
|
...tls,
|
|
218051
218051
|
maxCachedSessions,
|
|
218052
218052
|
allowH2,
|
|
@@ -218361,7 +218361,7 @@ var require_proxy_agent = __commonJS({
|
|
|
218361
218361
|
var Pool = require_pool2();
|
|
218362
218362
|
var DispatcherBase = require_dispatcher_base();
|
|
218363
218363
|
var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors6();
|
|
218364
|
-
var
|
|
218364
|
+
var buildConnector2 = require_connect();
|
|
218365
218365
|
var Client3 = require_client2();
|
|
218366
218366
|
var kAgent = Symbol("proxy agent");
|
|
218367
218367
|
var kClient = Symbol("proxy client");
|
|
@@ -218459,8 +218459,8 @@ var require_proxy_agent = __commonJS({
|
|
|
218459
218459
|
}
|
|
218460
218460
|
return new Client3(origin2, options);
|
|
218461
218461
|
} : void 0;
|
|
218462
|
-
const connect =
|
|
218463
|
-
this[kConnectEndpoint] =
|
|
218462
|
+
const connect = buildConnector2({ ...opts.proxyTls });
|
|
218463
|
+
this[kConnectEndpoint] = buildConnector2({ ...opts.requestTls });
|
|
218464
218464
|
this[kClient] = clientFactory(url3, { connect, factory });
|
|
218465
218465
|
this[kTunnelProxy] = proxyTunnel;
|
|
218466
218466
|
this[kAgent] = new Agent2({
|
|
@@ -221841,7 +221841,7 @@ var require_dump = __commonJS({
|
|
|
221841
221841
|
var require_dns = __commonJS({
|
|
221842
221842
|
"packages/core/node_modules/undici/lib/interceptor/dns.js"(exports2, module2) {
|
|
221843
221843
|
"use strict";
|
|
221844
|
-
var { isIP } = __require("node:net");
|
|
221844
|
+
var { isIP: isIP2 } = __require("node:net");
|
|
221845
221845
|
var { lookup: lookup3 } = __require("node:dns");
|
|
221846
221846
|
var DecoratorHandler = require_decorator_handler();
|
|
221847
221847
|
var { InvalidArgumentError, InformationalError } = require_errors6();
|
|
@@ -222140,7 +222140,7 @@ var require_dns = __commonJS({
|
|
|
222140
222140
|
return (dispatch) => {
|
|
222141
222141
|
return function dnsInterceptor(origDispatchOpts, handler) {
|
|
222142
222142
|
const origin = origDispatchOpts.origin.constructor === URL ? origDispatchOpts.origin : new URL(origDispatchOpts.origin);
|
|
222143
|
-
if (
|
|
222143
|
+
if (isIP2(origin.hostname) !== 0) {
|
|
222144
222144
|
return dispatch(origDispatchOpts, handler);
|
|
222145
222145
|
}
|
|
222146
222146
|
instance2.runLookup(origin, origDispatchOpts, (err2, newOrigin) => {
|
|
@@ -230250,7 +230250,7 @@ var require_undici = __commonJS({
|
|
|
230250
230250
|
var util4 = require_util20();
|
|
230251
230251
|
var { InvalidArgumentError } = errors;
|
|
230252
230252
|
var api = require_api2();
|
|
230253
|
-
var
|
|
230253
|
+
var buildConnector2 = require_connect();
|
|
230254
230254
|
var MockClient = require_mock_client();
|
|
230255
230255
|
var { MockCallHistory, MockCallHistoryLog } = require_mock_call_history();
|
|
230256
230256
|
var MockAgent = require_mock_agent();
|
|
@@ -230286,7 +230286,7 @@ var require_undici = __commonJS({
|
|
|
230286
230286
|
};
|
|
230287
230287
|
var SqliteCacheStore = require_sqlite_cache_store();
|
|
230288
230288
|
module2.exports.cacheStores.SqliteCacheStore = SqliteCacheStore;
|
|
230289
|
-
module2.exports.buildConnector =
|
|
230289
|
+
module2.exports.buildConnector = buildConnector2;
|
|
230290
230290
|
module2.exports.errors = errors;
|
|
230291
230291
|
module2.exports.util = {
|
|
230292
230292
|
parseHeaders: util4.parseHeaders,
|
|
@@ -282634,8 +282634,8 @@ function isValidToolName(name3, options = {}) {
|
|
|
282634
282634
|
}
|
|
282635
282635
|
|
|
282636
282636
|
// packages/core/dist/src/generated/git-commit.js
|
|
282637
|
-
var GIT_COMMIT_INFO = "
|
|
282638
|
-
var CLI_VERSION = "0.
|
|
282637
|
+
var GIT_COMMIT_INFO = "87a9c71d5";
|
|
282638
|
+
var CLI_VERSION = "0.60.0-nightly.20260901.g0bd1d4397";
|
|
282639
282639
|
|
|
282640
282640
|
// packages/core/dist/src/ide/detect-ide.js
|
|
282641
282641
|
var IDE_DEFINITIONS = {
|
|
@@ -305929,7 +305929,7 @@ function getVersion() {
|
|
|
305929
305929
|
}
|
|
305930
305930
|
versionPromise = (async () => {
|
|
305931
305931
|
const pkgJson = await getPackageJson(__dirname4);
|
|
305932
|
-
return "0.
|
|
305932
|
+
return "0.60.0-nightly.20260904.g87a9c71d5";
|
|
305933
305933
|
})();
|
|
305934
305934
|
return versionPromise;
|
|
305935
305935
|
}
|
|
@@ -324200,9 +324200,10 @@ var ShellTool = class _ShellTool extends BaseDeclarativeTool {
|
|
|
324200
324200
|
};
|
|
324201
324201
|
|
|
324202
324202
|
// packages/core/dist/src/utils/fetch.js
|
|
324203
|
-
var
|
|
324203
|
+
var undici = __toESM(require_undici(), 1);
|
|
324204
324204
|
var import_ipaddr = __toESM(require_ipaddr(), 1);
|
|
324205
324205
|
import { URL as URL5 } from "node:url";
|
|
324206
|
+
import * as net2 from "node:net";
|
|
324206
324207
|
import { lookup } from "node:dns/promises";
|
|
324207
324208
|
var FetchError = class extends Error {
|
|
324208
324209
|
code;
|
|
@@ -324221,7 +324222,93 @@ var PrivateIpError = class extends Error {
|
|
|
324221
324222
|
var defaultHeadersTimeout = 6e4;
|
|
324222
324223
|
var defaultBodyTimeout = 3e5;
|
|
324223
324224
|
var currentProxy = void 0;
|
|
324224
|
-
(
|
|
324225
|
+
function getBuildConnector() {
|
|
324226
|
+
try {
|
|
324227
|
+
const fn = undici.buildConnector;
|
|
324228
|
+
return typeof fn === "function" ? fn : void 0;
|
|
324229
|
+
} catch {
|
|
324230
|
+
return void 0;
|
|
324231
|
+
}
|
|
324232
|
+
}
|
|
324233
|
+
function safeLookup(hostname3, options, callback) {
|
|
324234
|
+
const sanitized = sanitizeHostname(hostname3);
|
|
324235
|
+
if (sanitized === "localhost" || sanitized.endsWith(".localhost") || sanitized.endsWith(".local") || sanitized.endsWith(".internal")) {
|
|
324236
|
+
callback(new PrivateIpError(`Access to internal host ${sanitized} is blocked`), "");
|
|
324237
|
+
return;
|
|
324238
|
+
}
|
|
324239
|
+
if (net2.isIP(sanitized)) {
|
|
324240
|
+
if (isAddressPrivate(sanitized)) {
|
|
324241
|
+
callback(new PrivateIpError(`Access to private IP ${sanitized} is blocked`), "");
|
|
324242
|
+
return;
|
|
324243
|
+
}
|
|
324244
|
+
if (options?.all) {
|
|
324245
|
+
callback(null, [{ address: sanitized, family: net2.isIP(sanitized) }]);
|
|
324246
|
+
} else {
|
|
324247
|
+
callback(null, sanitized, net2.isIP(sanitized));
|
|
324248
|
+
}
|
|
324249
|
+
return;
|
|
324250
|
+
}
|
|
324251
|
+
lookup(sanitized, { all: true }).then((addresses) => {
|
|
324252
|
+
if (!addresses || addresses.length === 0) {
|
|
324253
|
+
callback(new Error(`getaddrinfo ENOTFOUND ${sanitized}`), "");
|
|
324254
|
+
return;
|
|
324255
|
+
}
|
|
324256
|
+
for (const addr2 of addresses) {
|
|
324257
|
+
if (isAddressPrivate(addr2.address)) {
|
|
324258
|
+
callback(new PrivateIpError(`Access to private IP ${addr2.address} (resolved from ${sanitized}) is blocked`), "");
|
|
324259
|
+
return;
|
|
324260
|
+
}
|
|
324261
|
+
}
|
|
324262
|
+
if (options?.all) {
|
|
324263
|
+
callback(null, addresses);
|
|
324264
|
+
} else {
|
|
324265
|
+
const family = options?.family;
|
|
324266
|
+
const match2 = family ? addresses.find((a2) => a2.family === family) || addresses[0] : addresses[0];
|
|
324267
|
+
callback(null, match2.address, match2.family);
|
|
324268
|
+
}
|
|
324269
|
+
}).catch((err2) => {
|
|
324270
|
+
callback(err2 instanceof Error ? err2 : new Error(String(err2)), "");
|
|
324271
|
+
});
|
|
324272
|
+
}
|
|
324273
|
+
function createSafeConnector(connectorOpts, customDefaultConnector) {
|
|
324274
|
+
const buildConnectorFn = getBuildConnector();
|
|
324275
|
+
const safeConnectorOpts = {
|
|
324276
|
+
...connectorOpts,
|
|
324277
|
+
lookup: safeLookup
|
|
324278
|
+
};
|
|
324279
|
+
const defaultConnector = customDefaultConnector ?? (buildConnectorFn ? buildConnectorFn(safeConnectorOpts) : void 0);
|
|
324280
|
+
return function safeConnect(opts, callback) {
|
|
324281
|
+
if (!defaultConnector) {
|
|
324282
|
+
callback(new Error("Connector is unavailable"), null);
|
|
324283
|
+
return;
|
|
324284
|
+
}
|
|
324285
|
+
const rawHostname = opts.hostname;
|
|
324286
|
+
const sanitized = sanitizeHostname(rawHostname);
|
|
324287
|
+
if (sanitized === "localhost" || sanitized.endsWith(".localhost") || sanitized.endsWith(".local") || sanitized.endsWith(".internal")) {
|
|
324288
|
+
callback(new PrivateIpError(`Access to internal host ${sanitized} is blocked`), null);
|
|
324289
|
+
return;
|
|
324290
|
+
}
|
|
324291
|
+
if (net2.isIP(sanitized) && isAddressPrivate(sanitized)) {
|
|
324292
|
+
callback(new PrivateIpError(`Access to private IP ${sanitized} is blocked`), null);
|
|
324293
|
+
return;
|
|
324294
|
+
}
|
|
324295
|
+
defaultConnector(opts, callback);
|
|
324296
|
+
};
|
|
324297
|
+
}
|
|
324298
|
+
function createSafeAgent(options) {
|
|
324299
|
+
const buildConnectorFn = getBuildConnector();
|
|
324300
|
+
if (!buildConnectorFn) {
|
|
324301
|
+
throw new Error("Security initialization failed: undici.buildConnector is not available.");
|
|
324302
|
+
}
|
|
324303
|
+
const connect = createSafeConnector();
|
|
324304
|
+
return new undici.Agent({
|
|
324305
|
+
headersTimeout: options?.headersTimeout ?? defaultHeadersTimeout,
|
|
324306
|
+
bodyTimeout: options?.bodyTimeout ?? defaultBodyTimeout,
|
|
324307
|
+
connect
|
|
324308
|
+
});
|
|
324309
|
+
}
|
|
324310
|
+
var defaultSafeAgent = createSafeAgent();
|
|
324311
|
+
undici.setGlobalDispatcher(new undici.Agent({
|
|
324225
324312
|
headersTimeout: defaultHeadersTimeout,
|
|
324226
324313
|
bodyTimeout: defaultBodyTimeout
|
|
324227
324314
|
}));
|
|
@@ -324230,10 +324317,14 @@ function updateGlobalFetchTimeouts(timeoutMs) {
|
|
|
324230
324317
|
throw new RangeError(`Invalid timeout value: ${timeoutMs}. Must be a positive finite number.`);
|
|
324231
324318
|
}
|
|
324232
324319
|
defaultHeadersTimeout = timeoutMs;
|
|
324320
|
+
defaultSafeAgent = createSafeAgent({
|
|
324321
|
+
headersTimeout: defaultHeadersTimeout,
|
|
324322
|
+
bodyTimeout: defaultBodyTimeout
|
|
324323
|
+
});
|
|
324233
324324
|
if (currentProxy) {
|
|
324234
324325
|
setGlobalProxy(currentProxy);
|
|
324235
324326
|
} else {
|
|
324236
|
-
|
|
324327
|
+
undici.setGlobalDispatcher(new undici.Agent({
|
|
324237
324328
|
headersTimeout: defaultHeadersTimeout,
|
|
324238
324329
|
bodyTimeout: defaultBodyTimeout
|
|
324239
324330
|
}));
|
|
@@ -324246,14 +324337,6 @@ function isLoopbackHost(hostname3) {
|
|
|
324246
324337
|
const sanitized = sanitizeHostname(hostname3);
|
|
324247
324338
|
return sanitized === "localhost" || sanitized === "127.0.0.1" || sanitized === "::1";
|
|
324248
324339
|
}
|
|
324249
|
-
function isPrivateIp(url3) {
|
|
324250
|
-
try {
|
|
324251
|
-
const hostname3 = new URL5(url3).hostname;
|
|
324252
|
-
return isAddressPrivate(hostname3);
|
|
324253
|
-
} catch {
|
|
324254
|
-
return false;
|
|
324255
|
-
}
|
|
324256
|
-
}
|
|
324257
324340
|
var IANA_BENCHMARK_RANGE = import_ipaddr.default.parseCIDR("198.18.0.0/15");
|
|
324258
324341
|
function isBenchmarkAddress(addr2) {
|
|
324259
324342
|
const [rangeAddr, rangeMask] = IANA_BENCHMARK_RANGE;
|
|
@@ -324261,7 +324344,7 @@ function isBenchmarkAddress(addr2) {
|
|
|
324261
324344
|
}
|
|
324262
324345
|
function isAddressPrivate(address) {
|
|
324263
324346
|
const sanitized = sanitizeHostname(address);
|
|
324264
|
-
if (sanitized === "localhost") {
|
|
324347
|
+
if (sanitized === "localhost" || sanitized.endsWith(".localhost") || sanitized.endsWith(".local") || sanitized.endsWith(".internal")) {
|
|
324265
324348
|
return true;
|
|
324266
324349
|
}
|
|
324267
324350
|
try {
|
|
@@ -324281,27 +324364,53 @@ function isAddressPrivate(address) {
|
|
|
324281
324364
|
}
|
|
324282
324365
|
}
|
|
324283
324366
|
async function isPrivateIpAsync(url3) {
|
|
324367
|
+
let parsedUrl;
|
|
324284
324368
|
try {
|
|
324285
|
-
|
|
324286
|
-
|
|
324287
|
-
if (
|
|
324369
|
+
parsedUrl = new URL5(url3);
|
|
324370
|
+
} catch (error40) {
|
|
324371
|
+
if (error40 instanceof TypeError) {
|
|
324288
324372
|
return false;
|
|
324289
324373
|
}
|
|
324374
|
+
throw error40;
|
|
324375
|
+
}
|
|
324376
|
+
const hostname3 = sanitizeHostname(parsedUrl.hostname);
|
|
324377
|
+
if (hostname3 === "localhost" || hostname3.endsWith(".localhost") || hostname3.endsWith(".local") || hostname3.endsWith(".internal")) {
|
|
324378
|
+
return true;
|
|
324379
|
+
}
|
|
324380
|
+
if (net2.isIP(hostname3)) {
|
|
324381
|
+
return isAddressPrivate(hostname3);
|
|
324382
|
+
}
|
|
324383
|
+
try {
|
|
324290
324384
|
const addresses = await lookup(hostname3, { all: true });
|
|
324385
|
+
if (!addresses || addresses.length === 0) {
|
|
324386
|
+
return true;
|
|
324387
|
+
}
|
|
324291
324388
|
return addresses.some((addr2) => isAddressPrivate(addr2.address));
|
|
324292
324389
|
} catch (error40) {
|
|
324293
|
-
if (error40 instanceof TypeError) {
|
|
324294
|
-
return false;
|
|
324295
|
-
}
|
|
324296
324390
|
throw new Error("Failed to verify if URL resolves to private IP", {
|
|
324297
324391
|
cause: error40
|
|
324298
324392
|
});
|
|
324299
324393
|
}
|
|
324300
324394
|
}
|
|
324395
|
+
async function isPrivateIp(url3) {
|
|
324396
|
+
try {
|
|
324397
|
+
return await isPrivateIpAsync(url3);
|
|
324398
|
+
} catch {
|
|
324399
|
+
return true;
|
|
324400
|
+
}
|
|
324401
|
+
}
|
|
324402
|
+
async function validateUrlDestination(url3) {
|
|
324403
|
+
try {
|
|
324404
|
+
const isPrivate = await isPrivateIp(url3);
|
|
324405
|
+
return !isPrivate;
|
|
324406
|
+
} catch {
|
|
324407
|
+
return false;
|
|
324408
|
+
}
|
|
324409
|
+
}
|
|
324301
324410
|
function createSafeProxyAgent(proxyUrl) {
|
|
324302
324411
|
const trimmedProxy = proxyUrl.trim();
|
|
324303
324412
|
const noProxy = (process.env["NO_PROXY"] ?? process.env["no_proxy"] ?? "")?.trim();
|
|
324304
|
-
return new
|
|
324413
|
+
return new undici.EnvHttpProxyAgent({
|
|
324305
324414
|
httpProxy: trimmedProxy,
|
|
324306
324415
|
httpsProxy: trimmedProxy,
|
|
324307
324416
|
noProxy,
|
|
@@ -324310,6 +324419,9 @@ function createSafeProxyAgent(proxyUrl) {
|
|
|
324310
324419
|
});
|
|
324311
324420
|
}
|
|
324312
324421
|
async function fetchWithTimeout(url3, timeout, options) {
|
|
324422
|
+
if (await isPrivateIp(url3)) {
|
|
324423
|
+
throw new PrivateIpError(`Access to blocked or private host ${url3} is not allowed.`);
|
|
324424
|
+
}
|
|
324313
324425
|
const controller = new AbortController();
|
|
324314
324426
|
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
324315
324427
|
if (options?.signal) {
|
|
@@ -324322,10 +324434,14 @@ async function fetchWithTimeout(url3, timeout, options) {
|
|
|
324322
324434
|
}
|
|
324323
324435
|
}
|
|
324324
324436
|
try {
|
|
324325
|
-
const
|
|
324437
|
+
const fetchOptions = {
|
|
324326
324438
|
...options,
|
|
324327
324439
|
signal: controller.signal
|
|
324328
|
-
}
|
|
324440
|
+
};
|
|
324441
|
+
if (!fetchOptions.dispatcher) {
|
|
324442
|
+
fetchOptions.dispatcher = currentProxy ? createSafeProxyAgent(currentProxy) : defaultSafeAgent;
|
|
324443
|
+
}
|
|
324444
|
+
const response = await fetch(url3, fetchOptions);
|
|
324329
324445
|
return response;
|
|
324330
324446
|
} catch (error40) {
|
|
324331
324447
|
if (isAbortError(error40)) {
|
|
@@ -324334,6 +324450,14 @@ async function fetchWithTimeout(url3, timeout, options) {
|
|
|
324334
324450
|
}
|
|
324335
324451
|
throw new FetchError(`Request timed out after ${timeout}ms`, "ETIMEDOUT");
|
|
324336
324452
|
}
|
|
324453
|
+
if (error40 instanceof PrivateIpError) {
|
|
324454
|
+
throw error40;
|
|
324455
|
+
}
|
|
324456
|
+
if (error40 && typeof error40 === "object" && "cause" in error40) {
|
|
324457
|
+
if (error40.cause instanceof PrivateIpError) {
|
|
324458
|
+
throw error40.cause;
|
|
324459
|
+
}
|
|
324460
|
+
}
|
|
324337
324461
|
throw new FetchError(getErrorMessage(error40), void 0, { cause: error40 });
|
|
324338
324462
|
} finally {
|
|
324339
324463
|
clearTimeout(timeoutId);
|
|
@@ -324343,7 +324467,7 @@ function setGlobalProxy(proxy2) {
|
|
|
324343
324467
|
const trimmedProxy = proxy2.trim();
|
|
324344
324468
|
currentProxy = trimmedProxy;
|
|
324345
324469
|
const noProxy = (process.env["NO_PROXY"] ?? process.env["no_proxy"] ?? "")?.trim();
|
|
324346
|
-
|
|
324470
|
+
undici.setGlobalDispatcher(new undici.EnvHttpProxyAgent({
|
|
324347
324471
|
httpProxy: trimmedProxy,
|
|
324348
324472
|
httpsProxy: trimmedProxy,
|
|
324349
324473
|
noProxy,
|
|
@@ -329396,21 +329520,21 @@ var WebFetchToolInvocation = class extends BaseToolInvocation {
|
|
|
329396
329520
|
});
|
|
329397
329521
|
logNetworkRetryAttempt(this.context.config, new NetworkRetryAttemptEvent(attempt, maxAttempts, errorType, delayMs, modelName));
|
|
329398
329522
|
}
|
|
329399
|
-
isBlockedHost(urlStr) {
|
|
329523
|
+
async isBlockedHost(urlStr) {
|
|
329400
329524
|
try {
|
|
329401
329525
|
const url3 = new URL(urlStr);
|
|
329402
329526
|
const hostname3 = url3.hostname.toLowerCase();
|
|
329403
|
-
if (hostname3 === "localhost" || hostname3 === "127.0.0.1") {
|
|
329527
|
+
if (hostname3 === "localhost" || hostname3 === "127.0.0.1" || hostname3.endsWith(".localhost") || hostname3.endsWith(".local") || hostname3.endsWith(".internal")) {
|
|
329404
329528
|
return true;
|
|
329405
329529
|
}
|
|
329406
|
-
return isPrivateIp(urlStr);
|
|
329530
|
+
return await isPrivateIp(urlStr);
|
|
329407
329531
|
} catch {
|
|
329408
329532
|
return true;
|
|
329409
329533
|
}
|
|
329410
329534
|
}
|
|
329411
329535
|
async executeFallbackForUrl(urlStr, signal) {
|
|
329412
329536
|
const url3 = convertGithubUrlToRaw(urlStr);
|
|
329413
|
-
if (this.isBlockedHost(url3)) {
|
|
329537
|
+
if (await this.isBlockedHost(url3)) {
|
|
329414
329538
|
debugLogger.warn(`[WebFetchTool] Blocked access to host: ${url3}`);
|
|
329415
329539
|
throw new Error(`Access to blocked or private host ${url3} is not allowed.`);
|
|
329416
329540
|
}
|
|
@@ -329452,12 +329576,12 @@ var WebFetchToolInvocation = class extends BaseToolInvocation {
|
|
|
329452
329576
|
}
|
|
329453
329577
|
return textContent2;
|
|
329454
329578
|
}
|
|
329455
|
-
filterAndValidateUrls(urls) {
|
|
329579
|
+
async filterAndValidateUrls(urls) {
|
|
329456
329580
|
const uniqueUrls = [...new Set(urls.map(normalizeUrl))];
|
|
329457
329581
|
const toFetch = [];
|
|
329458
329582
|
const skipped = [];
|
|
329459
329583
|
for (const url3 of uniqueUrls) {
|
|
329460
|
-
if (this.isBlockedHost(url3)) {
|
|
329584
|
+
if (await this.isBlockedHost(url3)) {
|
|
329461
329585
|
debugLogger.warn(`[WebFetchTool] Skipped private or local host: ${url3}`);
|
|
329462
329586
|
logWebFetchFallbackAttempt(this.context.config, new WebFetchFallbackAttemptEvent("private_ip_skipped"));
|
|
329463
329587
|
skipped.push(`[Blocked Host] ${url3}`);
|
|
@@ -329647,7 +329771,7 @@ ${aggregatedContent}
|
|
|
329647
329771
|
};
|
|
329648
329772
|
}
|
|
329649
329773
|
url3 = convertGithubUrlToRaw(url3);
|
|
329650
|
-
if (this.isBlockedHost(url3)) {
|
|
329774
|
+
if (await this.isBlockedHost(url3)) {
|
|
329651
329775
|
const errorMessage = `Access to blocked or private host ${url3} is not allowed.`;
|
|
329652
329776
|
debugLogger.warn(`[WebFetchTool] Blocked experimental fetch to host: ${url3}`);
|
|
329653
329777
|
return {
|
|
@@ -329761,7 +329885,7 @@ Response: ${rawResponseText}`;
|
|
|
329761
329885
|
}
|
|
329762
329886
|
const userPrompt = this.params.prompt;
|
|
329763
329887
|
const { validUrls } = parsePrompt(userPrompt);
|
|
329764
|
-
const { toFetch, skipped } = this.filterAndValidateUrls(validUrls);
|
|
329888
|
+
const { toFetch, skipped } = await this.filterAndValidateUrls(validUrls);
|
|
329765
329889
|
if (toFetch.length === 0 && skipped.length > 0) {
|
|
329766
329890
|
const errorMessage = `All requested URLs were skipped: ${skipped.join(", ")}`;
|
|
329767
329891
|
debugLogger.error(`[WebFetchTool] ${errorMessage}`);
|
|
@@ -339036,7 +339160,7 @@ var A2AAuthProviderFactory = class _A2AAuthProviderFactory {
|
|
|
339036
339160
|
return provider;
|
|
339037
339161
|
}
|
|
339038
339162
|
case "oauth2": {
|
|
339039
|
-
const { OAuth2AuthProvider } = await import("./oauth2-provider-
|
|
339163
|
+
const { OAuth2AuthProvider } = await import("./oauth2-provider-VY2YQMRH.js");
|
|
339040
339164
|
const provider = new OAuth2AuthProvider(authConfig, options.agentName ?? "unknown", agentCard, options.agentCardUrl);
|
|
339041
339165
|
await provider.initialize();
|
|
339042
339166
|
return provider;
|
|
@@ -366225,7 +366349,7 @@ var SSEClientTransport = class {
|
|
|
366225
366349
|
};
|
|
366226
366350
|
|
|
366227
366351
|
// packages/core/dist/src/tools/mcp-client.js
|
|
366228
|
-
var
|
|
366352
|
+
var import_undici2 = __toESM(require_undici(), 1);
|
|
366229
366353
|
var import_shell_quote7 = __toESM(require_shell_quote(), 1);
|
|
366230
366354
|
|
|
366231
366355
|
// packages/core/dist/src/mcp/google-auth-provider.js
|
|
@@ -366698,7 +366822,29 @@ function generatePKCEParams() {
|
|
|
366698
366822
|
const state = crypto20.randomBytes(16).toString("base64url");
|
|
366699
366823
|
return { codeVerifier, codeChallenge, state };
|
|
366700
366824
|
}
|
|
366701
|
-
function
|
|
366825
|
+
function areIssuersEqual(issuerA, issuerB) {
|
|
366826
|
+
if (issuerA === issuerB && !issuerA.includes("@"))
|
|
366827
|
+
return true;
|
|
366828
|
+
const normalize6 = (iss) => {
|
|
366829
|
+
try {
|
|
366830
|
+
const u2 = new URL6(iss);
|
|
366831
|
+
if (u2.username || u2.password) {
|
|
366832
|
+
return null;
|
|
366833
|
+
}
|
|
366834
|
+
const normalizedPath = u2.pathname.replace(/\/+$/, "");
|
|
366835
|
+
return `${u2.protocol}//${u2.host}${normalizedPath}${u2.search}${u2.hash}`;
|
|
366836
|
+
} catch {
|
|
366837
|
+
return iss.replace(/\/+$/, "");
|
|
366838
|
+
}
|
|
366839
|
+
};
|
|
366840
|
+
const normA = normalize6(issuerA);
|
|
366841
|
+
const normB = normalize6(issuerB);
|
|
366842
|
+
if (normA === null || normB === null) {
|
|
366843
|
+
return false;
|
|
366844
|
+
}
|
|
366845
|
+
return normA === normB;
|
|
366846
|
+
}
|
|
366847
|
+
function startCallbackServer(expectedState, port, expectedIssuer) {
|
|
366702
366848
|
let portResolve;
|
|
366703
366849
|
let portReject;
|
|
366704
366850
|
const portPromise = new Promise((resolve29, reject) => {
|
|
@@ -366719,7 +366865,9 @@ function startCallbackServer(expectedState, port) {
|
|
|
366719
366865
|
const code = url3.searchParams.get("code");
|
|
366720
366866
|
const state = url3.searchParams.get("state");
|
|
366721
366867
|
const error40 = url3.searchParams.get("error");
|
|
366868
|
+
const iss = url3.searchParams.get("iss") || void 0;
|
|
366722
366869
|
if (error40) {
|
|
366870
|
+
debugLogger.warn(`OAuth callback received error: ${error40}`);
|
|
366723
366871
|
res.writeHead(HTTP_OK, { "Content-Type": "text/html" });
|
|
366724
366872
|
res.end(`
|
|
366725
366873
|
<html>
|
|
@@ -366736,17 +366884,56 @@ function startCallbackServer(expectedState, port) {
|
|
|
366736
366884
|
return;
|
|
366737
366885
|
}
|
|
366738
366886
|
if (!code || !state) {
|
|
366887
|
+
debugLogger.warn("OAuth callback rejected: Missing code or state parameter.");
|
|
366739
366888
|
res.writeHead(400);
|
|
366740
366889
|
res.end("Missing code or state parameter");
|
|
366741
366890
|
return;
|
|
366742
366891
|
}
|
|
366743
366892
|
if (state !== expectedState) {
|
|
366893
|
+
debugLogger.error(`OAuth callback state mismatch: received state "${state}", expected "${expectedState}". Possible CSRF attack.`);
|
|
366744
366894
|
res.writeHead(400);
|
|
366745
366895
|
res.end("Invalid state parameter");
|
|
366746
366896
|
server.close();
|
|
366747
366897
|
reject(new Error("State mismatch - possible CSRF attack"));
|
|
366748
366898
|
return;
|
|
366749
366899
|
}
|
|
366900
|
+
if (expectedIssuer) {
|
|
366901
|
+
if (!iss) {
|
|
366902
|
+
debugLogger.error('OAuth callback rejected: Missing required "iss" parameter when an expected issuer is configured. Possible IdP mix-up attack (RFC 9207).');
|
|
366903
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
366904
|
+
res.end(`
|
|
366905
|
+
<html>
|
|
366906
|
+
<body>
|
|
366907
|
+
<h1>Authentication Failed</h1>
|
|
366908
|
+
<p>Error: Missing issuer parameter in response.</p>
|
|
366909
|
+
<p>You can close this window.</p>
|
|
366910
|
+
</body>
|
|
366911
|
+
</html>
|
|
366912
|
+
`);
|
|
366913
|
+
server.close();
|
|
366914
|
+
reject(new Error('Missing "iss" parameter in authorization response per RFC 9207'));
|
|
366915
|
+
return;
|
|
366916
|
+
}
|
|
366917
|
+
if (!areIssuersEqual(iss, expectedIssuer)) {
|
|
366918
|
+
debugLogger.error("OAuth callback rejected: Issuer mismatch between authorization response and expected authorization server. Possible IdP mix-up attack (RFC 9207).");
|
|
366919
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
366920
|
+
res.end(`
|
|
366921
|
+
<html>
|
|
366922
|
+
<body>
|
|
366923
|
+
<h1>Authentication Failed</h1>
|
|
366924
|
+
<p>Error: Issuer mismatch - possible OAuth mix-up attack.</p>
|
|
366925
|
+
<p>You can close this window.</p>
|
|
366926
|
+
</body>
|
|
366927
|
+
</html>
|
|
366928
|
+
`);
|
|
366929
|
+
server.close();
|
|
366930
|
+
reject(new Error("Issuer mismatch in authorization response - possible OAuth mix-up attack"));
|
|
366931
|
+
return;
|
|
366932
|
+
}
|
|
366933
|
+
debugLogger.debug("\u2713 OAuth callback issuer validated successfully.");
|
|
366934
|
+
} else if (iss) {
|
|
366935
|
+
debugLogger.debug('OAuth callback received "iss" parameter (no expected issuer was configured).');
|
|
366936
|
+
}
|
|
366750
366937
|
res.writeHead(HTTP_OK, { "Content-Type": "text/html" });
|
|
366751
366938
|
res.end(`
|
|
366752
366939
|
<html>
|
|
@@ -366758,7 +366945,7 @@ function startCallbackServer(expectedState, port) {
|
|
|
366758
366945
|
</html>
|
|
366759
366946
|
`);
|
|
366760
366947
|
server.close();
|
|
366761
|
-
resolve29({ code, state });
|
|
366948
|
+
resolve29({ code, state, iss });
|
|
366762
366949
|
} catch (error40) {
|
|
366763
366950
|
server.close();
|
|
366764
366951
|
reject(error40);
|
|
@@ -367181,7 +367368,8 @@ var MCPOAuthProvider = class {
|
|
|
367181
367368
|
}
|
|
367182
367369
|
const pkceParams = generatePKCEParams();
|
|
367183
367370
|
const preferredPort = getPortFromUrl(config2.redirectUri);
|
|
367184
|
-
|
|
367371
|
+
debugLogger.debug(`Starting callback server for "${serverName}" (expected issuer: ${config2.issuer || "none"})...`);
|
|
367372
|
+
const callbackServer = startCallbackServer(pkceParams.state, preferredPort, config2.issuer);
|
|
367185
367373
|
const redirectPort = await callbackServer.port;
|
|
367186
367374
|
debugLogger.debug(`Callback server listening on port ${redirectPort}`);
|
|
367187
367375
|
if (!config2.clientId) {
|
|
@@ -368506,7 +368694,7 @@ async function connectToMcpServer(clientVersion, mcpServerName, mcpServerConfig,
|
|
|
368506
368694
|
}
|
|
368507
368695
|
function createUrlTransport(mcpServerName, mcpServerConfig, transportOptions) {
|
|
368508
368696
|
const noProxy = process.env["NO_PROXY"] || process.env["no_proxy"];
|
|
368509
|
-
const agent = new
|
|
368697
|
+
const agent = new import_undici2.EnvHttpProxyAgent({ noProxy });
|
|
368510
368698
|
const baseFetch = transportOptions.fetch ?? globalThis.fetch;
|
|
368511
368699
|
const httpOptions = {
|
|
368512
368700
|
...transportOptions,
|
|
@@ -376683,7 +376871,7 @@ function v43(options, buf, offset) {
|
|
|
376683
376871
|
var v4_default3 = v43;
|
|
376684
376872
|
|
|
376685
376873
|
// packages/core/dist/src/agents/a2a-client-manager.js
|
|
376686
|
-
var
|
|
376874
|
+
var import_undici3 = __toESM(require_undici(), 1);
|
|
376687
376875
|
var A2A_TIMEOUT = 18e5;
|
|
376688
376876
|
var A2AClientManager = class {
|
|
376689
376877
|
config;
|
|
@@ -376700,12 +376888,12 @@ var A2AClientManager = class {
|
|
|
376700
376888
|
bodyTimeout: A2A_TIMEOUT
|
|
376701
376889
|
};
|
|
376702
376890
|
if (proxyUrl) {
|
|
376703
|
-
this.a2aDispatcher = new
|
|
376891
|
+
this.a2aDispatcher = new import_undici3.ProxyAgent({
|
|
376704
376892
|
uri: proxyUrl,
|
|
376705
376893
|
...agentOptions
|
|
376706
376894
|
});
|
|
376707
376895
|
} else {
|
|
376708
|
-
this.a2aDispatcher = new
|
|
376896
|
+
this.a2aDispatcher = new import_undici3.Agent(agentOptions);
|
|
376709
376897
|
}
|
|
376710
376898
|
this.a2aFetch = (input, init2) => fetch(input, { ...init2, dispatcher: this.a2aDispatcher });
|
|
376711
376899
|
}
|
|
@@ -396887,12 +397075,16 @@ export {
|
|
|
396887
397075
|
ShellTool,
|
|
396888
397076
|
FetchError,
|
|
396889
397077
|
PrivateIpError,
|
|
397078
|
+
safeLookup,
|
|
397079
|
+
createSafeConnector,
|
|
397080
|
+
createSafeAgent,
|
|
396890
397081
|
updateGlobalFetchTimeouts,
|
|
396891
397082
|
sanitizeHostname,
|
|
396892
397083
|
isLoopbackHost,
|
|
396893
|
-
isPrivateIp,
|
|
396894
397084
|
isAddressPrivate,
|
|
396895
397085
|
isPrivateIpAsync,
|
|
397086
|
+
isPrivateIp,
|
|
397087
|
+
validateUrlDestination,
|
|
396896
397088
|
createSafeProxyAgent,
|
|
396897
397089
|
fetchWithTimeout,
|
|
396898
397090
|
setGlobalProxy,
|