@mrrlin-dev/mcp 0.4.51 → 0.4.53
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/bin.cjs +19 -7
- package/package.json +1 -1
package/dist/bin.cjs
CHANGED
|
@@ -42437,7 +42437,7 @@ Do NOT derail the current task - if the operator has an in-flight question, answ
|
|
|
42437
42437
|
}
|
|
42438
42438
|
|
|
42439
42439
|
// src/_generated/version.ts
|
|
42440
|
-
var PKG_VERSION = "0.4.
|
|
42440
|
+
var PKG_VERSION = "0.4.53";
|
|
42441
42441
|
|
|
42442
42442
|
// src/api-base-url-migrate.ts
|
|
42443
42443
|
var import_node_fs4 = __toESM(require("node:fs"), 1);
|
|
@@ -45164,6 +45164,12 @@ function resolveInstallationId(stateDir) {
|
|
|
45164
45164
|
// src/telemetry/daily-uploader.ts
|
|
45165
45165
|
var ROWS_FILE_RE = /^rows-(.+)-(\d{4}-\d{2}-\d{2})\.jsonl$/;
|
|
45166
45166
|
var GATE_FILE_RE = /^gate-(.+)-(\d{4}-\d{2}-\d{2})\.jsonl$/;
|
|
45167
|
+
var MAX_CAUSE_CHARS = 512;
|
|
45168
|
+
function truncateCause(err) {
|
|
45169
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
45170
|
+
if (message.length <= MAX_CAUSE_CHARS) return message;
|
|
45171
|
+
return `${message.slice(0, MAX_CAUSE_CHARS - 3)}...`;
|
|
45172
|
+
}
|
|
45167
45173
|
async function uploadPendingDays(stateDir, client, bridgeHealth, gateCtx) {
|
|
45168
45174
|
const telemetryDir = (0, import_node_path16.join)(stateDir, "telemetry");
|
|
45169
45175
|
let files;
|
|
@@ -45221,6 +45227,7 @@ async function uploadPendingDays(stateDir, client, bridgeHealth, gateCtx) {
|
|
|
45221
45227
|
continue;
|
|
45222
45228
|
}
|
|
45223
45229
|
let success2 = false;
|
|
45230
|
+
let lastError = null;
|
|
45224
45231
|
try {
|
|
45225
45232
|
let raw = "";
|
|
45226
45233
|
if (cur.rowsPath !== null) {
|
|
@@ -45276,7 +45283,8 @@ async function uploadPendingDays(stateDir, client, bridgeHealth, gateCtx) {
|
|
|
45276
45283
|
}
|
|
45277
45284
|
await client.postTelemetry(targetProject, gateResult.artifact);
|
|
45278
45285
|
success2 = true;
|
|
45279
|
-
} catch {
|
|
45286
|
+
} catch (err) {
|
|
45287
|
+
lastError = truncateCause(err);
|
|
45280
45288
|
success2 = false;
|
|
45281
45289
|
}
|
|
45282
45290
|
if (success2) {
|
|
@@ -45312,7 +45320,8 @@ async function uploadPendingDays(stateDir, client, bridgeHealth, gateCtx) {
|
|
|
45312
45320
|
const nextAttemptAt = now + delayMs2;
|
|
45313
45321
|
const newFailureState = {
|
|
45314
45322
|
failureCount: newFailureCount,
|
|
45315
|
-
nextAttemptAt
|
|
45323
|
+
nextAttemptAt,
|
|
45324
|
+
lastError
|
|
45316
45325
|
};
|
|
45317
45326
|
const tmpFailurePath = `${failurePath}.tmp-${process.pid}-${Math.random().toString(36).slice(2)}`;
|
|
45318
45327
|
try {
|
|
@@ -45322,7 +45331,9 @@ async function uploadPendingDays(stateDir, client, bridgeHealth, gateCtx) {
|
|
|
45322
45331
|
console.error(`uploadPendingDays: failed to write failure state for ${cur.projectSlug}/${cur.day}`, writeErr);
|
|
45323
45332
|
}
|
|
45324
45333
|
if (!failureState) {
|
|
45325
|
-
console.error(
|
|
45334
|
+
console.error(
|
|
45335
|
+
`uploadPendingDays: partition ${cur.projectSlug}/${cur.day} entering backoff after first failure: ${lastError ?? "cause unavailable"}`
|
|
45336
|
+
);
|
|
45326
45337
|
}
|
|
45327
45338
|
}
|
|
45328
45339
|
}
|
|
@@ -55920,12 +55931,13 @@ function isOriginAllowed(origin, allowed) {
|
|
|
55920
55931
|
var CORS_ALLOW_METHODS = "GET, POST, OPTIONS";
|
|
55921
55932
|
var CORS_ALLOW_HEADERS = "content-type, authorization, sec-websocket-protocol";
|
|
55922
55933
|
function corsAllowOrigin(requestOrigin, allowed) {
|
|
55923
|
-
if (requestOrigin) return requestOrigin;
|
|
55934
|
+
if (requestOrigin) return isOriginAllowed(requestOrigin, allowed) ? requestOrigin : null;
|
|
55924
55935
|
if (allowed?.length === 1) return allowed[0] ?? "*";
|
|
55925
55936
|
return "*";
|
|
55926
55937
|
}
|
|
55927
55938
|
function applyPnaHeaders(res, requestOrigin, allowed) {
|
|
55928
|
-
|
|
55939
|
+
const allowOrigin = corsAllowOrigin(requestOrigin, allowed);
|
|
55940
|
+
if (allowOrigin !== null) res.setHeader("Access-Control-Allow-Origin", allowOrigin);
|
|
55929
55941
|
res.setHeader("Access-Control-Allow-Private-Network", "true");
|
|
55930
55942
|
res.setHeader("Vary", "Origin");
|
|
55931
55943
|
}
|
|
@@ -55963,7 +55975,7 @@ function createBridgeRequestListener(opts) {
|
|
|
55963
55975
|
if (url2.pathname === "/pair/token") {
|
|
55964
55976
|
const origin = (url2.searchParams.get("origin") ?? "").trim();
|
|
55965
55977
|
applyPnaHeaders(res, requestOrigin, allowedOrigins);
|
|
55966
|
-
if (!isOriginAllowed(origin, allowedOrigins)) {
|
|
55978
|
+
if (!isOriginAllowed(origin, allowedOrigins) || requestOrigin !== void 0 && !isOriginAllowed(requestOrigin, allowedOrigins)) {
|
|
55967
55979
|
res.writeHead(403, { "content-type": "application/json" });
|
|
55968
55980
|
res.end(JSON.stringify({ ok: false, error: "Origin not allowed." }));
|
|
55969
55981
|
return;
|