modelstat 0.12.0 → 0.14.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/dist/cli.mjs +1022 -603
- package/dist/cli.mjs.map +1 -1
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -5153,7 +5153,12 @@ var init_schemas = __esm({
|
|
|
5153
5153
|
correction_count: external_exports.number().int().nonnegative().default(0),
|
|
5154
5154
|
/** 0-1 frustration estimate (re-prompt density + negative mood tags). */
|
|
5155
5155
|
frustration: external_exports.number().min(0).max(1).default(0)
|
|
5156
|
-
}).optional()
|
|
5156
|
+
}).optional(),
|
|
5157
|
+
/** Distilled "what the developer asked for / how they directed the AI" — from
|
|
5158
|
+
* their MESSAGES ONLY (not the assistant's actions), redacted, ≤512. The
|
|
5159
|
+
* source Insights' rule + skill detectors mine, distinct from the outcome
|
|
5160
|
+
* `abstract`. Optional; absent from daemons that predate it. */
|
|
5161
|
+
user_intent: external_exports.string().max(512).optional()
|
|
5157
5162
|
});
|
|
5158
5163
|
ToolAction = external_exports.object({
|
|
5159
5164
|
/** Where it ran: `shell`, `mcp`, `builtin`, `browser`. (tier 0) */
|
|
@@ -10737,10 +10742,10 @@ var require_util = __commonJS({
|
|
|
10737
10742
|
}
|
|
10738
10743
|
return obj;
|
|
10739
10744
|
}
|
|
10740
|
-
function errorRequest(client,
|
|
10745
|
+
function errorRequest(client, request4, err) {
|
|
10741
10746
|
try {
|
|
10742
|
-
|
|
10743
|
-
assert(
|
|
10747
|
+
request4.onError(err);
|
|
10748
|
+
assert(request4.aborted);
|
|
10744
10749
|
} catch (err2) {
|
|
10745
10750
|
client.emit("error", err2);
|
|
10746
10751
|
}
|
|
@@ -11402,7 +11407,7 @@ var require_request = __commonJS({
|
|
|
11402
11407
|
return this;
|
|
11403
11408
|
}
|
|
11404
11409
|
};
|
|
11405
|
-
function processHeader(
|
|
11410
|
+
function processHeader(request4, key, val) {
|
|
11406
11411
|
if (val && (typeof val === "object" && !Array.isArray(val))) {
|
|
11407
11412
|
throw new InvalidArgumentError(`invalid ${key} header`);
|
|
11408
11413
|
} else if (val === void 0) {
|
|
@@ -11442,24 +11447,24 @@ var require_request = __commonJS({
|
|
|
11442
11447
|
val = `${val}`;
|
|
11443
11448
|
}
|
|
11444
11449
|
if (headerName === "host") {
|
|
11445
|
-
if (
|
|
11450
|
+
if (request4.host !== null) {
|
|
11446
11451
|
throw new InvalidArgumentError("duplicate host header");
|
|
11447
11452
|
}
|
|
11448
11453
|
if (typeof val !== "string") {
|
|
11449
11454
|
throw new InvalidArgumentError("invalid host header");
|
|
11450
11455
|
}
|
|
11451
|
-
|
|
11456
|
+
request4.host = val;
|
|
11452
11457
|
} else if (headerName === "content-length") {
|
|
11453
|
-
if (
|
|
11458
|
+
if (request4.contentLength !== null) {
|
|
11454
11459
|
throw new InvalidArgumentError("duplicate content-length header");
|
|
11455
11460
|
}
|
|
11456
|
-
|
|
11457
|
-
if (!Number.isFinite(
|
|
11461
|
+
request4.contentLength = parseInt(val, 10);
|
|
11462
|
+
if (!Number.isFinite(request4.contentLength)) {
|
|
11458
11463
|
throw new InvalidArgumentError("invalid content-length header");
|
|
11459
11464
|
}
|
|
11460
|
-
} else if (
|
|
11461
|
-
|
|
11462
|
-
|
|
11465
|
+
} else if (request4.contentType === null && headerName === "content-type") {
|
|
11466
|
+
request4.contentType = val;
|
|
11467
|
+
request4.headers.push(key, val);
|
|
11463
11468
|
} else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
|
|
11464
11469
|
throw new InvalidArgumentError(`invalid ${headerName} header`);
|
|
11465
11470
|
} else if (headerName === "connection") {
|
|
@@ -11473,13 +11478,13 @@ var require_request = __commonJS({
|
|
|
11473
11478
|
throw new InvalidArgumentError("invalid connection header");
|
|
11474
11479
|
}
|
|
11475
11480
|
if (trimmed === "close") {
|
|
11476
|
-
|
|
11481
|
+
request4.reset = true;
|
|
11477
11482
|
}
|
|
11478
11483
|
}
|
|
11479
11484
|
} else if (headerName === "expect") {
|
|
11480
11485
|
throw new NotSupportedError("expect header not supported");
|
|
11481
11486
|
} else {
|
|
11482
|
-
|
|
11487
|
+
request4.headers.push(key, val);
|
|
11483
11488
|
}
|
|
11484
11489
|
}
|
|
11485
11490
|
module.exports = Request;
|
|
@@ -11727,9 +11732,9 @@ var require_dispatcher_base = __commonJS({
|
|
|
11727
11732
|
}
|
|
11728
11733
|
close(callback) {
|
|
11729
11734
|
if (callback === void 0) {
|
|
11730
|
-
return new Promise((
|
|
11735
|
+
return new Promise((resolve7, reject) => {
|
|
11731
11736
|
this.close((err, data) => {
|
|
11732
|
-
return err ? reject(err) :
|
|
11737
|
+
return err ? reject(err) : resolve7(data);
|
|
11733
11738
|
});
|
|
11734
11739
|
});
|
|
11735
11740
|
}
|
|
@@ -11767,9 +11772,9 @@ var require_dispatcher_base = __commonJS({
|
|
|
11767
11772
|
err = null;
|
|
11768
11773
|
}
|
|
11769
11774
|
if (callback === void 0) {
|
|
11770
|
-
return new Promise((
|
|
11775
|
+
return new Promise((resolve7, reject) => {
|
|
11771
11776
|
this.destroy(err, (err2, data) => {
|
|
11772
|
-
return err2 ? reject(err2) :
|
|
11777
|
+
return err2 ? reject(err2) : resolve7(data);
|
|
11773
11778
|
});
|
|
11774
11779
|
});
|
|
11775
11780
|
}
|
|
@@ -14035,11 +14040,11 @@ var require_util2 = __commonJS({
|
|
|
14035
14040
|
function normalizeBinaryStringToUtf8(value) {
|
|
14036
14041
|
return Buffer.from(value, "binary").toString("utf8");
|
|
14037
14042
|
}
|
|
14038
|
-
function requestCurrentURL(
|
|
14039
|
-
return
|
|
14043
|
+
function requestCurrentURL(request4) {
|
|
14044
|
+
return request4.urlList[request4.urlList.length - 1];
|
|
14040
14045
|
}
|
|
14041
|
-
function requestBadPort(
|
|
14042
|
-
const url = requestCurrentURL(
|
|
14046
|
+
function requestBadPort(request4) {
|
|
14047
|
+
const url = requestCurrentURL(request4);
|
|
14043
14048
|
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
|
|
14044
14049
|
return "blocked";
|
|
14045
14050
|
}
|
|
@@ -14077,10 +14082,10 @@ var require_util2 = __commonJS({
|
|
|
14077
14082
|
}
|
|
14078
14083
|
return policy;
|
|
14079
14084
|
}
|
|
14080
|
-
function setRequestReferrerPolicyOnRedirect(
|
|
14085
|
+
function setRequestReferrerPolicyOnRedirect(request4, actualResponse) {
|
|
14081
14086
|
const policy = parseReferrerPolicy(actualResponse);
|
|
14082
14087
|
if (policy !== "") {
|
|
14083
|
-
|
|
14088
|
+
request4.referrerPolicy = policy;
|
|
14084
14089
|
}
|
|
14085
14090
|
}
|
|
14086
14091
|
function crossOriginResourcePolicyCheck() {
|
|
@@ -14097,33 +14102,33 @@ var require_util2 = __commonJS({
|
|
|
14097
14102
|
header = httpRequest.mode;
|
|
14098
14103
|
httpRequest.headersList.set("sec-fetch-mode", header, true);
|
|
14099
14104
|
}
|
|
14100
|
-
function appendRequestOriginHeader(
|
|
14101
|
-
let serializedOrigin =
|
|
14105
|
+
function appendRequestOriginHeader(request4) {
|
|
14106
|
+
let serializedOrigin = request4.origin;
|
|
14102
14107
|
if (serializedOrigin === "client" || serializedOrigin === void 0) {
|
|
14103
14108
|
return;
|
|
14104
14109
|
}
|
|
14105
|
-
if (
|
|
14106
|
-
|
|
14107
|
-
} else if (
|
|
14108
|
-
switch (
|
|
14110
|
+
if (request4.responseTainting === "cors" || request4.mode === "websocket") {
|
|
14111
|
+
request4.headersList.append("origin", serializedOrigin, true);
|
|
14112
|
+
} else if (request4.method !== "GET" && request4.method !== "HEAD") {
|
|
14113
|
+
switch (request4.referrerPolicy) {
|
|
14109
14114
|
case "no-referrer":
|
|
14110
14115
|
serializedOrigin = null;
|
|
14111
14116
|
break;
|
|
14112
14117
|
case "no-referrer-when-downgrade":
|
|
14113
14118
|
case "strict-origin":
|
|
14114
14119
|
case "strict-origin-when-cross-origin":
|
|
14115
|
-
if (
|
|
14120
|
+
if (request4.origin && urlHasHttpsScheme(request4.origin) && !urlHasHttpsScheme(requestCurrentURL(request4))) {
|
|
14116
14121
|
serializedOrigin = null;
|
|
14117
14122
|
}
|
|
14118
14123
|
break;
|
|
14119
14124
|
case "same-origin":
|
|
14120
|
-
if (!sameOrigin(
|
|
14125
|
+
if (!sameOrigin(request4, requestCurrentURL(request4))) {
|
|
14121
14126
|
serializedOrigin = null;
|
|
14122
14127
|
}
|
|
14123
14128
|
break;
|
|
14124
14129
|
default:
|
|
14125
14130
|
}
|
|
14126
|
-
|
|
14131
|
+
request4.headersList.append("origin", serializedOrigin, true);
|
|
14127
14132
|
}
|
|
14128
14133
|
}
|
|
14129
14134
|
function coarsenTime(timestamp, crossOriginIsolatedCapability) {
|
|
@@ -14177,18 +14182,18 @@ var require_util2 = __commonJS({
|
|
|
14177
14182
|
referrerPolicy: policyContainer.referrerPolicy
|
|
14178
14183
|
};
|
|
14179
14184
|
}
|
|
14180
|
-
function determineRequestsReferrer(
|
|
14181
|
-
const policy =
|
|
14185
|
+
function determineRequestsReferrer(request4) {
|
|
14186
|
+
const policy = request4.referrerPolicy;
|
|
14182
14187
|
assert(policy);
|
|
14183
14188
|
let referrerSource = null;
|
|
14184
|
-
if (
|
|
14189
|
+
if (request4.referrer === "client") {
|
|
14185
14190
|
const globalOrigin = getGlobalOrigin();
|
|
14186
14191
|
if (!globalOrigin || globalOrigin.origin === "null") {
|
|
14187
14192
|
return "no-referrer";
|
|
14188
14193
|
}
|
|
14189
14194
|
referrerSource = new URL(globalOrigin);
|
|
14190
|
-
} else if (webidl.is.URL(
|
|
14191
|
-
referrerSource =
|
|
14195
|
+
} else if (webidl.is.URL(request4.referrer)) {
|
|
14196
|
+
referrerSource = request4.referrer;
|
|
14192
14197
|
}
|
|
14193
14198
|
let referrerURL = stripURLForReferrer(referrerSource);
|
|
14194
14199
|
const referrerOrigin = stripURLForReferrer(referrerSource, true);
|
|
@@ -14206,14 +14211,14 @@ var require_util2 = __commonJS({
|
|
|
14206
14211
|
case "unsafe-url":
|
|
14207
14212
|
return referrerURL;
|
|
14208
14213
|
case "strict-origin": {
|
|
14209
|
-
const currentURL = requestCurrentURL(
|
|
14214
|
+
const currentURL = requestCurrentURL(request4);
|
|
14210
14215
|
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
14211
14216
|
return "no-referrer";
|
|
14212
14217
|
}
|
|
14213
14218
|
return referrerOrigin;
|
|
14214
14219
|
}
|
|
14215
14220
|
case "strict-origin-when-cross-origin": {
|
|
14216
|
-
const currentURL = requestCurrentURL(
|
|
14221
|
+
const currentURL = requestCurrentURL(request4);
|
|
14217
14222
|
if (sameOrigin(referrerURL, currentURL)) {
|
|
14218
14223
|
return referrerURL;
|
|
14219
14224
|
}
|
|
@@ -14223,17 +14228,17 @@ var require_util2 = __commonJS({
|
|
|
14223
14228
|
return referrerOrigin;
|
|
14224
14229
|
}
|
|
14225
14230
|
case "same-origin":
|
|
14226
|
-
if (sameOrigin(
|
|
14231
|
+
if (sameOrigin(request4, referrerURL)) {
|
|
14227
14232
|
return referrerURL;
|
|
14228
14233
|
}
|
|
14229
14234
|
return "no-referrer";
|
|
14230
14235
|
case "origin-when-cross-origin":
|
|
14231
|
-
if (sameOrigin(
|
|
14236
|
+
if (sameOrigin(request4, referrerURL)) {
|
|
14232
14237
|
return referrerURL;
|
|
14233
14238
|
}
|
|
14234
14239
|
return referrerOrigin;
|
|
14235
14240
|
case "no-referrer-when-downgrade": {
|
|
14236
|
-
const currentURL = requestCurrentURL(
|
|
14241
|
+
const currentURL = requestCurrentURL(request4);
|
|
14237
14242
|
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
14238
14243
|
return "no-referrer";
|
|
14239
14244
|
}
|
|
@@ -14300,7 +14305,7 @@ var require_util2 = __commonJS({
|
|
|
14300
14305
|
if (url.protocol === "blob:") return true;
|
|
14301
14306
|
return isOriginPotentiallyTrustworthy(url.origin);
|
|
14302
14307
|
}
|
|
14303
|
-
function tryUpgradeRequestToAPotentiallyTrustworthyURL(
|
|
14308
|
+
function tryUpgradeRequestToAPotentiallyTrustworthyURL(request4) {
|
|
14304
14309
|
}
|
|
14305
14310
|
function sameOrigin(A, B) {
|
|
14306
14311
|
if (A.origin === B.origin && A.origin === "null") {
|
|
@@ -14679,7 +14684,7 @@ var require_util2 = __commonJS({
|
|
|
14679
14684
|
}
|
|
14680
14685
|
return gettingDecodingSplitting(value);
|
|
14681
14686
|
}
|
|
14682
|
-
function hasAuthenticationEntry(
|
|
14687
|
+
function hasAuthenticationEntry(request4) {
|
|
14683
14688
|
return false;
|
|
14684
14689
|
}
|
|
14685
14690
|
function includesCredentials(url) {
|
|
@@ -15246,8 +15251,8 @@ var require_promise = __commonJS({
|
|
|
15246
15251
|
function createDeferredPromise() {
|
|
15247
15252
|
let res;
|
|
15248
15253
|
let rej;
|
|
15249
|
-
const promise = new Promise((
|
|
15250
|
-
res =
|
|
15254
|
+
const promise = new Promise((resolve7, reject) => {
|
|
15255
|
+
res = resolve7;
|
|
15251
15256
|
rej = reject;
|
|
15252
15257
|
});
|
|
15253
15258
|
return { promise, resolve: res, reject: rej };
|
|
@@ -15864,11 +15869,11 @@ var require_client_h1 = __commonJS({
|
|
|
15864
15869
|
if (socket.destroyed) {
|
|
15865
15870
|
return -1;
|
|
15866
15871
|
}
|
|
15867
|
-
const
|
|
15868
|
-
if (!
|
|
15872
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15873
|
+
if (!request4) {
|
|
15869
15874
|
return -1;
|
|
15870
15875
|
}
|
|
15871
|
-
|
|
15876
|
+
request4.onResponseStarted();
|
|
15872
15877
|
return 0;
|
|
15873
15878
|
}
|
|
15874
15879
|
/**
|
|
@@ -15930,9 +15935,9 @@ var require_client_h1 = __commonJS({
|
|
|
15930
15935
|
assert(!socket.destroyed);
|
|
15931
15936
|
assert(!this.paused);
|
|
15932
15937
|
assert((headers.length & 1) === 0);
|
|
15933
|
-
const
|
|
15934
|
-
assert(
|
|
15935
|
-
assert(
|
|
15938
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15939
|
+
assert(request4);
|
|
15940
|
+
assert(request4.upgrade || request4.method === "CONNECT");
|
|
15936
15941
|
this.statusCode = 0;
|
|
15937
15942
|
this.statusText = "";
|
|
15938
15943
|
this.shouldKeepAlive = false;
|
|
@@ -15949,7 +15954,7 @@ var require_client_h1 = __commonJS({
|
|
|
15949
15954
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
15950
15955
|
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
|
|
15951
15956
|
try {
|
|
15952
|
-
|
|
15957
|
+
request4.onUpgrade(statusCode, headers, socket);
|
|
15953
15958
|
} catch (err) {
|
|
15954
15959
|
util2.destroy(socket, err);
|
|
15955
15960
|
}
|
|
@@ -15966,8 +15971,8 @@ var require_client_h1 = __commonJS({
|
|
|
15966
15971
|
if (socket.destroyed) {
|
|
15967
15972
|
return -1;
|
|
15968
15973
|
}
|
|
15969
|
-
const
|
|
15970
|
-
if (!
|
|
15974
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15975
|
+
if (!request4) {
|
|
15971
15976
|
return -1;
|
|
15972
15977
|
}
|
|
15973
15978
|
assert(!this.upgrade);
|
|
@@ -15976,23 +15981,23 @@ var require_client_h1 = __commonJS({
|
|
|
15976
15981
|
util2.destroy(socket, new SocketError("bad response", util2.getSocketInfo(socket)));
|
|
15977
15982
|
return -1;
|
|
15978
15983
|
}
|
|
15979
|
-
if (upgrade && !
|
|
15984
|
+
if (upgrade && !request4.upgrade) {
|
|
15980
15985
|
util2.destroy(socket, new SocketError("bad upgrade", util2.getSocketInfo(socket)));
|
|
15981
15986
|
return -1;
|
|
15982
15987
|
}
|
|
15983
15988
|
assert(this.timeoutType === TIMEOUT_HEADERS);
|
|
15984
15989
|
this.statusCode = statusCode;
|
|
15985
15990
|
this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
|
|
15986
|
-
|
|
15991
|
+
request4.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
|
|
15987
15992
|
if (this.statusCode >= 200) {
|
|
15988
|
-
const bodyTimeout =
|
|
15993
|
+
const bodyTimeout = request4.bodyTimeout != null ? request4.bodyTimeout : client[kBodyTimeout];
|
|
15989
15994
|
this.setTimeout(bodyTimeout, TIMEOUT_BODY);
|
|
15990
15995
|
} else if (this.timeout) {
|
|
15991
15996
|
if (this.timeout.refresh) {
|
|
15992
15997
|
this.timeout.refresh();
|
|
15993
15998
|
}
|
|
15994
15999
|
}
|
|
15995
|
-
if (
|
|
16000
|
+
if (request4.method === "CONNECT") {
|
|
15996
16001
|
assert(client[kRunning] === 1);
|
|
15997
16002
|
this.upgrade = true;
|
|
15998
16003
|
return 2;
|
|
@@ -16023,11 +16028,11 @@ var require_client_h1 = __commonJS({
|
|
|
16023
16028
|
} else {
|
|
16024
16029
|
socket[kReset] = true;
|
|
16025
16030
|
}
|
|
16026
|
-
const pause =
|
|
16027
|
-
if (
|
|
16031
|
+
const pause = request4.onHeaders(statusCode, headers, this.resume, statusText) === false;
|
|
16032
|
+
if (request4.aborted) {
|
|
16028
16033
|
return -1;
|
|
16029
16034
|
}
|
|
16030
|
-
if (
|
|
16035
|
+
if (request4.method === "HEAD") {
|
|
16031
16036
|
return 1;
|
|
16032
16037
|
}
|
|
16033
16038
|
if (statusCode < 200) {
|
|
@@ -16048,8 +16053,8 @@ var require_client_h1 = __commonJS({
|
|
|
16048
16053
|
if (socket.destroyed) {
|
|
16049
16054
|
return -1;
|
|
16050
16055
|
}
|
|
16051
|
-
const
|
|
16052
|
-
assert(
|
|
16056
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16057
|
+
assert(request4);
|
|
16053
16058
|
assert(this.timeoutType === TIMEOUT_BODY);
|
|
16054
16059
|
if (this.timeout) {
|
|
16055
16060
|
if (this.timeout.refresh) {
|
|
@@ -16062,7 +16067,7 @@ var require_client_h1 = __commonJS({
|
|
|
16062
16067
|
return -1;
|
|
16063
16068
|
}
|
|
16064
16069
|
this.bytesRead += buf.length;
|
|
16065
|
-
if (
|
|
16070
|
+
if (request4.onData(buf) === false) {
|
|
16066
16071
|
return constants.ERROR.PAUSED;
|
|
16067
16072
|
}
|
|
16068
16073
|
return 0;
|
|
@@ -16080,8 +16085,8 @@ var require_client_h1 = __commonJS({
|
|
|
16080
16085
|
}
|
|
16081
16086
|
assert(statusCode >= 100);
|
|
16082
16087
|
assert((this.headers.length & 1) === 0);
|
|
16083
|
-
const
|
|
16084
|
-
assert(
|
|
16088
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16089
|
+
assert(request4);
|
|
16085
16090
|
this.statusCode = 0;
|
|
16086
16091
|
this.statusText = "";
|
|
16087
16092
|
this.bytesRead = 0;
|
|
@@ -16093,11 +16098,11 @@ var require_client_h1 = __commonJS({
|
|
|
16093
16098
|
if (statusCode < 200) {
|
|
16094
16099
|
return 0;
|
|
16095
16100
|
}
|
|
16096
|
-
if (
|
|
16101
|
+
if (request4.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
|
|
16097
16102
|
util2.destroy(socket, new ResponseContentLengthMismatchError());
|
|
16098
16103
|
return -1;
|
|
16099
16104
|
}
|
|
16100
|
-
|
|
16105
|
+
request4.onComplete(headers);
|
|
16101
16106
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16102
16107
|
if (socket[kWriting]) {
|
|
16103
16108
|
assert(client[kRunning] === 0);
|
|
@@ -16162,8 +16167,8 @@ var require_client_h1 = __commonJS({
|
|
|
16162
16167
|
return {
|
|
16163
16168
|
version: "h1",
|
|
16164
16169
|
defaultPipelining: 1,
|
|
16165
|
-
write(
|
|
16166
|
-
return writeH1(client,
|
|
16170
|
+
write(request4) {
|
|
16171
|
+
return writeH1(client, request4);
|
|
16167
16172
|
},
|
|
16168
16173
|
resume() {
|
|
16169
16174
|
resumeH1(client);
|
|
@@ -16190,18 +16195,18 @@ var require_client_h1 = __commonJS({
|
|
|
16190
16195
|
* @param {import('../core/request.js')} request
|
|
16191
16196
|
* @returns {boolean}
|
|
16192
16197
|
*/
|
|
16193
|
-
busy(
|
|
16198
|
+
busy(request4) {
|
|
16194
16199
|
if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
|
|
16195
16200
|
return true;
|
|
16196
16201
|
}
|
|
16197
|
-
if (
|
|
16198
|
-
if (client[kRunning] > 0 && !
|
|
16202
|
+
if (request4) {
|
|
16203
|
+
if (client[kRunning] > 0 && !request4.idempotent) {
|
|
16199
16204
|
return true;
|
|
16200
16205
|
}
|
|
16201
|
-
if (client[kRunning] > 0 && (
|
|
16206
|
+
if (client[kRunning] > 0 && (request4.upgrade || request4.method === "CONNECT")) {
|
|
16202
16207
|
return true;
|
|
16203
16208
|
}
|
|
16204
|
-
if (client[kRunning] > 0 && util2.bodyLength(
|
|
16209
|
+
if (client[kRunning] > 0 && util2.bodyLength(request4.body) !== 0 && (util2.isStream(request4.body) || util2.isAsyncIterable(request4.body) || util2.isFormDataLike(request4.body))) {
|
|
16205
16210
|
return true;
|
|
16206
16211
|
}
|
|
16207
16212
|
}
|
|
@@ -16247,13 +16252,13 @@ var require_client_h1 = __commonJS({
|
|
|
16247
16252
|
assert(client[kPending] === 0);
|
|
16248
16253
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
16249
16254
|
for (let i = 0; i < requests.length; i++) {
|
|
16250
|
-
const
|
|
16251
|
-
util2.errorRequest(client,
|
|
16255
|
+
const request4 = requests[i];
|
|
16256
|
+
util2.errorRequest(client, request4, err);
|
|
16252
16257
|
}
|
|
16253
16258
|
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
|
|
16254
|
-
const
|
|
16259
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16255
16260
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16256
|
-
util2.errorRequest(client,
|
|
16261
|
+
util2.errorRequest(client, request4, err);
|
|
16257
16262
|
}
|
|
16258
16263
|
client[kPendingIdx] = client[kRunningIdx];
|
|
16259
16264
|
assert(client[kRunning] === 0);
|
|
@@ -16281,8 +16286,8 @@ var require_client_h1 = __commonJS({
|
|
|
16281
16286
|
}
|
|
16282
16287
|
} else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
|
|
16283
16288
|
if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
|
|
16284
|
-
const
|
|
16285
|
-
const headersTimeout =
|
|
16289
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16290
|
+
const headersTimeout = request4.headersTimeout != null ? request4.headersTimeout : client[kHeadersTimeout];
|
|
16286
16291
|
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
|
|
16287
16292
|
}
|
|
16288
16293
|
}
|
|
@@ -16291,21 +16296,21 @@ var require_client_h1 = __commonJS({
|
|
|
16291
16296
|
function shouldSendContentLength(method) {
|
|
16292
16297
|
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
|
|
16293
16298
|
}
|
|
16294
|
-
function writeH1(client,
|
|
16295
|
-
const { method, path, host, upgrade, blocking, reset } =
|
|
16296
|
-
let { body, headers, contentLength } =
|
|
16299
|
+
function writeH1(client, request4) {
|
|
16300
|
+
const { method, path, host, upgrade, blocking, reset } = request4;
|
|
16301
|
+
let { body, headers, contentLength } = request4;
|
|
16297
16302
|
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
|
|
16298
16303
|
if (util2.isFormDataLike(body)) {
|
|
16299
16304
|
if (!extractBody) {
|
|
16300
16305
|
extractBody = require_body().extractBody;
|
|
16301
16306
|
}
|
|
16302
16307
|
const [bodyStream, contentType] = extractBody(body);
|
|
16303
|
-
if (
|
|
16308
|
+
if (request4.contentType == null) {
|
|
16304
16309
|
headers.push("content-type", contentType);
|
|
16305
16310
|
}
|
|
16306
16311
|
body = bodyStream.stream;
|
|
16307
16312
|
contentLength = bodyStream.length;
|
|
16308
|
-
} else if (util2.isBlobLike(body) &&
|
|
16313
|
+
} else if (util2.isBlobLike(body) && request4.contentType == null && body.type) {
|
|
16309
16314
|
headers.push("content-type", body.type);
|
|
16310
16315
|
}
|
|
16311
16316
|
if (body && typeof body.read === "function") {
|
|
@@ -16314,33 +16319,33 @@ var require_client_h1 = __commonJS({
|
|
|
16314
16319
|
const bodyLength = util2.bodyLength(body);
|
|
16315
16320
|
contentLength = bodyLength ?? contentLength;
|
|
16316
16321
|
if (contentLength === null) {
|
|
16317
|
-
contentLength =
|
|
16322
|
+
contentLength = request4.contentLength;
|
|
16318
16323
|
}
|
|
16319
16324
|
if (contentLength === 0 && !expectsPayload) {
|
|
16320
16325
|
contentLength = null;
|
|
16321
16326
|
}
|
|
16322
|
-
if (shouldSendContentLength(method) && contentLength > 0 &&
|
|
16327
|
+
if (shouldSendContentLength(method) && contentLength > 0 && request4.contentLength !== null && request4.contentLength !== contentLength) {
|
|
16323
16328
|
if (client[kStrictContentLength]) {
|
|
16324
|
-
util2.errorRequest(client,
|
|
16329
|
+
util2.errorRequest(client, request4, new RequestContentLengthMismatchError());
|
|
16325
16330
|
return false;
|
|
16326
16331
|
}
|
|
16327
16332
|
process.emitWarning(new RequestContentLengthMismatchError());
|
|
16328
16333
|
}
|
|
16329
16334
|
const socket = client[kSocket];
|
|
16330
16335
|
const abort = (err) => {
|
|
16331
|
-
if (
|
|
16336
|
+
if (request4.aborted || request4.completed) {
|
|
16332
16337
|
return;
|
|
16333
16338
|
}
|
|
16334
|
-
util2.errorRequest(client,
|
|
16339
|
+
util2.errorRequest(client, request4, err || new RequestAbortedError());
|
|
16335
16340
|
util2.destroy(body);
|
|
16336
16341
|
util2.destroy(socket, new InformationalError("aborted"));
|
|
16337
16342
|
};
|
|
16338
16343
|
try {
|
|
16339
|
-
|
|
16344
|
+
request4.onConnect(abort);
|
|
16340
16345
|
} catch (err) {
|
|
16341
|
-
util2.errorRequest(client,
|
|
16346
|
+
util2.errorRequest(client, request4, err);
|
|
16342
16347
|
}
|
|
16343
|
-
if (
|
|
16348
|
+
if (request4.aborted) {
|
|
16344
16349
|
return false;
|
|
16345
16350
|
}
|
|
16346
16351
|
if (method === "HEAD") {
|
|
@@ -16359,7 +16364,7 @@ var require_client_h1 = __commonJS({
|
|
|
16359
16364
|
socket[kBlocking] = true;
|
|
16360
16365
|
}
|
|
16361
16366
|
if (socket.setTypeOfService) {
|
|
16362
|
-
socket.setTypeOfService(
|
|
16367
|
+
socket.setTypeOfService(request4.typeOfService);
|
|
16363
16368
|
}
|
|
16364
16369
|
let header = `${method} ${path} HTTP/1.1\r
|
|
16365
16370
|
`;
|
|
@@ -16394,31 +16399,31 @@ upgrade: ${upgrade}\r
|
|
|
16394
16399
|
}
|
|
16395
16400
|
}
|
|
16396
16401
|
if (channels.sendHeaders.hasSubscribers) {
|
|
16397
|
-
channels.sendHeaders.publish({ request:
|
|
16402
|
+
channels.sendHeaders.publish({ request: request4, headers: header, socket });
|
|
16398
16403
|
}
|
|
16399
16404
|
if (!body || bodyLength === 0) {
|
|
16400
|
-
writeBuffer(abort, null, client,
|
|
16405
|
+
writeBuffer(abort, null, client, request4, socket, contentLength, header, expectsPayload);
|
|
16401
16406
|
} else if (util2.isBuffer(body)) {
|
|
16402
|
-
writeBuffer(abort, body, client,
|
|
16407
|
+
writeBuffer(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16403
16408
|
} else if (util2.isBlobLike(body)) {
|
|
16404
16409
|
if (typeof body.stream === "function") {
|
|
16405
|
-
writeIterable(abort, body.stream(), client,
|
|
16410
|
+
writeIterable(abort, body.stream(), client, request4, socket, contentLength, header, expectsPayload);
|
|
16406
16411
|
} else {
|
|
16407
|
-
writeBlob(abort, body, client,
|
|
16412
|
+
writeBlob(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16408
16413
|
}
|
|
16409
16414
|
} else if (util2.isStream(body)) {
|
|
16410
|
-
writeStream(abort, body, client,
|
|
16415
|
+
writeStream(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16411
16416
|
} else if (util2.isIterable(body)) {
|
|
16412
|
-
writeIterable(abort, body, client,
|
|
16417
|
+
writeIterable(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16413
16418
|
} else {
|
|
16414
16419
|
assert(false);
|
|
16415
16420
|
}
|
|
16416
16421
|
return true;
|
|
16417
16422
|
}
|
|
16418
|
-
function writeStream(abort, body, client,
|
|
16423
|
+
function writeStream(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16419
16424
|
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
|
|
16420
16425
|
let finished = false;
|
|
16421
|
-
const writer = new AsyncWriter({ abort, socket, request:
|
|
16426
|
+
const writer = new AsyncWriter({ abort, socket, request: request4, contentLength, client, expectsPayload, header });
|
|
16422
16427
|
const onData = function(chunk) {
|
|
16423
16428
|
if (finished) {
|
|
16424
16429
|
return;
|
|
@@ -16484,7 +16489,7 @@ upgrade: ${upgrade}\r
|
|
|
16484
16489
|
setImmediate(onClose);
|
|
16485
16490
|
}
|
|
16486
16491
|
}
|
|
16487
|
-
function writeBuffer(abort, body, client,
|
|
16492
|
+
function writeBuffer(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16488
16493
|
try {
|
|
16489
16494
|
if (!body) {
|
|
16490
16495
|
if (contentLength === 0) {
|
|
@@ -16504,18 +16509,18 @@ upgrade: ${upgrade}\r
|
|
|
16504
16509
|
`, "latin1");
|
|
16505
16510
|
socket.write(body);
|
|
16506
16511
|
socket.uncork();
|
|
16507
|
-
|
|
16508
|
-
if (!expectsPayload &&
|
|
16512
|
+
request4.onBodySent(body);
|
|
16513
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16509
16514
|
socket[kReset] = true;
|
|
16510
16515
|
}
|
|
16511
16516
|
}
|
|
16512
|
-
|
|
16517
|
+
request4.onRequestSent();
|
|
16513
16518
|
client[kResume]();
|
|
16514
16519
|
} catch (err) {
|
|
16515
16520
|
abort(err);
|
|
16516
16521
|
}
|
|
16517
16522
|
}
|
|
16518
|
-
async function writeBlob(abort, body, client,
|
|
16523
|
+
async function writeBlob(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16519
16524
|
assert(contentLength === body.size, "blob body must have content length");
|
|
16520
16525
|
try {
|
|
16521
16526
|
if (contentLength != null && contentLength !== body.size) {
|
|
@@ -16528,9 +16533,9 @@ upgrade: ${upgrade}\r
|
|
|
16528
16533
|
`, "latin1");
|
|
16529
16534
|
socket.write(buffer);
|
|
16530
16535
|
socket.uncork();
|
|
16531
|
-
|
|
16532
|
-
|
|
16533
|
-
if (!expectsPayload &&
|
|
16536
|
+
request4.onBodySent(buffer);
|
|
16537
|
+
request4.onRequestSent();
|
|
16538
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16534
16539
|
socket[kReset] = true;
|
|
16535
16540
|
}
|
|
16536
16541
|
client[kResume]();
|
|
@@ -16538,7 +16543,7 @@ upgrade: ${upgrade}\r
|
|
|
16538
16543
|
abort(err);
|
|
16539
16544
|
}
|
|
16540
16545
|
}
|
|
16541
|
-
async function writeIterable(abort, body, client,
|
|
16546
|
+
async function writeIterable(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16542
16547
|
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
|
|
16543
16548
|
let callback = null;
|
|
16544
16549
|
function onDrain() {
|
|
@@ -16548,16 +16553,16 @@ upgrade: ${upgrade}\r
|
|
|
16548
16553
|
cb();
|
|
16549
16554
|
}
|
|
16550
16555
|
}
|
|
16551
|
-
const waitForDrain = () => new Promise((
|
|
16556
|
+
const waitForDrain = () => new Promise((resolve7, reject) => {
|
|
16552
16557
|
assert(callback === null);
|
|
16553
16558
|
if (socket[kError]) {
|
|
16554
16559
|
reject(socket[kError]);
|
|
16555
16560
|
} else {
|
|
16556
|
-
callback =
|
|
16561
|
+
callback = resolve7;
|
|
16557
16562
|
}
|
|
16558
16563
|
});
|
|
16559
16564
|
socket.on("close", onDrain).on("drain", onDrain);
|
|
16560
|
-
const writer = new AsyncWriter({ abort, socket, request:
|
|
16565
|
+
const writer = new AsyncWriter({ abort, socket, request: request4, contentLength, client, expectsPayload, header });
|
|
16561
16566
|
try {
|
|
16562
16567
|
for await (const chunk of body) {
|
|
16563
16568
|
if (socket[kError]) {
|
|
@@ -16586,9 +16591,9 @@ upgrade: ${upgrade}\r
|
|
|
16586
16591
|
* @param {boolean} arg.expectsPayload
|
|
16587
16592
|
* @param {string} arg.header
|
|
16588
16593
|
*/
|
|
16589
|
-
constructor({ abort, socket, request:
|
|
16594
|
+
constructor({ abort, socket, request: request4, contentLength, client, expectsPayload, header }) {
|
|
16590
16595
|
this.socket = socket;
|
|
16591
|
-
this.request =
|
|
16596
|
+
this.request = request4;
|
|
16592
16597
|
this.contentLength = contentLength;
|
|
16593
16598
|
this.client = client;
|
|
16594
16599
|
this.bytesWritten = 0;
|
|
@@ -16602,7 +16607,7 @@ upgrade: ${upgrade}\r
|
|
|
16602
16607
|
* @returns
|
|
16603
16608
|
*/
|
|
16604
16609
|
write(chunk) {
|
|
16605
|
-
const { socket, request:
|
|
16610
|
+
const { socket, request: request4, contentLength, client, bytesWritten, expectsPayload, header } = this;
|
|
16606
16611
|
if (socket[kError]) {
|
|
16607
16612
|
throw socket[kError];
|
|
16608
16613
|
}
|
|
@@ -16621,7 +16626,7 @@ upgrade: ${upgrade}\r
|
|
|
16621
16626
|
}
|
|
16622
16627
|
socket.cork();
|
|
16623
16628
|
if (bytesWritten === 0) {
|
|
16624
|
-
if (!expectsPayload &&
|
|
16629
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16625
16630
|
socket[kReset] = true;
|
|
16626
16631
|
}
|
|
16627
16632
|
if (contentLength === null) {
|
|
@@ -16641,7 +16646,7 @@ ${len.toString(16)}\r
|
|
|
16641
16646
|
this.bytesWritten += len;
|
|
16642
16647
|
const ret = socket.write(chunk);
|
|
16643
16648
|
socket.uncork();
|
|
16644
|
-
|
|
16649
|
+
request4.onBodySent(chunk);
|
|
16645
16650
|
if (!ret) {
|
|
16646
16651
|
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
|
|
16647
16652
|
if (socket[kParser].timeout.refresh) {
|
|
@@ -16655,8 +16660,8 @@ ${len.toString(16)}\r
|
|
|
16655
16660
|
* @returns {void}
|
|
16656
16661
|
*/
|
|
16657
16662
|
end() {
|
|
16658
|
-
const { socket, contentLength, client, bytesWritten, expectsPayload, header, request:
|
|
16659
|
-
|
|
16663
|
+
const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request4 } = this;
|
|
16664
|
+
request4.onRequestSent();
|
|
16660
16665
|
socket[kWriting] = false;
|
|
16661
16666
|
if (socket[kError]) {
|
|
16662
16667
|
throw socket[kError];
|
|
@@ -16833,8 +16838,8 @@ var require_client_h2 = __commonJS({
|
|
|
16833
16838
|
* @param {import('../core/request.js')} request
|
|
16834
16839
|
* @returns {boolean}
|
|
16835
16840
|
*/
|
|
16836
|
-
write(
|
|
16837
|
-
return writeH2(client,
|
|
16841
|
+
write(request4) {
|
|
16842
|
+
return writeH2(client, request4);
|
|
16838
16843
|
},
|
|
16839
16844
|
/**
|
|
16840
16845
|
* @returns {void}
|
|
@@ -16863,14 +16868,14 @@ var require_client_h2 = __commonJS({
|
|
|
16863
16868
|
* @param {import('../core/request.js')} request
|
|
16864
16869
|
* @returns {boolean}
|
|
16865
16870
|
*/
|
|
16866
|
-
busy(
|
|
16867
|
-
if (
|
|
16871
|
+
busy(request4) {
|
|
16872
|
+
if (request4 != null) {
|
|
16868
16873
|
if (client[kRunning] > 0) {
|
|
16869
|
-
if (
|
|
16870
|
-
if ((
|
|
16871
|
-
if (util2.bodyLength(
|
|
16874
|
+
if (request4.idempotent === false) return true;
|
|
16875
|
+
if ((request4.upgrade === "websocket" || request4.method === "CONNECT") && session[kRemoteSettings] === false) return true;
|
|
16876
|
+
if (util2.bodyLength(request4.body) !== 0 && (util2.isStream(request4.body) || util2.isAsyncIterable(request4.body) || util2.isFormDataLike(request4.body))) return true;
|
|
16872
16877
|
} else {
|
|
16873
|
-
return (
|
|
16878
|
+
return (request4.upgrade === "websocket" || request4.method === "CONNECT") && session[kRemoteSettings] === false;
|
|
16874
16879
|
}
|
|
16875
16880
|
}
|
|
16876
16881
|
return false;
|
|
@@ -16955,9 +16960,9 @@ var require_client_h2 = __commonJS({
|
|
|
16955
16960
|
this[kHTTP2Session] = null;
|
|
16956
16961
|
util2.destroy(this[kSocket], err);
|
|
16957
16962
|
if (client[kRunningIdx] < client[kQueue].length) {
|
|
16958
|
-
const
|
|
16963
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16959
16964
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16960
|
-
util2.errorRequest(client,
|
|
16965
|
+
util2.errorRequest(client, request4, err);
|
|
16961
16966
|
client[kPendingIdx] = client[kRunningIdx];
|
|
16962
16967
|
}
|
|
16963
16968
|
assert(client[kRunning] === 0);
|
|
@@ -16979,8 +16984,8 @@ var require_client_h2 = __commonJS({
|
|
|
16979
16984
|
assert(client[kPending] === 0);
|
|
16980
16985
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
16981
16986
|
for (let i = 0; i < requests.length; i++) {
|
|
16982
|
-
const
|
|
16983
|
-
util2.errorRequest(client,
|
|
16987
|
+
const request4 = requests[i];
|
|
16988
|
+
util2.errorRequest(client, request4, err);
|
|
16984
16989
|
}
|
|
16985
16990
|
}
|
|
16986
16991
|
}
|
|
@@ -17011,13 +17016,13 @@ var require_client_h2 = __commonJS({
|
|
|
17011
17016
|
function shouldSendContentLength(method) {
|
|
17012
17017
|
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
|
|
17013
17018
|
}
|
|
17014
|
-
function writeH2(client,
|
|
17015
|
-
const requestTimeout =
|
|
17019
|
+
function writeH2(client, request4) {
|
|
17020
|
+
const requestTimeout = request4.bodyTimeout ?? client[kBodyTimeout];
|
|
17016
17021
|
const session = client[kHTTP2Session];
|
|
17017
|
-
const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } =
|
|
17018
|
-
let { body } =
|
|
17022
|
+
const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request4;
|
|
17023
|
+
let { body } = request4;
|
|
17019
17024
|
if (upgrade != null && upgrade !== "websocket") {
|
|
17020
|
-
util2.errorRequest(client,
|
|
17025
|
+
util2.errorRequest(client, request4, new InvalidArgumentError(`Custom upgrade "${upgrade}" not supported over HTTP/2`));
|
|
17021
17026
|
return false;
|
|
17022
17027
|
}
|
|
17023
17028
|
const headers = {};
|
|
@@ -17051,11 +17056,11 @@ var require_client_h2 = __commonJS({
|
|
|
17051
17056
|
headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname3}${port ? `:${port}` : ""}`;
|
|
17052
17057
|
headers[HTTP2_HEADER_METHOD] = method;
|
|
17053
17058
|
const abort = (err) => {
|
|
17054
|
-
if (
|
|
17059
|
+
if (request4.aborted || request4.completed) {
|
|
17055
17060
|
return;
|
|
17056
17061
|
}
|
|
17057
17062
|
err = err || new RequestAbortedError();
|
|
17058
|
-
util2.errorRequest(client,
|
|
17063
|
+
util2.errorRequest(client, request4, err);
|
|
17059
17064
|
if (stream != null) {
|
|
17060
17065
|
stream.removeAllListeners("data");
|
|
17061
17066
|
stream.close();
|
|
@@ -17065,18 +17070,18 @@ var require_client_h2 = __commonJS({
|
|
|
17065
17070
|
util2.destroy(body, err);
|
|
17066
17071
|
};
|
|
17067
17072
|
try {
|
|
17068
|
-
|
|
17073
|
+
request4.onConnect(abort);
|
|
17069
17074
|
} catch (err) {
|
|
17070
|
-
util2.errorRequest(client,
|
|
17075
|
+
util2.errorRequest(client, request4, err);
|
|
17071
17076
|
}
|
|
17072
|
-
if (
|
|
17077
|
+
if (request4.aborted) {
|
|
17073
17078
|
return false;
|
|
17074
17079
|
}
|
|
17075
17080
|
if (upgrade || method === "CONNECT") {
|
|
17076
17081
|
session.ref();
|
|
17077
17082
|
if (upgrade === "websocket") {
|
|
17078
17083
|
if (session[kEnableConnectProtocol] === false) {
|
|
17079
|
-
util2.errorRequest(client,
|
|
17084
|
+
util2.errorRequest(client, request4, new InformationalError("HTTP/2: Extended CONNECT protocol not supported by server"));
|
|
17080
17085
|
session.unref();
|
|
17081
17086
|
return false;
|
|
17082
17087
|
}
|
|
@@ -17092,7 +17097,7 @@ var require_client_h2 = __commonJS({
|
|
|
17092
17097
|
stream[kHTTP2Stream] = true;
|
|
17093
17098
|
stream.once("response", (headers2, _flags) => {
|
|
17094
17099
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17095
|
-
|
|
17100
|
+
request4.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
17096
17101
|
++session[kOpenStreams];
|
|
17097
17102
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17098
17103
|
});
|
|
@@ -17112,7 +17117,7 @@ var require_client_h2 = __commonJS({
|
|
|
17112
17117
|
stream[kHTTP2Stream] = true;
|
|
17113
17118
|
stream.on("response", (headers2) => {
|
|
17114
17119
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17115
|
-
|
|
17120
|
+
request4.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
17116
17121
|
++session[kOpenStreams];
|
|
17117
17122
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17118
17123
|
});
|
|
@@ -17138,14 +17143,14 @@ var require_client_h2 = __commonJS({
|
|
|
17138
17143
|
contentLength = bodyStream.length;
|
|
17139
17144
|
}
|
|
17140
17145
|
if (contentLength == null) {
|
|
17141
|
-
contentLength =
|
|
17146
|
+
contentLength = request4.contentLength;
|
|
17142
17147
|
}
|
|
17143
17148
|
if (!expectsPayload) {
|
|
17144
17149
|
contentLength = null;
|
|
17145
17150
|
}
|
|
17146
|
-
if (shouldSendContentLength(method) && contentLength > 0 &&
|
|
17151
|
+
if (shouldSendContentLength(method) && contentLength > 0 && request4.contentLength != null && request4.contentLength !== contentLength) {
|
|
17147
17152
|
if (client[kStrictContentLength]) {
|
|
17148
|
-
util2.errorRequest(client,
|
|
17153
|
+
util2.errorRequest(client, request4, new RequestContentLengthMismatchError());
|
|
17149
17154
|
return false;
|
|
17150
17155
|
}
|
|
17151
17156
|
process.emitWarning(new RequestContentLengthMismatchError());
|
|
@@ -17161,7 +17166,7 @@ var require_client_h2 = __commonJS({
|
|
|
17161
17166
|
header += `${key}: ${headers[key]}\r
|
|
17162
17167
|
`;
|
|
17163
17168
|
}
|
|
17164
|
-
channels.sendHeaders.publish({ request:
|
|
17169
|
+
channels.sendHeaders.publish({ request: request4, headers: header, socket: session[kSocket] });
|
|
17165
17170
|
}
|
|
17166
17171
|
const shouldEndStream = method === "GET" || method === "HEAD" || body === null;
|
|
17167
17172
|
if (expectContinue) {
|
|
@@ -17182,20 +17187,20 @@ var require_client_h2 = __commonJS({
|
|
|
17182
17187
|
let responseReceived = false;
|
|
17183
17188
|
stream.once("response", (headers2) => {
|
|
17184
17189
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17185
|
-
|
|
17190
|
+
request4.onResponseStarted();
|
|
17186
17191
|
responseReceived = true;
|
|
17187
|
-
if (
|
|
17192
|
+
if (request4.aborted) {
|
|
17188
17193
|
stream.removeAllListeners("data");
|
|
17189
17194
|
return;
|
|
17190
17195
|
}
|
|
17191
|
-
if (
|
|
17196
|
+
if (request4.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
|
|
17192
17197
|
stream.pause();
|
|
17193
17198
|
}
|
|
17194
17199
|
stream.on("data", (chunk) => {
|
|
17195
|
-
if (
|
|
17200
|
+
if (request4.aborted || request4.completed) {
|
|
17196
17201
|
return;
|
|
17197
17202
|
}
|
|
17198
|
-
if (
|
|
17203
|
+
if (request4.onData(chunk) === false) {
|
|
17199
17204
|
stream.pause();
|
|
17200
17205
|
}
|
|
17201
17206
|
});
|
|
@@ -17203,8 +17208,8 @@ var require_client_h2 = __commonJS({
|
|
|
17203
17208
|
stream.once("end", () => {
|
|
17204
17209
|
stream.removeAllListeners("data");
|
|
17205
17210
|
if (responseReceived) {
|
|
17206
|
-
if (!
|
|
17207
|
-
|
|
17211
|
+
if (!request4.aborted && !request4.completed) {
|
|
17212
|
+
request4.onComplete({});
|
|
17208
17213
|
}
|
|
17209
17214
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17210
17215
|
client[kResume]();
|
|
@@ -17243,11 +17248,11 @@ var require_client_h2 = __commonJS({
|
|
|
17243
17248
|
abort(err);
|
|
17244
17249
|
});
|
|
17245
17250
|
stream.once("trailers", (trailers) => {
|
|
17246
|
-
if (
|
|
17251
|
+
if (request4.aborted || request4.completed) {
|
|
17247
17252
|
return;
|
|
17248
17253
|
}
|
|
17249
17254
|
stream.removeAllListeners("data");
|
|
17250
|
-
|
|
17255
|
+
request4.onComplete(trailers);
|
|
17251
17256
|
});
|
|
17252
17257
|
return true;
|
|
17253
17258
|
function writeBodyH2() {
|
|
@@ -17257,7 +17262,7 @@ var require_client_h2 = __commonJS({
|
|
|
17257
17262
|
stream,
|
|
17258
17263
|
null,
|
|
17259
17264
|
client,
|
|
17260
|
-
|
|
17265
|
+
request4,
|
|
17261
17266
|
client[kSocket],
|
|
17262
17267
|
contentLength,
|
|
17263
17268
|
expectsPayload
|
|
@@ -17268,7 +17273,7 @@ var require_client_h2 = __commonJS({
|
|
|
17268
17273
|
stream,
|
|
17269
17274
|
body,
|
|
17270
17275
|
client,
|
|
17271
|
-
|
|
17276
|
+
request4,
|
|
17272
17277
|
client[kSocket],
|
|
17273
17278
|
contentLength,
|
|
17274
17279
|
expectsPayload
|
|
@@ -17280,7 +17285,7 @@ var require_client_h2 = __commonJS({
|
|
|
17280
17285
|
stream,
|
|
17281
17286
|
body.stream(),
|
|
17282
17287
|
client,
|
|
17283
|
-
|
|
17288
|
+
request4,
|
|
17284
17289
|
client[kSocket],
|
|
17285
17290
|
contentLength,
|
|
17286
17291
|
expectsPayload
|
|
@@ -17291,7 +17296,7 @@ var require_client_h2 = __commonJS({
|
|
|
17291
17296
|
stream,
|
|
17292
17297
|
body,
|
|
17293
17298
|
client,
|
|
17294
|
-
|
|
17299
|
+
request4,
|
|
17295
17300
|
client[kSocket],
|
|
17296
17301
|
contentLength,
|
|
17297
17302
|
expectsPayload
|
|
@@ -17305,7 +17310,7 @@ var require_client_h2 = __commonJS({
|
|
|
17305
17310
|
stream,
|
|
17306
17311
|
body,
|
|
17307
17312
|
client,
|
|
17308
|
-
|
|
17313
|
+
request4,
|
|
17309
17314
|
contentLength
|
|
17310
17315
|
);
|
|
17311
17316
|
} else if (util2.isIterable(body)) {
|
|
@@ -17314,7 +17319,7 @@ var require_client_h2 = __commonJS({
|
|
|
17314
17319
|
stream,
|
|
17315
17320
|
body,
|
|
17316
17321
|
client,
|
|
17317
|
-
|
|
17322
|
+
request4,
|
|
17318
17323
|
client[kSocket],
|
|
17319
17324
|
contentLength,
|
|
17320
17325
|
expectsPayload
|
|
@@ -17324,7 +17329,7 @@ var require_client_h2 = __commonJS({
|
|
|
17324
17329
|
}
|
|
17325
17330
|
}
|
|
17326
17331
|
}
|
|
17327
|
-
function writeBuffer(abort, h2stream, body, client,
|
|
17332
|
+
function writeBuffer(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17328
17333
|
try {
|
|
17329
17334
|
if (body != null && util2.isBuffer(body)) {
|
|
17330
17335
|
assert(contentLength === body.byteLength, "buffer body must have content length");
|
|
@@ -17332,18 +17337,18 @@ var require_client_h2 = __commonJS({
|
|
|
17332
17337
|
h2stream.write(body);
|
|
17333
17338
|
h2stream.uncork();
|
|
17334
17339
|
h2stream.end();
|
|
17335
|
-
|
|
17340
|
+
request4.onBodySent(body);
|
|
17336
17341
|
}
|
|
17337
17342
|
if (!expectsPayload) {
|
|
17338
17343
|
socket[kReset] = true;
|
|
17339
17344
|
}
|
|
17340
|
-
|
|
17345
|
+
request4.onRequestSent();
|
|
17341
17346
|
client[kResume]();
|
|
17342
17347
|
} catch (error) {
|
|
17343
17348
|
abort(error);
|
|
17344
17349
|
}
|
|
17345
17350
|
}
|
|
17346
|
-
function writeStream(abort, socket, expectsPayload, h2stream, body, client,
|
|
17351
|
+
function writeStream(abort, socket, expectsPayload, h2stream, body, client, request4, contentLength) {
|
|
17347
17352
|
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
|
|
17348
17353
|
const pipe = pipeline2(
|
|
17349
17354
|
body,
|
|
@@ -17354,7 +17359,7 @@ var require_client_h2 = __commonJS({
|
|
|
17354
17359
|
abort(err);
|
|
17355
17360
|
} else {
|
|
17356
17361
|
util2.removeAllListeners(pipe);
|
|
17357
|
-
|
|
17362
|
+
request4.onRequestSent();
|
|
17358
17363
|
if (!expectsPayload) {
|
|
17359
17364
|
socket[kReset] = true;
|
|
17360
17365
|
}
|
|
@@ -17364,10 +17369,10 @@ var require_client_h2 = __commonJS({
|
|
|
17364
17369
|
);
|
|
17365
17370
|
util2.addListener(pipe, "data", onPipeData);
|
|
17366
17371
|
function onPipeData(chunk) {
|
|
17367
|
-
|
|
17372
|
+
request4.onBodySent(chunk);
|
|
17368
17373
|
}
|
|
17369
17374
|
}
|
|
17370
|
-
async function writeBlob(abort, h2stream, body, client,
|
|
17375
|
+
async function writeBlob(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17371
17376
|
assert(contentLength === body.size, "blob body must have content length");
|
|
17372
17377
|
try {
|
|
17373
17378
|
if (contentLength != null && contentLength !== body.size) {
|
|
@@ -17378,8 +17383,8 @@ var require_client_h2 = __commonJS({
|
|
|
17378
17383
|
h2stream.write(buffer);
|
|
17379
17384
|
h2stream.uncork();
|
|
17380
17385
|
h2stream.end();
|
|
17381
|
-
|
|
17382
|
-
|
|
17386
|
+
request4.onBodySent(buffer);
|
|
17387
|
+
request4.onRequestSent();
|
|
17383
17388
|
if (!expectsPayload) {
|
|
17384
17389
|
socket[kReset] = true;
|
|
17385
17390
|
}
|
|
@@ -17388,7 +17393,7 @@ var require_client_h2 = __commonJS({
|
|
|
17388
17393
|
abort(err);
|
|
17389
17394
|
}
|
|
17390
17395
|
}
|
|
17391
|
-
async function writeIterable(abort, h2stream, body, client,
|
|
17396
|
+
async function writeIterable(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17392
17397
|
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
|
|
17393
17398
|
let callback = null;
|
|
17394
17399
|
function onDrain() {
|
|
@@ -17398,12 +17403,12 @@ var require_client_h2 = __commonJS({
|
|
|
17398
17403
|
cb();
|
|
17399
17404
|
}
|
|
17400
17405
|
}
|
|
17401
|
-
const waitForDrain = () => new Promise((
|
|
17406
|
+
const waitForDrain = () => new Promise((resolve7, reject) => {
|
|
17402
17407
|
assert(callback === null);
|
|
17403
17408
|
if (socket[kError]) {
|
|
17404
17409
|
reject(socket[kError]);
|
|
17405
17410
|
} else {
|
|
17406
|
-
callback =
|
|
17411
|
+
callback = resolve7;
|
|
17407
17412
|
}
|
|
17408
17413
|
});
|
|
17409
17414
|
h2stream.on("close", onDrain).on("drain", onDrain);
|
|
@@ -17413,13 +17418,13 @@ var require_client_h2 = __commonJS({
|
|
|
17413
17418
|
throw socket[kError];
|
|
17414
17419
|
}
|
|
17415
17420
|
const res = h2stream.write(chunk);
|
|
17416
|
-
|
|
17421
|
+
request4.onBodySent(chunk);
|
|
17417
17422
|
if (!res) {
|
|
17418
17423
|
await waitForDrain();
|
|
17419
17424
|
}
|
|
17420
17425
|
}
|
|
17421
17426
|
h2stream.end();
|
|
17422
|
-
|
|
17427
|
+
request4.onRequestSent();
|
|
17423
17428
|
if (!expectsPayload) {
|
|
17424
17429
|
socket[kReset] = true;
|
|
17425
17430
|
}
|
|
@@ -17699,10 +17704,10 @@ var require_client = __commonJS({
|
|
|
17699
17704
|
this.once("connect", cb);
|
|
17700
17705
|
}
|
|
17701
17706
|
[kDispatch](opts, handler) {
|
|
17702
|
-
const
|
|
17703
|
-
this[kQueue].push(
|
|
17707
|
+
const request4 = new Request(this[kUrl].origin, opts, handler);
|
|
17708
|
+
this[kQueue].push(request4);
|
|
17704
17709
|
if (this[kResuming]) {
|
|
17705
|
-
} else if (util2.bodyLength(
|
|
17710
|
+
} else if (util2.bodyLength(request4.body) == null && util2.isIterable(request4.body)) {
|
|
17706
17711
|
this[kResuming] = 1;
|
|
17707
17712
|
queueMicrotask(() => resume(this));
|
|
17708
17713
|
} else {
|
|
@@ -17714,27 +17719,27 @@ var require_client = __commonJS({
|
|
|
17714
17719
|
return this[kNeedDrain] < 2;
|
|
17715
17720
|
}
|
|
17716
17721
|
[kClose]() {
|
|
17717
|
-
return new Promise((
|
|
17722
|
+
return new Promise((resolve7) => {
|
|
17718
17723
|
if (this[kSize]) {
|
|
17719
|
-
this[kClosedResolve] =
|
|
17724
|
+
this[kClosedResolve] = resolve7;
|
|
17720
17725
|
} else {
|
|
17721
|
-
|
|
17726
|
+
resolve7(null);
|
|
17722
17727
|
}
|
|
17723
17728
|
});
|
|
17724
17729
|
}
|
|
17725
17730
|
[kDestroy](err) {
|
|
17726
|
-
return new Promise((
|
|
17731
|
+
return new Promise((resolve7) => {
|
|
17727
17732
|
const requests = this[kQueue].splice(this[kPendingIdx]);
|
|
17728
17733
|
for (let i = 0; i < requests.length; i++) {
|
|
17729
|
-
const
|
|
17730
|
-
util2.errorRequest(this,
|
|
17734
|
+
const request4 = requests[i];
|
|
17735
|
+
util2.errorRequest(this, request4, err);
|
|
17731
17736
|
}
|
|
17732
17737
|
const callback = () => {
|
|
17733
17738
|
if (this[kClosedResolve]) {
|
|
17734
17739
|
this[kClosedResolve]();
|
|
17735
17740
|
this[kClosedResolve] = null;
|
|
17736
17741
|
}
|
|
17737
|
-
|
|
17742
|
+
resolve7(null);
|
|
17738
17743
|
};
|
|
17739
17744
|
if (this[kHTTPContext]) {
|
|
17740
17745
|
this[kHTTPContext].destroy(err, callback);
|
|
@@ -17751,8 +17756,8 @@ var require_client = __commonJS({
|
|
|
17751
17756
|
assert(client[kPendingIdx] === client[kRunningIdx]);
|
|
17752
17757
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
17753
17758
|
for (let i = 0; i < requests.length; i++) {
|
|
17754
|
-
const
|
|
17755
|
-
util2.errorRequest(client,
|
|
17759
|
+
const request4 = requests[i];
|
|
17760
|
+
util2.errorRequest(client, request4, err);
|
|
17756
17761
|
}
|
|
17757
17762
|
assert(client[kSize] === 0);
|
|
17758
17763
|
}
|
|
@@ -17862,8 +17867,8 @@ var require_client = __commonJS({
|
|
|
17862
17867
|
if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
|
|
17863
17868
|
assert(client[kRunning] === 0);
|
|
17864
17869
|
while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
|
|
17865
|
-
const
|
|
17866
|
-
util2.errorRequest(client,
|
|
17870
|
+
const request4 = client[kQueue][client[kPendingIdx]++];
|
|
17871
|
+
util2.errorRequest(client, request4, err);
|
|
17867
17872
|
}
|
|
17868
17873
|
} else {
|
|
17869
17874
|
onError(client, err);
|
|
@@ -17918,15 +17923,15 @@ var require_client = __commonJS({
|
|
|
17918
17923
|
if (client[kRunning] >= (getPipelining(client) || 1)) {
|
|
17919
17924
|
return;
|
|
17920
17925
|
}
|
|
17921
|
-
const
|
|
17922
|
-
if (
|
|
17926
|
+
const request4 = client[kQueue][client[kPendingIdx]];
|
|
17927
|
+
if (request4 === null) {
|
|
17923
17928
|
return;
|
|
17924
17929
|
}
|
|
17925
|
-
if (client[kUrl].protocol === "https:" && client[kServerName] !==
|
|
17930
|
+
if (client[kUrl].protocol === "https:" && client[kServerName] !== request4.servername) {
|
|
17926
17931
|
if (client[kRunning] > 0) {
|
|
17927
17932
|
return;
|
|
17928
17933
|
}
|
|
17929
|
-
client[kServerName] =
|
|
17934
|
+
client[kServerName] = request4.servername;
|
|
17930
17935
|
client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => {
|
|
17931
17936
|
client[kHTTPContext] = null;
|
|
17932
17937
|
resume(client);
|
|
@@ -17942,10 +17947,10 @@ var require_client = __commonJS({
|
|
|
17942
17947
|
if (client[kHTTPContext].destroyed) {
|
|
17943
17948
|
return;
|
|
17944
17949
|
}
|
|
17945
|
-
if (client[kHTTPContext].busy(
|
|
17950
|
+
if (client[kHTTPContext].busy(request4)) {
|
|
17946
17951
|
return;
|
|
17947
17952
|
}
|
|
17948
|
-
if (!
|
|
17953
|
+
if (!request4.aborted && client[kHTTPContext].write(request4)) {
|
|
17949
17954
|
client[kPendingIdx]++;
|
|
17950
17955
|
} else {
|
|
17951
17956
|
client[kQueue].splice(client[kPendingIdx], 1);
|
|
@@ -18139,8 +18144,8 @@ var require_pool_base = __commonJS({
|
|
|
18139
18144
|
}
|
|
18140
18145
|
return Promise.all(closeAll);
|
|
18141
18146
|
} else {
|
|
18142
|
-
return new Promise((
|
|
18143
|
-
this[kClosedResolve] =
|
|
18147
|
+
return new Promise((resolve7) => {
|
|
18148
|
+
this[kClosedResolve] = resolve7;
|
|
18144
18149
|
});
|
|
18145
18150
|
}
|
|
18146
18151
|
}
|
|
@@ -18977,13 +18982,13 @@ var require_socks5_client = __commonJS({
|
|
|
18977
18982
|
}
|
|
18978
18983
|
debug("starting handshake with", this.authMethods.length, "auth methods");
|
|
18979
18984
|
this.state = STATES.HANDSHAKING;
|
|
18980
|
-
const
|
|
18981
|
-
|
|
18982
|
-
|
|
18985
|
+
const request4 = Buffer2.alloc(2 + this.authMethods.length);
|
|
18986
|
+
request4[0] = SOCKS_VERSION;
|
|
18987
|
+
request4[1] = this.authMethods.length;
|
|
18983
18988
|
this.authMethods.forEach((method, i) => {
|
|
18984
|
-
|
|
18989
|
+
request4[2 + i] = method;
|
|
18985
18990
|
});
|
|
18986
|
-
this.socket.write(
|
|
18991
|
+
this.socket.write(request4);
|
|
18987
18992
|
}
|
|
18988
18993
|
/**
|
|
18989
18994
|
* Handle handshake response from server
|
|
@@ -19025,13 +19030,13 @@ var require_socks5_client = __commonJS({
|
|
|
19025
19030
|
if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {
|
|
19026
19031
|
throw new InvalidArgumentError("Username or password too long");
|
|
19027
19032
|
}
|
|
19028
|
-
const
|
|
19029
|
-
|
|
19030
|
-
|
|
19031
|
-
usernameBuffer.copy(
|
|
19032
|
-
|
|
19033
|
-
passwordBuffer.copy(
|
|
19034
|
-
this.socket.write(
|
|
19033
|
+
const request4 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length);
|
|
19034
|
+
request4[0] = 1;
|
|
19035
|
+
request4[1] = usernameBuffer.length;
|
|
19036
|
+
usernameBuffer.copy(request4, 2);
|
|
19037
|
+
request4[2 + usernameBuffer.length] = passwordBuffer.length;
|
|
19038
|
+
passwordBuffer.copy(request4, 3 + usernameBuffer.length);
|
|
19039
|
+
this.socket.write(request4);
|
|
19035
19040
|
}
|
|
19036
19041
|
/**
|
|
19037
19042
|
* Handle authentication response
|
|
@@ -19063,22 +19068,22 @@ var require_socks5_client = __commonJS({
|
|
|
19063
19068
|
}
|
|
19064
19069
|
debug("connecting to", address, port);
|
|
19065
19070
|
this.state = STATES.CONNECTING;
|
|
19066
|
-
const
|
|
19067
|
-
this.socket.write(
|
|
19071
|
+
const request4 = this.buildConnectRequest(COMMANDS.CONNECT, address, port);
|
|
19072
|
+
this.socket.write(request4);
|
|
19068
19073
|
}
|
|
19069
19074
|
/**
|
|
19070
19075
|
* Build a SOCKS5 request
|
|
19071
19076
|
*/
|
|
19072
19077
|
buildConnectRequest(command, address, port) {
|
|
19073
19078
|
const { type: addressType, buffer: addressBuffer } = parseAddress(address);
|
|
19074
|
-
const
|
|
19075
|
-
|
|
19076
|
-
|
|
19077
|
-
|
|
19078
|
-
|
|
19079
|
-
addressBuffer.copy(
|
|
19080
|
-
|
|
19081
|
-
return
|
|
19079
|
+
const request4 = Buffer2.alloc(4 + addressBuffer.length + 2);
|
|
19080
|
+
request4[0] = SOCKS_VERSION;
|
|
19081
|
+
request4[1] = command;
|
|
19082
|
+
request4[2] = 0;
|
|
19083
|
+
request4[3] = addressType;
|
|
19084
|
+
addressBuffer.copy(request4, 4);
|
|
19085
|
+
request4.writeUInt16BE(port, 4 + addressBuffer.length);
|
|
19086
|
+
return request4;
|
|
19082
19087
|
}
|
|
19083
19088
|
/**
|
|
19084
19089
|
* Handle CONNECT response
|
|
@@ -19232,10 +19237,10 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19232
19237
|
const proxyHost = this[kProxyUrl].hostname;
|
|
19233
19238
|
const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
|
|
19234
19239
|
debug("creating SOCKS5 connection to", proxyHost, proxyPort);
|
|
19235
|
-
const socket = await new Promise((
|
|
19240
|
+
const socket = await new Promise((resolve7, reject) => {
|
|
19236
19241
|
const onConnect = () => {
|
|
19237
19242
|
socket2.removeListener("error", onError);
|
|
19238
|
-
|
|
19243
|
+
resolve7(socket2);
|
|
19239
19244
|
};
|
|
19240
19245
|
const onError = (err) => {
|
|
19241
19246
|
socket2.removeListener("connect", onConnect);
|
|
@@ -19254,14 +19259,14 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19254
19259
|
socket.destroy();
|
|
19255
19260
|
});
|
|
19256
19261
|
await socks5Client.handshake();
|
|
19257
|
-
await new Promise((
|
|
19262
|
+
await new Promise((resolve7, reject) => {
|
|
19258
19263
|
const timeout = setTimeout(() => {
|
|
19259
19264
|
reject(new Error("SOCKS5 authentication timeout"));
|
|
19260
19265
|
}, 5e3);
|
|
19261
19266
|
const onAuthenticated = () => {
|
|
19262
19267
|
clearTimeout(timeout);
|
|
19263
19268
|
socks5Client.removeListener("error", onError);
|
|
19264
|
-
|
|
19269
|
+
resolve7();
|
|
19265
19270
|
};
|
|
19266
19271
|
const onError = (err) => {
|
|
19267
19272
|
clearTimeout(timeout);
|
|
@@ -19270,14 +19275,14 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19270
19275
|
};
|
|
19271
19276
|
if (socks5Client.state === "authenticated") {
|
|
19272
19277
|
clearTimeout(timeout);
|
|
19273
|
-
|
|
19278
|
+
resolve7();
|
|
19274
19279
|
} else {
|
|
19275
19280
|
socks5Client.once("authenticated", onAuthenticated);
|
|
19276
19281
|
socks5Client.once("error", onError);
|
|
19277
19282
|
}
|
|
19278
19283
|
});
|
|
19279
19284
|
await socks5Client.connect(targetHost, targetPort);
|
|
19280
|
-
await new Promise((
|
|
19285
|
+
await new Promise((resolve7, reject) => {
|
|
19281
19286
|
const timeout = setTimeout(() => {
|
|
19282
19287
|
reject(new Error("SOCKS5 connection timeout"));
|
|
19283
19288
|
}, 5e3);
|
|
@@ -19285,7 +19290,7 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19285
19290
|
debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
|
|
19286
19291
|
clearTimeout(timeout);
|
|
19287
19292
|
socks5Client.removeListener("error", onError);
|
|
19288
|
-
|
|
19293
|
+
resolve7();
|
|
19289
19294
|
};
|
|
19290
19295
|
const onError = (err) => {
|
|
19291
19296
|
clearTimeout(timeout);
|
|
@@ -19326,8 +19331,8 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19326
19331
|
servername: targetHost,
|
|
19327
19332
|
...connectOpts.tls || {}
|
|
19328
19333
|
});
|
|
19329
|
-
await new Promise((
|
|
19330
|
-
finalSocket.once("secureConnect",
|
|
19334
|
+
await new Promise((resolve7, reject) => {
|
|
19335
|
+
finalSocket.once("secureConnect", resolve7);
|
|
19331
19336
|
finalSocket.once("error", reject);
|
|
19332
19337
|
});
|
|
19333
19338
|
}
|
|
@@ -20352,7 +20357,7 @@ var require_readable = __commonJS({
|
|
|
20352
20357
|
if (this._readableState.closeEmitted) {
|
|
20353
20358
|
return Promise.resolve(null);
|
|
20354
20359
|
}
|
|
20355
|
-
return new Promise((
|
|
20360
|
+
return new Promise((resolve7, reject) => {
|
|
20356
20361
|
if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
|
|
20357
20362
|
this.destroy(new AbortError());
|
|
20358
20363
|
}
|
|
@@ -20366,11 +20371,11 @@ var require_readable = __commonJS({
|
|
|
20366
20371
|
if (signal.aborted) {
|
|
20367
20372
|
reject(signal.reason ?? new AbortError());
|
|
20368
20373
|
} else {
|
|
20369
|
-
|
|
20374
|
+
resolve7(null);
|
|
20370
20375
|
}
|
|
20371
20376
|
});
|
|
20372
20377
|
} else {
|
|
20373
|
-
this.on("close",
|
|
20378
|
+
this.on("close", resolve7);
|
|
20374
20379
|
}
|
|
20375
20380
|
this.on("error", noop).on("data", () => {
|
|
20376
20381
|
if (this[kBytesRead] > limit) {
|
|
@@ -20398,7 +20403,7 @@ var require_readable = __commonJS({
|
|
|
20398
20403
|
}
|
|
20399
20404
|
function consume(stream, type) {
|
|
20400
20405
|
assert(!stream[kConsume]);
|
|
20401
|
-
return new Promise((
|
|
20406
|
+
return new Promise((resolve7, reject) => {
|
|
20402
20407
|
if (isUnusable(stream)) {
|
|
20403
20408
|
const rState = stream._readableState;
|
|
20404
20409
|
if (rState.destroyed && rState.closeEmitted === false) {
|
|
@@ -20413,7 +20418,7 @@ var require_readable = __commonJS({
|
|
|
20413
20418
|
stream[kConsume] = {
|
|
20414
20419
|
type,
|
|
20415
20420
|
stream,
|
|
20416
|
-
resolve:
|
|
20421
|
+
resolve: resolve7,
|
|
20417
20422
|
reject,
|
|
20418
20423
|
length: 0,
|
|
20419
20424
|
body: []
|
|
@@ -20487,18 +20492,18 @@ var require_readable = __commonJS({
|
|
|
20487
20492
|
return buffer;
|
|
20488
20493
|
}
|
|
20489
20494
|
function consumeEnd(consume2, encoding) {
|
|
20490
|
-
const { type, body, resolve:
|
|
20495
|
+
const { type, body, resolve: resolve7, stream, length } = consume2;
|
|
20491
20496
|
try {
|
|
20492
20497
|
if (type === "text") {
|
|
20493
|
-
|
|
20498
|
+
resolve7(chunksDecode(body, length, encoding));
|
|
20494
20499
|
} else if (type === "json") {
|
|
20495
|
-
|
|
20500
|
+
resolve7(JSON.parse(chunksDecode(body, length, encoding)));
|
|
20496
20501
|
} else if (type === "arrayBuffer") {
|
|
20497
|
-
|
|
20502
|
+
resolve7(chunksConcat(body, length).buffer);
|
|
20498
20503
|
} else if (type === "blob") {
|
|
20499
|
-
|
|
20504
|
+
resolve7(new Blob(body, { type: stream[kContentType] }));
|
|
20500
20505
|
} else if (type === "bytes") {
|
|
20501
|
-
|
|
20506
|
+
resolve7(chunksConcat(body, length));
|
|
20502
20507
|
}
|
|
20503
20508
|
consumeFinish(consume2);
|
|
20504
20509
|
} catch (err) {
|
|
@@ -20686,11 +20691,11 @@ var require_api_request = __commonJS({
|
|
|
20686
20691
|
}
|
|
20687
20692
|
}
|
|
20688
20693
|
};
|
|
20689
|
-
function
|
|
20694
|
+
function request4(opts, callback) {
|
|
20690
20695
|
if (callback === void 0) {
|
|
20691
|
-
return new Promise((
|
|
20692
|
-
|
|
20693
|
-
return err ? reject(err) :
|
|
20696
|
+
return new Promise((resolve7, reject) => {
|
|
20697
|
+
request4.call(this, opts, (err, data) => {
|
|
20698
|
+
return err ? reject(err) : resolve7(data);
|
|
20694
20699
|
});
|
|
20695
20700
|
});
|
|
20696
20701
|
}
|
|
@@ -20705,7 +20710,7 @@ var require_api_request = __commonJS({
|
|
|
20705
20710
|
queueMicrotask(() => callback(err, { opaque }));
|
|
20706
20711
|
}
|
|
20707
20712
|
}
|
|
20708
|
-
module.exports =
|
|
20713
|
+
module.exports = request4;
|
|
20709
20714
|
module.exports.RequestHandler = RequestHandler;
|
|
20710
20715
|
}
|
|
20711
20716
|
});
|
|
@@ -20902,9 +20907,9 @@ var require_api_stream = __commonJS({
|
|
|
20902
20907
|
};
|
|
20903
20908
|
function stream(opts, factory, callback) {
|
|
20904
20909
|
if (callback === void 0) {
|
|
20905
|
-
return new Promise((
|
|
20910
|
+
return new Promise((resolve7, reject) => {
|
|
20906
20911
|
stream.call(this, opts, factory, (err, data) => {
|
|
20907
|
-
return err ? reject(err) :
|
|
20912
|
+
return err ? reject(err) : resolve7(data);
|
|
20908
20913
|
});
|
|
20909
20914
|
});
|
|
20910
20915
|
}
|
|
@@ -21192,9 +21197,9 @@ var require_api_upgrade = __commonJS({
|
|
|
21192
21197
|
};
|
|
21193
21198
|
function upgrade(opts, callback) {
|
|
21194
21199
|
if (callback === void 0) {
|
|
21195
|
-
return new Promise((
|
|
21200
|
+
return new Promise((resolve7, reject) => {
|
|
21196
21201
|
upgrade.call(this, opts, (err, data) => {
|
|
21197
|
-
return err ? reject(err) :
|
|
21202
|
+
return err ? reject(err) : resolve7(data);
|
|
21198
21203
|
});
|
|
21199
21204
|
});
|
|
21200
21205
|
}
|
|
@@ -21287,9 +21292,9 @@ var require_api_connect = __commonJS({
|
|
|
21287
21292
|
};
|
|
21288
21293
|
function connect(opts, callback) {
|
|
21289
21294
|
if (callback === void 0) {
|
|
21290
|
-
return new Promise((
|
|
21295
|
+
return new Promise((resolve7, reject) => {
|
|
21291
21296
|
connect.call(this, opts, (err, data) => {
|
|
21292
|
-
return err ? reject(err) :
|
|
21297
|
+
return err ? reject(err) : resolve7(data);
|
|
21293
21298
|
});
|
|
21294
21299
|
});
|
|
21295
21300
|
}
|
|
@@ -22562,8 +22567,8 @@ var require_snapshot_utils = __commonJS({
|
|
|
22562
22567
|
var require_snapshot_recorder = __commonJS({
|
|
22563
22568
|
"../../node_modules/.pnpm/undici@7.25.0/node_modules/undici/lib/mock/snapshot-recorder.js"(exports, module) {
|
|
22564
22569
|
"use strict";
|
|
22565
|
-
var { writeFile:
|
|
22566
|
-
var { dirname: dirname9, resolve:
|
|
22570
|
+
var { writeFile: writeFile3, readFile: readFile2, mkdir: mkdir4 } = __require("fs/promises");
|
|
22571
|
+
var { dirname: dirname9, resolve: resolve7 } = __require("path");
|
|
22567
22572
|
var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = __require("timers");
|
|
22568
22573
|
var { InvalidArgumentError, UndiciError } = require_errors();
|
|
22569
22574
|
var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
|
|
@@ -22688,8 +22693,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22688
22693
|
if (this.isUrlExcluded(requestOpts)) {
|
|
22689
22694
|
return;
|
|
22690
22695
|
}
|
|
22691
|
-
const
|
|
22692
|
-
const hash = createRequestHash(
|
|
22696
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22697
|
+
const hash = createRequestHash(request4);
|
|
22693
22698
|
const normalizedHeaders = normalizeHeaders(response.headers);
|
|
22694
22699
|
const responseData = {
|
|
22695
22700
|
statusCode: response.statusCode,
|
|
@@ -22707,7 +22712,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22707
22712
|
existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
22708
22713
|
} else {
|
|
22709
22714
|
this.#snapshots.set(hash, {
|
|
22710
|
-
request:
|
|
22715
|
+
request: request4,
|
|
22711
22716
|
responses: [responseData],
|
|
22712
22717
|
// Always store as array for consistency
|
|
22713
22718
|
callCount: 0,
|
|
@@ -22741,8 +22746,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22741
22746
|
if (this.isUrlExcluded(requestOpts)) {
|
|
22742
22747
|
return void 0;
|
|
22743
22748
|
}
|
|
22744
|
-
const
|
|
22745
|
-
const hash = createRequestHash(
|
|
22749
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22750
|
+
const hash = createRequestHash(request4);
|
|
22746
22751
|
const snapshot = this.#snapshots.get(hash);
|
|
22747
22752
|
if (!snapshot) return void 0;
|
|
22748
22753
|
const currentCallCount = snapshot.callCount || 0;
|
|
@@ -22764,7 +22769,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22764
22769
|
throw new InvalidArgumentError("Snapshot path is required");
|
|
22765
22770
|
}
|
|
22766
22771
|
try {
|
|
22767
|
-
const data = await readFile2(
|
|
22772
|
+
const data = await readFile2(resolve7(path), "utf8");
|
|
22768
22773
|
const parsed = JSON.parse(data);
|
|
22769
22774
|
if (Array.isArray(parsed)) {
|
|
22770
22775
|
this.#snapshots.clear();
|
|
@@ -22793,13 +22798,13 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22793
22798
|
if (!path) {
|
|
22794
22799
|
throw new InvalidArgumentError("Snapshot path is required");
|
|
22795
22800
|
}
|
|
22796
|
-
const resolvedPath =
|
|
22797
|
-
await
|
|
22801
|
+
const resolvedPath = resolve7(path);
|
|
22802
|
+
await mkdir4(dirname9(resolvedPath), { recursive: true });
|
|
22798
22803
|
const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
|
|
22799
22804
|
hash,
|
|
22800
22805
|
snapshot
|
|
22801
22806
|
}));
|
|
22802
|
-
await
|
|
22807
|
+
await writeFile3(resolvedPath, JSON.stringify(data, null, 2), { flush: true });
|
|
22803
22808
|
}
|
|
22804
22809
|
/**
|
|
22805
22810
|
* Clears all recorded snapshots
|
|
@@ -22837,8 +22842,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22837
22842
|
* @returns {boolean} - True if snapshot was deleted, false if not found
|
|
22838
22843
|
*/
|
|
22839
22844
|
deleteSnapshot(requestOpts) {
|
|
22840
|
-
const
|
|
22841
|
-
const hash = createRequestHash(
|
|
22845
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22846
|
+
const hash = createRequestHash(request4);
|
|
22842
22847
|
return this.#snapshots.delete(hash);
|
|
22843
22848
|
}
|
|
22844
22849
|
/**
|
|
@@ -22847,8 +22852,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22847
22852
|
* @returns {SnapshotInfo|null} - Snapshot information or null if not found
|
|
22848
22853
|
*/
|
|
22849
22854
|
getSnapshotInfo(requestOpts) {
|
|
22850
|
-
const
|
|
22851
|
-
const hash = createRequestHash(
|
|
22855
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22856
|
+
const hash = createRequestHash(request4);
|
|
22852
22857
|
const snapshot = this.#snapshots.get(hash);
|
|
22853
22858
|
if (!snapshot) return null;
|
|
22854
22859
|
return {
|
|
@@ -23139,16 +23144,16 @@ var require_snapshot_agent = __commonJS({
|
|
|
23139
23144
|
*/
|
|
23140
23145
|
#setupMockInterceptors() {
|
|
23141
23146
|
for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {
|
|
23142
|
-
const { request:
|
|
23143
|
-
const url = new URL(
|
|
23147
|
+
const { request: request4, responses, response } = snapshot;
|
|
23148
|
+
const url = new URL(request4.url);
|
|
23144
23149
|
const mockPool = this.get(url.origin);
|
|
23145
23150
|
const responseData = responses ? responses[0] : response;
|
|
23146
23151
|
if (!responseData) continue;
|
|
23147
23152
|
mockPool.intercept({
|
|
23148
23153
|
path: url.pathname + url.search,
|
|
23149
|
-
method:
|
|
23150
|
-
headers:
|
|
23151
|
-
body:
|
|
23154
|
+
method: request4.method,
|
|
23155
|
+
headers: request4.headers,
|
|
23156
|
+
body: request4.body
|
|
23152
23157
|
}).reply(responseData.statusCode, responseData.body, {
|
|
23153
23158
|
headers: responseData.headers,
|
|
23154
23159
|
trailers: responseData.trailers
|
|
@@ -27865,7 +27870,7 @@ var require_request2 = __commonJS({
|
|
|
27865
27870
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
27866
27871
|
input = webidl.converters.RequestInfo(input);
|
|
27867
27872
|
init = webidl.converters.RequestInit(init);
|
|
27868
|
-
let
|
|
27873
|
+
let request4 = null;
|
|
27869
27874
|
let fallbackMode = null;
|
|
27870
27875
|
const baseUrl = environmentSettingsObject.settingsObject.baseUrl;
|
|
27871
27876
|
let signal = null;
|
|
@@ -27882,18 +27887,18 @@ var require_request2 = __commonJS({
|
|
|
27882
27887
|
"Request cannot be constructed from a URL that includes credentials: " + input
|
|
27883
27888
|
);
|
|
27884
27889
|
}
|
|
27885
|
-
|
|
27890
|
+
request4 = makeRequest({ urlList: [parsedURL] });
|
|
27886
27891
|
fallbackMode = "cors";
|
|
27887
27892
|
} else {
|
|
27888
27893
|
assert(webidl.is.Request(input));
|
|
27889
|
-
|
|
27894
|
+
request4 = input.#state;
|
|
27890
27895
|
signal = input.#signal;
|
|
27891
27896
|
this.#dispatcher = init.dispatcher || input.#dispatcher;
|
|
27892
27897
|
}
|
|
27893
27898
|
const origin = environmentSettingsObject.settingsObject.origin;
|
|
27894
27899
|
let window2 = "client";
|
|
27895
|
-
if (
|
|
27896
|
-
window2 =
|
|
27900
|
+
if (request4.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request4.window, origin)) {
|
|
27901
|
+
window2 = request4.window;
|
|
27897
27902
|
}
|
|
27898
27903
|
if (init.window != null) {
|
|
27899
27904
|
throw new TypeError(`'window' option '${window2}' must be null`);
|
|
@@ -27901,66 +27906,66 @@ var require_request2 = __commonJS({
|
|
|
27901
27906
|
if ("window" in init) {
|
|
27902
27907
|
window2 = "no-window";
|
|
27903
27908
|
}
|
|
27904
|
-
|
|
27909
|
+
request4 = makeRequest({
|
|
27905
27910
|
// URL request’s URL.
|
|
27906
27911
|
// undici implementation note: this is set as the first item in request's urlList in makeRequest
|
|
27907
27912
|
// method request’s method.
|
|
27908
|
-
method:
|
|
27913
|
+
method: request4.method,
|
|
27909
27914
|
// header list A copy of request’s header list.
|
|
27910
27915
|
// undici implementation note: headersList is cloned in makeRequest
|
|
27911
|
-
headersList:
|
|
27916
|
+
headersList: request4.headersList,
|
|
27912
27917
|
// unsafe-request flag Set.
|
|
27913
|
-
unsafeRequest:
|
|
27918
|
+
unsafeRequest: request4.unsafeRequest,
|
|
27914
27919
|
// client This’s relevant settings object.
|
|
27915
27920
|
client: environmentSettingsObject.settingsObject,
|
|
27916
27921
|
// window window.
|
|
27917
27922
|
window: window2,
|
|
27918
27923
|
// priority request’s priority.
|
|
27919
|
-
priority:
|
|
27924
|
+
priority: request4.priority,
|
|
27920
27925
|
// origin request’s origin. The propagation of the origin is only significant for navigation requests
|
|
27921
27926
|
// being handled by a service worker. In this scenario a request can have an origin that is different
|
|
27922
27927
|
// from the current client.
|
|
27923
|
-
origin:
|
|
27928
|
+
origin: request4.origin,
|
|
27924
27929
|
// referrer request’s referrer.
|
|
27925
|
-
referrer:
|
|
27930
|
+
referrer: request4.referrer,
|
|
27926
27931
|
// referrer policy request’s referrer policy.
|
|
27927
|
-
referrerPolicy:
|
|
27932
|
+
referrerPolicy: request4.referrerPolicy,
|
|
27928
27933
|
// mode request’s mode.
|
|
27929
|
-
mode:
|
|
27934
|
+
mode: request4.mode,
|
|
27930
27935
|
// credentials mode request’s credentials mode.
|
|
27931
|
-
credentials:
|
|
27936
|
+
credentials: request4.credentials,
|
|
27932
27937
|
// cache mode request’s cache mode.
|
|
27933
|
-
cache:
|
|
27938
|
+
cache: request4.cache,
|
|
27934
27939
|
// redirect mode request’s redirect mode.
|
|
27935
|
-
redirect:
|
|
27940
|
+
redirect: request4.redirect,
|
|
27936
27941
|
// integrity metadata request’s integrity metadata.
|
|
27937
|
-
integrity:
|
|
27942
|
+
integrity: request4.integrity,
|
|
27938
27943
|
// keepalive request’s keepalive.
|
|
27939
|
-
keepalive:
|
|
27944
|
+
keepalive: request4.keepalive,
|
|
27940
27945
|
// reload-navigation flag request’s reload-navigation flag.
|
|
27941
|
-
reloadNavigation:
|
|
27946
|
+
reloadNavigation: request4.reloadNavigation,
|
|
27942
27947
|
// history-navigation flag request’s history-navigation flag.
|
|
27943
|
-
historyNavigation:
|
|
27948
|
+
historyNavigation: request4.historyNavigation,
|
|
27944
27949
|
// URL list A clone of request’s URL list.
|
|
27945
|
-
urlList: [...
|
|
27950
|
+
urlList: [...request4.urlList]
|
|
27946
27951
|
});
|
|
27947
27952
|
const initHasKey = Object.keys(init).length !== 0;
|
|
27948
27953
|
if (initHasKey) {
|
|
27949
|
-
if (
|
|
27950
|
-
|
|
27954
|
+
if (request4.mode === "navigate") {
|
|
27955
|
+
request4.mode = "same-origin";
|
|
27951
27956
|
}
|
|
27952
|
-
|
|
27953
|
-
|
|
27954
|
-
|
|
27955
|
-
|
|
27956
|
-
|
|
27957
|
-
|
|
27958
|
-
|
|
27957
|
+
request4.reloadNavigation = false;
|
|
27958
|
+
request4.historyNavigation = false;
|
|
27959
|
+
request4.origin = "client";
|
|
27960
|
+
request4.referrer = "client";
|
|
27961
|
+
request4.referrerPolicy = "";
|
|
27962
|
+
request4.url = request4.urlList[request4.urlList.length - 1];
|
|
27963
|
+
request4.urlList = [request4.url];
|
|
27959
27964
|
}
|
|
27960
27965
|
if (init.referrer !== void 0) {
|
|
27961
27966
|
const referrer = init.referrer;
|
|
27962
27967
|
if (referrer === "") {
|
|
27963
|
-
|
|
27968
|
+
request4.referrer = "no-referrer";
|
|
27964
27969
|
} else {
|
|
27965
27970
|
let parsedReferrer;
|
|
27966
27971
|
try {
|
|
@@ -27969,14 +27974,14 @@ var require_request2 = __commonJS({
|
|
|
27969
27974
|
throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err });
|
|
27970
27975
|
}
|
|
27971
27976
|
if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl)) {
|
|
27972
|
-
|
|
27977
|
+
request4.referrer = "client";
|
|
27973
27978
|
} else {
|
|
27974
|
-
|
|
27979
|
+
request4.referrer = parsedReferrer;
|
|
27975
27980
|
}
|
|
27976
27981
|
}
|
|
27977
27982
|
}
|
|
27978
27983
|
if (init.referrerPolicy !== void 0) {
|
|
27979
|
-
|
|
27984
|
+
request4.referrerPolicy = init.referrerPolicy;
|
|
27980
27985
|
}
|
|
27981
27986
|
let mode;
|
|
27982
27987
|
if (init.mode !== void 0) {
|
|
@@ -27991,33 +27996,33 @@ var require_request2 = __commonJS({
|
|
|
27991
27996
|
});
|
|
27992
27997
|
}
|
|
27993
27998
|
if (mode != null) {
|
|
27994
|
-
|
|
27999
|
+
request4.mode = mode;
|
|
27995
28000
|
}
|
|
27996
28001
|
if (init.credentials !== void 0) {
|
|
27997
|
-
|
|
28002
|
+
request4.credentials = init.credentials;
|
|
27998
28003
|
}
|
|
27999
28004
|
if (init.cache !== void 0) {
|
|
28000
|
-
|
|
28005
|
+
request4.cache = init.cache;
|
|
28001
28006
|
}
|
|
28002
|
-
if (
|
|
28007
|
+
if (request4.cache === "only-if-cached" && request4.mode !== "same-origin") {
|
|
28003
28008
|
throw new TypeError(
|
|
28004
28009
|
"'only-if-cached' can be set only with 'same-origin' mode"
|
|
28005
28010
|
);
|
|
28006
28011
|
}
|
|
28007
28012
|
if (init.redirect !== void 0) {
|
|
28008
|
-
|
|
28013
|
+
request4.redirect = init.redirect;
|
|
28009
28014
|
}
|
|
28010
28015
|
if (init.integrity != null) {
|
|
28011
|
-
|
|
28016
|
+
request4.integrity = String(init.integrity);
|
|
28012
28017
|
}
|
|
28013
28018
|
if (init.keepalive !== void 0) {
|
|
28014
|
-
|
|
28019
|
+
request4.keepalive = Boolean(init.keepalive);
|
|
28015
28020
|
}
|
|
28016
28021
|
if (init.method !== void 0) {
|
|
28017
28022
|
let method = init.method;
|
|
28018
28023
|
const mayBeNormalized = normalizedMethodRecords[method];
|
|
28019
28024
|
if (mayBeNormalized !== void 0) {
|
|
28020
|
-
|
|
28025
|
+
request4.method = mayBeNormalized;
|
|
28021
28026
|
} else {
|
|
28022
28027
|
if (!isValidHTTPToken(method)) {
|
|
28023
28028
|
throw new TypeError(`'${method}' is not a valid HTTP method.`);
|
|
@@ -28027,9 +28032,9 @@ var require_request2 = __commonJS({
|
|
|
28027
28032
|
throw new TypeError(`'${method}' HTTP method is unsupported.`);
|
|
28028
28033
|
}
|
|
28029
28034
|
method = normalizedMethodRecordsBase[upperCase] ?? method;
|
|
28030
|
-
|
|
28035
|
+
request4.method = method;
|
|
28031
28036
|
}
|
|
28032
|
-
if (!patchMethodWarning &&
|
|
28037
|
+
if (!patchMethodWarning && request4.method === "patch") {
|
|
28033
28038
|
process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.", {
|
|
28034
28039
|
code: "UNDICI-FETCH-patch"
|
|
28035
28040
|
});
|
|
@@ -28039,7 +28044,7 @@ var require_request2 = __commonJS({
|
|
|
28039
28044
|
if (init.signal !== void 0) {
|
|
28040
28045
|
signal = init.signal;
|
|
28041
28046
|
}
|
|
28042
|
-
this.#state =
|
|
28047
|
+
this.#state = request4;
|
|
28043
28048
|
const ac = new AbortController();
|
|
28044
28049
|
this.#signal = ac.signal;
|
|
28045
28050
|
if (signal != null) {
|
|
@@ -28057,12 +28062,12 @@ var require_request2 = __commonJS({
|
|
|
28057
28062
|
}
|
|
28058
28063
|
}
|
|
28059
28064
|
this.#headers = new Headers(kConstruct);
|
|
28060
|
-
setHeadersList(this.#headers,
|
|
28065
|
+
setHeadersList(this.#headers, request4.headersList);
|
|
28061
28066
|
setHeadersGuard(this.#headers, "request");
|
|
28062
28067
|
if (mode === "no-cors") {
|
|
28063
|
-
if (!corsSafeListedMethodsSet.has(
|
|
28068
|
+
if (!corsSafeListedMethodsSet.has(request4.method)) {
|
|
28064
28069
|
throw new TypeError(
|
|
28065
|
-
`'${
|
|
28070
|
+
`'${request4.method} is unsupported in no-cors mode.`
|
|
28066
28071
|
);
|
|
28067
28072
|
}
|
|
28068
28073
|
setHeadersGuard(this.#headers, "request-no-cors");
|
|
@@ -28081,14 +28086,14 @@ var require_request2 = __commonJS({
|
|
|
28081
28086
|
}
|
|
28082
28087
|
}
|
|
28083
28088
|
const inputBody = webidl.is.Request(input) ? input.#state.body : null;
|
|
28084
|
-
if ((init.body != null || inputBody != null) && (
|
|
28089
|
+
if ((init.body != null || inputBody != null) && (request4.method === "GET" || request4.method === "HEAD")) {
|
|
28085
28090
|
throw new TypeError("Request with GET/HEAD method cannot have body.");
|
|
28086
28091
|
}
|
|
28087
28092
|
let initBody = null;
|
|
28088
28093
|
if (init.body != null) {
|
|
28089
28094
|
const [extractedBody, contentType] = extractBody(
|
|
28090
28095
|
init.body,
|
|
28091
|
-
|
|
28096
|
+
request4.keepalive
|
|
28092
28097
|
);
|
|
28093
28098
|
initBody = extractedBody;
|
|
28094
28099
|
if (contentType && !getHeadersList(this.#headers).contains("content-type", true)) {
|
|
@@ -28100,12 +28105,12 @@ var require_request2 = __commonJS({
|
|
|
28100
28105
|
if (initBody != null && init.duplex == null) {
|
|
28101
28106
|
throw new TypeError("RequestInit: duplex option is required when sending a body.");
|
|
28102
28107
|
}
|
|
28103
|
-
if (
|
|
28108
|
+
if (request4.mode !== "same-origin" && request4.mode !== "cors") {
|
|
28104
28109
|
throw new TypeError(
|
|
28105
28110
|
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
|
|
28106
28111
|
);
|
|
28107
28112
|
}
|
|
28108
|
-
|
|
28113
|
+
request4.useCORSPreflightFlag = true;
|
|
28109
28114
|
}
|
|
28110
28115
|
let finalBody = inputOrInitBody;
|
|
28111
28116
|
if (initBody == null && inputBody != null) {
|
|
@@ -28295,42 +28300,42 @@ var require_request2 = __commonJS({
|
|
|
28295
28300
|
* @param {Request} request
|
|
28296
28301
|
* @param {AbortSignal} newSignal
|
|
28297
28302
|
*/
|
|
28298
|
-
static setRequestSignal(
|
|
28299
|
-
|
|
28300
|
-
return
|
|
28303
|
+
static setRequestSignal(request4, newSignal) {
|
|
28304
|
+
request4.#signal = newSignal;
|
|
28305
|
+
return request4;
|
|
28301
28306
|
}
|
|
28302
28307
|
/**
|
|
28303
28308
|
* @param {Request} request
|
|
28304
28309
|
*/
|
|
28305
|
-
static getRequestDispatcher(
|
|
28306
|
-
return
|
|
28310
|
+
static getRequestDispatcher(request4) {
|
|
28311
|
+
return request4.#dispatcher;
|
|
28307
28312
|
}
|
|
28308
28313
|
/**
|
|
28309
28314
|
* @param {Request} request
|
|
28310
28315
|
* @param {import('../../dispatcher/dispatcher')} newDispatcher
|
|
28311
28316
|
*/
|
|
28312
|
-
static setRequestDispatcher(
|
|
28313
|
-
|
|
28317
|
+
static setRequestDispatcher(request4, newDispatcher) {
|
|
28318
|
+
request4.#dispatcher = newDispatcher;
|
|
28314
28319
|
}
|
|
28315
28320
|
/**
|
|
28316
28321
|
* @param {Request} request
|
|
28317
28322
|
* @param {Headers} newHeaders
|
|
28318
28323
|
*/
|
|
28319
|
-
static setRequestHeaders(
|
|
28320
|
-
|
|
28324
|
+
static setRequestHeaders(request4, newHeaders) {
|
|
28325
|
+
request4.#headers = newHeaders;
|
|
28321
28326
|
}
|
|
28322
28327
|
/**
|
|
28323
28328
|
* @param {Request} request
|
|
28324
28329
|
*/
|
|
28325
|
-
static getRequestState(
|
|
28326
|
-
return
|
|
28330
|
+
static getRequestState(request4) {
|
|
28331
|
+
return request4.#state;
|
|
28327
28332
|
}
|
|
28328
28333
|
/**
|
|
28329
28334
|
* @param {Request} request
|
|
28330
28335
|
* @param {any} newState
|
|
28331
28336
|
*/
|
|
28332
|
-
static setRequestState(
|
|
28333
|
-
|
|
28337
|
+
static setRequestState(request4, newState) {
|
|
28338
|
+
request4.#state = newState;
|
|
28334
28339
|
}
|
|
28335
28340
|
};
|
|
28336
28341
|
var { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request;
|
|
@@ -28385,23 +28390,23 @@ var require_request2 = __commonJS({
|
|
|
28385
28390
|
headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()
|
|
28386
28391
|
};
|
|
28387
28392
|
}
|
|
28388
|
-
function cloneRequest(
|
|
28389
|
-
const newRequest = makeRequest({ ...
|
|
28390
|
-
if (
|
|
28391
|
-
newRequest.body = cloneBody(
|
|
28393
|
+
function cloneRequest(request4) {
|
|
28394
|
+
const newRequest = makeRequest({ ...request4, body: null });
|
|
28395
|
+
if (request4.body != null) {
|
|
28396
|
+
newRequest.body = cloneBody(request4.body);
|
|
28392
28397
|
}
|
|
28393
28398
|
return newRequest;
|
|
28394
28399
|
}
|
|
28395
28400
|
function fromInnerRequest(innerRequest, dispatcher, signal, guard) {
|
|
28396
|
-
const
|
|
28397
|
-
setRequestState(
|
|
28398
|
-
setRequestDispatcher(
|
|
28399
|
-
setRequestSignal(
|
|
28401
|
+
const request4 = new Request(kConstruct);
|
|
28402
|
+
setRequestState(request4, innerRequest);
|
|
28403
|
+
setRequestDispatcher(request4, dispatcher);
|
|
28404
|
+
setRequestSignal(request4, signal);
|
|
28400
28405
|
const headers = new Headers(kConstruct);
|
|
28401
|
-
setRequestHeaders(
|
|
28406
|
+
setRequestHeaders(request4, headers);
|
|
28402
28407
|
setHeadersList(headers, innerRequest.headersList);
|
|
28403
28408
|
setHeadersGuard(headers, guard);
|
|
28404
|
-
return
|
|
28409
|
+
return request4;
|
|
28405
28410
|
}
|
|
28406
28411
|
Object.defineProperties(Request.prototype, {
|
|
28407
28412
|
method: kEnumerableProperty,
|
|
@@ -28793,14 +28798,14 @@ var require_fetch = __commonJS({
|
|
|
28793
28798
|
p.reject(e);
|
|
28794
28799
|
return p.promise;
|
|
28795
28800
|
}
|
|
28796
|
-
const
|
|
28801
|
+
const request4 = getRequestState(requestObject);
|
|
28797
28802
|
if (requestObject.signal.aborted) {
|
|
28798
|
-
abortFetch(p,
|
|
28803
|
+
abortFetch(p, request4, null, requestObject.signal.reason, null);
|
|
28799
28804
|
return p.promise;
|
|
28800
28805
|
}
|
|
28801
|
-
const globalObject =
|
|
28806
|
+
const globalObject = request4.client.globalObject;
|
|
28802
28807
|
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
|
|
28803
|
-
|
|
28808
|
+
request4.serviceWorkers = "none";
|
|
28804
28809
|
}
|
|
28805
28810
|
let responseObject = null;
|
|
28806
28811
|
let locallyAborted = false;
|
|
@@ -28812,7 +28817,7 @@ var require_fetch = __commonJS({
|
|
|
28812
28817
|
assert(controller != null);
|
|
28813
28818
|
controller.abort(requestObject.signal.reason);
|
|
28814
28819
|
const realResponse = responseObject?.deref();
|
|
28815
|
-
abortFetch(p,
|
|
28820
|
+
abortFetch(p, request4, realResponse, requestObject.signal.reason, controller.controller);
|
|
28816
28821
|
}
|
|
28817
28822
|
);
|
|
28818
28823
|
const processResponse = (response) => {
|
|
@@ -28820,7 +28825,7 @@ var require_fetch = __commonJS({
|
|
|
28820
28825
|
return;
|
|
28821
28826
|
}
|
|
28822
28827
|
if (response.aborted) {
|
|
28823
|
-
abortFetch(p,
|
|
28828
|
+
abortFetch(p, request4, responseObject, controller.serializedAbortReason, controller.controller);
|
|
28824
28829
|
return;
|
|
28825
28830
|
}
|
|
28826
28831
|
if (response.type === "error") {
|
|
@@ -28832,7 +28837,7 @@ var require_fetch = __commonJS({
|
|
|
28832
28837
|
p = null;
|
|
28833
28838
|
};
|
|
28834
28839
|
controller = fetching({
|
|
28835
|
-
request:
|
|
28840
|
+
request: request4,
|
|
28836
28841
|
processResponseEndOfBody: handleFetchDone,
|
|
28837
28842
|
processResponse,
|
|
28838
28843
|
dispatcher: getRequestDispatcher(requestObject),
|
|
@@ -28879,12 +28884,12 @@ var require_fetch = __commonJS({
|
|
|
28879
28884
|
);
|
|
28880
28885
|
}
|
|
28881
28886
|
var markResourceTiming = performance.markResourceTiming;
|
|
28882
|
-
function abortFetch(p,
|
|
28887
|
+
function abortFetch(p, request4, responseObject, error, controller) {
|
|
28883
28888
|
if (p) {
|
|
28884
28889
|
p.reject(error);
|
|
28885
28890
|
}
|
|
28886
|
-
if (
|
|
28887
|
-
|
|
28891
|
+
if (request4.body?.stream != null && isReadable(request4.body.stream)) {
|
|
28892
|
+
request4.body.stream.cancel(error).catch((err) => {
|
|
28888
28893
|
if (err.code === "ERR_INVALID_STATE") {
|
|
28889
28894
|
return;
|
|
28890
28895
|
}
|
|
@@ -28900,7 +28905,7 @@ var require_fetch = __commonJS({
|
|
|
28900
28905
|
}
|
|
28901
28906
|
}
|
|
28902
28907
|
function fetching({
|
|
28903
|
-
request:
|
|
28908
|
+
request: request4,
|
|
28904
28909
|
processRequestBodyChunkLength,
|
|
28905
28910
|
processRequestEndOfBody,
|
|
28906
28911
|
processResponse,
|
|
@@ -28915,9 +28920,9 @@ var require_fetch = __commonJS({
|
|
|
28915
28920
|
assert(dispatcher);
|
|
28916
28921
|
let taskDestination = null;
|
|
28917
28922
|
let crossOriginIsolatedCapability = false;
|
|
28918
|
-
if (
|
|
28919
|
-
taskDestination =
|
|
28920
|
-
crossOriginIsolatedCapability =
|
|
28923
|
+
if (request4.client != null) {
|
|
28924
|
+
taskDestination = request4.client.globalObject;
|
|
28925
|
+
crossOriginIsolatedCapability = request4.client.crossOriginIsolatedCapability;
|
|
28921
28926
|
}
|
|
28922
28927
|
const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
|
|
28923
28928
|
const timingInfo = createOpaqueTimingInfo({
|
|
@@ -28925,7 +28930,7 @@ var require_fetch = __commonJS({
|
|
|
28925
28930
|
});
|
|
28926
28931
|
const fetchParams = {
|
|
28927
28932
|
controller: new Fetch(dispatcher),
|
|
28928
|
-
request:
|
|
28933
|
+
request: request4,
|
|
28929
28934
|
timingInfo,
|
|
28930
28935
|
processRequestBodyChunkLength,
|
|
28931
28936
|
processRequestEndOfBody,
|
|
@@ -28937,79 +28942,79 @@ var require_fetch = __commonJS({
|
|
|
28937
28942
|
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
28938
28943
|
requestObject
|
|
28939
28944
|
};
|
|
28940
|
-
assert(!
|
|
28941
|
-
if (
|
|
28942
|
-
|
|
28945
|
+
assert(!request4.body || request4.body.stream);
|
|
28946
|
+
if (request4.window === "client") {
|
|
28947
|
+
request4.window = request4.client?.globalObject?.constructor?.name === "Window" ? request4.client : "no-window";
|
|
28943
28948
|
}
|
|
28944
|
-
if (
|
|
28945
|
-
|
|
28949
|
+
if (request4.origin === "client") {
|
|
28950
|
+
request4.origin = request4.client.origin;
|
|
28946
28951
|
}
|
|
28947
|
-
if (
|
|
28948
|
-
if (
|
|
28949
|
-
|
|
28950
|
-
|
|
28952
|
+
if (request4.policyContainer === "client") {
|
|
28953
|
+
if (request4.client != null) {
|
|
28954
|
+
request4.policyContainer = clonePolicyContainer(
|
|
28955
|
+
request4.client.policyContainer
|
|
28951
28956
|
);
|
|
28952
28957
|
} else {
|
|
28953
|
-
|
|
28958
|
+
request4.policyContainer = makePolicyContainer();
|
|
28954
28959
|
}
|
|
28955
28960
|
}
|
|
28956
|
-
if (!
|
|
28961
|
+
if (!request4.headersList.contains("accept", true)) {
|
|
28957
28962
|
const value = "*/*";
|
|
28958
|
-
|
|
28963
|
+
request4.headersList.append("accept", value, true);
|
|
28959
28964
|
}
|
|
28960
|
-
if (!
|
|
28961
|
-
|
|
28965
|
+
if (!request4.headersList.contains("accept-language", true)) {
|
|
28966
|
+
request4.headersList.append("accept-language", "*", true);
|
|
28962
28967
|
}
|
|
28963
|
-
if (
|
|
28968
|
+
if (request4.priority === null) {
|
|
28964
28969
|
}
|
|
28965
|
-
if (subresourceSet.has(
|
|
28970
|
+
if (subresourceSet.has(request4.destination)) {
|
|
28966
28971
|
}
|
|
28967
28972
|
mainFetch(fetchParams, false);
|
|
28968
28973
|
return fetchParams.controller;
|
|
28969
28974
|
}
|
|
28970
28975
|
async function mainFetch(fetchParams, recursive) {
|
|
28971
28976
|
try {
|
|
28972
|
-
const
|
|
28977
|
+
const request4 = fetchParams.request;
|
|
28973
28978
|
let response = null;
|
|
28974
|
-
if (
|
|
28979
|
+
if (request4.localURLsOnly && !urlIsLocal(requestCurrentURL(request4))) {
|
|
28975
28980
|
response = makeNetworkError("local URLs only");
|
|
28976
28981
|
}
|
|
28977
|
-
tryUpgradeRequestToAPotentiallyTrustworthyURL(
|
|
28978
|
-
if (requestBadPort(
|
|
28982
|
+
tryUpgradeRequestToAPotentiallyTrustworthyURL(request4);
|
|
28983
|
+
if (requestBadPort(request4) === "blocked") {
|
|
28979
28984
|
response = makeNetworkError("bad port");
|
|
28980
28985
|
}
|
|
28981
|
-
if (
|
|
28982
|
-
|
|
28986
|
+
if (request4.referrerPolicy === "") {
|
|
28987
|
+
request4.referrerPolicy = request4.policyContainer.referrerPolicy;
|
|
28983
28988
|
}
|
|
28984
|
-
if (
|
|
28985
|
-
|
|
28989
|
+
if (request4.referrer !== "no-referrer") {
|
|
28990
|
+
request4.referrer = determineRequestsReferrer(request4);
|
|
28986
28991
|
}
|
|
28987
28992
|
if (response === null) {
|
|
28988
|
-
const currentURL = requestCurrentURL(
|
|
28993
|
+
const currentURL = requestCurrentURL(request4);
|
|
28989
28994
|
if (
|
|
28990
28995
|
// - request’s current URL’s origin is same origin with request’s origin,
|
|
28991
28996
|
// and request’s response tainting is "basic"
|
|
28992
|
-
sameOrigin(currentURL,
|
|
28997
|
+
sameOrigin(currentURL, request4.url) && request4.responseTainting === "basic" || // request’s current URL’s scheme is "data"
|
|
28993
28998
|
currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
|
|
28994
|
-
(
|
|
28999
|
+
(request4.mode === "navigate" || request4.mode === "websocket")
|
|
28995
29000
|
) {
|
|
28996
|
-
|
|
29001
|
+
request4.responseTainting = "basic";
|
|
28997
29002
|
response = await schemeFetch(fetchParams);
|
|
28998
|
-
} else if (
|
|
29003
|
+
} else if (request4.mode === "same-origin") {
|
|
28999
29004
|
response = makeNetworkError('request mode cannot be "same-origin"');
|
|
29000
|
-
} else if (
|
|
29001
|
-
if (
|
|
29005
|
+
} else if (request4.mode === "no-cors") {
|
|
29006
|
+
if (request4.redirect !== "follow") {
|
|
29002
29007
|
response = makeNetworkError(
|
|
29003
29008
|
'redirect mode cannot be "follow" for "no-cors" request'
|
|
29004
29009
|
);
|
|
29005
29010
|
} else {
|
|
29006
|
-
|
|
29011
|
+
request4.responseTainting = "opaque";
|
|
29007
29012
|
response = await schemeFetch(fetchParams);
|
|
29008
29013
|
}
|
|
29009
|
-
} else if (!urlIsHttpHttpsScheme(requestCurrentURL(
|
|
29014
|
+
} else if (!urlIsHttpHttpsScheme(requestCurrentURL(request4))) {
|
|
29010
29015
|
response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
|
|
29011
29016
|
} else {
|
|
29012
|
-
|
|
29017
|
+
request4.responseTainting = "cors";
|
|
29013
29018
|
response = await httpFetch(fetchParams);
|
|
29014
29019
|
}
|
|
29015
29020
|
}
|
|
@@ -29017,13 +29022,13 @@ var require_fetch = __commonJS({
|
|
|
29017
29022
|
return response;
|
|
29018
29023
|
}
|
|
29019
29024
|
if (response.status !== 0 && !response.internalResponse) {
|
|
29020
|
-
if (
|
|
29025
|
+
if (request4.responseTainting === "cors") {
|
|
29021
29026
|
}
|
|
29022
|
-
if (
|
|
29027
|
+
if (request4.responseTainting === "basic") {
|
|
29023
29028
|
response = filterResponse(response, "basic");
|
|
29024
|
-
} else if (
|
|
29029
|
+
} else if (request4.responseTainting === "cors") {
|
|
29025
29030
|
response = filterResponse(response, "cors");
|
|
29026
|
-
} else if (
|
|
29031
|
+
} else if (request4.responseTainting === "opaque") {
|
|
29027
29032
|
response = filterResponse(response, "opaque");
|
|
29028
29033
|
} else {
|
|
29029
29034
|
assert(false);
|
|
@@ -29031,26 +29036,26 @@ var require_fetch = __commonJS({
|
|
|
29031
29036
|
}
|
|
29032
29037
|
let internalResponse = response.status === 0 ? response : response.internalResponse;
|
|
29033
29038
|
if (internalResponse.urlList.length === 0) {
|
|
29034
|
-
internalResponse.urlList.push(...
|
|
29039
|
+
internalResponse.urlList.push(...request4.urlList);
|
|
29035
29040
|
}
|
|
29036
|
-
if (!
|
|
29041
|
+
if (!request4.timingAllowFailed) {
|
|
29037
29042
|
response.timingAllowPassed = true;
|
|
29038
29043
|
}
|
|
29039
|
-
if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !
|
|
29044
|
+
if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request4.headers.contains("range", true)) {
|
|
29040
29045
|
response = internalResponse = makeNetworkError();
|
|
29041
29046
|
}
|
|
29042
|
-
if (response.status !== 0 && (
|
|
29047
|
+
if (response.status !== 0 && (request4.method === "HEAD" || request4.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
|
|
29043
29048
|
internalResponse.body = null;
|
|
29044
29049
|
fetchParams.controller.dump = true;
|
|
29045
29050
|
}
|
|
29046
|
-
if (
|
|
29051
|
+
if (request4.integrity) {
|
|
29047
29052
|
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
|
|
29048
|
-
if (
|
|
29053
|
+
if (request4.responseTainting === "opaque" || response.body == null) {
|
|
29049
29054
|
processBodyError(response.error);
|
|
29050
29055
|
return;
|
|
29051
29056
|
}
|
|
29052
29057
|
const processBody = (bytes) => {
|
|
29053
|
-
if (!bytesMatch(bytes,
|
|
29058
|
+
if (!bytesMatch(bytes, request4.integrity)) {
|
|
29054
29059
|
processBodyError("integrity mismatch");
|
|
29055
29060
|
return;
|
|
29056
29061
|
}
|
|
@@ -29069,8 +29074,8 @@ var require_fetch = __commonJS({
|
|
|
29069
29074
|
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
|
29070
29075
|
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
|
|
29071
29076
|
}
|
|
29072
|
-
const { request:
|
|
29073
|
-
const { protocol: scheme } = requestCurrentURL(
|
|
29077
|
+
const { request: request4 } = fetchParams;
|
|
29078
|
+
const { protocol: scheme } = requestCurrentURL(request4);
|
|
29074
29079
|
switch (scheme) {
|
|
29075
29080
|
case "about:": {
|
|
29076
29081
|
return Promise.resolve(makeNetworkError("about scheme is not supported"));
|
|
@@ -29079,19 +29084,19 @@ var require_fetch = __commonJS({
|
|
|
29079
29084
|
if (!resolveObjectURL) {
|
|
29080
29085
|
resolveObjectURL = __require("buffer").resolveObjectURL;
|
|
29081
29086
|
}
|
|
29082
|
-
const blobURLEntry = requestCurrentURL(
|
|
29087
|
+
const blobURLEntry = requestCurrentURL(request4);
|
|
29083
29088
|
if (blobURLEntry.search.length !== 0) {
|
|
29084
29089
|
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
|
|
29085
29090
|
}
|
|
29086
29091
|
const blob = resolveObjectURL(blobURLEntry.toString());
|
|
29087
|
-
if (
|
|
29092
|
+
if (request4.method !== "GET" || !webidl.is.Blob(blob)) {
|
|
29088
29093
|
return Promise.resolve(makeNetworkError("invalid method"));
|
|
29089
29094
|
}
|
|
29090
29095
|
const response = makeResponse();
|
|
29091
29096
|
const fullLength = blob.size;
|
|
29092
29097
|
const serializedFullLength = isomorphicEncode(`${fullLength}`);
|
|
29093
29098
|
const type = blob.type;
|
|
29094
|
-
if (!
|
|
29099
|
+
if (!request4.headersList.contains("range", true)) {
|
|
29095
29100
|
const bodyWithType = extractBody(blob);
|
|
29096
29101
|
response.statusText = "OK";
|
|
29097
29102
|
response.body = bodyWithType[0];
|
|
@@ -29099,7 +29104,7 @@ var require_fetch = __commonJS({
|
|
|
29099
29104
|
response.headersList.set("content-type", type, true);
|
|
29100
29105
|
} else {
|
|
29101
29106
|
response.rangeRequested = true;
|
|
29102
|
-
const rangeHeader =
|
|
29107
|
+
const rangeHeader = request4.headersList.get("range", true);
|
|
29103
29108
|
const rangeValue = simpleRangeHeaderValue(rangeHeader, true);
|
|
29104
29109
|
if (rangeValue === "failure") {
|
|
29105
29110
|
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
|
|
@@ -29130,7 +29135,7 @@ var require_fetch = __commonJS({
|
|
|
29130
29135
|
return Promise.resolve(response);
|
|
29131
29136
|
}
|
|
29132
29137
|
case "data:": {
|
|
29133
|
-
const currentURL = requestCurrentURL(
|
|
29138
|
+
const currentURL = requestCurrentURL(request4);
|
|
29134
29139
|
const dataURLStruct = dataURLProcessor(currentURL);
|
|
29135
29140
|
if (dataURLStruct === "failure") {
|
|
29136
29141
|
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
|
|
@@ -29219,41 +29224,41 @@ var require_fetch = __commonJS({
|
|
|
29219
29224
|
}
|
|
29220
29225
|
}
|
|
29221
29226
|
async function httpFetch(fetchParams) {
|
|
29222
|
-
const
|
|
29227
|
+
const request4 = fetchParams.request;
|
|
29223
29228
|
let response = null;
|
|
29224
29229
|
let actualResponse = null;
|
|
29225
29230
|
const timingInfo = fetchParams.timingInfo;
|
|
29226
|
-
if (
|
|
29231
|
+
if (request4.serviceWorkers === "all") {
|
|
29227
29232
|
}
|
|
29228
29233
|
if (response === null) {
|
|
29229
|
-
if (
|
|
29230
|
-
|
|
29234
|
+
if (request4.redirect === "follow") {
|
|
29235
|
+
request4.serviceWorkers = "none";
|
|
29231
29236
|
}
|
|
29232
29237
|
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
|
|
29233
|
-
if (
|
|
29238
|
+
if (request4.responseTainting === "cors" && corsCheck(request4, response) === "failure") {
|
|
29234
29239
|
return makeNetworkError("cors failure");
|
|
29235
29240
|
}
|
|
29236
|
-
if (TAOCheck(
|
|
29237
|
-
|
|
29241
|
+
if (TAOCheck(request4, response) === "failure") {
|
|
29242
|
+
request4.timingAllowFailed = true;
|
|
29238
29243
|
}
|
|
29239
29244
|
}
|
|
29240
|
-
if ((
|
|
29241
|
-
|
|
29242
|
-
|
|
29243
|
-
|
|
29245
|
+
if ((request4.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
|
|
29246
|
+
request4.origin,
|
|
29247
|
+
request4.client,
|
|
29248
|
+
request4.destination,
|
|
29244
29249
|
actualResponse
|
|
29245
29250
|
) === "blocked") {
|
|
29246
29251
|
return makeNetworkError("blocked");
|
|
29247
29252
|
}
|
|
29248
29253
|
if (redirectStatusSet.has(actualResponse.status)) {
|
|
29249
|
-
if (
|
|
29254
|
+
if (request4.redirect !== "manual") {
|
|
29250
29255
|
fetchParams.controller.connection.destroy(void 0, false);
|
|
29251
29256
|
}
|
|
29252
|
-
if (
|
|
29257
|
+
if (request4.redirect === "error") {
|
|
29253
29258
|
response = makeNetworkError("unexpected redirect");
|
|
29254
|
-
} else if (
|
|
29259
|
+
} else if (request4.redirect === "manual") {
|
|
29255
29260
|
response = actualResponse;
|
|
29256
|
-
} else if (
|
|
29261
|
+
} else if (request4.redirect === "follow") {
|
|
29257
29262
|
response = await httpRedirectFetch(fetchParams, response);
|
|
29258
29263
|
} else {
|
|
29259
29264
|
assert(false);
|
|
@@ -29263,13 +29268,13 @@ var require_fetch = __commonJS({
|
|
|
29263
29268
|
return response;
|
|
29264
29269
|
}
|
|
29265
29270
|
function httpRedirectFetch(fetchParams, response) {
|
|
29266
|
-
const
|
|
29271
|
+
const request4 = fetchParams.request;
|
|
29267
29272
|
const actualResponse = response.internalResponse ? response.internalResponse : response;
|
|
29268
29273
|
let locationURL;
|
|
29269
29274
|
try {
|
|
29270
29275
|
locationURL = responseLocationURL(
|
|
29271
29276
|
actualResponse,
|
|
29272
|
-
requestCurrentURL(
|
|
29277
|
+
requestCurrentURL(request4).hash
|
|
29273
29278
|
);
|
|
29274
29279
|
if (locationURL == null) {
|
|
29275
29280
|
return response;
|
|
@@ -29280,63 +29285,63 @@ var require_fetch = __commonJS({
|
|
|
29280
29285
|
if (!urlIsHttpHttpsScheme(locationURL)) {
|
|
29281
29286
|
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
|
|
29282
29287
|
}
|
|
29283
|
-
if (
|
|
29288
|
+
if (request4.redirectCount === 20) {
|
|
29284
29289
|
return Promise.resolve(makeNetworkError("redirect count exceeded"));
|
|
29285
29290
|
}
|
|
29286
|
-
|
|
29287
|
-
if (
|
|
29291
|
+
request4.redirectCount += 1;
|
|
29292
|
+
if (request4.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request4, locationURL)) {
|
|
29288
29293
|
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
|
|
29289
29294
|
}
|
|
29290
|
-
if (
|
|
29295
|
+
if (request4.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
|
|
29291
29296
|
return Promise.resolve(makeNetworkError(
|
|
29292
29297
|
'URL cannot contain credentials for request mode "cors"'
|
|
29293
29298
|
));
|
|
29294
29299
|
}
|
|
29295
|
-
if (actualResponse.status !== 303 &&
|
|
29300
|
+
if (actualResponse.status !== 303 && request4.body != null && request4.body.source == null) {
|
|
29296
29301
|
return Promise.resolve(makeNetworkError());
|
|
29297
29302
|
}
|
|
29298
|
-
if ([301, 302].includes(actualResponse.status) &&
|
|
29299
|
-
|
|
29300
|
-
|
|
29303
|
+
if ([301, 302].includes(actualResponse.status) && request4.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request4.method)) {
|
|
29304
|
+
request4.method = "GET";
|
|
29305
|
+
request4.body = null;
|
|
29301
29306
|
for (const headerName of requestBodyHeader) {
|
|
29302
|
-
|
|
29307
|
+
request4.headersList.delete(headerName);
|
|
29303
29308
|
}
|
|
29304
29309
|
}
|
|
29305
|
-
if (!sameOrigin(requestCurrentURL(
|
|
29306
|
-
|
|
29307
|
-
|
|
29308
|
-
|
|
29309
|
-
|
|
29310
|
+
if (!sameOrigin(requestCurrentURL(request4), locationURL)) {
|
|
29311
|
+
request4.headersList.delete("authorization", true);
|
|
29312
|
+
request4.headersList.delete("proxy-authorization", true);
|
|
29313
|
+
request4.headersList.delete("cookie", true);
|
|
29314
|
+
request4.headersList.delete("host", true);
|
|
29310
29315
|
}
|
|
29311
|
-
if (
|
|
29312
|
-
assert(
|
|
29313
|
-
|
|
29316
|
+
if (request4.body != null) {
|
|
29317
|
+
assert(request4.body.source != null);
|
|
29318
|
+
request4.body = safelyExtractBody(request4.body.source)[0];
|
|
29314
29319
|
}
|
|
29315
29320
|
const timingInfo = fetchParams.timingInfo;
|
|
29316
29321
|
timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability);
|
|
29317
29322
|
if (timingInfo.redirectStartTime === 0) {
|
|
29318
29323
|
timingInfo.redirectStartTime = timingInfo.startTime;
|
|
29319
29324
|
}
|
|
29320
|
-
|
|
29321
|
-
setRequestReferrerPolicyOnRedirect(
|
|
29325
|
+
request4.urlList.push(locationURL);
|
|
29326
|
+
setRequestReferrerPolicyOnRedirect(request4, actualResponse);
|
|
29322
29327
|
return mainFetch(fetchParams, true);
|
|
29323
29328
|
}
|
|
29324
29329
|
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
|
|
29325
|
-
const
|
|
29330
|
+
const request4 = fetchParams.request;
|
|
29326
29331
|
let httpFetchParams = null;
|
|
29327
29332
|
let httpRequest = null;
|
|
29328
29333
|
let response = null;
|
|
29329
29334
|
const httpCache = null;
|
|
29330
29335
|
const revalidatingFlag = false;
|
|
29331
|
-
if (
|
|
29336
|
+
if (request4.window === "no-window" && request4.redirect === "error") {
|
|
29332
29337
|
httpFetchParams = fetchParams;
|
|
29333
|
-
httpRequest =
|
|
29338
|
+
httpRequest = request4;
|
|
29334
29339
|
} else {
|
|
29335
|
-
httpRequest = cloneRequest(
|
|
29340
|
+
httpRequest = cloneRequest(request4);
|
|
29336
29341
|
httpFetchParams = { ...fetchParams };
|
|
29337
29342
|
httpFetchParams.request = httpRequest;
|
|
29338
29343
|
}
|
|
29339
|
-
const includeCredentials =
|
|
29344
|
+
const includeCredentials = request4.credentials === "include" || request4.credentials === "same-origin" && request4.responseTainting === "basic";
|
|
29340
29345
|
const contentLength = httpRequest.body ? httpRequest.body.length : null;
|
|
29341
29346
|
let contentLengthHeaderValue = null;
|
|
29342
29347
|
if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) {
|
|
@@ -29423,14 +29428,14 @@ var require_fetch = __commonJS({
|
|
|
29423
29428
|
response.rangeRequested = true;
|
|
29424
29429
|
}
|
|
29425
29430
|
response.requestIncludesCredentials = includeCredentials;
|
|
29426
|
-
if (response.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (
|
|
29427
|
-
if (
|
|
29428
|
-
if (
|
|
29431
|
+
if (response.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (request4.useURLCredentials !== void 0 || isTraversableNavigable(request4.traversableForUserPrompts))) {
|
|
29432
|
+
if (request4.body != null) {
|
|
29433
|
+
if (request4.body.source == null) {
|
|
29429
29434
|
return response;
|
|
29430
29435
|
}
|
|
29431
|
-
|
|
29436
|
+
request4.body = safelyExtractBody(request4.body.source)[0];
|
|
29432
29437
|
}
|
|
29433
|
-
if (
|
|
29438
|
+
if (request4.useURLCredentials === void 0 || isAuthenticationFetch) {
|
|
29434
29439
|
if (isCancelled(fetchParams)) {
|
|
29435
29440
|
return makeAppropriateNetworkError(fetchParams);
|
|
29436
29441
|
}
|
|
@@ -29440,7 +29445,7 @@ var require_fetch = __commonJS({
|
|
|
29440
29445
|
response = await httpNetworkOrCacheFetch(fetchParams, true);
|
|
29441
29446
|
}
|
|
29442
29447
|
if (response.status === 407) {
|
|
29443
|
-
if (
|
|
29448
|
+
if (request4.window === "no-window") {
|
|
29444
29449
|
return makeNetworkError();
|
|
29445
29450
|
}
|
|
29446
29451
|
if (isCancelled(fetchParams)) {
|
|
@@ -29452,7 +29457,7 @@ var require_fetch = __commonJS({
|
|
|
29452
29457
|
// response’s status is 421
|
|
29453
29458
|
response.status === 421 && // isNewConnectionFetch is false
|
|
29454
29459
|
!isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null
|
|
29455
|
-
(
|
|
29460
|
+
(request4.body == null || request4.body.source != null)
|
|
29456
29461
|
) {
|
|
29457
29462
|
if (isCancelled(fetchParams)) {
|
|
29458
29463
|
return makeAppropriateNetworkError(fetchParams);
|
|
@@ -29482,21 +29487,21 @@ var require_fetch = __commonJS({
|
|
|
29482
29487
|
}
|
|
29483
29488
|
}
|
|
29484
29489
|
};
|
|
29485
|
-
const
|
|
29490
|
+
const request4 = fetchParams.request;
|
|
29486
29491
|
let response = null;
|
|
29487
29492
|
const timingInfo = fetchParams.timingInfo;
|
|
29488
29493
|
const httpCache = null;
|
|
29489
29494
|
if (httpCache == null) {
|
|
29490
|
-
|
|
29495
|
+
request4.cache = "no-store";
|
|
29491
29496
|
}
|
|
29492
29497
|
const newConnection = forceNewConnection ? "yes" : "no";
|
|
29493
|
-
if (
|
|
29498
|
+
if (request4.mode === "websocket") {
|
|
29494
29499
|
} else {
|
|
29495
29500
|
}
|
|
29496
29501
|
let requestBody = null;
|
|
29497
|
-
if (
|
|
29502
|
+
if (request4.body == null && fetchParams.processRequestEndOfBody) {
|
|
29498
29503
|
queueMicrotask(() => fetchParams.processRequestEndOfBody());
|
|
29499
|
-
} else if (
|
|
29504
|
+
} else if (request4.body != null) {
|
|
29500
29505
|
const processBodyChunk = async function* (bytes) {
|
|
29501
29506
|
if (isCancelled(fetchParams)) {
|
|
29502
29507
|
return;
|
|
@@ -29524,7 +29529,7 @@ var require_fetch = __commonJS({
|
|
|
29524
29529
|
};
|
|
29525
29530
|
requestBody = (async function* () {
|
|
29526
29531
|
try {
|
|
29527
|
-
for await (const bytes of
|
|
29532
|
+
for await (const bytes of request4.body.stream) {
|
|
29528
29533
|
yield* processBodyChunk(bytes);
|
|
29529
29534
|
}
|
|
29530
29535
|
processEndOfBody();
|
|
@@ -29631,19 +29636,19 @@ var require_fetch = __commonJS({
|
|
|
29631
29636
|
}
|
|
29632
29637
|
return response;
|
|
29633
29638
|
function dispatch({ body }) {
|
|
29634
|
-
const url = requestCurrentURL(
|
|
29639
|
+
const url = requestCurrentURL(request4);
|
|
29635
29640
|
const agent = fetchParams.controller.dispatcher;
|
|
29636
29641
|
const path = url.pathname + url.search;
|
|
29637
29642
|
const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === "?";
|
|
29638
|
-
return new Promise((
|
|
29643
|
+
return new Promise((resolve7, reject) => agent.dispatch(
|
|
29639
29644
|
{
|
|
29640
29645
|
path: hasTrailingQuestionMark ? `${path}?` : path,
|
|
29641
29646
|
origin: url.origin,
|
|
29642
|
-
method:
|
|
29643
|
-
body: agent.isMockActive ?
|
|
29644
|
-
headers:
|
|
29647
|
+
method: request4.method,
|
|
29648
|
+
body: agent.isMockActive ? request4.body && (request4.body.source || request4.body.stream) : body,
|
|
29649
|
+
headers: request4.headersList.entries,
|
|
29645
29650
|
maxRedirections: 0,
|
|
29646
|
-
upgrade:
|
|
29651
|
+
upgrade: request4.mode === "websocket" ? "websocket" : void 0
|
|
29647
29652
|
},
|
|
29648
29653
|
{
|
|
29649
29654
|
body: null,
|
|
@@ -29680,9 +29685,9 @@ var require_fetch = __commonJS({
|
|
|
29680
29685
|
}
|
|
29681
29686
|
const location = headersList.get("location", true);
|
|
29682
29687
|
this.body = new Readable2({ read: resume });
|
|
29683
|
-
const willFollow = location &&
|
|
29688
|
+
const willFollow = location && request4.redirect === "follow" && redirectStatusSet.has(status2);
|
|
29684
29689
|
const decoders = [];
|
|
29685
|
-
if (
|
|
29690
|
+
if (request4.method !== "HEAD" && request4.method !== "CONNECT" && !nullBodyStatus.includes(status2) && !willFollow) {
|
|
29686
29691
|
const contentEncoding = headersList.get("content-encoding", true);
|
|
29687
29692
|
const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
|
|
29688
29693
|
const maxContentEncodings = 5;
|
|
@@ -29723,7 +29728,7 @@ var require_fetch = __commonJS({
|
|
|
29723
29728
|
}
|
|
29724
29729
|
}
|
|
29725
29730
|
const onError = this.onError.bind(this);
|
|
29726
|
-
|
|
29731
|
+
resolve7({
|
|
29727
29732
|
status: status2,
|
|
29728
29733
|
statusText,
|
|
29729
29734
|
headersList,
|
|
@@ -29776,7 +29781,7 @@ var require_fetch = __commonJS({
|
|
|
29776
29781
|
headersList.append(headerName, String(value), true);
|
|
29777
29782
|
}
|
|
29778
29783
|
}
|
|
29779
|
-
|
|
29784
|
+
resolve7({
|
|
29780
29785
|
status: status2,
|
|
29781
29786
|
statusText: STATUS_CODES[status2],
|
|
29782
29787
|
headersList,
|
|
@@ -29800,7 +29805,7 @@ var require_fetch = __commonJS({
|
|
|
29800
29805
|
headersList.append(nameStr, value.toString("latin1"), true);
|
|
29801
29806
|
}
|
|
29802
29807
|
}
|
|
29803
|
-
|
|
29808
|
+
resolve7({
|
|
29804
29809
|
status: status2,
|
|
29805
29810
|
statusText: STATUS_CODES[status2],
|
|
29806
29811
|
headersList,
|
|
@@ -29878,31 +29883,31 @@ var require_cache3 = __commonJS({
|
|
|
29878
29883
|
webidl.util.markAsUncloneable(this);
|
|
29879
29884
|
this.#relevantRequestResponseList = arguments[1];
|
|
29880
29885
|
}
|
|
29881
|
-
async match(
|
|
29886
|
+
async match(request4, options = {}) {
|
|
29882
29887
|
webidl.brandCheck(this, _Cache);
|
|
29883
29888
|
const prefix = "Cache.match";
|
|
29884
29889
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29885
|
-
|
|
29890
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29886
29891
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
29887
|
-
const p = this.#internalMatchAll(
|
|
29892
|
+
const p = this.#internalMatchAll(request4, options, 1);
|
|
29888
29893
|
if (p.length === 0) {
|
|
29889
29894
|
return;
|
|
29890
29895
|
}
|
|
29891
29896
|
return p[0];
|
|
29892
29897
|
}
|
|
29893
|
-
async matchAll(
|
|
29898
|
+
async matchAll(request4 = void 0, options = {}) {
|
|
29894
29899
|
webidl.brandCheck(this, _Cache);
|
|
29895
29900
|
const prefix = "Cache.matchAll";
|
|
29896
|
-
if (
|
|
29901
|
+
if (request4 !== void 0) request4 = webidl.converters.RequestInfo(request4);
|
|
29897
29902
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
29898
|
-
return this.#internalMatchAll(
|
|
29903
|
+
return this.#internalMatchAll(request4, options);
|
|
29899
29904
|
}
|
|
29900
|
-
async add(
|
|
29905
|
+
async add(request4) {
|
|
29901
29906
|
webidl.brandCheck(this, _Cache);
|
|
29902
29907
|
const prefix = "Cache.add";
|
|
29903
29908
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29904
|
-
|
|
29905
|
-
const requests = [
|
|
29909
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29910
|
+
const requests = [request4];
|
|
29906
29911
|
const responseArrayPromise = this.addAll(requests);
|
|
29907
29912
|
return await responseArrayPromise;
|
|
29908
29913
|
}
|
|
@@ -29912,19 +29917,19 @@ var require_cache3 = __commonJS({
|
|
|
29912
29917
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29913
29918
|
const responsePromises = [];
|
|
29914
29919
|
const requestList = [];
|
|
29915
|
-
for (let
|
|
29916
|
-
if (
|
|
29920
|
+
for (let request4 of requests) {
|
|
29921
|
+
if (request4 === void 0) {
|
|
29917
29922
|
throw webidl.errors.conversionFailed({
|
|
29918
29923
|
prefix,
|
|
29919
29924
|
argument: "Argument 1",
|
|
29920
29925
|
types: ["undefined is not allowed"]
|
|
29921
29926
|
});
|
|
29922
29927
|
}
|
|
29923
|
-
|
|
29924
|
-
if (typeof
|
|
29928
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29929
|
+
if (typeof request4 === "string") {
|
|
29925
29930
|
continue;
|
|
29926
29931
|
}
|
|
29927
|
-
const r = getRequestState(
|
|
29932
|
+
const r = getRequestState(request4);
|
|
29928
29933
|
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
|
|
29929
29934
|
throw webidl.errors.exception({
|
|
29930
29935
|
header: prefix,
|
|
@@ -29933,8 +29938,8 @@ var require_cache3 = __commonJS({
|
|
|
29933
29938
|
}
|
|
29934
29939
|
}
|
|
29935
29940
|
const fetchControllers = [];
|
|
29936
|
-
for (const
|
|
29937
|
-
const r = getRequestState(new Request(
|
|
29941
|
+
for (const request4 of requests) {
|
|
29942
|
+
const r = getRequestState(new Request(request4));
|
|
29938
29943
|
if (!urlIsHttpHttpsScheme(r.url)) {
|
|
29939
29944
|
throw webidl.errors.exception({
|
|
29940
29945
|
header: prefix,
|
|
@@ -30011,17 +30016,17 @@ var require_cache3 = __commonJS({
|
|
|
30011
30016
|
});
|
|
30012
30017
|
return cacheJobPromise.promise;
|
|
30013
30018
|
}
|
|
30014
|
-
async put(
|
|
30019
|
+
async put(request4, response) {
|
|
30015
30020
|
webidl.brandCheck(this, _Cache);
|
|
30016
30021
|
const prefix = "Cache.put";
|
|
30017
30022
|
webidl.argumentLengthCheck(arguments, 2, prefix);
|
|
30018
|
-
|
|
30023
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30019
30024
|
response = webidl.converters.Response(response, prefix, "response");
|
|
30020
30025
|
let innerRequest = null;
|
|
30021
|
-
if (webidl.is.Request(
|
|
30022
|
-
innerRequest = getRequestState(
|
|
30026
|
+
if (webidl.is.Request(request4)) {
|
|
30027
|
+
innerRequest = getRequestState(request4);
|
|
30023
30028
|
} else {
|
|
30024
|
-
innerRequest = getRequestState(new Request(
|
|
30029
|
+
innerRequest = getRequestState(new Request(request4));
|
|
30025
30030
|
}
|
|
30026
30031
|
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
|
|
30027
30032
|
throw webidl.errors.exception({
|
|
@@ -30092,21 +30097,21 @@ var require_cache3 = __commonJS({
|
|
|
30092
30097
|
});
|
|
30093
30098
|
return cacheJobPromise.promise;
|
|
30094
30099
|
}
|
|
30095
|
-
async delete(
|
|
30100
|
+
async delete(request4, options = {}) {
|
|
30096
30101
|
webidl.brandCheck(this, _Cache);
|
|
30097
30102
|
const prefix = "Cache.delete";
|
|
30098
30103
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
30099
|
-
|
|
30104
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30100
30105
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
30101
30106
|
let r = null;
|
|
30102
|
-
if (webidl.is.Request(
|
|
30103
|
-
r = getRequestState(
|
|
30107
|
+
if (webidl.is.Request(request4)) {
|
|
30108
|
+
r = getRequestState(request4);
|
|
30104
30109
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30105
30110
|
return false;
|
|
30106
30111
|
}
|
|
30107
30112
|
} else {
|
|
30108
|
-
assert(typeof
|
|
30109
|
-
r = getRequestState(new Request(
|
|
30113
|
+
assert(typeof request4 === "string");
|
|
30114
|
+
r = getRequestState(new Request(request4));
|
|
30110
30115
|
}
|
|
30111
30116
|
const operations = [];
|
|
30112
30117
|
const operation = {
|
|
@@ -30138,25 +30143,25 @@ var require_cache3 = __commonJS({
|
|
|
30138
30143
|
* @param {import('../../../types/cache').CacheQueryOptions} options
|
|
30139
30144
|
* @returns {Promise<readonly Request[]>}
|
|
30140
30145
|
*/
|
|
30141
|
-
async keys(
|
|
30146
|
+
async keys(request4 = void 0, options = {}) {
|
|
30142
30147
|
webidl.brandCheck(this, _Cache);
|
|
30143
30148
|
const prefix = "Cache.keys";
|
|
30144
|
-
if (
|
|
30149
|
+
if (request4 !== void 0) request4 = webidl.converters.RequestInfo(request4);
|
|
30145
30150
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
30146
30151
|
let r = null;
|
|
30147
|
-
if (
|
|
30148
|
-
if (webidl.is.Request(
|
|
30149
|
-
r = getRequestState(
|
|
30152
|
+
if (request4 !== void 0) {
|
|
30153
|
+
if (webidl.is.Request(request4)) {
|
|
30154
|
+
r = getRequestState(request4);
|
|
30150
30155
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30151
30156
|
return [];
|
|
30152
30157
|
}
|
|
30153
|
-
} else if (typeof
|
|
30154
|
-
r = getRequestState(new Request(
|
|
30158
|
+
} else if (typeof request4 === "string") {
|
|
30159
|
+
r = getRequestState(new Request(request4));
|
|
30155
30160
|
}
|
|
30156
30161
|
}
|
|
30157
30162
|
const promise = createDeferredPromise();
|
|
30158
30163
|
const requests = [];
|
|
30159
|
-
if (
|
|
30164
|
+
if (request4 === void 0) {
|
|
30160
30165
|
for (const requestResponse of this.#relevantRequestResponseList) {
|
|
30161
30166
|
requests.push(requestResponse[0]);
|
|
30162
30167
|
}
|
|
@@ -30168,9 +30173,9 @@ var require_cache3 = __commonJS({
|
|
|
30168
30173
|
}
|
|
30169
30174
|
queueMicrotask(() => {
|
|
30170
30175
|
const requestList = [];
|
|
30171
|
-
for (const
|
|
30176
|
+
for (const request5 of requests) {
|
|
30172
30177
|
const requestObject = fromInnerRequest(
|
|
30173
|
-
|
|
30178
|
+
request5,
|
|
30174
30179
|
void 0,
|
|
30175
30180
|
new AbortController().signal,
|
|
30176
30181
|
"immutable"
|
|
@@ -30289,9 +30294,9 @@ var require_cache3 = __commonJS({
|
|
|
30289
30294
|
* @param {import('../../../types/cache').CacheQueryOptions | undefined} options
|
|
30290
30295
|
* @returns {boolean}
|
|
30291
30296
|
*/
|
|
30292
|
-
#requestMatchesCachedItem(requestQuery,
|
|
30297
|
+
#requestMatchesCachedItem(requestQuery, request4, response = null, options) {
|
|
30293
30298
|
const queryURL = new URL(requestQuery.url);
|
|
30294
|
-
const cachedURL = new URL(
|
|
30299
|
+
const cachedURL = new URL(request4.url);
|
|
30295
30300
|
if (options?.ignoreSearch) {
|
|
30296
30301
|
cachedURL.search = "";
|
|
30297
30302
|
queryURL.search = "";
|
|
@@ -30307,7 +30312,7 @@ var require_cache3 = __commonJS({
|
|
|
30307
30312
|
if (fieldValue === "*") {
|
|
30308
30313
|
return false;
|
|
30309
30314
|
}
|
|
30310
|
-
const requestValue =
|
|
30315
|
+
const requestValue = request4.headersList.get(fieldValue);
|
|
30311
30316
|
const queryValue = requestQuery.headersList.get(fieldValue);
|
|
30312
30317
|
if (requestValue !== queryValue) {
|
|
30313
30318
|
return false;
|
|
@@ -30315,20 +30320,20 @@ var require_cache3 = __commonJS({
|
|
|
30315
30320
|
}
|
|
30316
30321
|
return true;
|
|
30317
30322
|
}
|
|
30318
|
-
#internalMatchAll(
|
|
30323
|
+
#internalMatchAll(request4, options, maxResponses = Infinity) {
|
|
30319
30324
|
let r = null;
|
|
30320
|
-
if (
|
|
30321
|
-
if (webidl.is.Request(
|
|
30322
|
-
r = getRequestState(
|
|
30325
|
+
if (request4 !== void 0) {
|
|
30326
|
+
if (webidl.is.Request(request4)) {
|
|
30327
|
+
r = getRequestState(request4);
|
|
30323
30328
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30324
30329
|
return [];
|
|
30325
30330
|
}
|
|
30326
|
-
} else if (typeof
|
|
30327
|
-
r = getRequestState(new Request(
|
|
30331
|
+
} else if (typeof request4 === "string") {
|
|
30332
|
+
r = getRequestState(new Request(request4));
|
|
30328
30333
|
}
|
|
30329
30334
|
}
|
|
30330
30335
|
const responses = [];
|
|
30331
|
-
if (
|
|
30336
|
+
if (request4 === void 0) {
|
|
30332
30337
|
for (const requestResponse of this.#relevantRequestResponseList) {
|
|
30333
30338
|
responses.push(requestResponse[1]);
|
|
30334
30339
|
}
|
|
@@ -30420,21 +30425,21 @@ var require_cachestorage = __commonJS({
|
|
|
30420
30425
|
}
|
|
30421
30426
|
webidl.util.markAsUncloneable(this);
|
|
30422
30427
|
}
|
|
30423
|
-
async match(
|
|
30428
|
+
async match(request4, options = {}) {
|
|
30424
30429
|
webidl.brandCheck(this, _CacheStorage);
|
|
30425
30430
|
webidl.argumentLengthCheck(arguments, 1, "CacheStorage.match");
|
|
30426
|
-
|
|
30431
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30427
30432
|
options = webidl.converters.MultiCacheQueryOptions(options);
|
|
30428
30433
|
if (options.cacheName != null) {
|
|
30429
30434
|
if (this.#caches.has(options.cacheName)) {
|
|
30430
30435
|
const cacheList = this.#caches.get(options.cacheName);
|
|
30431
30436
|
const cache3 = new Cache(kConstruct, cacheList);
|
|
30432
|
-
return await cache3.match(
|
|
30437
|
+
return await cache3.match(request4, options);
|
|
30433
30438
|
}
|
|
30434
30439
|
} else {
|
|
30435
30440
|
for (const cacheList of this.#caches.values()) {
|
|
30436
30441
|
const cache3 = new Cache(kConstruct, cacheList);
|
|
30437
|
-
const response = await cache3.match(
|
|
30442
|
+
const response = await cache3.match(request4, options);
|
|
30438
30443
|
if (response !== void 0) {
|
|
30439
30444
|
return response;
|
|
30440
30445
|
}
|
|
@@ -31593,7 +31598,7 @@ var require_connection = __commonJS({
|
|
|
31593
31598
|
function establishWebSocketConnection(url, protocols, client, handler, options) {
|
|
31594
31599
|
const requestURL = url;
|
|
31595
31600
|
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
|
|
31596
|
-
const
|
|
31601
|
+
const request4 = makeRequest({
|
|
31597
31602
|
urlList: [requestURL],
|
|
31598
31603
|
client,
|
|
31599
31604
|
serviceWorkers: "none",
|
|
@@ -31606,18 +31611,18 @@ var require_connection = __commonJS({
|
|
|
31606
31611
|
});
|
|
31607
31612
|
if (options.headers) {
|
|
31608
31613
|
const headersList = getHeadersList(new Headers(options.headers));
|
|
31609
|
-
|
|
31614
|
+
request4.headersList = headersList;
|
|
31610
31615
|
}
|
|
31611
31616
|
const keyValue = crypto2.randomBytes(16).toString("base64");
|
|
31612
|
-
|
|
31613
|
-
|
|
31617
|
+
request4.headersList.append("sec-websocket-key", keyValue, true);
|
|
31618
|
+
request4.headersList.append("sec-websocket-version", "13", true);
|
|
31614
31619
|
for (const protocol of protocols) {
|
|
31615
|
-
|
|
31620
|
+
request4.headersList.append("sec-websocket-protocol", protocol, true);
|
|
31616
31621
|
}
|
|
31617
31622
|
const permessageDeflate = "permessage-deflate; client_max_window_bits";
|
|
31618
|
-
|
|
31623
|
+
request4.headersList.append("sec-websocket-extensions", permessageDeflate, true);
|
|
31619
31624
|
const controller = fetching({
|
|
31620
|
-
request:
|
|
31625
|
+
request: request4,
|
|
31621
31626
|
useParallelQueue: true,
|
|
31622
31627
|
dispatcher: options.dispatcher,
|
|
31623
31628
|
processResponse(response) {
|
|
@@ -31664,7 +31669,7 @@ var require_connection = __commonJS({
|
|
|
31664
31669
|
}
|
|
31665
31670
|
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
|
|
31666
31671
|
if (secProtocol !== null) {
|
|
31667
|
-
const requestProtocols = getDecodeSplit("sec-websocket-protocol",
|
|
31672
|
+
const requestProtocols = getDecodeSplit("sec-websocket-protocol", request4.headersList);
|
|
31668
31673
|
if (!requestProtocols.includes(secProtocol)) {
|
|
31669
31674
|
failWebsocketConnection(handler, 1002, "Protocol was not set in the opening handshake.");
|
|
31670
31675
|
return;
|
|
@@ -34811,6 +34816,21 @@ var init_config2 = __esm({
|
|
|
34811
34816
|
});
|
|
34812
34817
|
|
|
34813
34818
|
// src/api.ts
|
|
34819
|
+
var api_exports = {};
|
|
34820
|
+
__export(api_exports, {
|
|
34821
|
+
DeviceMeUnauthorized: () => DeviceMeUnauthorized,
|
|
34822
|
+
fetchBackfillDaySessions: () => fetchBackfillDaySessions,
|
|
34823
|
+
fetchBackfillDays: () => fetchBackfillDays,
|
|
34824
|
+
fetchDeviceMe: () => fetchDeviceMe,
|
|
34825
|
+
fetchDeviceViewByClaim: () => fetchDeviceViewByClaim,
|
|
34826
|
+
fetchDeviceViewJobsByClaim: () => fetchDeviceViewJobsByClaim,
|
|
34827
|
+
fetchDeviceViewLedgerByClaim: () => fetchDeviceViewLedgerByClaim,
|
|
34828
|
+
postControlScan: () => postControlScan,
|
|
34829
|
+
reportDiscovery: () => reportDiscovery,
|
|
34830
|
+
rotateDeviceSecret: () => rotateDeviceSecret,
|
|
34831
|
+
selfRegister: () => selfRegister,
|
|
34832
|
+
uploadBatch: () => uploadBatch
|
|
34833
|
+
});
|
|
34814
34834
|
async function selfRegister(input) {
|
|
34815
34835
|
const res = await (0, import_undici.request)(`${state.apiUrl}/v1/devices/self-register`, {
|
|
34816
34836
|
method: "POST",
|
|
@@ -34893,7 +34913,7 @@ async function fetchDeviceViewLedgerByClaim(claimCode) {
|
|
|
34893
34913
|
}
|
|
34894
34914
|
function ingestClient() {
|
|
34895
34915
|
if (_ingest) return _ingest;
|
|
34896
|
-
const
|
|
34916
|
+
const logger3 = createLogger("daemon.ingest");
|
|
34897
34917
|
_ingest = new IngestClient({
|
|
34898
34918
|
apiUrl: state.apiUrl,
|
|
34899
34919
|
auth: {
|
|
@@ -34909,7 +34929,7 @@ function ingestClient() {
|
|
|
34909
34929
|
}
|
|
34910
34930
|
}
|
|
34911
34931
|
},
|
|
34912
|
-
logger:
|
|
34932
|
+
logger: logger3
|
|
34913
34933
|
});
|
|
34914
34934
|
return _ingest;
|
|
34915
34935
|
}
|
|
@@ -34944,6 +34964,34 @@ function fetchBackfillDays() {
|
|
|
34944
34964
|
function fetchBackfillDaySessions(day) {
|
|
34945
34965
|
return backfillGet(`?day=${encodeURIComponent(day)}`);
|
|
34946
34966
|
}
|
|
34967
|
+
function controlPort() {
|
|
34968
|
+
return Number(process.env.MODELSTAT_LOCAL_INGEST_PORT) || 4319;
|
|
34969
|
+
}
|
|
34970
|
+
async function postControlScan(body, opts = {}) {
|
|
34971
|
+
const port = opts.port ?? controlPort();
|
|
34972
|
+
try {
|
|
34973
|
+
const res = await (0, import_undici.request)(`http://127.0.0.1:${port}/v1/control/scan`, {
|
|
34974
|
+
method: "POST",
|
|
34975
|
+
headers: { "content-type": "application/json" },
|
|
34976
|
+
body: JSON.stringify(body),
|
|
34977
|
+
// A `wait:true` scan can take a while (cold-ish summariser, big session);
|
|
34978
|
+
// give it room but don't hang forever. undici's headersTimeout/bodyTimeout
|
|
34979
|
+
// default to 30s — lift them for the waiting case.
|
|
34980
|
+
headersTimeout: body.wait ? 6e5 : 5e3,
|
|
34981
|
+
bodyTimeout: body.wait ? 6e5 : 5e3
|
|
34982
|
+
});
|
|
34983
|
+
if (res.statusCode >= 300) {
|
|
34984
|
+
const message = await res.body.text().catch(() => "");
|
|
34985
|
+
return { kind: "error", status: res.statusCode, message };
|
|
34986
|
+
}
|
|
34987
|
+
const data = await res.body.json().catch(() => ({}));
|
|
34988
|
+
return { kind: "ok", started: data.started === true, scanned: data.scanned === true };
|
|
34989
|
+
} catch (e) {
|
|
34990
|
+
const code = e.code;
|
|
34991
|
+
if (code === "ECONNREFUSED" || code === "ECONNRESET") return { kind: "no_daemon" };
|
|
34992
|
+
return { kind: "error", status: 0, message: e.message };
|
|
34993
|
+
}
|
|
34994
|
+
}
|
|
34947
34995
|
var import_undici, DeviceMeUnauthorized, _ingest;
|
|
34948
34996
|
var init_api = __esm({
|
|
34949
34997
|
"src/api.ts"() {
|
|
@@ -35879,6 +35927,7 @@ Write a \u2264${ABSTRACT_OUTPUT_MAX_CHARS}-char summary (1-2 sentences) naming e
|
|
|
35879
35927
|
} catch {
|
|
35880
35928
|
segmentEmbedding = void 0;
|
|
35881
35929
|
}
|
|
35930
|
+
const userIntent = await summariseUserIntent(slice, adapters2);
|
|
35882
35931
|
const sourceEventIds = slice.map((e) => e.source_event_id);
|
|
35883
35932
|
const id = segmentId(sessionId, startedAtMs, endedAtMs, sourceEventIds);
|
|
35884
35933
|
return {
|
|
@@ -35901,9 +35950,40 @@ Write a \u2264${ABSTRACT_OUTPUT_MAX_CHARS}-char summary (1-2 sentences) naming e
|
|
|
35901
35950
|
redaction: redacted.counts,
|
|
35902
35951
|
source_event_ids: sourceEventIds,
|
|
35903
35952
|
abstract_embedding: segmentEmbedding && segmentEmbedding.length === 384 ? segmentEmbedding : void 0,
|
|
35904
|
-
behavior
|
|
35953
|
+
behavior,
|
|
35954
|
+
user_intent: userIntent
|
|
35905
35955
|
};
|
|
35906
35956
|
}
|
|
35957
|
+
async function summariseUserIntent(slice, adapters2) {
|
|
35958
|
+
const userExcerpts = slice.filter((e) => e.kind === "user_message").map((e) => e.content_excerpt?.replace(/\s+/g, " ").trim()).filter((x) => !!x && x.length > 0);
|
|
35959
|
+
if (userExcerpts.length === 0) return void 0;
|
|
35960
|
+
const sample = userExcerpts.length <= 6 ? userExcerpts : [...userExcerpts.slice(0, 4), ...userExcerpts.slice(-2)];
|
|
35961
|
+
const block = sample.map((e, i) => ` [msg ${i + 1}] "${e.slice(0, 240)}"`).join("\n");
|
|
35962
|
+
try {
|
|
35963
|
+
const raw = await adapters2.summarize({
|
|
35964
|
+
prompt: `The developer's own messages to an AI coding assistant (already redacted of PII and secrets):
|
|
35965
|
+
${block}
|
|
35966
|
+
|
|
35967
|
+
In \u2264${USER_INTENT_MAX_CHARS} chars, summarise WHAT THE DEVELOPER ASKED FOR or DIRECTED \u2014 their goal or task in their own framing, AND any standing preferences / directives / conventions they expressed (e.g. "always be thorough", "ship fast", a naming or workflow convention). Focus on the DEVELOPER'S intent and voice, NOT what the assistant did. Reply with only the summary.`,
|
|
35968
|
+
maxTokens: USER_INTENT_MAX_TOKENS,
|
|
35969
|
+
excerpts: sample,
|
|
35970
|
+
facts: ""
|
|
35971
|
+
});
|
|
35972
|
+
if (!raw || !raw.trim()) return void 0;
|
|
35973
|
+
const regexPass = redact(raw);
|
|
35974
|
+
let text = regexPass.text;
|
|
35975
|
+
if (adapters2.redact) {
|
|
35976
|
+
try {
|
|
35977
|
+
text = (await adapters2.redact(regexPass.text)).text;
|
|
35978
|
+
} catch {
|
|
35979
|
+
}
|
|
35980
|
+
}
|
|
35981
|
+
const trimmed = text.trim().slice(0, USER_INTENT_MAX_CHARS);
|
|
35982
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
35983
|
+
} catch {
|
|
35984
|
+
return void 0;
|
|
35985
|
+
}
|
|
35986
|
+
}
|
|
35907
35987
|
function computeBehavior(slice, cognition) {
|
|
35908
35988
|
let userTurns = 0;
|
|
35909
35989
|
let correctionCount = 0;
|
|
@@ -35983,7 +36063,7 @@ function inferEnvironment(branch) {
|
|
|
35983
36063
|
if (b === "dev" || b === "develop" || b.startsWith("dev/")) return "Dev";
|
|
35984
36064
|
return null;
|
|
35985
36065
|
}
|
|
35986
|
-
var SEGMENT_TIME_GAP_MS, SEGMENT_TOPIC_THRESHOLD, SEGMENT_MAX_TURNS, SEGMENT_MAX_DURATION_MS, SEGMENT_MAX_CONTENT_CHARS, ABSTRACT_MAX_CHARS, FRUSTRATION_MARKERS;
|
|
36066
|
+
var SEGMENT_TIME_GAP_MS, SEGMENT_TOPIC_THRESHOLD, SEGMENT_MAX_TURNS, SEGMENT_MAX_DURATION_MS, SEGMENT_MAX_CONTENT_CHARS, ABSTRACT_MAX_CHARS, USER_INTENT_MAX_CHARS, USER_INTENT_MAX_TOKENS, FRUSTRATION_MARKERS;
|
|
35987
36067
|
var init_pipeline = __esm({
|
|
35988
36068
|
"../../packages/daemon-core/src/pipeline/index.ts"() {
|
|
35989
36069
|
"use strict";
|
|
@@ -36005,6 +36085,8 @@ var init_pipeline = __esm({
|
|
|
36005
36085
|
SEGMENT_MAX_DURATION_MS = 30 * 6e4;
|
|
36006
36086
|
SEGMENT_MAX_CONTENT_CHARS = 12e3;
|
|
36007
36087
|
ABSTRACT_MAX_CHARS = 512;
|
|
36088
|
+
USER_INTENT_MAX_CHARS = 240;
|
|
36089
|
+
USER_INTENT_MAX_TOKENS = 120;
|
|
36008
36090
|
FRUSTRATION_MARKERS = [
|
|
36009
36091
|
"frustrat",
|
|
36010
36092
|
"annoy",
|
|
@@ -36209,7 +36291,7 @@ async function ensureLlamaModel(cfg = defaultLlamaConfig()) {
|
|
|
36209
36291
|
const tmp = `${cfg.modelPath}.partial`;
|
|
36210
36292
|
const { createWriteStream } = await import("fs");
|
|
36211
36293
|
const { Readable: Readable2 } = await import("stream");
|
|
36212
|
-
const { rename:
|
|
36294
|
+
const { rename: rename3 } = await import("fs/promises");
|
|
36213
36295
|
const out = createWriteStream(tmp);
|
|
36214
36296
|
const isTty = Boolean(process.stdout.isTTY);
|
|
36215
36297
|
let received = 0;
|
|
@@ -36247,15 +36329,15 @@ async function ensureLlamaModel(cfg = defaultLlamaConfig()) {
|
|
|
36247
36329
|
lastLog = now;
|
|
36248
36330
|
}
|
|
36249
36331
|
});
|
|
36250
|
-
await new Promise((
|
|
36332
|
+
await new Promise((resolve7, reject) => {
|
|
36251
36333
|
nodeStream.pipe(out);
|
|
36252
|
-
out.on("finish", () =>
|
|
36334
|
+
out.on("finish", () => resolve7());
|
|
36253
36335
|
out.on("error", reject);
|
|
36254
36336
|
nodeStream.on("error", reject);
|
|
36255
36337
|
});
|
|
36256
36338
|
renderProgress(true);
|
|
36257
36339
|
if (isTty) process.stdout.write("\n");
|
|
36258
|
-
await
|
|
36340
|
+
await rename3(tmp, cfg.modelPath);
|
|
36259
36341
|
console.log(`[modelstat] summariser model ready (${cfg.modelPath})`);
|
|
36260
36342
|
return cfg.modelPath;
|
|
36261
36343
|
}
|
|
@@ -37116,6 +37198,12 @@ var init_pipeline2 = __esm({
|
|
|
37116
37198
|
});
|
|
37117
37199
|
|
|
37118
37200
|
// src/scan.ts
|
|
37201
|
+
var scan_exports = {};
|
|
37202
|
+
__export(scan_exports, {
|
|
37203
|
+
discoverJobs: () => discoverJobs,
|
|
37204
|
+
scanAll: () => scanAll,
|
|
37205
|
+
scanSession: () => scanSession
|
|
37206
|
+
});
|
|
37119
37207
|
import { readdir, stat as stat2 } from "fs/promises";
|
|
37120
37208
|
import { homedir as homedir5 } from "os";
|
|
37121
37209
|
import { join as join7 } from "path";
|
|
@@ -37179,13 +37267,66 @@ async function scanAll(cb = {}) {
|
|
|
37179
37267
|
const deviceId = state.deviceId;
|
|
37180
37268
|
if (!deviceId) throw new Error("daemon not enrolled \u2014 run `register` first");
|
|
37181
37269
|
const jobs = await discoverJobs(deviceId);
|
|
37182
|
-
const ordered =
|
|
37270
|
+
const ordered = await orderJobsNewestFirst(jobs);
|
|
37271
|
+
return runScanOverJobs(
|
|
37272
|
+
ordered,
|
|
37273
|
+
deviceId,
|
|
37274
|
+
{ maxFiles: MAX_FILES_PER_SCAN, forceReadAll: false },
|
|
37275
|
+
cb
|
|
37276
|
+
);
|
|
37277
|
+
}
|
|
37278
|
+
async function scanSession(target = {}, cb = {}) {
|
|
37279
|
+
const deviceId = state.deviceId;
|
|
37280
|
+
if (!deviceId) throw new Error("daemon not enrolled \u2014 run `register` first");
|
|
37281
|
+
const all = await discoverJobs(deviceId);
|
|
37282
|
+
let selected;
|
|
37283
|
+
if (target.file) {
|
|
37284
|
+
const existing = all.find((j) => j.path === target.file);
|
|
37285
|
+
selected = existing ? [existing] : [jobForFile(deviceId, target.file)];
|
|
37286
|
+
} else if (target.sessionIds && target.sessionIds.length > 0) {
|
|
37287
|
+
const wanted = new Set(target.sessionIds);
|
|
37288
|
+
selected = all.filter((j) => {
|
|
37289
|
+
const sid = sessionIdForPath(j.path);
|
|
37290
|
+
return sid != null && wanted.has(sid);
|
|
37291
|
+
});
|
|
37292
|
+
} else {
|
|
37293
|
+
const ordered = await orderJobsNewestFirst(all);
|
|
37294
|
+
selected = ordered.slice(0, 1);
|
|
37295
|
+
}
|
|
37296
|
+
if (selected.length === 0) {
|
|
37297
|
+
return {
|
|
37298
|
+
filesScanned: 0,
|
|
37299
|
+
filesUnchanged: 0,
|
|
37300
|
+
batchesUploaded: 0,
|
|
37301
|
+
eventsUploaded: 0,
|
|
37302
|
+
segmentsUploaded: 0,
|
|
37303
|
+
morePending: false
|
|
37304
|
+
};
|
|
37305
|
+
}
|
|
37306
|
+
return runScanOverJobs(selected, deviceId, { maxFiles: null, forceReadAll: true }, cb);
|
|
37307
|
+
}
|
|
37308
|
+
function sessionIdForPath(path) {
|
|
37309
|
+
return deriveSessionIdFromFilename(path) ?? deriveSessionIdFromRolloutPath(path);
|
|
37310
|
+
}
|
|
37311
|
+
function jobForFile(deviceId, full) {
|
|
37312
|
+
const isCodex = full.includes("/.codex/sessions/") && /rollout-.*\.jsonl$/.test(full);
|
|
37313
|
+
return {
|
|
37314
|
+
path: full,
|
|
37315
|
+
parse: async (sink) => {
|
|
37316
|
+
const r = isCodex ? await parseCodexRollout({ deviceId, sourceFile: full, onEvents: sink }) : await parseClaudeCodeJsonl({ deviceId, sourceFile: full, onEvents: sink });
|
|
37317
|
+
return { toolCalls: r.toolCalls ?? [], scriptContexts: r.scriptContexts ?? [] };
|
|
37318
|
+
}
|
|
37319
|
+
};
|
|
37320
|
+
}
|
|
37321
|
+
async function orderJobsNewestFirst(jobs) {
|
|
37322
|
+
return (await Promise.all(
|
|
37183
37323
|
jobs.map(async (j) => ({
|
|
37184
37324
|
job: j,
|
|
37185
37325
|
mtimeMs: (await stat2(j.path).catch(() => null))?.mtimeMs ?? 0
|
|
37186
37326
|
}))
|
|
37187
37327
|
)).sort((a, b) => b.mtimeMs - a.mtimeMs).map((x) => x.job);
|
|
37188
|
-
|
|
37328
|
+
}
|
|
37329
|
+
async function runScanOverJobs(ordered, deviceId, opts, cb) {
|
|
37189
37330
|
let morePending = false;
|
|
37190
37331
|
let filesScanned = 0;
|
|
37191
37332
|
let filesUnchanged = 0;
|
|
@@ -37273,7 +37414,7 @@ async function scanAll(cb = {}) {
|
|
|
37273
37414
|
cb.onFile?.(job.path, i, ordered.length);
|
|
37274
37415
|
const cur = state.getCursor(job.path);
|
|
37275
37416
|
const cs = await quickChecksum(job.path).catch(() => null);
|
|
37276
|
-
if (cs && cur && cur.size === cs.size && cur.tailHash === cs.tailHash) {
|
|
37417
|
+
if (!opts.forceReadAll && cs && cur && cur.size === cs.size && cur.tailHash === cs.tailHash) {
|
|
37277
37418
|
filesUnchanged += 1;
|
|
37278
37419
|
continue;
|
|
37279
37420
|
}
|
|
@@ -37293,7 +37434,7 @@ async function scanAll(cb = {}) {
|
|
|
37293
37434
|
} catch (e) {
|
|
37294
37435
|
console.warn(` ! parse failed for ${job.path}:`, e.message);
|
|
37295
37436
|
}
|
|
37296
|
-
if (filesScanned >=
|
|
37437
|
+
if (opts.maxFiles !== null && filesScanned >= opts.maxFiles) {
|
|
37297
37438
|
morePending = true;
|
|
37298
37439
|
break;
|
|
37299
37440
|
}
|
|
@@ -37308,7 +37449,7 @@ async function scanAll(cb = {}) {
|
|
|
37308
37449
|
morePending
|
|
37309
37450
|
};
|
|
37310
37451
|
}
|
|
37311
|
-
var DAEMON_VERSION, BATCH_MAX_EVENTS, BATCH_MAX_TOOL_CALLS, BATCH_BUFFER_HARD_CAP, ZERO_TOKENS;
|
|
37452
|
+
var DAEMON_VERSION, BATCH_MAX_EVENTS, BATCH_MAX_TOOL_CALLS, BATCH_BUFFER_HARD_CAP, ZERO_TOKENS, MAX_FILES_PER_SCAN;
|
|
37312
37453
|
var init_scan = __esm({
|
|
37313
37454
|
"src/scan.ts"() {
|
|
37314
37455
|
"use strict";
|
|
@@ -37319,7 +37460,7 @@ var init_scan = __esm({
|
|
|
37319
37460
|
init_api();
|
|
37320
37461
|
init_config2();
|
|
37321
37462
|
init_pipeline2();
|
|
37322
|
-
DAEMON_VERSION = true ? "daemon-0.
|
|
37463
|
+
DAEMON_VERSION = true ? "daemon-0.14.0" : "daemon-dev";
|
|
37323
37464
|
BATCH_MAX_EVENTS = INGEST_BATCH_MAX_EVENTS;
|
|
37324
37465
|
BATCH_MAX_TOOL_CALLS = 2e4;
|
|
37325
37466
|
BATCH_BUFFER_HARD_CAP = BATCH_MAX_EVENTS * 2;
|
|
@@ -37330,6 +37471,7 @@ var init_scan = __esm({
|
|
|
37330
37471
|
cache_read: 0,
|
|
37331
37472
|
reasoning: 0
|
|
37332
37473
|
};
|
|
37474
|
+
MAX_FILES_PER_SCAN = 12;
|
|
37333
37475
|
}
|
|
37334
37476
|
});
|
|
37335
37477
|
|
|
@@ -37556,8 +37698,105 @@ var init_update = __esm({
|
|
|
37556
37698
|
}
|
|
37557
37699
|
});
|
|
37558
37700
|
|
|
37701
|
+
// src/insights.ts
|
|
37702
|
+
var insights_exports = {};
|
|
37703
|
+
__export(insights_exports, {
|
|
37704
|
+
cacheSessionInsights: () => cacheSessionInsights,
|
|
37705
|
+
fetchSessionInsights: () => fetchSessionInsights,
|
|
37706
|
+
refreshSessionInsights: () => refreshSessionInsights,
|
|
37707
|
+
sessionInsightsPath: () => sessionInsightsPath
|
|
37708
|
+
});
|
|
37709
|
+
import { mkdir as mkdir2, rename, writeFile } from "fs/promises";
|
|
37710
|
+
function sessionsDir() {
|
|
37711
|
+
return homePath("sessions");
|
|
37712
|
+
}
|
|
37713
|
+
function sessionInsightsPath(sessionId) {
|
|
37714
|
+
return homePath("sessions", `${encodeURIComponent(sessionId)}.json`);
|
|
37715
|
+
}
|
|
37716
|
+
async function fetchSessionInsights(sessionIds, opts = {}) {
|
|
37717
|
+
const bearer = state.bearer;
|
|
37718
|
+
if (!bearer) return null;
|
|
37719
|
+
if (sessionIds.length === 0) return null;
|
|
37720
|
+
try {
|
|
37721
|
+
const res = await (0, import_undici2.request)(`${state.apiUrl}/v1/mcp/call`, {
|
|
37722
|
+
method: "POST",
|
|
37723
|
+
headers: { "content-type": "application/json", authorization: `Bearer ${bearer}` },
|
|
37724
|
+
body: JSON.stringify({
|
|
37725
|
+
name: "session_insights",
|
|
37726
|
+
arguments: { session_ids: sessionIds, eager: opts.eager === true }
|
|
37727
|
+
})
|
|
37728
|
+
});
|
|
37729
|
+
if (res.statusCode >= 300) {
|
|
37730
|
+
await res.body.dump();
|
|
37731
|
+
return null;
|
|
37732
|
+
}
|
|
37733
|
+
const body = await res.body.json();
|
|
37734
|
+
if (body.isError) return null;
|
|
37735
|
+
const text = body.content?.find((c) => c.type === "text")?.text ?? body.content?.[0]?.text;
|
|
37736
|
+
if (!text) return null;
|
|
37737
|
+
return JSON.parse(text);
|
|
37738
|
+
} catch (e) {
|
|
37739
|
+
logger.warn(`session_insights fetch failed: ${e.message}`);
|
|
37740
|
+
return null;
|
|
37741
|
+
}
|
|
37742
|
+
}
|
|
37743
|
+
async function cacheSessionInsights(sessionId, insights) {
|
|
37744
|
+
const path = sessionInsightsPath(sessionId);
|
|
37745
|
+
const payload = { ...insights, cached_at: (/* @__PURE__ */ new Date()).toISOString() };
|
|
37746
|
+
try {
|
|
37747
|
+
await mkdir2(sessionsDir(), { recursive: true });
|
|
37748
|
+
const tmp = `${path}.tmp`;
|
|
37749
|
+
await writeFile(tmp, JSON.stringify(payload));
|
|
37750
|
+
await rename(tmp, path);
|
|
37751
|
+
} catch (e) {
|
|
37752
|
+
logger.warn(`session insights cache write failed for ${sessionId}: ${e.message}`);
|
|
37753
|
+
}
|
|
37754
|
+
}
|
|
37755
|
+
async function refreshSessionInsights(sessionIds) {
|
|
37756
|
+
if (sessionIds.length === 0) return;
|
|
37757
|
+
const cacheKey = sessionIds[0];
|
|
37758
|
+
let insights = await fetchSessionInsights(sessionIds, { eager: true });
|
|
37759
|
+
if (insights) await cacheSessionInsights(cacheKey, insights);
|
|
37760
|
+
for (const delay of POLL_DELAYS_MS) {
|
|
37761
|
+
if (!insights || insights.status !== "analyzing") break;
|
|
37762
|
+
await sleep2(delay);
|
|
37763
|
+
const next = await fetchSessionInsights(sessionIds, { eager: false });
|
|
37764
|
+
if (next) {
|
|
37765
|
+
insights = next;
|
|
37766
|
+
await cacheSessionInsights(cacheKey, next);
|
|
37767
|
+
}
|
|
37768
|
+
}
|
|
37769
|
+
}
|
|
37770
|
+
function sleep2(ms) {
|
|
37771
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
37772
|
+
}
|
|
37773
|
+
var import_undici2, logger, POLL_DELAYS_MS;
|
|
37774
|
+
var init_insights = __esm({
|
|
37775
|
+
"src/insights.ts"() {
|
|
37776
|
+
"use strict";
|
|
37777
|
+
import_undici2 = __toESM(require_undici(), 1);
|
|
37778
|
+
init_logger();
|
|
37779
|
+
init_config2();
|
|
37780
|
+
init_paths();
|
|
37781
|
+
logger = createLogger("daemon.insights");
|
|
37782
|
+
POLL_DELAYS_MS = [1200, 2e3, 3e3, 4e3];
|
|
37783
|
+
}
|
|
37784
|
+
});
|
|
37785
|
+
|
|
37559
37786
|
// src/receiver.ts
|
|
37560
37787
|
import { createServer } from "http";
|
|
37788
|
+
import { homedir as homedir7 } from "os";
|
|
37789
|
+
import { resolve as resolve4, sep } from "path";
|
|
37790
|
+
function transcriptRoots() {
|
|
37791
|
+
const home2 = homedir7();
|
|
37792
|
+
return [resolve4(home2, ".claude/projects"), resolve4(home2, ".codex/sessions")];
|
|
37793
|
+
}
|
|
37794
|
+
function isAllowedTranscriptFile(file) {
|
|
37795
|
+
const target = resolve4(file);
|
|
37796
|
+
return transcriptRoots().some(
|
|
37797
|
+
(root) => target === root || target.startsWith(root + sep)
|
|
37798
|
+
);
|
|
37799
|
+
}
|
|
37561
37800
|
function queue() {
|
|
37562
37801
|
if (!store) store = new FileQueueStore(homePath("sdk-ingest-queue.json"));
|
|
37563
37802
|
return store;
|
|
@@ -37632,36 +37871,51 @@ function localQueueDepth() {
|
|
|
37632
37871
|
}
|
|
37633
37872
|
function startLocalIngestReceiver(opts = {}) {
|
|
37634
37873
|
const port = opts.port ?? (Number(process.env.MODELSTAT_LOCAL_INGEST_PORT) || DEFAULT_LOCAL_INGEST_PORT);
|
|
37635
|
-
|
|
37636
|
-
|
|
37874
|
+
const controlRunner = opts.onControlScan ? createControlRunner(opts.onControlScan) : null;
|
|
37875
|
+
return new Promise((resolve7) => {
|
|
37876
|
+
const server = createServer((req, res) => void handle(req, res, controlRunner));
|
|
37637
37877
|
let settled = false;
|
|
37638
37878
|
server.on("error", (err) => {
|
|
37639
37879
|
if (settled) return;
|
|
37640
37880
|
settled = true;
|
|
37641
|
-
|
|
37881
|
+
logger2.warn(
|
|
37642
37882
|
`local ingest receiver disabled \u2014 SDK local_daemon mode unavailable: ${err.code ?? err.message} on 127.0.0.1:${port}`
|
|
37643
37883
|
);
|
|
37644
|
-
|
|
37884
|
+
resolve7(null);
|
|
37645
37885
|
});
|
|
37646
37886
|
server.listen(port, "127.0.0.1", () => {
|
|
37647
37887
|
settled = true;
|
|
37648
37888
|
const addr = server.address();
|
|
37649
37889
|
const boundPort = typeof addr === "object" && addr ? addr.port : port;
|
|
37650
|
-
|
|
37651
|
-
|
|
37890
|
+
logger2.info(`local ingest receiver on http://127.0.0.1:${boundPort}/v1/ingest`);
|
|
37891
|
+
resolve7({
|
|
37652
37892
|
port: boundPort,
|
|
37653
37893
|
close: () => new Promise((r) => server.close(() => r()))
|
|
37654
37894
|
});
|
|
37655
37895
|
});
|
|
37656
37896
|
});
|
|
37657
37897
|
}
|
|
37658
|
-
|
|
37898
|
+
function createControlRunner(handler) {
|
|
37899
|
+
let active = null;
|
|
37900
|
+
return {
|
|
37901
|
+
run(target) {
|
|
37902
|
+
const prev = active ?? Promise.resolve();
|
|
37903
|
+
const next = prev.catch(() => void 0).then(() => handler(target));
|
|
37904
|
+
active = next.catch(() => void 0);
|
|
37905
|
+
return next;
|
|
37906
|
+
}
|
|
37907
|
+
};
|
|
37908
|
+
}
|
|
37909
|
+
async function handle(req, res, controlRunner) {
|
|
37659
37910
|
const send = (code, body) => {
|
|
37660
37911
|
res.writeHead(code, { "content-type": "application/json" });
|
|
37661
37912
|
res.end(JSON.stringify(body));
|
|
37662
37913
|
};
|
|
37663
37914
|
const path = (req.url ?? "").split("?")[0];
|
|
37664
37915
|
if (req.method === "GET" && path === "/healthz") return send(200, { ok: true });
|
|
37916
|
+
if (req.method === "POST" && path === "/v1/control/scan") {
|
|
37917
|
+
return handleControlScan(req, send, controlRunner);
|
|
37918
|
+
}
|
|
37665
37919
|
if (req.method !== "POST" || path !== "/v1/ingest" && path !== "/v1/ingest/raw") {
|
|
37666
37920
|
return send(404, { error: "not found" });
|
|
37667
37921
|
}
|
|
@@ -37692,11 +37946,56 @@ async function handle(req, res) {
|
|
|
37692
37946
|
const accepted = await enqueue(parsed);
|
|
37693
37947
|
return send(200, { accepted, queued: true });
|
|
37694
37948
|
} catch (e) {
|
|
37695
|
-
|
|
37949
|
+
logger2.warn(`local ingest enqueue failed: ${e.message}`);
|
|
37696
37950
|
return send(500, { error: "enqueue failed" });
|
|
37697
37951
|
}
|
|
37698
37952
|
}
|
|
37699
|
-
|
|
37953
|
+
async function handleControlScan(req, send, controlRunner) {
|
|
37954
|
+
if (!controlRunner) return send(503, { error: "control scan unavailable" });
|
|
37955
|
+
const chunks = [];
|
|
37956
|
+
let size = 0;
|
|
37957
|
+
try {
|
|
37958
|
+
for await (const chunk of req) {
|
|
37959
|
+
size += chunk.length;
|
|
37960
|
+
if (size > 64 * 1024) {
|
|
37961
|
+
send(413, { error: "control body too large" });
|
|
37962
|
+
req.destroy();
|
|
37963
|
+
return;
|
|
37964
|
+
}
|
|
37965
|
+
chunks.push(chunk);
|
|
37966
|
+
}
|
|
37967
|
+
} catch {
|
|
37968
|
+
return send(400, { error: "read error" });
|
|
37969
|
+
}
|
|
37970
|
+
let body;
|
|
37971
|
+
try {
|
|
37972
|
+
const raw = chunks.length ? Buffer.concat(chunks).toString("utf8") : "{}";
|
|
37973
|
+
body = JSON.parse(raw);
|
|
37974
|
+
} catch {
|
|
37975
|
+
return send(400, { error: "invalid json" });
|
|
37976
|
+
}
|
|
37977
|
+
const sessionIds = Array.isArray(body.session_ids) ? body.session_ids.filter((s) => typeof s === "string" && s.length > 0) : void 0;
|
|
37978
|
+
let file;
|
|
37979
|
+
if (body.file !== void 0) {
|
|
37980
|
+
if (typeof body.file !== "string" || !isAllowedTranscriptFile(body.file)) {
|
|
37981
|
+
return send(400, { error: "file must be under ~/.claude/projects or ~/.codex/sessions" });
|
|
37982
|
+
}
|
|
37983
|
+
file = body.file;
|
|
37984
|
+
}
|
|
37985
|
+
const target = { sessionIds, file };
|
|
37986
|
+
const run = controlRunner.run(target);
|
|
37987
|
+
if (body.wait === true) {
|
|
37988
|
+
try {
|
|
37989
|
+
await run;
|
|
37990
|
+
return send(200, { ok: true, scanned: true });
|
|
37991
|
+
} catch (e) {
|
|
37992
|
+
return send(500, { error: `scan failed: ${e.message}` });
|
|
37993
|
+
}
|
|
37994
|
+
}
|
|
37995
|
+
void run.catch((e) => logger2.warn(`control scan failed: ${e.message}`));
|
|
37996
|
+
return send(200, { ok: true, started: true });
|
|
37997
|
+
}
|
|
37998
|
+
var logger2, DEFAULT_LOCAL_INGEST_PORT, MAX_BODY_BYTES, store, pipeline, draining;
|
|
37700
37999
|
var init_receiver = __esm({
|
|
37701
38000
|
"src/receiver.ts"() {
|
|
37702
38001
|
"use strict";
|
|
@@ -37706,7 +38005,7 @@ var init_receiver = __esm({
|
|
|
37706
38005
|
init_api();
|
|
37707
38006
|
init_paths();
|
|
37708
38007
|
init_pipeline2();
|
|
37709
|
-
|
|
38008
|
+
logger2 = createLogger("daemon.local-ingest");
|
|
37710
38009
|
DEFAULT_LOCAL_INGEST_PORT = 4319;
|
|
37711
38010
|
MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
37712
38011
|
store = null;
|
|
@@ -37886,7 +38185,7 @@ var PROCESSING_VERSION;
|
|
|
37886
38185
|
var init_processing_version = __esm({
|
|
37887
38186
|
"src/processing-version.ts"() {
|
|
37888
38187
|
"use strict";
|
|
37889
|
-
PROCESSING_VERSION =
|
|
38188
|
+
PROCESSING_VERSION = 11;
|
|
37890
38189
|
}
|
|
37891
38190
|
});
|
|
37892
38191
|
|
|
@@ -38035,11 +38334,11 @@ var init_src4 = __esm({
|
|
|
38035
38334
|
});
|
|
38036
38335
|
|
|
38037
38336
|
// ../../packages/remote-config/src/node.ts
|
|
38038
|
-
import { chmod, mkdir as
|
|
38039
|
-
import { homedir as
|
|
38337
|
+
import { chmod, mkdir as mkdir3, readFile, rename as rename2, writeFile as writeFile2 } from "fs/promises";
|
|
38338
|
+
import { homedir as homedir8 } from "os";
|
|
38040
38339
|
import { join as join10 } from "path";
|
|
38041
38340
|
function defaultRoot() {
|
|
38042
|
-
return join10(
|
|
38341
|
+
return join10(homedir8(), ".modelstat", "config");
|
|
38043
38342
|
}
|
|
38044
38343
|
function safeKind(kind) {
|
|
38045
38344
|
if (!/^[a-z0-9_-]{1,64}$/.test(kind)) throw new Error(`unsafe config kind: ${kind}`);
|
|
@@ -38049,8 +38348,8 @@ function createNodeDiskCache(opts = {}) {
|
|
|
38049
38348
|
const dir = opts.dir ?? defaultRoot();
|
|
38050
38349
|
async function writeAtomic2(path, data) {
|
|
38051
38350
|
const tmp = `${path}.${process.pid}.tmp`;
|
|
38052
|
-
await
|
|
38053
|
-
await
|
|
38351
|
+
await writeFile2(tmp, data, { mode: 384 });
|
|
38352
|
+
await rename2(tmp, path);
|
|
38054
38353
|
try {
|
|
38055
38354
|
await chmod(path, 384);
|
|
38056
38355
|
} catch {
|
|
@@ -38068,7 +38367,7 @@ function createNodeDiskCache(opts = {}) {
|
|
|
38068
38367
|
},
|
|
38069
38368
|
async write(kind, payload) {
|
|
38070
38369
|
const k = safeKind(kind);
|
|
38071
|
-
await
|
|
38370
|
+
await mkdir3(dir, { recursive: true, mode: 448 });
|
|
38072
38371
|
await writeAtomic2(join10(dir, `${k}.json`), `${JSON.stringify(payload)}
|
|
38073
38372
|
`);
|
|
38074
38373
|
}
|
|
@@ -38992,7 +39291,7 @@ var init_handler = __esm({
|
|
|
38992
39291
|
this._addToNodeFs(path, initialAdd, wh, depth + 1);
|
|
38993
39292
|
}
|
|
38994
39293
|
}).on(EV.ERROR, this._boundHandleError);
|
|
38995
|
-
return new Promise((
|
|
39294
|
+
return new Promise((resolve7, reject) => {
|
|
38996
39295
|
if (!stream)
|
|
38997
39296
|
return reject();
|
|
38998
39297
|
stream.once(STR_END, () => {
|
|
@@ -39001,7 +39300,7 @@ var init_handler = __esm({
|
|
|
39001
39300
|
return;
|
|
39002
39301
|
}
|
|
39003
39302
|
const wasThrottled = throttler ? throttler.clear() : false;
|
|
39004
|
-
|
|
39303
|
+
resolve7(void 0);
|
|
39005
39304
|
previous.getChildren().filter((item) => {
|
|
39006
39305
|
return item !== directory && !current.has(item);
|
|
39007
39306
|
}).forEach((item) => {
|
|
@@ -39955,7 +40254,7 @@ async function sendHeartbeat() {
|
|
|
39955
40254
|
if (!bearer || !deviceId) return;
|
|
39956
40255
|
const body = { ...snapshotBody(), device_id: deviceId };
|
|
39957
40256
|
try {
|
|
39958
|
-
const res = await (0,
|
|
40257
|
+
const res = await (0, import_undici3.request)(`${state.apiUrl}/v1/daemon/heartbeat`, {
|
|
39959
40258
|
method: "POST",
|
|
39960
40259
|
headers: { "content-type": "application/json", authorization: `Bearer ${bearer}` },
|
|
39961
40260
|
body: JSON.stringify(body)
|
|
@@ -39974,10 +40273,10 @@ async function sendHeartbeat() {
|
|
|
39974
40273
|
writeLocalStatus(body).catch(() => void 0);
|
|
39975
40274
|
}
|
|
39976
40275
|
async function rotateRunawayLogs() {
|
|
39977
|
-
const { homedir:
|
|
40276
|
+
const { homedir: homedir10 } = await import("os");
|
|
39978
40277
|
const { join: join14 } = await import("path");
|
|
39979
|
-
const { open: open2, stat: stat7, truncate, writeFile:
|
|
39980
|
-
const dir = join14(
|
|
40278
|
+
const { open: open2, stat: stat7, truncate, writeFile: writeFile3 } = await import("fs/promises");
|
|
40279
|
+
const dir = join14(homedir10(), ".modelstat", "logs");
|
|
39981
40280
|
for (const name of ["out.log", "err.log"]) {
|
|
39982
40281
|
const p = join14(dir, name);
|
|
39983
40282
|
try {
|
|
@@ -39988,7 +40287,7 @@ async function rotateRunawayLogs() {
|
|
|
39988
40287
|
try {
|
|
39989
40288
|
const buf = Buffer.alloc(keep);
|
|
39990
40289
|
await fh.read(buf, 0, keep, st.size - keep);
|
|
39991
|
-
await
|
|
40290
|
+
await writeFile3(p.replace(/\.log$/, ".old.log"), buf);
|
|
39992
40291
|
} finally {
|
|
39993
40292
|
await fh.close();
|
|
39994
40293
|
}
|
|
@@ -40002,20 +40301,20 @@ async function rotateRunawayLogs() {
|
|
|
40002
40301
|
}
|
|
40003
40302
|
async function writeLocalStatus(snapshot) {
|
|
40004
40303
|
const { join: join14 } = await import("path");
|
|
40005
|
-
const { writeFile:
|
|
40304
|
+
const { writeFile: writeFile3, mkdir: mkdir4, rename: rename3 } = await import("fs/promises");
|
|
40006
40305
|
const { modelstatHome: modelstatHome2 } = await Promise.resolve().then(() => (init_paths(), paths_exports));
|
|
40007
40306
|
if (!lastStatusPath) {
|
|
40008
40307
|
const dir = modelstatHome2();
|
|
40009
40308
|
try {
|
|
40010
|
-
await
|
|
40309
|
+
await mkdir4(dir, { recursive: true });
|
|
40011
40310
|
} catch {
|
|
40012
40311
|
}
|
|
40013
40312
|
lastStatusPath = join14(dir, "last-status.json");
|
|
40014
40313
|
}
|
|
40015
40314
|
const tmp = `${lastStatusPath}.tmp`;
|
|
40016
40315
|
try {
|
|
40017
|
-
await
|
|
40018
|
-
await
|
|
40316
|
+
await writeFile3(tmp, JSON.stringify({ ...snapshot, written_at: (/* @__PURE__ */ new Date()).toISOString() }));
|
|
40317
|
+
await rename3(tmp, lastStatusPath);
|
|
40019
40318
|
} catch {
|
|
40020
40319
|
}
|
|
40021
40320
|
}
|
|
@@ -40084,6 +40383,38 @@ async function runScanCycle(reason) {
|
|
|
40084
40383
|
function requestScan(reason) {
|
|
40085
40384
|
return scanRunner.trigger(reason);
|
|
40086
40385
|
}
|
|
40386
|
+
async function runEagerSessionScan(target) {
|
|
40387
|
+
setPhase("scanning", "Eager scan (current session)");
|
|
40388
|
+
try {
|
|
40389
|
+
const r = await scanSession(target, {
|
|
40390
|
+
onProgress(p) {
|
|
40391
|
+
if (p.segment === 0) setPhase("processing", "Analyzing current session");
|
|
40392
|
+
else setPhase("processing", `Summarising segment ${p.segment}/${p.segmentTotal}`);
|
|
40393
|
+
},
|
|
40394
|
+
onUpload({ segments }) {
|
|
40395
|
+
setPhase("uploading", `Uploading ${segments} segments`);
|
|
40396
|
+
setStat("segments_sending", segments);
|
|
40397
|
+
},
|
|
40398
|
+
onUploaded({ events, segments }) {
|
|
40399
|
+
bumpStat("events_uploaded", events);
|
|
40400
|
+
setStat("segments_sent", state.bumpSegmentsSent(segments));
|
|
40401
|
+
setStat("segments_sending", 0);
|
|
40402
|
+
status.lastEventAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
40403
|
+
}
|
|
40404
|
+
});
|
|
40405
|
+
if (target.sessionIds && target.sessionIds.length > 0) {
|
|
40406
|
+
await refreshSessionInsights(target.sessionIds);
|
|
40407
|
+
}
|
|
40408
|
+
setPhase("watching", "Waiting for new events");
|
|
40409
|
+
setMessage(
|
|
40410
|
+
r.segmentsUploaded > 0 ? `Eager scan: ${r.segmentsUploaded} segments uploaded` : "Eager scan: nothing new"
|
|
40411
|
+
);
|
|
40412
|
+
} catch (e) {
|
|
40413
|
+
setStat("segments_sending", 0);
|
|
40414
|
+
setPhase("watching", `Eager scan failed: ${describeErrorWithCause(e)}`);
|
|
40415
|
+
throw e;
|
|
40416
|
+
}
|
|
40417
|
+
}
|
|
40087
40418
|
function basename4(p) {
|
|
40088
40419
|
return p.split("/").pop() ?? p;
|
|
40089
40420
|
}
|
|
@@ -40150,7 +40481,13 @@ async function runDaemon(opts = {}) {
|
|
|
40150
40481
|
console.warn(`[modelstat] summariser preflight error (continuing): ${err.message}`);
|
|
40151
40482
|
setMessage(`summariser preflight error (continuing): ${err.message}`);
|
|
40152
40483
|
}
|
|
40153
|
-
const localIngest = await startLocalIngestReceiver(
|
|
40484
|
+
const localIngest = await startLocalIngestReceiver({
|
|
40485
|
+
// Serve the loopback control endpoint so `modelstat scan --session` can
|
|
40486
|
+
// warm this running daemon (summariser already loaded) instead of
|
|
40487
|
+
// cold-spawning its own — and so the eager scan refreshes the local
|
|
40488
|
+
// insights cache the statusline reads.
|
|
40489
|
+
onControlScan: runEagerSessionScan
|
|
40490
|
+
});
|
|
40154
40491
|
const LOCAL_DRAIN_INTERVAL_MS = 5e3;
|
|
40155
40492
|
let localDrainTimer = null;
|
|
40156
40493
|
if (localIngest) {
|
|
@@ -40185,9 +40522,9 @@ async function runDaemon(opts = {}) {
|
|
|
40185
40522
|
setMessage(`policy refresh unavailable: ${err.message}`);
|
|
40186
40523
|
}
|
|
40187
40524
|
const chokidar = (await Promise.resolve().then(() => (init_esm2(), esm_exports))).default;
|
|
40188
|
-
const { homedir:
|
|
40525
|
+
const { homedir: homedir10, platform: platform7 } = await import("os");
|
|
40189
40526
|
const { join: join14 } = await import("path");
|
|
40190
|
-
const home2 =
|
|
40527
|
+
const home2 = homedir10();
|
|
40191
40528
|
const dirs = [
|
|
40192
40529
|
join14(home2, ".claude/projects"),
|
|
40193
40530
|
join14(home2, ".codex/sessions"),
|
|
@@ -40249,24 +40586,25 @@ async function runDaemon(opts = {}) {
|
|
|
40249
40586
|
await new Promise(() => {
|
|
40250
40587
|
});
|
|
40251
40588
|
}
|
|
40252
|
-
var
|
|
40589
|
+
var import_undici3, DAEMON_VERSION2, HEARTBEAT_INTERVAL_MS, SCAN_INTERVAL_MS, DISCOVERY_INTERVAL_MS, SUMMARISER_RECOVERY_MIN_INTERVAL_MS, status, LOCAL_FLUSH_THROTTLE_MS, localFlushTimer, localFlushPending, lastVerdict, LOG_MAX_BYTES, LOG_TAIL_KEEP_BYTES, lastStatusPath, scanRunner;
|
|
40253
40590
|
var init_daemon = __esm({
|
|
40254
40591
|
"src/daemon.ts"() {
|
|
40255
40592
|
"use strict";
|
|
40256
40593
|
init_logger();
|
|
40257
40594
|
init_src2();
|
|
40258
|
-
|
|
40595
|
+
import_undici3 = __toESM(require_undici(), 1);
|
|
40259
40596
|
init_api();
|
|
40260
40597
|
init_config2();
|
|
40261
40598
|
init_lock();
|
|
40262
40599
|
init_machine_key();
|
|
40600
|
+
init_insights();
|
|
40263
40601
|
init_receiver();
|
|
40264
40602
|
init_reconcile();
|
|
40265
40603
|
init_runtime_state();
|
|
40266
40604
|
init_scan();
|
|
40267
40605
|
init_single_flight();
|
|
40268
40606
|
init_update();
|
|
40269
|
-
DAEMON_VERSION2 = true ? "daemon-0.
|
|
40607
|
+
DAEMON_VERSION2 = true ? "daemon-0.14.0" : "daemon-dev";
|
|
40270
40608
|
HEARTBEAT_INTERVAL_MS = 1e4;
|
|
40271
40609
|
SCAN_INTERVAL_MS = 5 * 60 * 1e3;
|
|
40272
40610
|
DISCOVERY_INTERVAL_MS = 6e4;
|
|
@@ -40298,10 +40636,10 @@ __export(watch_exports, {
|
|
|
40298
40636
|
watchForever: () => watchForever
|
|
40299
40637
|
});
|
|
40300
40638
|
import { existsSync as existsSync12 } from "fs";
|
|
40301
|
-
import { homedir as
|
|
40639
|
+
import { homedir as homedir9, platform as platform5 } from "os";
|
|
40302
40640
|
import { join as join13 } from "path";
|
|
40303
40641
|
function resolveWatchDirs() {
|
|
40304
|
-
const home2 =
|
|
40642
|
+
const home2 = homedir9();
|
|
40305
40643
|
const xdgConfig = process.env.XDG_CONFIG_HOME ?? join13(home2, ".config");
|
|
40306
40644
|
const xdgData = process.env.XDG_DATA_HOME ?? join13(home2, ".local/share");
|
|
40307
40645
|
const candidates = [
|
|
@@ -40792,16 +41130,16 @@ function createLineSplitter(onLine) {
|
|
|
40792
41130
|
};
|
|
40793
41131
|
}
|
|
40794
41132
|
function runTrayBuild(cwd, buildScript, progress) {
|
|
40795
|
-
return new Promise((
|
|
41133
|
+
return new Promise((resolve7) => {
|
|
40796
41134
|
const child = spawn("bash", [buildScript], { cwd });
|
|
40797
41135
|
const splitter = createLineSplitter((line) => progress?.onLine?.(line));
|
|
40798
41136
|
const pump = (chunk) => splitter.push(chunk.toString("utf8"));
|
|
40799
41137
|
child.stdout?.on("data", pump);
|
|
40800
41138
|
child.stderr?.on("data", pump);
|
|
40801
|
-
child.on("error", () =>
|
|
41139
|
+
child.on("error", () => resolve7(null));
|
|
40802
41140
|
child.on("close", (code) => {
|
|
40803
41141
|
splitter.flush();
|
|
40804
|
-
|
|
41142
|
+
resolve7(code);
|
|
40805
41143
|
});
|
|
40806
41144
|
});
|
|
40807
41145
|
}
|
|
@@ -40873,7 +41211,7 @@ async function confirmPrompt(question, defaultYes) {
|
|
|
40873
41211
|
if (process.stdin.isTTY !== true) return defaultYes;
|
|
40874
41212
|
const rl = createInterface3({ input: process.stdin, output: process.stdout });
|
|
40875
41213
|
try {
|
|
40876
|
-
const raw = await new Promise((
|
|
41214
|
+
const raw = await new Promise((resolve7) => rl.question(question, resolve7));
|
|
40877
41215
|
const ans = raw.trim().toLowerCase();
|
|
40878
41216
|
if (ans === "") return defaultYes;
|
|
40879
41217
|
if (ans === "y" || ans === "yes") return true;
|
|
@@ -40898,7 +41236,7 @@ function tryOpenBrowser(url) {
|
|
|
40898
41236
|
return false;
|
|
40899
41237
|
}
|
|
40900
41238
|
}
|
|
40901
|
-
var DAEMON_VERSION3 = true ? "daemon-0.
|
|
41239
|
+
var DAEMON_VERSION3 = true ? "daemon-0.14.0" : "daemon-dev";
|
|
40902
41240
|
function osFamily() {
|
|
40903
41241
|
const p = platform6();
|
|
40904
41242
|
if (p === "darwin") return "macos";
|
|
@@ -40911,6 +41249,33 @@ function osArch() {
|
|
|
40911
41249
|
if (a === "arm64") return "arm64";
|
|
40912
41250
|
return "other";
|
|
40913
41251
|
}
|
|
41252
|
+
function flagValue(args, flag) {
|
|
41253
|
+
for (let i = 0; i < args.length; i++) {
|
|
41254
|
+
const a = args[i];
|
|
41255
|
+
if (a === flag) return args[i + 1];
|
|
41256
|
+
if (a.startsWith(`${flag}=`)) return a.slice(flag.length + 1);
|
|
41257
|
+
}
|
|
41258
|
+
return void 0;
|
|
41259
|
+
}
|
|
41260
|
+
function flagValues(args, flag) {
|
|
41261
|
+
const out = [];
|
|
41262
|
+
for (let i = 0; i < args.length; i++) {
|
|
41263
|
+
const a = args[i];
|
|
41264
|
+
if (a === flag) {
|
|
41265
|
+
const v = args[i + 1];
|
|
41266
|
+
if (v !== void 0 && !v.startsWith("--")) out.push(v);
|
|
41267
|
+
} else if (a.startsWith(`${flag}=`)) {
|
|
41268
|
+
out.push(a.slice(flag.length + 1));
|
|
41269
|
+
}
|
|
41270
|
+
}
|
|
41271
|
+
return out;
|
|
41272
|
+
}
|
|
41273
|
+
function numericFlag(args, flag) {
|
|
41274
|
+
const raw = flagValue(args, flag);
|
|
41275
|
+
if (raw === void 0) return void 0;
|
|
41276
|
+
const n = Number(raw);
|
|
41277
|
+
return Number.isFinite(n) ? n : void 0;
|
|
41278
|
+
}
|
|
40914
41279
|
function intendedDeviceUuid() {
|
|
40915
41280
|
const salt = process.env.MODELSTAT_DEVICE_SALT?.trim();
|
|
40916
41281
|
const key = salt ? `${machineKey()}:${salt}` : machineKey();
|
|
@@ -41269,7 +41634,17 @@ async function cmdDiscover() {
|
|
|
41269
41634
|
});
|
|
41270
41635
|
console.log("\u2713 reported to backend");
|
|
41271
41636
|
}
|
|
41272
|
-
async function cmdScan() {
|
|
41637
|
+
async function cmdScan(rest) {
|
|
41638
|
+
const sessionIds = flagValues(rest, "--session");
|
|
41639
|
+
const file = flagValue(rest, "--file");
|
|
41640
|
+
if (sessionIds.length > 0 || file) {
|
|
41641
|
+
return cmdScanSession({
|
|
41642
|
+
sessionIds,
|
|
41643
|
+
file,
|
|
41644
|
+
wait: rest.includes("--wait"),
|
|
41645
|
+
port: numericFlag(rest, "--port")
|
|
41646
|
+
});
|
|
41647
|
+
}
|
|
41273
41648
|
const { preflightSummariser: preflightSummariser2 } = await Promise.resolve().then(() => (init_pipeline2(), pipeline_exports));
|
|
41274
41649
|
const { label, degraded } = await preflightSummariser2();
|
|
41275
41650
|
console.log(
|
|
@@ -41293,6 +41668,47 @@ async function cmdScan() {
|
|
|
41293
41668
|
} catch {
|
|
41294
41669
|
}
|
|
41295
41670
|
}
|
|
41671
|
+
async function cmdScanSession(opts) {
|
|
41672
|
+
const { postControlScan: postControlScan2 } = await Promise.resolve().then(() => (init_api(), api_exports));
|
|
41673
|
+
const target = {
|
|
41674
|
+
...opts.sessionIds.length ? { session_ids: opts.sessionIds } : {},
|
|
41675
|
+
...opts.file ? { file: opts.file } : {}
|
|
41676
|
+
};
|
|
41677
|
+
const outcome = await postControlScan2({ ...target, wait: opts.wait }, { port: opts.port });
|
|
41678
|
+
if (outcome.kind === "ok") {
|
|
41679
|
+
console.log(
|
|
41680
|
+
opts.wait ? "\u2713 daemon force-scanned the session" : "\u2713 asked the running daemon to force-scan the session"
|
|
41681
|
+
);
|
|
41682
|
+
return;
|
|
41683
|
+
}
|
|
41684
|
+
if (outcome.kind === "error") {
|
|
41685
|
+
console.error(`\u2717 daemon control scan failed (${outcome.status}): ${outcome.message}`);
|
|
41686
|
+
process.exit(1);
|
|
41687
|
+
}
|
|
41688
|
+
console.log("no running daemon on the control port \u2014 scanning in-process\u2026");
|
|
41689
|
+
const { preflightSummariser: preflightSummariser2 } = await Promise.resolve().then(() => (init_pipeline2(), pipeline_exports));
|
|
41690
|
+
const { label, degraded } = await preflightSummariser2();
|
|
41691
|
+
console.log(
|
|
41692
|
+
degraded ? `[modelstat] \u26A0 summariser DEGRADED \u2014 ${label}; extractive fallback, ingest continues` : `[modelstat] summariser preflight ok: ${label}`
|
|
41693
|
+
);
|
|
41694
|
+
const { scanSession: scanSession2 } = await Promise.resolve().then(() => (init_scan(), scan_exports));
|
|
41695
|
+
const r = await scanSession2({
|
|
41696
|
+
...opts.sessionIds.length ? { sessionIds: opts.sessionIds } : {},
|
|
41697
|
+
...opts.file ? { file: opts.file } : {}
|
|
41698
|
+
});
|
|
41699
|
+
console.log(
|
|
41700
|
+
`Done: ${r.filesScanned} files scanned, ${r.batchesUploaded} batches, ${r.segmentsUploaded} segments, ${r.eventsUploaded} events uploaded`
|
|
41701
|
+
);
|
|
41702
|
+
if (opts.sessionIds.length > 0) {
|
|
41703
|
+
const { refreshSessionInsights: refreshSessionInsights2 } = await Promise.resolve().then(() => (init_insights(), insights_exports));
|
|
41704
|
+
await refreshSessionInsights2(opts.sessionIds);
|
|
41705
|
+
}
|
|
41706
|
+
try {
|
|
41707
|
+
const { disposeLlama: disposeLlama2 } = await Promise.resolve().then(() => (init_node(), node_exports));
|
|
41708
|
+
await disposeLlama2();
|
|
41709
|
+
} catch {
|
|
41710
|
+
}
|
|
41711
|
+
}
|
|
41296
41712
|
async function cmdRescan() {
|
|
41297
41713
|
const { PROCESSING_VERSION: PROCESSING_VERSION2 } = await Promise.resolve().then(() => (init_processing_version(), processing_version_exports));
|
|
41298
41714
|
state.wipeCursors();
|
|
@@ -41612,7 +42028,7 @@ async function main() {
|
|
|
41612
42028
|
case "discover":
|
|
41613
42029
|
return cmdDiscover();
|
|
41614
42030
|
case "scan":
|
|
41615
|
-
return cmdScan();
|
|
42031
|
+
return cmdScan(rest);
|
|
41616
42032
|
case "rescan":
|
|
41617
42033
|
return cmdRescan();
|
|
41618
42034
|
case "watch":
|
|
@@ -41663,6 +42079,9 @@ async function main() {
|
|
|
41663
42079
|
console.log();
|
|
41664
42080
|
console.log("Dev / one-shots:");
|
|
41665
42081
|
console.log(" npx modelstat@latest scan \u2014 one-shot parse + upload of local JSONL");
|
|
42082
|
+
console.log(
|
|
42083
|
+
" npx modelstat@latest scan --session <id> \u2014 eager force-scan ONE session now (--file <path>, --wait)"
|
|
42084
|
+
);
|
|
41666
42085
|
console.log(
|
|
41667
42086
|
" npx modelstat@latest rescan \u2014 wipe file cursors so the next scan re-reads & re-summarises everything"
|
|
41668
42087
|
);
|