@wrongstack/core 0.292.0 → 0.292.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coordination/index.d.ts +1 -1
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +163 -39
- package/dist/coordination/index.js.map +3 -3
- package/dist/coordination/mailbox-http-router.d.ts +38 -0
- package/dist/coordination/mailbox-http-router.d.ts.map +1 -1
- package/dist/coordination/provider-status-tracker.d.ts.map +1 -1
- package/dist/core/fallback-model.d.ts.map +1 -1
- package/dist/defaults/index.js +5 -1
- package/dist/defaults/index.js.map +2 -2
- package/dist/execution/index.js +8 -1
- package/dist/execution/index.js.map +2 -2
- package/dist/execution/one-shot-llm.d.ts.map +1 -1
- package/dist/index.js +305 -139
- package/dist/index.js.map +4 -4
- package/dist/tools/index.js +8 -1
- package/dist/tools/index.js.map +2 -2
- package/dist/types/index.js +5 -1
- package/dist/types/index.js.map +2 -2
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/utils/connectivity.d.ts +36 -0
- package/dist/utils/connectivity.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +44 -11
- package/dist/utils/index.js.map +4 -4
- package/package.json +2 -2
|
@@ -21,7 +21,7 @@ export { type FleetStatusToolOptions, makeFleetStatusTool } from './fleet-status
|
|
|
21
21
|
export { FleetSupervisor, type FleetSupervisorActions, type FleetSupervisorConfig, type FleetSupervisorOptions, type FleetSupervisorSource, type SupervisedSubagent, type SupervisorLogEntry, } from './fleet-supervisor.js';
|
|
22
22
|
export { DEFAULT_MAX_FLEET_SPAWNS, HARD_MAX_SPAWN_DEPTH, resolveMaxSpawnDepth, } from './spawn-budget.js';
|
|
23
23
|
export { GlobalMailbox, resolveProjectDir } from './global-mailbox.js';
|
|
24
|
-
export { authorizeMailboxBearerToken, createMailboxHttpRouter, MAILBOX_HTTP_MAX_BODY_BYTES, MAILBOX_HTTP_RATE_LIMIT_PER_MINUTE, MAILBOX_HTTP_RATE_LIMIT_WINDOW_MS, MailboxHttpRateLimiter, type MailboxHttpAccessDecision, type MailboxHttpRouter, type MailboxHttpRouterOptions, } from './mailbox-http-router.js';
|
|
24
|
+
export { authorizeMailboxBearerToken, createMailboxHttpRouter, MAILBOX_HTTP_DEFAULT_MAX_AGE_MS, MAILBOX_HTTP_MAX_AGE_CEILING_MS, MAILBOX_HTTP_MAX_BODY_BYTES, MAILBOX_HTTP_RATE_LIMIT_PER_MINUTE, MAILBOX_HTTP_RATE_LIMIT_WINDOW_MS, MailboxHttpRateLimiter, type MailboxHttpAccessDecision, type MailboxHttpRouter, type MailboxHttpRouterOptions, } from './mailbox-http-router.js';
|
|
25
25
|
export type { ICoordinator } from './icoordinator.js';
|
|
26
26
|
export type { IFleetManager } from './ifleet-manager.js';
|
|
27
27
|
export { LargeAnswerStore } from './large-answer-store.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordination/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordination/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8194,7 +8194,8 @@ function hashStr(s) {
|
|
|
8194
8194
|
// src/types/provider.ts
|
|
8195
8195
|
var CONTEXT_OVERFLOW_RE = /context.length|context.window|maximum context|max.*tokens?.*exceeded|prompt is too long|too long|exceeds the context|\btokens\b.*exceed|too many tokens|reduce the length|resulted in \d+ tokens|input.{0,12}too (?:large|long)|context_length_exceeded/i;
|
|
8196
8196
|
var CONTENT_FILTER_RE = /content.(filter|policy|moderation)|safety (system|filter)/i;
|
|
8197
|
-
var QUOTA_EXHAUSTED_RE = /(?:insufficient|exhausted|depleted|exceeded|no|not enough)[-_\s]*(?:quota|credit|balance)|(?:quota|credit|balance)[-_\s]*(?:exhausted|depleted|exceeded|insufficient)|billing[_\s-]*(?:hard[_\s-]*)?limit|payment required|spending limit|plan limit/i;
|
|
8197
|
+
var QUOTA_EXHAUSTED_RE = /(?:insufficient|exhausted|depleted|exceeded|no|not enough)[-_\s]*(?:quota|credit|balance)|(?:quota|credit|balance)[-_\s]*(?:exhausted|depleted|exceeded|insufficient)|billing[_\s-]*(?:hard[_\s-]*)?limit|payment required|spending limit|plan limit|usage[-_\s]*limit[-_\s]*(?:reached|exceeded)/i;
|
|
8198
|
+
var RATE_LIMIT_EXCEEDED_RE = /rate[-_\s]*limit[-_\s]*exceeded/i;
|
|
8198
8199
|
function classifyProviderError(status, body, message) {
|
|
8199
8200
|
const type = body?.type;
|
|
8200
8201
|
const text = [message, body?.message, type, body?.raw].filter(Boolean).join("\n");
|
|
@@ -8202,6 +8203,9 @@ function classifyProviderError(status, body, message) {
|
|
|
8202
8203
|
if (status === 408) return "timeout";
|
|
8203
8204
|
if (status === 599) return "stream_hang";
|
|
8204
8205
|
if (status === 402 || QUOTA_EXHAUSTED_RE.test(text)) return "quota_exhausted";
|
|
8206
|
+
if (status === 429 && body?.message && RATE_LIMIT_EXCEEDED_RE.test(body.message)) {
|
|
8207
|
+
return "quota_exhausted";
|
|
8208
|
+
}
|
|
8205
8209
|
if (type === "rate_limit_error" || status === 429) return "rate_limit";
|
|
8206
8210
|
if (type === "overloaded_error" || status === 529) return "overloaded";
|
|
8207
8211
|
if (status >= 500) return "server";
|
|
@@ -17354,6 +17358,8 @@ import { timingSafeEqual } from "node:crypto";
|
|
|
17354
17358
|
var MAILBOX_HTTP_MAX_BODY_BYTES = 256 * 1024;
|
|
17355
17359
|
var MAILBOX_HTTP_RATE_LIMIT_PER_MINUTE = 120;
|
|
17356
17360
|
var MAILBOX_HTTP_RATE_LIMIT_WINDOW_MS = 6e4;
|
|
17361
|
+
var MAILBOX_HTTP_DEFAULT_MAX_AGE_MS = 60 * 60 * 1e3;
|
|
17362
|
+
var MAILBOX_HTTP_MAX_AGE_CEILING_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
17357
17363
|
function authorizeMailboxBearerToken(request, expectedToken) {
|
|
17358
17364
|
const header = request.headers.authorization;
|
|
17359
17365
|
if (typeof header !== "string") return { allowed: false };
|
|
@@ -17397,6 +17403,7 @@ var MailboxHttpRateLimiter = class {
|
|
|
17397
17403
|
};
|
|
17398
17404
|
function createMailboxHttpRouter(options) {
|
|
17399
17405
|
const maxBodyBytes = options.maxBodyBytes ?? MAILBOX_HTTP_MAX_BODY_BYTES;
|
|
17406
|
+
const defaultMaxAgeMs = options.defaultMaxAgeMs ?? void 0;
|
|
17400
17407
|
const closeSseStreams = /* @__PURE__ */ new Set();
|
|
17401
17408
|
return {
|
|
17402
17409
|
async handle(request, response, routePath) {
|
|
@@ -17411,15 +17418,17 @@ function createMailboxHttpRouter(options) {
|
|
|
17411
17418
|
if (!access2.allowed) {
|
|
17412
17419
|
const forwardedFor = request.headers["x-forwarded-for"];
|
|
17413
17420
|
const clientIp = (Array.isArray(forwardedFor) ? forwardedFor[0] : forwardedFor)?.split(",")[0]?.trim() ?? request.socket?.remoteAddress ?? "unknown";
|
|
17414
|
-
console.warn(
|
|
17415
|
-
|
|
17416
|
-
|
|
17417
|
-
|
|
17418
|
-
|
|
17419
|
-
|
|
17420
|
-
|
|
17421
|
-
|
|
17422
|
-
|
|
17421
|
+
console.warn(
|
|
17422
|
+
JSON.stringify({
|
|
17423
|
+
level: "warn",
|
|
17424
|
+
event: "mailbox.http_auth_failure",
|
|
17425
|
+
message: `Mailbox HTTP auth rejected for ${request.method ?? "?"} ${request.url ?? "?"} from ${clientIp}`,
|
|
17426
|
+
method: request.method,
|
|
17427
|
+
url: request.url,
|
|
17428
|
+
clientIp,
|
|
17429
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
17430
|
+
})
|
|
17431
|
+
);
|
|
17423
17432
|
writeJson(
|
|
17424
17433
|
response,
|
|
17425
17434
|
access2.status ?? 401,
|
|
@@ -17446,7 +17455,9 @@ function createMailboxHttpRouter(options) {
|
|
|
17446
17455
|
method,
|
|
17447
17456
|
url,
|
|
17448
17457
|
maxBodyBytes,
|
|
17449
|
-
|
|
17458
|
+
defaultMaxAgeMs,
|
|
17459
|
+
closeSseStreams,
|
|
17460
|
+
routePath
|
|
17450
17461
|
);
|
|
17451
17462
|
} catch (error) {
|
|
17452
17463
|
const code = error instanceof MailboxHttpValidationError ? "VALIDATION_ERROR" : "INTERNAL_ERROR";
|
|
@@ -17465,85 +17476,134 @@ function createMailboxHttpRouter(options) {
|
|
|
17465
17476
|
}
|
|
17466
17477
|
};
|
|
17467
17478
|
}
|
|
17468
|
-
async function dispatchMailboxRoute(mailbox, eventEmitter, request, response, method, url, maxBodyBytes, closeSseStreams) {
|
|
17469
|
-
if (
|
|
17479
|
+
async function dispatchMailboxRoute(mailbox, eventEmitter, request, response, method, url, maxBodyBytes, defaultMaxAgeMs, closeSseStreams, routePath) {
|
|
17480
|
+
if (routePath !== void 0 && routePath.indexOf("?") === 0) {
|
|
17481
|
+
throw validationError(`routePath must not start with '?' (got ${JSON.stringify(routePath)})`);
|
|
17482
|
+
}
|
|
17483
|
+
const queryIndex = url.indexOf("?");
|
|
17484
|
+
const path20 = queryIndex === -1 ? url : url.slice(0, queryIndex);
|
|
17485
|
+
if (method === "POST" && path20 === "/mailbox/send") {
|
|
17470
17486
|
const input = validateSend(await readJsonBody(request, maxBodyBytes));
|
|
17471
17487
|
writeJson(response, 201, await mailbox.send(input));
|
|
17472
17488
|
return;
|
|
17473
17489
|
}
|
|
17474
|
-
if (method === "POST" &&
|
|
17490
|
+
if (method === "POST" && path20 === "/mailbox/query") {
|
|
17491
|
+
const queryContext = parseSinceMs(url, defaultMaxAgeMs);
|
|
17492
|
+
if ("error" in queryContext) {
|
|
17493
|
+
writeJson(response, 400, { error: queryContext.error });
|
|
17494
|
+
return;
|
|
17495
|
+
}
|
|
17475
17496
|
const messages = await mailbox.query(validateQuery(await readJsonBody(request, maxBodyBytes)));
|
|
17476
|
-
|
|
17497
|
+
const filtered = filterMailboxMessagesByTimestamp(messages, queryContext.minTimestampIso);
|
|
17498
|
+
writeJson(response, 200, { data: filtered, count: filtered.length });
|
|
17477
17499
|
return;
|
|
17478
17500
|
}
|
|
17479
|
-
if (method === "POST" &&
|
|
17501
|
+
if (method === "POST" && path20 === "/mailbox/check") {
|
|
17502
|
+
const queryContext = parseSinceMs(url, defaultMaxAgeMs);
|
|
17503
|
+
if ("error" in queryContext) {
|
|
17504
|
+
writeJson(response, 400, { error: queryContext.error });
|
|
17505
|
+
return;
|
|
17506
|
+
}
|
|
17480
17507
|
const result = await checkMailbox(
|
|
17481
17508
|
mailbox,
|
|
17482
|
-
validateCheck(await readJsonBody(request, maxBodyBytes))
|
|
17509
|
+
validateCheck(await readJsonBody(request, maxBodyBytes)),
|
|
17510
|
+
queryContext.minTimestampIso
|
|
17483
17511
|
);
|
|
17484
17512
|
writeJson(response, 200, result);
|
|
17485
17513
|
return;
|
|
17486
17514
|
}
|
|
17487
|
-
if (method === "POST" &&
|
|
17515
|
+
if (method === "POST" && path20 === "/mailbox/ack") {
|
|
17488
17516
|
const updated = await mailbox.ack(validateAck(await readJsonBody(request, maxBodyBytes)));
|
|
17489
17517
|
writeJson(response, 200, { updated });
|
|
17490
17518
|
return;
|
|
17491
17519
|
}
|
|
17492
|
-
if (method === "POST" &&
|
|
17520
|
+
if (method === "POST" && path20 === "/mailbox/ack-many") {
|
|
17493
17521
|
const updated = await mailbox.ackMany(
|
|
17494
17522
|
validateAckMany(await readJsonBody(request, maxBodyBytes))
|
|
17495
17523
|
);
|
|
17496
17524
|
writeJson(response, 200, { updated, count: updated.length });
|
|
17497
17525
|
return;
|
|
17498
17526
|
}
|
|
17499
|
-
if (method === "POST" &&
|
|
17527
|
+
if (method === "POST" && path20 === "/mailbox/unread-count") {
|
|
17500
17528
|
const body = await readJsonBody(request, maxBodyBytes);
|
|
17501
|
-
writeJson(response, 200, {
|
|
17529
|
+
writeJson(response, 200, {
|
|
17530
|
+
count: await mailbox.unreadCount(requireString(body, "forAgentId"))
|
|
17531
|
+
});
|
|
17502
17532
|
return;
|
|
17503
17533
|
}
|
|
17504
|
-
if (method === "POST" &&
|
|
17505
|
-
await mailbox.registerAgent(
|
|
17534
|
+
if (method === "POST" && path20 === "/mailbox/agents/register") {
|
|
17535
|
+
await mailbox.registerAgent(
|
|
17536
|
+
validateAgentRegistration(await readJsonBody(request, maxBodyBytes))
|
|
17537
|
+
);
|
|
17506
17538
|
writeJson(response, 200, { ok: true });
|
|
17507
17539
|
return;
|
|
17508
17540
|
}
|
|
17509
|
-
if (method === "POST" &&
|
|
17541
|
+
if (method === "POST" && path20 === "/mailbox/agents/heartbeat") {
|
|
17510
17542
|
await mailbox.heartbeat(validateAgentHeartbeat(await readJsonBody(request, maxBodyBytes)));
|
|
17511
17543
|
writeJson(response, 200, { ok: true });
|
|
17512
17544
|
return;
|
|
17513
17545
|
}
|
|
17514
|
-
if (method === "POST" &&
|
|
17515
|
-
await mailbox.registerClient(
|
|
17546
|
+
if (method === "POST" && path20 === "/mailbox/register-client") {
|
|
17547
|
+
await mailbox.registerClient(
|
|
17548
|
+
validateClientRegistration(await readJsonBody(request, maxBodyBytes))
|
|
17549
|
+
);
|
|
17516
17550
|
writeJson(response, 200, { ok: true });
|
|
17517
17551
|
return;
|
|
17518
17552
|
}
|
|
17519
|
-
if (method === "POST" &&
|
|
17520
|
-
await mailbox.clientHeartbeat(
|
|
17553
|
+
if (method === "POST" && path20 === "/mailbox/heartbeat") {
|
|
17554
|
+
await mailbox.clientHeartbeat(
|
|
17555
|
+
validateClientHeartbeat(await readJsonBody(request, maxBodyBytes))
|
|
17556
|
+
);
|
|
17521
17557
|
writeJson(response, 200, { ok: true });
|
|
17522
17558
|
return;
|
|
17523
17559
|
}
|
|
17524
|
-
if (method === "POST" &&
|
|
17560
|
+
if (method === "POST" && path20 === "/mailbox/purge-clients") {
|
|
17525
17561
|
writeJson(response, 200, { ok: true, purged: await mailbox.purgeClients() });
|
|
17526
17562
|
return;
|
|
17527
17563
|
}
|
|
17528
|
-
if (method === "GET" &&
|
|
17564
|
+
if (method === "GET" && path20 === "/mailbox/agents") {
|
|
17529
17565
|
const agents = await mailbox.getAgentStatuses();
|
|
17530
17566
|
writeJson(response, 200, { data: agents, count: agents.length });
|
|
17531
17567
|
return;
|
|
17532
17568
|
}
|
|
17533
|
-
if (method === "GET" &&
|
|
17569
|
+
if (method === "GET" && path20 === "/mailbox/agents/online") {
|
|
17534
17570
|
const agents = await mailbox.getOnlineAgents();
|
|
17535
17571
|
writeJson(response, 200, { data: agents, count: agents.length });
|
|
17536
17572
|
return;
|
|
17537
17573
|
}
|
|
17538
|
-
if (method === "GET" &&
|
|
17539
|
-
|
|
17574
|
+
if (method === "GET" && path20 === "/mailbox/events" && eventEmitter) {
|
|
17575
|
+
const queryContext = parseSinceMs(url, defaultMaxAgeMs);
|
|
17576
|
+
if ("error" in queryContext) {
|
|
17577
|
+
writeJson(response, 400, { error: queryContext.error });
|
|
17578
|
+
return;
|
|
17579
|
+
}
|
|
17580
|
+
handleSse(request, response, eventEmitter, queryContext.minTimestampIso, closeSseStreams);
|
|
17540
17581
|
return;
|
|
17541
17582
|
}
|
|
17542
17583
|
writeJson(response, 404, {
|
|
17543
17584
|
error: { code: "NOT_FOUND", message: `no route for ${method} ${url}` }
|
|
17544
17585
|
});
|
|
17545
17586
|
}
|
|
17546
|
-
function
|
|
17587
|
+
function extractEventTimestamp(event) {
|
|
17588
|
+
if (event === null || typeof event !== "object") return void 0;
|
|
17589
|
+
const top = event.timestamp;
|
|
17590
|
+
if (typeof top === "string") return top;
|
|
17591
|
+
const nestedKeys = ["messageSent", "ackUpdated"];
|
|
17592
|
+
for (const key of nestedKeys) {
|
|
17593
|
+
const nested = event[key];
|
|
17594
|
+
if (nested !== null && typeof nested === "object") {
|
|
17595
|
+
const inner = nested.timestamp;
|
|
17596
|
+
if (typeof inner === "string") return inner;
|
|
17597
|
+
}
|
|
17598
|
+
}
|
|
17599
|
+
return void 0;
|
|
17600
|
+
}
|
|
17601
|
+
function isEventOlderThan(event, minTimestampIso) {
|
|
17602
|
+
const eventTimestamp = extractEventTimestamp(event);
|
|
17603
|
+
if (eventTimestamp === void 0) return false;
|
|
17604
|
+
return eventTimestamp < minTimestampIso;
|
|
17605
|
+
}
|
|
17606
|
+
function handleSse(request, response, eventEmitter, minTimestampIso, closeSseStreams) {
|
|
17547
17607
|
response.writeHead(200, {
|
|
17548
17608
|
"Content-Type": "text/event-stream",
|
|
17549
17609
|
"Cache-Control": "no-store",
|
|
@@ -17553,6 +17613,9 @@ function handleSse(request, response, eventEmitter, closeSseStreams) {
|
|
|
17553
17613
|
response.write(": connected\n\n");
|
|
17554
17614
|
const unsubscribe = eventEmitter.subscribe((event) => {
|
|
17555
17615
|
try {
|
|
17616
|
+
if (minTimestampIso !== void 0 && isEventOlderThan(event, minTimestampIso)) {
|
|
17617
|
+
return;
|
|
17618
|
+
}
|
|
17556
17619
|
response.write(`data: ${JSON.stringify(event)}
|
|
17557
17620
|
|
|
17558
17621
|
`);
|
|
@@ -17662,6 +17725,52 @@ function optionalNumber(object, key) {
|
|
|
17662
17725
|
}
|
|
17663
17726
|
return value;
|
|
17664
17727
|
}
|
|
17728
|
+
function parseSinceMs(url, defaultMaxAgeMs) {
|
|
17729
|
+
const queryStart = url.indexOf("?");
|
|
17730
|
+
if (queryStart === -1) return resolveDefault(defaultMaxAgeMs, Date.now());
|
|
17731
|
+
const params = new URLSearchParams(url.slice(queryStart + 1));
|
|
17732
|
+
if (!params.has("sinceMs")) return resolveDefault(defaultMaxAgeMs, Date.now());
|
|
17733
|
+
const raw = params.get("sinceMs");
|
|
17734
|
+
if (raw === null || raw === void 0 || raw === "") {
|
|
17735
|
+
return {
|
|
17736
|
+
error: {
|
|
17737
|
+
code: "VALIDATION_ERROR",
|
|
17738
|
+
message: 'query parameter "sinceMs" is required (integer in milliseconds) when present'
|
|
17739
|
+
}
|
|
17740
|
+
};
|
|
17741
|
+
}
|
|
17742
|
+
if (!/^\d+$/.test(raw)) {
|
|
17743
|
+
return {
|
|
17744
|
+
error: {
|
|
17745
|
+
code: "VALIDATION_ERROR",
|
|
17746
|
+
message: 'query parameter "sinceMs" must be a non-negative integer (milliseconds)'
|
|
17747
|
+
}
|
|
17748
|
+
};
|
|
17749
|
+
}
|
|
17750
|
+
const requestedMs = Number(raw);
|
|
17751
|
+
if (!Number.isFinite(requestedMs) || requestedMs > Number.MAX_SAFE_INTEGER) {
|
|
17752
|
+
return {
|
|
17753
|
+
error: {
|
|
17754
|
+
code: "VALIDATION_ERROR",
|
|
17755
|
+
message: `query parameter "sinceMs" is out of range (max ${Number.MAX_SAFE_INTEGER})`
|
|
17756
|
+
}
|
|
17757
|
+
};
|
|
17758
|
+
}
|
|
17759
|
+
const now = Date.now();
|
|
17760
|
+
if (requestedMs === 0) return { minTimestampIso: void 0 };
|
|
17761
|
+
const effectiveMs = Math.min(requestedMs, MAILBOX_HTTP_MAX_AGE_CEILING_MS);
|
|
17762
|
+
return { minTimestampIso: new Date(now - effectiveMs).toISOString() };
|
|
17763
|
+
}
|
|
17764
|
+
function resolveDefault(defaultMaxAgeMs, now) {
|
|
17765
|
+
if (defaultMaxAgeMs === void 0 || !Number.isFinite(defaultMaxAgeMs) || defaultMaxAgeMs < 0 || defaultMaxAgeMs === 0) {
|
|
17766
|
+
return { minTimestampIso: void 0 };
|
|
17767
|
+
}
|
|
17768
|
+
return { minTimestampIso: new Date(now - defaultMaxAgeMs).toISOString() };
|
|
17769
|
+
}
|
|
17770
|
+
function filterMailboxMessagesByTimestamp(messages, minTimestampIso) {
|
|
17771
|
+
if (minTimestampIso === void 0) return messages.slice();
|
|
17772
|
+
return messages.filter((message) => message.timestamp >= minTimestampIso);
|
|
17773
|
+
}
|
|
17665
17774
|
function optionalBoolean(object, key) {
|
|
17666
17775
|
if (typeof object !== "object" || object === null) return void 0;
|
|
17667
17776
|
const value = object[key];
|
|
@@ -17782,7 +17891,7 @@ function validateQuery(body) {
|
|
|
17782
17891
|
if (incompleteOnly !== void 0) result.incompleteOnly = incompleteOnly;
|
|
17783
17892
|
return result;
|
|
17784
17893
|
}
|
|
17785
|
-
async function checkMailbox(mailbox, input) {
|
|
17894
|
+
async function checkMailbox(mailbox, input, minTimestampIso) {
|
|
17786
17895
|
const limit = input.limit ?? 20;
|
|
17787
17896
|
const markRead = input.markRead ?? true;
|
|
17788
17897
|
const completed = input.completed ?? false;
|
|
@@ -17790,8 +17899,9 @@ async function checkMailbox(mailbox, input) {
|
|
|
17790
17899
|
const batches = await Promise.all(
|
|
17791
17900
|
targets.map((to) => mailbox.query({ to, unreadBy: input.agentId, limit }))
|
|
17792
17901
|
);
|
|
17902
|
+
const withinWindow = filterMailboxMessagesByTimestamp(batches.flat(), minTimestampIso);
|
|
17793
17903
|
const seen = /* @__PURE__ */ new Set();
|
|
17794
|
-
const messages =
|
|
17904
|
+
const messages = withinWindow.filter((message) => {
|
|
17795
17905
|
if (seen.has(message.id) || message.from === input.agentId) return false;
|
|
17796
17906
|
seen.add(message.id);
|
|
17797
17907
|
return true;
|
|
@@ -19354,19 +19464,24 @@ var ProviderModelStatusTracker = class {
|
|
|
19354
19464
|
let newState = s.state;
|
|
19355
19465
|
let reason = "";
|
|
19356
19466
|
const quotaExhausted = kind === "quota_exhausted" || isQuotaExhausted(kind, status, message);
|
|
19467
|
+
const endpointUnreachable = isEndpointUnreachable(kind, status, message);
|
|
19357
19468
|
if (quotaExhausted) {
|
|
19358
19469
|
newState = "blocked";
|
|
19359
19470
|
reason = "quota_exhausted";
|
|
19360
19471
|
s.stateExpiresAt = now + this.cfg.quotaBlockDurationMs;
|
|
19472
|
+
} else if (endpointUnreachable) {
|
|
19473
|
+
newState = "blocked";
|
|
19474
|
+
reason = "endpoint_unreachable";
|
|
19475
|
+
s.stateExpiresAt = now + this.cfg.quotaBlockDurationMs;
|
|
19361
19476
|
}
|
|
19362
|
-
if (!quotaExhausted && s.state === "healthy") {
|
|
19477
|
+
if (!quotaExhausted && !endpointUnreachable && s.state === "healthy") {
|
|
19363
19478
|
if (s.consecutiveFailures >= this.cfg.degradedAfterFailures) {
|
|
19364
19479
|
newState = "degraded";
|
|
19365
19480
|
reason = `consecutive_failures_${s.consecutiveFailures}`;
|
|
19366
19481
|
s.stateExpiresAt = now + this.cfg.degradedDurationMs;
|
|
19367
19482
|
}
|
|
19368
19483
|
}
|
|
19369
|
-
if (!quotaExhausted && (s.state === "degraded" || s.state === "healthy")) {
|
|
19484
|
+
if (!quotaExhausted && !endpointUnreachable && (s.state === "degraded" || s.state === "healthy")) {
|
|
19370
19485
|
if (s.rateLimitHits >= this.cfg.blockAfterRateLimitHits) {
|
|
19371
19486
|
newState = "blocked";
|
|
19372
19487
|
reason = `rate_limit_threshold_${this.cfg.blockAfterRateLimitHits}`;
|
|
@@ -19696,13 +19811,20 @@ function unpairKey(key) {
|
|
|
19696
19811
|
if (idx === -1) return [key, ""];
|
|
19697
19812
|
return [key.slice(0, idx), key.slice(idx + 1)];
|
|
19698
19813
|
}
|
|
19699
|
-
var QUOTA_EXHAUSTED_RE2 = /(?:insufficient|exhausted|depleted|exceeded|no|not enough)[-_\s]*(?:quota|credit|balance)|(?:quota|credit|balance)[-_\s]*(?:exhausted|depleted|exceeded|insufficient)|billing[_\s-]*(?:hard[_\s-]*)?limit|payment required|spending limit|plan limit/i;
|
|
19814
|
+
var QUOTA_EXHAUSTED_RE2 = /(?:insufficient|exhausted|depleted|exceeded|no|not enough)[-_\s]*(?:quota|credit|balance)|(?:quota|credit|balance)[-_\s]*(?:exhausted|depleted|exceeded|insufficient)|billing[_\s-]*(?:hard[_\s-]*)?limit|payment required|spending limit|plan limit|usage[-_\s]*limit[-_\s]*(?:reached|exceeded)|rate[-_\s]*limit[-_\s]*exceeded/i;
|
|
19700
19815
|
function isQuotaExhausted(kind, status, message) {
|
|
19701
19816
|
if (status === 402) return true;
|
|
19702
19817
|
if (kind !== "rate_limit" && kind !== "quota_exhausted" && kind !== "invalid_request" && kind !== "auth")
|
|
19703
19818
|
return false;
|
|
19704
19819
|
return QUOTA_EXHAUSTED_RE2.test(message);
|
|
19705
19820
|
}
|
|
19821
|
+
var ENDPOINT_UNREACHABLE_RE = /(?:upstream|origin|backend|endpoint)[-_\s]*(?:unreachable|refused|connect(?:ion)?[-_\s]*(?:refused|error|fail)|unavailable|down|timeout)|no[-_\s]*(?:healthy|valid)[-_\s]*upstream|cannot[-_\s]*connect|connection[-_\s]*(?:refused|reset|closed|timed?[-_\s]out)/i;
|
|
19822
|
+
function isEndpointUnreachable(kind, status, message) {
|
|
19823
|
+
if (status !== 502 && status !== 503 && status !== 0) return false;
|
|
19824
|
+
if (kind !== "server" && kind !== "network" && kind !== "overloaded" && kind !== "timeout")
|
|
19825
|
+
return false;
|
|
19826
|
+
return ENDPOINT_UNREACHABLE_RE.test(message);
|
|
19827
|
+
}
|
|
19706
19828
|
function safeCount(value) {
|
|
19707
19829
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : 0;
|
|
19708
19830
|
}
|
|
@@ -22911,6 +23033,8 @@ export {
|
|
|
22911
23033
|
MAILBOX_HEALTH_DEFAULT_FROM,
|
|
22912
23034
|
MAILBOX_HEALTH_DEFAULT_INTERVAL_MS,
|
|
22913
23035
|
MAILBOX_HEALTH_DEFAULT_TIMEOUT_MS,
|
|
23036
|
+
MAILBOX_HTTP_DEFAULT_MAX_AGE_MS,
|
|
23037
|
+
MAILBOX_HTTP_MAX_AGE_CEILING_MS,
|
|
22914
23038
|
MAILBOX_HTTP_MAX_BODY_BYTES,
|
|
22915
23039
|
MAILBOX_HTTP_RATE_LIMIT_PER_MINUTE,
|
|
22916
23040
|
MAILBOX_HTTP_RATE_LIMIT_WINDOW_MS,
|