llm-relay 0.77.1 → 0.78.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/accounting-store-schema.js +5 -6
- package/dist/accounting-store-schema.js.map +1 -1
- package/dist/accounting-store.d.ts +10 -0
- package/dist/accounting-store.js +60 -6
- package/dist/accounting-store.js.map +1 -1
- package/dist/backend/envelope-validator.d.ts +1 -1
- package/dist/backend/envelope-validator.js +89 -52
- package/dist/backend/envelope-validator.js.map +1 -1
- package/dist/backend/health-prober.js +3 -1
- package/dist/backend/health-prober.js.map +1 -1
- package/dist/backend.d.ts +48 -0
- package/dist/backend.js +831 -7
- package/dist/backend.js.map +1 -1
- package/dist/candidate-runner.d.ts +135 -50
- package/dist/candidate-runner.js +160 -55
- package/dist/candidate-runner.js.map +1 -1
- package/dist/cli.d.ts +24 -2
- package/dist/cli.js +122 -20
- package/dist/cli.js.map +1 -1
- package/dist/config/routing-parser.d.ts +5 -4
- package/dist/config/routing-parser.js +141 -9
- package/dist/config/routing-parser.js.map +1 -1
- package/dist/config-types.d.ts +202 -0
- package/dist/config-types.js +2 -0
- package/dist/config-types.js.map +1 -1
- package/dist/config.d.ts +45 -1
- package/dist/config.js +87 -22
- package/dist/config.js.map +1 -1
- package/dist/dashboard-contract.d.ts +38 -0
- package/dist/dashboard-contract.js +19 -3
- package/dist/dashboard-contract.js.map +1 -1
- package/dist/dispatch-lane-stats.d.ts +33 -4
- package/dist/dispatch-lane-stats.js +65 -16
- package/dist/dispatch-lane-stats.js.map +1 -1
- package/dist/dispatch.d.ts +9 -0
- package/dist/dispatch.js +36 -4
- package/dist/dispatch.js.map +1 -1
- package/dist/key-checker.d.ts +21 -1
- package/dist/key-checker.js +38 -12
- package/dist/key-checker.js.map +1 -1
- package/dist/lane-affinity.d.ts +94 -1
- package/dist/lane-affinity.js +52 -4
- package/dist/lane-affinity.js.map +1 -1
- package/dist/mcp/lane-runner.d.ts +69 -16
- package/dist/mcp/lane-runner.js +30 -1
- package/dist/mcp/lane-runner.js.map +1 -1
- package/dist/mcp/server.d.ts +39 -4
- package/dist/mcp/server.js +70 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/openai-request.d.ts +21 -0
- package/dist/openai-request.js +1 -1
- package/dist/openai-request.js.map +1 -1
- package/dist/ping/cadence.js +9 -1
- package/dist/ping/cadence.js.map +1 -1
- package/dist/ping/probe-cache.d.ts +13 -0
- package/dist/ping/probe-cache.js +12 -0
- package/dist/ping/probe-cache.js.map +1 -1
- package/dist/responses-request.d.ts +20 -0
- package/dist/responses-request.js +7 -7
- package/dist/responses-request.js.map +1 -1
- package/dist/routes/admin.d.ts +8 -1
- package/dist/routes/admin.js +42 -6
- package/dist/routes/admin.js.map +1 -1
- package/dist/routes/messages.d.ts +1 -0
- package/dist/routes/messages.js +13 -8
- package/dist/routes/messages.js.map +1 -1
- package/dist/routes/openai-front.js +20 -7
- package/dist/routes/openai-front.js.map +1 -1
- package/dist/server.d.ts +9 -1
- package/dist/server.js +21 -3
- package/dist/server.js.map +1 -1
- package/dist/setup-claude.d.ts +2 -2
- package/dist/setup-claude.js +9 -7
- package/dist/setup-claude.js.map +1 -1
- package/dist/stream-pipeline.d.ts +116 -0
- package/dist/stream-pipeline.js +151 -0
- package/dist/stream-pipeline.js.map +1 -1
- package/dist/target-facts.d.ts +5 -4
- package/dist/target-facts.js +5 -0
- package/dist/target-facts.js.map +1 -1
- package/dist/telemetry.d.ts +15 -2
- package/dist/telemetry.js +4 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/tier-data.d.ts +22 -0
- package/dist/tier-data.js +12 -2
- package/dist/tier-data.js.map +1 -1
- package/package.json +2 -1
- package/skills/llm-relay/SKILL.md +8 -3
- package/skills/llm-relay/references/dispatch-lanes.md +2 -1
- package/skills/llm-relay/references/operations.md +1 -1
package/dist/lane-affinity.js
CHANGED
|
@@ -4,6 +4,7 @@ import { relayStatePath } from "./state-paths.js";
|
|
|
4
4
|
import { WriteBehindRegistry, WriteBehindTimer } from "./write-behind.js";
|
|
5
5
|
import { atomicWriteJsonSync, safeReadJsonSync } from "./storage/json-store.js";
|
|
6
6
|
import { isDashboardSafeId } from "./dashboard-contract.js";
|
|
7
|
+
import { medianWallClockMs, quantileWallClockMs } from "./dispatch-lane-stats.js";
|
|
7
8
|
export const MAX_AFFINITY_MS = 6 * 60 * 60 * 1000;
|
|
8
9
|
export const DEFAULT_PIN_MS = 15 * 60 * 1000;
|
|
9
10
|
export const DEFAULT_DEMOTE_MS = 15 * 60 * 1000;
|
|
@@ -11,6 +12,13 @@ const MAX_REASON_CHARS = 200;
|
|
|
11
12
|
const MAX_LANE_ID_CHARS = 200;
|
|
12
13
|
const MAX_TIER_CHARS = 64;
|
|
13
14
|
export const LANE_AFFINITY_KINDS = Object.freeze(["pin", "demote"]);
|
|
15
|
+
export const LANE_AFFINITY_DEFAULT_TTL_MS = {
|
|
16
|
+
pin: DEFAULT_PIN_MS,
|
|
17
|
+
demote: DEFAULT_DEMOTE_MS,
|
|
18
|
+
};
|
|
19
|
+
function defaultWindowFor(kind) {
|
|
20
|
+
return LANE_AFFINITY_DEFAULT_TTL_MS[kind];
|
|
21
|
+
}
|
|
14
22
|
const affinity = new WeakMap();
|
|
15
23
|
function memoryKey(tier, laneId, kind) {
|
|
16
24
|
return `${kind}:${tier ?? ""}:${laneId}`;
|
|
@@ -56,11 +64,11 @@ function recall(cfg, kind, tier, laneId, now) {
|
|
|
56
64
|
}
|
|
57
65
|
return row;
|
|
58
66
|
}
|
|
59
|
-
export function pinLane(cfg, tier, laneId, reason, ttlMs =
|
|
60
|
-
remember(cfg, "pin", tier, laneId, reason, clampWindow(ttlMs,
|
|
67
|
+
export function pinLane(cfg, tier, laneId, reason, ttlMs = defaultWindowFor("pin"), now = Date.now()) {
|
|
68
|
+
remember(cfg, "pin", tier, laneId, reason, clampWindow(ttlMs, defaultWindowFor("pin")), now);
|
|
61
69
|
}
|
|
62
|
-
export function demoteLane(cfg, tier, laneId, reason, ttlMs =
|
|
63
|
-
remember(cfg, "demote", tier, laneId, reason, clampWindow(ttlMs,
|
|
70
|
+
export function demoteLane(cfg, tier, laneId, reason, ttlMs = defaultWindowFor("demote"), now = Date.now()) {
|
|
71
|
+
remember(cfg, "demote", tier, laneId, reason, clampWindow(ttlMs, defaultWindowFor("demote")), now);
|
|
64
72
|
}
|
|
65
73
|
export function lanePin(cfg, tier, laneId, now = Date.now()) {
|
|
66
74
|
return recall(cfg, "pin", tier, laneId, now);
|
|
@@ -68,6 +76,46 @@ export function lanePin(cfg, tier, laneId, now = Date.now()) {
|
|
|
68
76
|
export function laneDemotion(cfg, tier, laneId, now = Date.now()) {
|
|
69
77
|
return recall(cfg, "demote", tier, laneId, now);
|
|
70
78
|
}
|
|
79
|
+
export const DEFAULT_OUTLIER_RECENT_COUNT = 5;
|
|
80
|
+
export const DEFAULT_OUTLIER_HISTORY_QUANTILE = 0.8;
|
|
81
|
+
export const DEFAULT_OUTLIER_FACTOR = 7.6;
|
|
82
|
+
export function checkLaneOutlier(samples, settings) {
|
|
83
|
+
const { recentCount, historyQuantile, outlierFactor, minSamples } = settings;
|
|
84
|
+
if (!Number.isInteger(recentCount) || recentCount < 1)
|
|
85
|
+
return null;
|
|
86
|
+
if (samples.length < recentCount + minSamples)
|
|
87
|
+
return null;
|
|
88
|
+
const recent = samples.slice(-recentCount);
|
|
89
|
+
const earlier = samples.slice(0, samples.length - recentCount);
|
|
90
|
+
if (recent.length < minSamples || earlier.length < minSamples)
|
|
91
|
+
return null;
|
|
92
|
+
const recentMedian = medianWallClockMs(recent);
|
|
93
|
+
const history = quantileWallClockMs(earlier, historyQuantile);
|
|
94
|
+
if (recentMedian === null || history === null || history <= 0)
|
|
95
|
+
return null;
|
|
96
|
+
if (recentMedian <= history * outlierFactor)
|
|
97
|
+
return null;
|
|
98
|
+
return { recentMedianMs: recentMedian, historyMs: history };
|
|
99
|
+
}
|
|
100
|
+
export function outlierDemotionReason(evidence, opts) {
|
|
101
|
+
const seconds = (ms) => Math.round(ms / 1000);
|
|
102
|
+
const point = Math.round(opts.historyQuantile * 100);
|
|
103
|
+
return `recent median ${seconds(evidence.recentMedianMs)} s vs history p${point} ${seconds(evidence.historyMs)} s ×${opts.outlierFactor}`;
|
|
104
|
+
}
|
|
105
|
+
export function recordLaneOutlier(cfg, tier, laneId, samples, outlier, opts, now = Date.now()) {
|
|
106
|
+
if (outlier === false)
|
|
107
|
+
return null;
|
|
108
|
+
const hit = checkLaneOutlier(samples, { ...outlier, minSamples: opts.minSamples });
|
|
109
|
+
if (!hit)
|
|
110
|
+
return null;
|
|
111
|
+
const reason = outlierDemotionReason(hit, {
|
|
112
|
+
historyQuantile: outlier.historyQuantile,
|
|
113
|
+
outlierFactor: outlier.outlierFactor,
|
|
114
|
+
});
|
|
115
|
+
clearLaneAffinity(cfg, tier, laneId);
|
|
116
|
+
demoteLane(cfg, tier, laneId, reason, opts.demoteMs, now);
|
|
117
|
+
return reason;
|
|
118
|
+
}
|
|
71
119
|
export function clearLaneAffinity(cfg, tier, laneId) {
|
|
72
120
|
const map = mapFor(cfg);
|
|
73
121
|
let changed = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-affinity.js","sourceRoot":"","sources":["../src/lane-affinity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lane-affinity.js","sourceRoot":"","sources":["../src/lane-affinity.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,6 @@ export declare const DEPTH_ENV = "LLM_RELAY_DISPATCH_DEPTH";
|
|
|
9
9
|
export declare const DEFAULT_MAX_DEPTH = 3;
|
|
10
10
|
/** Hard ceiling on captured lane output, so one runaway lane cannot exhaust memory. */
|
|
11
11
|
export declare const MAX_OUTPUT_BYTES: number;
|
|
12
|
-
/**
|
|
13
|
-
* How long `dispatch` waits before it stops blocking and hands back a job handle instead.
|
|
14
|
-
*
|
|
15
|
-
* Chosen BELOW a typical MCP client tool timeout on purpose: a fast lane answers in one call, and
|
|
16
|
-
* a slow one degrades to polling automatically rather than failing. That is the behaviour the
|
|
17
|
-
* Tasks extension would give us natively — see `docs/mcp-dispatch-prior-art-2026-08-30.md` §3.1 for
|
|
18
|
-
* why we cannot use it yet.
|
|
19
|
-
*/
|
|
20
|
-
export declare const DEFAULT_WAIT_MS = 60000;
|
|
21
12
|
/** Ceiling on one lane run. agy's own `--print-timeout` convention here is 30 minutes. */
|
|
22
13
|
export declare const DEFAULT_LANE_TIMEOUT_MS: number;
|
|
23
14
|
/**
|
|
@@ -67,20 +58,54 @@ export interface RelayAnnouncements {
|
|
|
67
58
|
latencyDemoted?: string;
|
|
68
59
|
degraded?: string;
|
|
69
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* "skipped" — a rung the walk never started at all, because it was already at its configured
|
|
63
|
+
* `maxConcurrent` cap when its turn in the ladder came (backlog item "a per-lane CONCURRENCY cap
|
|
64
|
+
* on cli dispatch rungs", 2026-09-09).
|
|
65
|
+
*
|
|
66
|
+
* ⚠ Deliberately NOT a member of `DispatchLaneStatus`. That type is what a settled RUN is reported
|
|
67
|
+
* to the daemon as (`DispatchedTelemetryReport.status`, validated by `routes/admin.ts`'s pin/demote
|
|
68
|
+
* and failure-kind total tables, and folded into `dispatch-lane-stats.json`'s wall-clock window by
|
|
69
|
+
* `recordLaneRun`), and a skipped rung never ran — "spawn nothing … report no telemetry for it,
|
|
70
|
+
* nothing ran" is the brief's whole point. Widening the REPORTED vocabulary to include a state
|
|
71
|
+
* nothing ever reports would be exactly the closed-union defect CLAUDE.md warns about: a member
|
|
72
|
+
* reachable only in theory, decided nowhere real.
|
|
73
|
+
*/
|
|
74
|
+
export declare const SKIPPED_LANE_STATUS: "skipped";
|
|
75
|
+
/**
|
|
76
|
+
* Every state one WALK ATTEMPT can end in — `LaneAttempt.status`'s own closed union, strictly wider
|
|
77
|
+
* than `DispatchLaneStatus` by the one member above. The two unions describe different questions
|
|
78
|
+
* (this one is "what happened to this attempt in THIS job's record"; `DispatchLaneStatus` is "what
|
|
79
|
+
* does the daemon's persisted lane history say"), so they are two types on purpose rather than one
|
|
80
|
+
* reused for both.
|
|
81
|
+
*/
|
|
82
|
+
export type LaneAttemptStatus = DispatchLaneStatus | typeof SKIPPED_LANE_STATUS;
|
|
83
|
+
/**
|
|
84
|
+
* Did this attempt actually run a lane, or was it skipped before any process started? Total over
|
|
85
|
+
* `LaneAttemptStatus` (`const _never: never` below), so a future member — whether added here or
|
|
86
|
+
* inherited from a `DispatchLaneStatus` that grows — is a compile error at this switch rather than
|
|
87
|
+
* a silent "counts as tried" default (the closed-union gotcha in CLAUDE.md). `mcp/server.ts` uses
|
|
88
|
+
* it to keep a walk's terminal "N tried" message honest when every remaining lane was capped rather
|
|
89
|
+
* than actually attempted — a skipped rung "counts as NOT TRIED" per the backlog item's own wording.
|
|
90
|
+
*/
|
|
91
|
+
export declare function attemptWasTried(status: LaneAttemptStatus): boolean;
|
|
70
92
|
/**
|
|
71
93
|
* One lane a dispatch WALK tried, in the order it tried them.
|
|
72
94
|
*
|
|
73
|
-
* ⚠ Its `status` is a `
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
95
|
+
* ⚠ Its `status` is a `LaneAttemptStatus`, IMPORTED rather than restated — see that type's own
|
|
96
|
+
* doc comment for why it is not simply `DispatchLaneStatus`. Two hand-written copies of one closed
|
|
97
|
+
* set is the most-repeated defect in this repository's history, and here the type additionally buys
|
|
98
|
+
* a guarantee: that union has no `cancelled` member, so "a caller cancellation is never reported as
|
|
99
|
+
* lane evidence" becomes a property the compiler enforces at every call site rather than a runtime
|
|
100
|
+
* check somebody can forget.
|
|
78
101
|
*/
|
|
79
102
|
export interface LaneAttempt {
|
|
80
103
|
laneId: string;
|
|
81
104
|
spec: string | undefined;
|
|
82
|
-
status:
|
|
83
|
-
/** Wall clock for THIS attempt, not for the walk.
|
|
105
|
+
status: LaneAttemptStatus;
|
|
106
|
+
/** Wall clock for THIS attempt, not for the walk. Always 0 for a `"skipped"` attempt — nothing
|
|
107
|
+
* ran, so there is no duration to report, the same rule an `"abandoned"` run's OWN duration
|
|
108
|
+
* is withheld from `dispatch-lane-stats.ts`'s persisted window for. */
|
|
84
109
|
elapsedMs: number;
|
|
85
110
|
/** Why the attempt ended this way, when it did not succeed. */
|
|
86
111
|
reason?: string;
|
|
@@ -325,6 +350,34 @@ export declare class LaneJobStore {
|
|
|
325
350
|
enabled: boolean;
|
|
326
351
|
lanesNotTried: number;
|
|
327
352
|
}): void;
|
|
353
|
+
/**
|
|
354
|
+
* A rung the walk SKIPPED for its `maxConcurrent` cap "counts as NOT TRIED" (the backlog item's
|
|
355
|
+
* own wording), so it grows the same counter `noteWalkScope`'s `maxLanes` bound uses — one caller
|
|
356
|
+
* before the walk starts (a fixed bound known in advance), this one during it (a skip discovered
|
|
357
|
+
* lane by lane) — so `jobAnswer` cannot tell them apart and always prefers the PARTIAL advice over
|
|
358
|
+
* the EXHAUSTED one whenever anything was left untried, whichever reason left it untried.
|
|
359
|
+
*/
|
|
360
|
+
noteSkippedLane(id: string): void;
|
|
361
|
+
/**
|
|
362
|
+
* How many jobs THIS MCP server process currently has a spawned process running for `laneId` —
|
|
363
|
+
* the job's CURRENT attempt (`job.laneId`, repointed by `setCurrentLane` as the walk advances
|
|
364
|
+
* from lane to lane), never its history. A job counts only while `status === "running"`: the
|
|
365
|
+
* moment an attempt settles (or the whole job ends), it stops occupying a slot.
|
|
366
|
+
*
|
|
367
|
+
* ⚠ `excludeJobId` matters, and omitting it is a real bug, not a cosmetic nicety: `create()` sets
|
|
368
|
+
* a fresh job's `laneId` to its FIRST candidate lane at CREATION, before the walk has attempted
|
|
369
|
+
* anything — so a walk asking "is my own first lane already at its cap?" would count ITSELF and
|
|
370
|
+
* skip its own opening attempt, on every dispatch, the moment any `maxConcurrent` is configured.
|
|
371
|
+
* Passing the asking job's own id excludes it, so this answers "how many OTHER jobs are running
|
|
372
|
+
* this lane right now" — the question a skip check actually needs.
|
|
373
|
+
*
|
|
374
|
+
* ⚠ Per-process by construction, and that is the whole design, not a limitation to work around:
|
|
375
|
+
* the daemon never spawns a lane, so the only process that ever knows a `cli` rung's process is
|
|
376
|
+
* running is the one that spawned it. Two host sessions each running their own `llm-relay mcp`
|
|
377
|
+
* can together exceed a rung's `maxConcurrent` — this bounds one host's own concurrency, and
|
|
378
|
+
* `docs/reference.md` says so rather than implying a machine-wide guarantee this cannot make.
|
|
379
|
+
*/
|
|
380
|
+
inFlight(laneId: string, excludeJobId?: string): number;
|
|
328
381
|
get(id: string): LaneJob | undefined;
|
|
329
382
|
list(): LaneJob[];
|
|
330
383
|
/**
|
package/dist/mcp/lane-runner.js
CHANGED
|
@@ -7,7 +7,6 @@ import { laneOfRung } from "../lane-manifest.js";
|
|
|
7
7
|
export const DEPTH_ENV = "LLM_RELAY_DISPATCH_DEPTH";
|
|
8
8
|
export const DEFAULT_MAX_DEPTH = 3;
|
|
9
9
|
export const MAX_OUTPUT_BYTES = 16 * 1024 * 1024;
|
|
10
|
-
export const DEFAULT_WAIT_MS = 60_000;
|
|
11
10
|
export const DEFAULT_LANE_TIMEOUT_MS = 30 * 60 * 1000;
|
|
12
11
|
export const TERMINAL_JOB_STATUSES = ["completed", "failed", "cancelled", "timed_out"];
|
|
13
12
|
const REPORTABLE_JOB_STATUS_MAP = {
|
|
@@ -19,6 +18,22 @@ export const REPORTABLE_JOB_STATUSES = Object.freeze(Object.keys(REPORTABLE_JOB_
|
|
|
19
18
|
export function isReportableJobStatus(status) {
|
|
20
19
|
return REPORTABLE_JOB_STATUSES.includes(status);
|
|
21
20
|
}
|
|
21
|
+
export const SKIPPED_LANE_STATUS = "skipped";
|
|
22
|
+
export function attemptWasTried(status) {
|
|
23
|
+
switch (status) {
|
|
24
|
+
case "completed":
|
|
25
|
+
case "failed":
|
|
26
|
+
case "timed_out":
|
|
27
|
+
case "abandoned":
|
|
28
|
+
return true;
|
|
29
|
+
case SKIPPED_LANE_STATUS:
|
|
30
|
+
return false;
|
|
31
|
+
default: {
|
|
32
|
+
const _never = status;
|
|
33
|
+
return _never;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
22
37
|
export function classifyLaneAttempt(run, opts = {}) {
|
|
23
38
|
if (opts.abandoned === true)
|
|
24
39
|
return "abandoned";
|
|
@@ -275,6 +290,20 @@ export class LaneJobStore {
|
|
|
275
290
|
if (scope.lanesNotTried > 0)
|
|
276
291
|
job.lanesNotTried = scope.lanesNotTried;
|
|
277
292
|
}
|
|
293
|
+
noteSkippedLane(id) {
|
|
294
|
+
const job = this.jobs.get(id);
|
|
295
|
+
if (!job)
|
|
296
|
+
return;
|
|
297
|
+
job.lanesNotTried = (job.lanesNotTried ?? 0) + 1;
|
|
298
|
+
}
|
|
299
|
+
inFlight(laneId, excludeJobId) {
|
|
300
|
+
let count = 0;
|
|
301
|
+
for (const job of this.jobs.values()) {
|
|
302
|
+
if (job.status === "running" && job.laneId === laneId && job.id !== excludeJobId)
|
|
303
|
+
count++;
|
|
304
|
+
}
|
|
305
|
+
return count;
|
|
306
|
+
}
|
|
278
307
|
get(id) {
|
|
279
308
|
return this.jobs.get(id);
|
|
280
309
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-runner.js","sourceRoot":"","sources":["../../src/mcp/lane-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lane-runner.js","sourceRoot":"","sources":["../../src/mcp/lane-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -83,6 +83,24 @@ export interface McpServerDeps {
|
|
|
83
83
|
* Keep it short: every host pays for it in every session. Pinned by `test/mcp-server.test.ts`.
|
|
84
84
|
*/
|
|
85
85
|
export declare const MCP_INSTRUCTIONS: string;
|
|
86
|
+
/**
|
|
87
|
+
* What one `dispatch` call may block for, decided in exactly one place.
|
|
88
|
+
*
|
|
89
|
+
* An MCP host tool call fails between 45 s and 100 s on this machine and destroys the job
|
|
90
|
+
* handle above that, so no call may block past `routing.mcp.maxWaitMs` (the `ceiling`): absent
|
|
91
|
+
* waits the full ceiling, a larger `waitMs` is clamped to it (and `awaitOrPoll` announces the
|
|
92
|
+
* clamp), and a `waitMs` the server cannot honour at all — negative, zero, non-finite, or not
|
|
93
|
+
* a number — is a `refusal`, the property's second branch. The union is narrowed with `in`
|
|
94
|
+
* at the one call site, never an unconditional `else` resolving to a wait.
|
|
95
|
+
*/
|
|
96
|
+
export type ResolvedWaitMs = {
|
|
97
|
+
waitMs: number;
|
|
98
|
+
clamped: boolean;
|
|
99
|
+
requested: number;
|
|
100
|
+
} | {
|
|
101
|
+
refusal: string;
|
|
102
|
+
};
|
|
103
|
+
export declare function resolveWaitMs(requested: unknown, ceiling: number): ResolvedWaitMs;
|
|
86
104
|
/**
|
|
87
105
|
* What a caller is told when the walk tried every lane it had and none of them answered.
|
|
88
106
|
*
|
|
@@ -174,6 +192,18 @@ export declare class McpDispatchServer {
|
|
|
174
192
|
* with it. Only a caller error ends the walk early — see `refusal` on `LaneAttemptOutcome`.
|
|
175
193
|
*/
|
|
176
194
|
private runWalk;
|
|
195
|
+
/**
|
|
196
|
+
* A `cli` rung whose configured `maxConcurrent` this MCP server process has already reached for
|
|
197
|
+
* — SKIP it for this walk rather than starting a competing process. Records the skip as an
|
|
198
|
+
* attempt (so the walk's own "lanes tried" rendering shows it) and grows `lanesNotTried` (so a
|
|
199
|
+
* walk that skips everything reports the PARTIAL advice, never the EXHAUSTED one — a skipped
|
|
200
|
+
* rung "counts as NOT TRIED", not as a lane that ran and failed). Spawns nothing, demotes
|
|
201
|
+
* nothing: no telemetry is forwarded for a skip, so `lane-affinity.ts` never hears about it.
|
|
202
|
+
*
|
|
203
|
+
* Only `cli` rungs carry a `maxConcurrent` at all (`dispatch.ts` `toLane`) — a `relay` lane's is
|
|
204
|
+
* always `null`, so this returns `false` for one without needing a `kind` check of its own.
|
|
205
|
+
*/
|
|
206
|
+
private skipIfAtConcurrencyCap;
|
|
177
207
|
/**
|
|
178
208
|
* Run ONE lane, optionally bounded by an attempt budget. Returns what happened; never throws.
|
|
179
209
|
*
|
|
@@ -220,10 +250,15 @@ export declare class McpDispatchServer {
|
|
|
220
250
|
*/
|
|
221
251
|
private runAnswerFetch;
|
|
222
252
|
/**
|
|
223
|
-
* Block for `waitMs`, then hand back a job handle. A fast lane therefore costs
|
|
224
|
-
* slow one degrades to polling instead of hitting the client's tool timeout.
|
|
225
|
-
* dispatch modes so there is exactly one wait/poll/render policy — the "two
|
|
226
|
-
* shape this repo's own history warns against.
|
|
253
|
+
* Block for the resolved `waitMs`, then hand back a job handle. A fast lane therefore costs
|
|
254
|
+
* ONE call, and a slow one degrades to polling instead of hitting the client's tool timeout.
|
|
255
|
+
* Shared by both dispatch modes so there is exactly one wait/poll/render policy — the "two
|
|
256
|
+
* paths, one policy" shape this repo's own history warns against.
|
|
257
|
+
*
|
|
258
|
+
* When the caller's `waitMs` was clamped to the ceiling, `clamp` carries the ask and the
|
|
259
|
+
* ceiling and the reply announces it on its own line — the SAME code path that renders
|
|
260
|
+
* "Still running after N s", so the announcement can never drift from the wait it explains.
|
|
261
|
+
* Without a clamp the text below is byte-for-byte what it always was.
|
|
227
262
|
*/
|
|
228
263
|
private awaitOrPoll;
|
|
229
264
|
}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { DEFAULT_MCP_MAX_WAIT_MS } from "../config-types.js";
|
|
1
2
|
import { isToolUseBlock } from "../anthropic.js";
|
|
2
3
|
import { formatAttemptBudget, formatLaneStats } from "../dispatch.js";
|
|
3
4
|
import { estimateTokensFromCharacters } from "../metadata.js";
|
|
4
|
-
import { DEFAULT_LANE_TIMEOUT_MS, DEFAULT_MAX_DEPTH,
|
|
5
|
+
import { DEFAULT_LANE_TIMEOUT_MS, DEFAULT_MAX_DEPTH, DEPTH_ENV, EMPTY_OUTPUT_REASON, LaneJobStore, SKIPPED_LANE_STATUS, attemptWasTried, classifyDispatchedResult, classifyLaneAttempt, checkCwd, currentDepth, defaultAnswerFetch, defaultLaneSpawner, isContentEmpty, readRelayAnnouncements, relayLoopbackUrl, } from "./lane-runner.js";
|
|
5
6
|
import { RPC_INTERNAL_ERROR, RPC_INVALID_PARAMS, RPC_METHOD_NOT_FOUND, RPC_PARSE_ERROR, encodeMessage, errorResponse, isJsonRpcNotification, isJsonRpcRequest, logStderr, negotiateProtocolVersion, resultResponse, splitMessages, } from "./protocol.js";
|
|
6
7
|
export const MCP_SERVER_NAME = "llm-relay";
|
|
7
8
|
export const DEFAULT_ANSWER_MAX_TOKENS = 4096;
|
|
@@ -41,7 +42,9 @@ const TOOLS = [
|
|
|
41
42
|
"not answer inside its budget is stopped and the next one is started, and the lane that " +
|
|
42
43
|
"answers is preferred next time. Runs the lane correctly — working directory, " +
|
|
43
44
|
"environment and idle timeouts are handled here, so you never build a command line. If the " +
|
|
44
|
-
"lane is still running
|
|
45
|
+
"lane is still running, returns a jobId to poll with dispatch_status — it blocks at most " +
|
|
46
|
+
"routing.mcp.maxWaitMs first, so a slow lane degrades to polling instead of hitting the " +
|
|
47
|
+
"host's tool timeout. In Codex " +
|
|
45
48
|
"Desktop, use this instead of a pool/* collaboration child, which the ChatGPT launcher " +
|
|
46
49
|
"rejects before the custom provider or relay is reached. Set mode to \"answer\" for a " +
|
|
47
50
|
"question, draft, summary, or second opinion that needs no file access — it posts straight " +
|
|
@@ -91,7 +94,8 @@ const TOOLS = [
|
|
|
91
94
|
},
|
|
92
95
|
waitMs: {
|
|
93
96
|
type: "number",
|
|
94
|
-
description:
|
|
97
|
+
description: "How long to block before returning a jobId instead (default routing.mcp.maxWaitMs; " +
|
|
98
|
+
"a larger waitMs is clamped to that ceiling and the clamp is announced in the reply).",
|
|
95
99
|
},
|
|
96
100
|
timeoutMs: {
|
|
97
101
|
type: "number",
|
|
@@ -163,6 +167,24 @@ function readNumber(params, key) {
|
|
|
163
167
|
function readMode(params) {
|
|
164
168
|
return params["mode"] === "answer" ? "answer" : "agent";
|
|
165
169
|
}
|
|
170
|
+
export function resolveWaitMs(requested, ceiling) {
|
|
171
|
+
if (requested === undefined || requested === null) {
|
|
172
|
+
return { waitMs: ceiling, clamped: false, requested: ceiling };
|
|
173
|
+
}
|
|
174
|
+
if (typeof requested !== "number" || !Number.isFinite(requested) || requested <= 0) {
|
|
175
|
+
const seen = typeof requested === "string" ? JSON.stringify(requested) : String(requested);
|
|
176
|
+
return {
|
|
177
|
+
refusal: `dispatch refused: waitMs must be a positive finite number of milliseconds (got ${seen}). ` +
|
|
178
|
+
`The blocking wait is bounded by routing.mcp.maxWaitMs (currently ${ceiling} ms): omit ` +
|
|
179
|
+
`waitMs to wait the full ceiling, or pass a smaller one — a larger one is clamped to the ` +
|
|
180
|
+
`ceiling and the clamp is announced.`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (requested > ceiling) {
|
|
184
|
+
return { waitMs: ceiling, clamped: true, requested };
|
|
185
|
+
}
|
|
186
|
+
return { waitMs: requested, clamped: false, requested };
|
|
187
|
+
}
|
|
166
188
|
function readRecord(params, key) {
|
|
167
189
|
const v = params[key];
|
|
168
190
|
return typeof v === "object" && v !== null && !Array.isArray(v) ? v : undefined;
|
|
@@ -282,7 +304,7 @@ function applyLaneEnv(base, deltas) {
|
|
|
282
304
|
}
|
|
283
305
|
return env;
|
|
284
306
|
}
|
|
285
|
-
function laneSummary(lane) {
|
|
307
|
+
function laneSummary(lane, inFlight) {
|
|
286
308
|
const bits = [`${lane.position}. ${lane.id}`, `[${lane.state}]`];
|
|
287
309
|
if (lane.spec)
|
|
288
310
|
bits.push(lane.spec);
|
|
@@ -296,6 +318,12 @@ function laneSummary(lane) {
|
|
|
296
318
|
bits.push(lane.note);
|
|
297
319
|
if (lane.attemptBudget)
|
|
298
320
|
bits.push(formatAttemptBudget(lane.attemptBudget));
|
|
321
|
+
if (lane.maxConcurrent !== null && lane.maxConcurrent !== undefined) {
|
|
322
|
+
bits.push(`in flight: ${inFlight} of ${lane.maxConcurrent}`);
|
|
323
|
+
}
|
|
324
|
+
else if (inFlight > 0) {
|
|
325
|
+
bits.push(`in flight: ${inFlight}`);
|
|
326
|
+
}
|
|
299
327
|
if (lane.pinned)
|
|
300
328
|
bits.push(`pinned until ${lane.pinned.until} (${lane.pinned.reason})`);
|
|
301
329
|
if (lane.demoted)
|
|
@@ -426,7 +454,7 @@ export class McpDispatchServer {
|
|
|
426
454
|
return textResult(`No dispatch ladder is configured. ${view.reason}\n\n` +
|
|
427
455
|
"Add rungs under routing.ladder (or routing.ladders.<tier>) in the relay config.");
|
|
428
456
|
}
|
|
429
|
-
const lines = view.ladder.map(laneSummary);
|
|
457
|
+
const lines = view.ladder.map((l) => laneSummary(l, this.jobs.inFlight(l.id)));
|
|
430
458
|
const next = view.next ? `\n\nnext: ${view.next.id} — ${view.reason}` : `\n\nnext: none — ${view.reason}`;
|
|
431
459
|
return textResult(`tier: ${view.tier ?? "default"}\n\n${lines.join("\n")}${next}`);
|
|
432
460
|
}
|
|
@@ -497,12 +525,15 @@ export class McpDispatchServer {
|
|
|
497
525
|
enabled: walk !== null,
|
|
498
526
|
lanesNotTried: Math.max(0, order.length - ordered.length),
|
|
499
527
|
});
|
|
500
|
-
const
|
|
528
|
+
const ceiling = this.deps.config.routing?.mcp?.maxWaitMs ?? DEFAULT_MCP_MAX_WAIT_MS;
|
|
529
|
+
const waitMs = resolveWaitMs(args["waitMs"], ceiling);
|
|
530
|
+
if ("refusal" in waitMs)
|
|
531
|
+
return textResult(waitMs.refusal, true);
|
|
501
532
|
const settled = this.runWalk(job.id, view, ordered, task, opts).catch((e) => {
|
|
502
533
|
this.jobs.fail(job.id, `dispatch walk failed: ${e.message}`);
|
|
503
534
|
return "done";
|
|
504
535
|
});
|
|
505
|
-
return this.awaitOrPoll(job.id, settled, waitMs);
|
|
536
|
+
return this.awaitOrPoll(job.id, settled, waitMs.waitMs, waitMs.clamped ? { requested: waitMs.requested, ceiling } : undefined);
|
|
506
537
|
}
|
|
507
538
|
async runWalk(jobId, view, laneIds, task, opts) {
|
|
508
539
|
for (let i = 0; i < laneIds.length; i++) {
|
|
@@ -512,6 +543,8 @@ export class McpDispatchServer {
|
|
|
512
543
|
const lane = laneId === undefined ? undefined : view.ladder.find((l) => l.id === laneId);
|
|
513
544
|
if (lane === undefined)
|
|
514
545
|
continue;
|
|
546
|
+
if (this.skipIfAtConcurrencyCap(jobId, lane))
|
|
547
|
+
continue;
|
|
515
548
|
this.jobs.setCurrentLane(jobId, lane.id, lane.spec);
|
|
516
549
|
const isLast = i === laneIds.length - 1;
|
|
517
550
|
const startedAt = this.now();
|
|
@@ -542,12 +575,32 @@ export class McpDispatchServer {
|
|
|
542
575
|
return "done";
|
|
543
576
|
}
|
|
544
577
|
}
|
|
545
|
-
const
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
578
|
+
const attempts = this.jobs.get(jobId)?.attempts ?? [];
|
|
579
|
+
const ran = attempts.filter((a) => attemptWasTried(a.status)).length;
|
|
580
|
+
const allSkipped = attempts.length > 0 && ran === 0;
|
|
581
|
+
this.jobs.fail(jobId, allSkipped
|
|
582
|
+
? "every remaining lane in the selection order is at its maxConcurrent cap"
|
|
583
|
+
: ran === 0
|
|
584
|
+
? "no lane in the dispatch ladder matched the selection order"
|
|
585
|
+
: `no lane answered, and the ladder no longer holds the remaining lanes in the selection order (${ran} tried)`);
|
|
549
586
|
return "done";
|
|
550
587
|
}
|
|
588
|
+
skipIfAtConcurrencyCap(jobId, lane) {
|
|
589
|
+
if (lane.maxConcurrent === null || lane.maxConcurrent === undefined)
|
|
590
|
+
return false;
|
|
591
|
+
const inFlight = this.jobs.inFlight(lane.id, jobId);
|
|
592
|
+
if (inFlight < lane.maxConcurrent)
|
|
593
|
+
return false;
|
|
594
|
+
this.jobs.recordAttempt(jobId, {
|
|
595
|
+
laneId: lane.id,
|
|
596
|
+
spec: lane.spec,
|
|
597
|
+
status: SKIPPED_LANE_STATUS,
|
|
598
|
+
elapsedMs: 0,
|
|
599
|
+
reason: `lane "${lane.id}" is at its maxConcurrent (${inFlight} in flight)`,
|
|
600
|
+
});
|
|
601
|
+
this.jobs.noteSkippedLane(jobId);
|
|
602
|
+
return true;
|
|
603
|
+
}
|
|
551
604
|
async runOneLane(jobId, lane, task, opts, budgetMs) {
|
|
552
605
|
const started = this.startLane(jobId, lane, task, opts);
|
|
553
606
|
if ("refusal" in started)
|
|
@@ -730,7 +783,7 @@ export class McpDispatchServer {
|
|
|
730
783
|
const text = extractAnswerText(parsed, opts.schema !== undefined);
|
|
731
784
|
return { run: { code: 0, stdout: text, stderr: "", timedOut: false }, relay };
|
|
732
785
|
}
|
|
733
|
-
async awaitOrPoll(jobId, settled, waitMs) {
|
|
786
|
+
async awaitOrPoll(jobId, settled, waitMs, clamp) {
|
|
734
787
|
const raced = await Promise.race([
|
|
735
788
|
settled,
|
|
736
789
|
new Promise((resolve) => {
|
|
@@ -743,7 +796,11 @@ export class McpDispatchServer {
|
|
|
743
796
|
if (!current)
|
|
744
797
|
return textResult(`unknown jobId: ${jobId}`, true);
|
|
745
798
|
if (raced === "pending") {
|
|
746
|
-
|
|
799
|
+
const waitedS = Math.round(waitMs / 1000);
|
|
800
|
+
const announcement = clamp === undefined
|
|
801
|
+
? ""
|
|
802
|
+
: `waited ${waitedS} s (waitMs ${clamp.requested} clamped to routing.mcp.maxWaitMs ${clamp.ceiling})\n`;
|
|
803
|
+
return textResult(`${describeJob(current, this.now())}\n\n${announcement}Still running after ${waitedS}s. ` +
|
|
747
804
|
`Poll dispatch_status with jobId "${jobId}", then call dispatch_result.`);
|
|
748
805
|
}
|
|
749
806
|
return textResult(jobAnswer(current, this.now()), isFailureStatus(current.status));
|