instar 1.3.674 → 1.3.676
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +7 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +6 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts +9 -0
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +11 -1
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/MultiMachineCoordinator.d.ts +1 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
- package/dist/core/MultiMachineCoordinator.js +24 -0
- package/dist/core/MultiMachineCoordinator.js.map +1 -1
- package/dist/core/SpawnCapIntelligenceProvider.d.ts +23 -0
- package/dist/core/SpawnCapIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/SpawnCapIntelligenceProvider.js +77 -8
- package/dist/core/SpawnCapIntelligenceProvider.js.map +1 -1
- package/dist/core/hostSpawnSemaphore.d.ts +63 -1
- package/dist/core/hostSpawnSemaphore.d.ts.map +1 -1
- package/dist/core/hostSpawnSemaphore.js +69 -5
- package/dist/core/hostSpawnSemaphore.js.map +1 -1
- package/dist/core/types.d.ts +23 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +4 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.675.md +26 -0
- package/upgrades/1.3.676.md +45 -0
- package/upgrades/side-effects/degradation-is-an-event.md +35 -0
- package/upgrades/side-effects/spawn-cap-interactive-priority.md +76 -0
|
@@ -34,6 +34,18 @@
|
|
|
34
34
|
* shed, which is the whole point (no `claude -p`, no RSS).
|
|
35
35
|
*/
|
|
36
36
|
import { getHostSpawnSemaphore, configuredSpawnAcquireMs, configuredSpawnWaitersMax, } from './hostSpawnSemaphore.js';
|
|
37
|
+
/**
|
|
38
|
+
* F5: the ONLY components whose `attribution.lane:'interactive'` is honored — a
|
|
39
|
+
* structural allowlist (docs/specs/spawn-cap-interactive-priority.md §A). Any other
|
|
40
|
+
* component that sets `lane:'interactive'` (e.g. a future copy-paste onto the
|
|
41
|
+
* CoherenceReviewer fan-out — the ORIGINAL fork-bomb driver) is DOWNGRADED to
|
|
42
|
+
* background. The trust model is "instar's own in-process seams set attribution",
|
|
43
|
+
* never untrusted message content. `MessageSentinel` covers operator-inbound
|
|
44
|
+
* (incl. emergency-stop); `MessagingToneGate` covers the operator-facing reply.
|
|
45
|
+
*/
|
|
46
|
+
export const INTERACTIVE_LANE_ALLOWLIST = new Set(['MessagingToneGate', 'MessageSentinel']);
|
|
47
|
+
/** Default reserved interactive-poller waiters, carved OUT of `waitersMax`. */
|
|
48
|
+
export const DEFAULT_INTERACTIVE_WAITERS = 4;
|
|
37
49
|
/**
|
|
38
50
|
* Thrown when the host-wide spawn cap is saturated and the bounded-acquire
|
|
39
51
|
* window elapsed (or the concurrent-waiter ceiling was hit). A typed,
|
|
@@ -60,6 +72,9 @@ export function isCapacityUnavailable(err) {
|
|
|
60
72
|
// A waiter is one in-flight `evaluate()` spinning on acquire; bounding it caps
|
|
61
73
|
// the concurrent already-allocated calls, with no per-waiter queue-node heap.
|
|
62
74
|
let _activePollers = 0;
|
|
75
|
+
// F5: subset of `_activePollers` on the interactive lane. The aggregate is still
|
|
76
|
+
// bounded by `waitersMax` (carve-out, NOT additive) — see evaluate().
|
|
77
|
+
let _activeInteractivePollers = 0;
|
|
63
78
|
/** Live count of callers currently polling for a spawn slot (P3 observability). */
|
|
64
79
|
export function activeSpawnPollers() {
|
|
65
80
|
return _activePollers;
|
|
@@ -67,6 +82,7 @@ export function activeSpawnPollers() {
|
|
|
67
82
|
/** Test seam. */
|
|
68
83
|
export function _resetSpawnPollersForTest() {
|
|
69
84
|
_activePollers = 0;
|
|
85
|
+
_activeInteractivePollers = 0;
|
|
70
86
|
}
|
|
71
87
|
export class SpawnCapIntelligenceProvider {
|
|
72
88
|
inner;
|
|
@@ -77,6 +93,7 @@ export class SpawnCapIntelligenceProvider {
|
|
|
77
93
|
now;
|
|
78
94
|
genId;
|
|
79
95
|
sleep;
|
|
96
|
+
interactiveWaiters;
|
|
80
97
|
constructor(inner, deps = {}) {
|
|
81
98
|
this.inner = inner;
|
|
82
99
|
this.semaphore = deps.semaphore ?? getHostSpawnSemaphore();
|
|
@@ -87,25 +104,75 @@ export class SpawnCapIntelligenceProvider {
|
|
|
87
104
|
this.genId =
|
|
88
105
|
deps.genId ?? (() => `spawn:${process.pid}:${this.now().toString(36)}:${Math.random().toString(36).slice(2, 10)}`);
|
|
89
106
|
this.sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
107
|
+
// Carve-out, never additive: the interactive reserve is clamped below waitersMax
|
|
108
|
+
// so the aggregate poller bound stays exactly waitersMax.
|
|
109
|
+
this.interactiveWaiters = Math.max(0, Math.min(deps.interactiveWaiters ?? DEFAULT_INTERACTIVE_WAITERS, this.waitersMax - 1));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* F5: resolve the reservation lane from the call's attribution. Returns
|
|
113
|
+
* `interactive` ONLY when (a) interactive-priority is enabled on the semaphore
|
|
114
|
+
* (else byte-identical to today — everything background), (b) the caller set
|
|
115
|
+
* `lane:'interactive'`, AND (c) the caller's component is on the structural
|
|
116
|
+
* allowlist. Any other case → `background` (the safe default).
|
|
117
|
+
*/
|
|
118
|
+
resolveLane(options) {
|
|
119
|
+
if (!this.semaphore.interactivePriorityEnabled())
|
|
120
|
+
return 'background';
|
|
121
|
+
const attr = options?.attribution;
|
|
122
|
+
if (attr && attr.lane === 'interactive' && INTERACTIVE_LANE_ALLOWLIST.has(attr.component)) {
|
|
123
|
+
return 'interactive';
|
|
124
|
+
}
|
|
125
|
+
return 'background';
|
|
90
126
|
}
|
|
91
127
|
async evaluate(prompt, options) {
|
|
92
128
|
const id = this.genId();
|
|
93
129
|
const startedAt = this.now();
|
|
94
|
-
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
|
|
130
|
+
const lane = this.resolveLane(options);
|
|
131
|
+
// F5 lane-aware ingress — interactive FAST-PATH before the waiters cap: an
|
|
132
|
+
// interactive caller that can IMMEDIATELY claim free reserved headroom is never
|
|
133
|
+
// rejected as a "waiter" (the round-1 blocking fix — a background flood filling the
|
|
134
|
+
// waiters cap must not shed an interactive reply before it reaches its reserve).
|
|
135
|
+
if (lane === 'interactive' && this.semaphore.acquire(id, 'interactive')) {
|
|
136
|
+
try {
|
|
137
|
+
return await this.inner.evaluate(prompt, options);
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
try {
|
|
141
|
+
this.semaphore.release(id);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
/* @silent-fallback-ok: release self-heals via prune-dead. */
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// P3 waiters bound. When interactive-priority is OFF this is BYTE-IDENTICAL to
|
|
149
|
+
// today (`_activePollers >= waitersMax` for everyone). When ON it becomes a
|
|
150
|
+
// CARVE-OUT of waitersMax (never additive; aggregate stays exactly waitersMax):
|
|
151
|
+
// background is sub-capped so a background flood cannot consume the interactive
|
|
152
|
+
// waiter reserve; interactive uses the joint total bound only. The shed is the same
|
|
153
|
+
// typed error so the gate seams fail closed.
|
|
154
|
+
const priorityOn = this.semaphore.interactivePriorityEnabled();
|
|
155
|
+
const backgroundPollers = _activePollers - _activeInteractivePollers;
|
|
156
|
+
if (lane === 'interactive') {
|
|
157
|
+
if (_activePollers >= this.waitersMax) {
|
|
158
|
+
throw new LlmCapacityUnavailableError('waiters-full', 0);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (_activePollers >= this.waitersMax ||
|
|
162
|
+
(priorityOn && backgroundPollers >= this.waitersMax - this.interactiveWaiters)) {
|
|
98
163
|
throw new LlmCapacityUnavailableError('waiters-full', 0);
|
|
99
164
|
}
|
|
100
165
|
_activePollers++;
|
|
166
|
+
if (lane === 'interactive')
|
|
167
|
+
_activeInteractivePollers++;
|
|
101
168
|
let acquired = false;
|
|
102
169
|
try {
|
|
103
170
|
// Fast path — try once immediately (no sleep) before entering the poll loop.
|
|
104
|
-
if (this.semaphore.acquire(id)) {
|
|
171
|
+
if (this.semaphore.acquire(id, lane)) {
|
|
105
172
|
acquired = true;
|
|
106
173
|
}
|
|
107
174
|
else {
|
|
108
|
-
acquired = await this.pollAcquire(id, startedAt);
|
|
175
|
+
acquired = await this.pollAcquire(id, startedAt, lane);
|
|
109
176
|
}
|
|
110
177
|
if (!acquired) {
|
|
111
178
|
throw new LlmCapacityUnavailableError('acquire-timeout', this.now() - startedAt);
|
|
@@ -115,6 +182,8 @@ export class SpawnCapIntelligenceProvider {
|
|
|
115
182
|
}
|
|
116
183
|
finally {
|
|
117
184
|
_activePollers--;
|
|
185
|
+
if (lane === 'interactive')
|
|
186
|
+
_activeInteractivePollers--;
|
|
118
187
|
if (acquired) {
|
|
119
188
|
// Crash-safe: release is idempotent (unknown id is a no-op).
|
|
120
189
|
try {
|
|
@@ -129,7 +198,7 @@ export class SpawnCapIntelligenceProvider {
|
|
|
129
198
|
}
|
|
130
199
|
}
|
|
131
200
|
/** Poll the semaphore every `pollIntervalMs` until acquired or the budget elapses. */
|
|
132
|
-
async pollAcquire(id, startedAt) {
|
|
201
|
+
async pollAcquire(id, startedAt, lane = 'background') {
|
|
133
202
|
const deadline = startedAt + this.acquireMs;
|
|
134
203
|
// Defense-in-depth iteration ceiling: the loop is wall-clock bound by
|
|
135
204
|
// `deadline`, but a frozen/non-advancing clock (a test injection, never
|
|
@@ -142,7 +211,7 @@ export class SpawnCapIntelligenceProvider {
|
|
|
142
211
|
if (remaining <= 0)
|
|
143
212
|
return false;
|
|
144
213
|
await this.sleep(Math.min(this.pollIntervalMs, remaining));
|
|
145
|
-
if (this.semaphore.acquire(id))
|
|
214
|
+
if (this.semaphore.acquire(id, lane))
|
|
146
215
|
return true;
|
|
147
216
|
if (this.now() >= deadline)
|
|
148
217
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpawnCapIntelligenceProvider.js","sourceRoot":"","sources":["../../src/core/SpawnCapIntelligenceProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAEL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"SpawnCapIntelligenceProvider.js","sourceRoot":"","sources":["../../src/core/SpawnCapIntelligenceProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,14 @@
|
|
|
37
37
|
* poll-retry against `acquire()` — this module is the pure counting primitive.
|
|
38
38
|
*/
|
|
39
39
|
/** One live holder of a spawn slot. */
|
|
40
|
+
/**
|
|
41
|
+
* The two reservation lanes (F5, docs/specs/spawn-cap-interactive-priority.md).
|
|
42
|
+
* `interactive` = a synchronous, user-blocking call (the operator-facing tone gate);
|
|
43
|
+
* `background` = everything else (sentinels/sweeps/reflectors). A holder with no
|
|
44
|
+
* lane, or an unrecognized value, is classified `background` (equality, never parse —
|
|
45
|
+
* a garbage value can never consume the protected interactive reserve).
|
|
46
|
+
*/
|
|
47
|
+
export type SpawnLane = 'interactive' | 'background';
|
|
40
48
|
export interface SpawnHolder {
|
|
41
49
|
/** Unique per-acquire id (NOT the pid — pid-reuse must not steal a slot). */
|
|
42
50
|
id: string;
|
|
@@ -44,7 +52,36 @@ export interface SpawnHolder {
|
|
|
44
52
|
hostname: string;
|
|
45
53
|
/** ms epoch of the last heartbeat (acquire time, refreshed by long holders). */
|
|
46
54
|
heartbeat: number;
|
|
55
|
+
/**
|
|
56
|
+
* F5 reservation lane (OPTIONAL — never part of isWellFormedHolder, so a record
|
|
57
|
+
* with a missing/garbage lane is NEVER dropped; it is counted as `background`).
|
|
58
|
+
* Written only when interactive-priority is enabled; absent otherwise (the
|
|
59
|
+
* disabled state writes a byte-identical holder file).
|
|
60
|
+
*/
|
|
61
|
+
lane?: SpawnLane;
|
|
47
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* F5 symmetric reservation knobs. `Ri` slots are reserved for the interactive lane,
|
|
65
|
+
* `Rb` for background, both WITHIN the existing total cap `N` (never raising it).
|
|
66
|
+
* Clamped so `0 ≤ Ri`, `0 ≤ Rb`, `Ri + Rb ≤ N − 1` (≥1 always-contended slot).
|
|
67
|
+
*/
|
|
68
|
+
export interface InteractivePriorityConfig {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
/** interactive reserve (clamped to [0, N-1]). */
|
|
71
|
+
ri: number;
|
|
72
|
+
/** background reserve (clamped to [0, N-1-Ri]). */
|
|
73
|
+
rb: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve+clamp `Ri`/`Rb` against the effective cap `N`. Uses `Number.isFinite` and
|
|
77
|
+
* `>= 0` (NOT the cap's `> 0`) so a legitimate 0 is preserved; NaN/negative fall to
|
|
78
|
+
* the default. Interactive reserve is honored first (documented priority), background
|
|
79
|
+
* takes the remainder — guaranteeing both bands and ≥1 contended slot for any N ≥ 1.
|
|
80
|
+
*/
|
|
81
|
+
export declare function clampInteractiveReserves(cap: number, ri: number | undefined, rb: number | undefined): {
|
|
82
|
+
ri: number;
|
|
83
|
+
rb: number;
|
|
84
|
+
};
|
|
48
85
|
/** Heartbeat staleness window — a holder is reclaim-eligible (pid dead OR, on a
|
|
49
86
|
* provably host-local disk, heartbeat older than this) only past it. Kept long
|
|
50
87
|
* (a slow `claude -p` cold-start + run can legitimately exceed a minute), and
|
|
@@ -75,6 +112,12 @@ export interface HostSpawnSemaphoreDeps {
|
|
|
75
112
|
isPathHostLocal?: (p: string) => boolean;
|
|
76
113
|
/** Unique-id generator (tests override for determinism). */
|
|
77
114
|
genId?: () => string;
|
|
115
|
+
/**
|
|
116
|
+
* F5 interactive-priority reservation. When `enabled:false` (or absent), `acquire`
|
|
117
|
+
* ignores the lane and is byte-identical to the all-or-nothing cap (no `lane` is
|
|
118
|
+
* written to holders). When enabled, the symmetric reserve in §C applies.
|
|
119
|
+
*/
|
|
120
|
+
interactivePriority?: InteractivePriorityConfig;
|
|
78
121
|
}
|
|
79
122
|
/**
|
|
80
123
|
* Resolve the concurrent-spawn cap. Precedence (D-CAP):
|
|
@@ -104,6 +147,16 @@ export interface SpawnSemaphoreStatus {
|
|
|
104
147
|
/** Holders whose hostname is a DIFFERENT host (never reclaimed). */
|
|
105
148
|
foreignHolders: number;
|
|
106
149
|
holdersPath: string;
|
|
150
|
+
/** F5: interactive-priority reservation state. `enabled:false` ⇒ ri/rb 0 and the
|
|
151
|
+
* lane counts are over whatever lanes the holders carry (all background when off). */
|
|
152
|
+
interactivePriority: {
|
|
153
|
+
enabled: boolean;
|
|
154
|
+
ri: number;
|
|
155
|
+
rb: number;
|
|
156
|
+
};
|
|
157
|
+
/** Live holders classified `interactive` (equality; everything else is background). */
|
|
158
|
+
liveInteractive: number;
|
|
159
|
+
liveBackground: number;
|
|
107
160
|
}
|
|
108
161
|
/**
|
|
109
162
|
* Host-wide counting semaphore over LLM-subprocess spawns. One instance per
|
|
@@ -118,18 +171,23 @@ export declare class HostSpawnSemaphore {
|
|
|
118
171
|
private readonly pidAlive;
|
|
119
172
|
private readonly isPathHostLocal;
|
|
120
173
|
private readonly genId;
|
|
174
|
+
/** F5 reservation config (resolved+clamped once at construction). */
|
|
175
|
+
private readonly priority;
|
|
121
176
|
/** Memoized host-local determination (a fixed path's FS type can't change at
|
|
122
177
|
* runtime; the `df -P` probe is expensive + synchronous, so it runs ONCE per
|
|
123
178
|
* instance — never per acquire() on the hot fan-out path). */
|
|
124
179
|
private _fsLocalCache;
|
|
125
180
|
constructor(deps?: HostSpawnSemaphoreDeps);
|
|
126
181
|
getCap(): number;
|
|
182
|
+
/** F5: is interactive-priority reservation active on this instance? The wrapper
|
|
183
|
+
* reads this so its lane-aware ingress stays byte-identical when the feature is off. */
|
|
184
|
+
interactivePriorityEnabled(): boolean;
|
|
127
185
|
/**
|
|
128
186
|
* Try to take a slot under id `id`. Returns true if a slot was appended
|
|
129
187
|
* (liveHolders < cap after pruning), false if the host is at the cap.
|
|
130
188
|
* Holds the exclusive flock for the whole read-prune-decide-write window.
|
|
131
189
|
*/
|
|
132
|
-
acquire(id: string): boolean;
|
|
190
|
+
acquire(id: string, lane?: SpawnLane): boolean;
|
|
133
191
|
/** Release the slot held under `id`. A double-release / unknown id is a no-op. */
|
|
134
192
|
release(id: string): void;
|
|
135
193
|
/** Refresh a long-held slot's heartbeat so a slow legit spawn is never reclaimed. */
|
|
@@ -170,6 +228,10 @@ export interface SpawnCapConfig {
|
|
|
170
228
|
maxConcurrent?: number;
|
|
171
229
|
acquireMs?: number;
|
|
172
230
|
waitersMax?: number;
|
|
231
|
+
/** F5 interactive-priority reservation (`intelligence.spawnCap.interactivePriority`).
|
|
232
|
+
* `enabled` is resolved by the dev-agent gate at the caller (omitted from
|
|
233
|
+
* ConfigDefaults); when absent here the reservation is OFF (byte-identical). */
|
|
234
|
+
interactivePriority?: InteractivePriorityConfig;
|
|
173
235
|
}
|
|
174
236
|
/**
|
|
175
237
|
* Inject the config-resolved spawn-cap knobs once at server boot (server.ts).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostSpawnSemaphore.d.ts","sourceRoot":"","sources":["../../src/core/hostSpawnSemaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAUH,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"hostSpawnSemaphore.d.ts","sourceRoot":"","sources":["../../src/core/hostSpawnSemaphore.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,20 @@ import path from 'node:path';
|
|
|
42
42
|
import { execFileSync } from 'node:child_process';
|
|
43
43
|
import { SafeFsExecutor } from './SafeFsExecutor.js';
|
|
44
44
|
import { isAlive } from './ProjectRoundLock.js';
|
|
45
|
+
/**
|
|
46
|
+
* Resolve+clamp `Ri`/`Rb` against the effective cap `N`. Uses `Number.isFinite` and
|
|
47
|
+
* `>= 0` (NOT the cap's `> 0`) so a legitimate 0 is preserved; NaN/negative fall to
|
|
48
|
+
* the default. Interactive reserve is honored first (documented priority), background
|
|
49
|
+
* takes the remainder — guaranteeing both bands and ≥1 contended slot for any N ≥ 1.
|
|
50
|
+
*/
|
|
51
|
+
export function clampInteractiveReserves(cap, ri, rb) {
|
|
52
|
+
const n = Number.isFinite(cap) && cap > 0 ? Math.floor(cap) : 8;
|
|
53
|
+
const riReq = Number.isFinite(ri) && ri >= 0 ? Math.floor(ri) : 2;
|
|
54
|
+
const rbReq = Number.isFinite(rb) && rb >= 0 ? Math.floor(rb) : 2;
|
|
55
|
+
const clampedRi = Math.max(0, Math.min(riReq, n - 1));
|
|
56
|
+
const clampedRb = Math.max(0, Math.min(rbReq, n - 1 - clampedRi));
|
|
57
|
+
return { ri: clampedRi, rb: clampedRb };
|
|
58
|
+
}
|
|
45
59
|
/** Heartbeat staleness window — a holder is reclaim-eligible (pid dead OR, on a
|
|
46
60
|
* provably host-local disk, heartbeat older than this) only past it. Kept long
|
|
47
61
|
* (a slow `claude -p` cold-start + run can legitimately exceed a minute), and
|
|
@@ -154,6 +168,8 @@ export class HostSpawnSemaphore {
|
|
|
154
168
|
pidAlive;
|
|
155
169
|
isPathHostLocal;
|
|
156
170
|
genId;
|
|
171
|
+
/** F5 reservation config (resolved+clamped once at construction). */
|
|
172
|
+
priority;
|
|
157
173
|
/** Memoized host-local determination (a fixed path's FS type can't change at
|
|
158
174
|
* runtime; the `df -P` probe is expensive + synchronous, so it runs ONCE per
|
|
159
175
|
* instance — never per acquire() on the hot fan-out path). */
|
|
@@ -168,28 +184,64 @@ export class HostSpawnSemaphore {
|
|
|
168
184
|
this.genId =
|
|
169
185
|
deps.genId ??
|
|
170
186
|
(() => `${this.host}:${process.pid}:${this.now().toString(36)}:${Math.random().toString(36).slice(2, 10)}`);
|
|
187
|
+
const ip = deps.interactivePriority;
|
|
188
|
+
if (ip && ip.enabled === true) {
|
|
189
|
+
const { ri, rb } = clampInteractiveReserves(this.cap, ip.ri, ip.rb);
|
|
190
|
+
this.priority = { enabled: true, ri, rb };
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.priority = { enabled: false, ri: 0, rb: 0 };
|
|
194
|
+
}
|
|
171
195
|
}
|
|
172
196
|
getCap() {
|
|
173
197
|
return this.cap;
|
|
174
198
|
}
|
|
199
|
+
/** F5: is interactive-priority reservation active on this instance? The wrapper
|
|
200
|
+
* reads this so its lane-aware ingress stays byte-identical when the feature is off. */
|
|
201
|
+
interactivePriorityEnabled() {
|
|
202
|
+
return this.priority.enabled;
|
|
203
|
+
}
|
|
175
204
|
/**
|
|
176
205
|
* Try to take a slot under id `id`. Returns true if a slot was appended
|
|
177
206
|
* (liveHolders < cap after pruning), false if the host is at the cap.
|
|
178
207
|
* Holds the exclusive flock for the whole read-prune-decide-write window.
|
|
179
208
|
*/
|
|
180
|
-
acquire(id) {
|
|
209
|
+
acquire(id, lane = 'background') {
|
|
181
210
|
return this.withLock(() => {
|
|
182
211
|
const file = this.readHolders();
|
|
183
212
|
const live = this.pruneDead(file.holders);
|
|
213
|
+
// The OOM floor — UNCONDITIONAL first predicate of every lane. Never raised by
|
|
214
|
+
// the reservation; the reserve only SUBDIVIDES within `cap`.
|
|
184
215
|
if (live.length >= this.cap) {
|
|
185
|
-
// At the cap — write back the pruned set (cheap GC) but take no slot.
|
|
186
216
|
this.writeHolders({ version: 1, holders: live });
|
|
187
217
|
return false;
|
|
188
218
|
}
|
|
219
|
+
// F5 symmetric reservation (over the SAME pruned `live` set, this critical
|
|
220
|
+
// section). Counts are equality-based: a missing/garbage lane → background, so a
|
|
221
|
+
// malformed holder can never consume the protected interactive reserve.
|
|
222
|
+
if (this.priority.enabled) {
|
|
223
|
+
const liveInteractive = live.filter((h) => h.lane === 'interactive').length;
|
|
224
|
+
const liveBackground = live.length - liveInteractive;
|
|
225
|
+
if (lane === 'interactive') {
|
|
226
|
+
if (liveInteractive >= this.cap - this.priority.rb) {
|
|
227
|
+
this.writeHolders({ version: 1, holders: live });
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else if (liveBackground >= this.cap - this.priority.ri) {
|
|
232
|
+
this.writeHolders({ version: 1, holders: live });
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
189
236
|
// Crash-safe: an id already present (a retry that already landed) is a
|
|
190
237
|
// no-op-append, not a duplicate slot.
|
|
191
238
|
if (!live.some((h) => h.id === id)) {
|
|
192
|
-
|
|
239
|
+
const holder = { id, pid: process.pid, hostname: this.host, heartbeat: this.now() };
|
|
240
|
+
// Write `lane` ONLY when the feature is on — disabled state keeps the holder
|
|
241
|
+
// file byte-identical to today (clean rollback / mixed-version safety).
|
|
242
|
+
if (this.priority.enabled)
|
|
243
|
+
holder.lane = lane;
|
|
244
|
+
live.push(holder);
|
|
193
245
|
}
|
|
194
246
|
this.writeHolders({ version: 1, holders: live });
|
|
195
247
|
return true;
|
|
@@ -239,12 +291,16 @@ export class HostSpawnSemaphore {
|
|
|
239
291
|
live = [];
|
|
240
292
|
}
|
|
241
293
|
const localHolders = live.filter((h) => h.hostname === this.host).length;
|
|
294
|
+
const liveInteractive = live.filter((h) => h.lane === 'interactive').length;
|
|
242
295
|
return {
|
|
243
296
|
cap: this.cap,
|
|
244
297
|
liveHolders: live.length,
|
|
245
298
|
localHolders,
|
|
246
299
|
foreignHolders: live.length - localHolders,
|
|
247
300
|
holdersPath: this.holdersPath,
|
|
301
|
+
interactivePriority: { ...this.priority },
|
|
302
|
+
liveInteractive,
|
|
303
|
+
liveBackground: live.length - liveInteractive,
|
|
248
304
|
};
|
|
249
305
|
}
|
|
250
306
|
// ── Internals ─────────────────────────────────────────────────────
|
|
@@ -435,6 +491,7 @@ let _singleton = null;
|
|
|
435
491
|
let _configuredCap;
|
|
436
492
|
let _configuredAcquireMs;
|
|
437
493
|
let _configuredWaitersMax;
|
|
494
|
+
let _configuredPriority;
|
|
438
495
|
/**
|
|
439
496
|
* Inject the config-resolved spawn-cap knobs once at server boot (server.ts).
|
|
440
497
|
* Idempotent: re-resolves the singleton so a later getter sees the configured
|
|
@@ -444,12 +501,19 @@ export function configureHostSpawnSemaphore(cfg) {
|
|
|
444
501
|
_configuredCap = cfg?.maxConcurrent;
|
|
445
502
|
_configuredAcquireMs = cfg?.acquireMs;
|
|
446
503
|
_configuredWaitersMax = cfg?.waitersMax;
|
|
447
|
-
|
|
504
|
+
_configuredPriority = cfg?.interactivePriority;
|
|
505
|
+
_singleton = new HostSpawnSemaphore({
|
|
506
|
+
cap: resolveSpawnCap(_configuredCap),
|
|
507
|
+
interactivePriority: _configuredPriority,
|
|
508
|
+
});
|
|
448
509
|
}
|
|
449
510
|
/** The process-wide semaphore. Lazily constructed with env/config/8 cap. */
|
|
450
511
|
export function getHostSpawnSemaphore() {
|
|
451
512
|
if (!_singleton) {
|
|
452
|
-
_singleton = new HostSpawnSemaphore({
|
|
513
|
+
_singleton = new HostSpawnSemaphore({
|
|
514
|
+
cap: resolveSpawnCap(_configuredCap),
|
|
515
|
+
interactivePriority: _configuredPriority,
|
|
516
|
+
});
|
|
453
517
|
}
|
|
454
518
|
return _singleton;
|
|
455
519
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostSpawnSemaphore.js","sourceRoot":"","sources":["../../src/core/hostSpawnSemaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAiBhD;;;;+CAI+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,CAAS;IAC9C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,6EAA6E;QAC7E,6EAA6E;QAC7E,sEAAsE;QACtE,wEAAwE;QACxE,sDAAsD;QACtD,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,yEAAyE;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,4BAA4B;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,kCAAkC;IAC7E,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,2BAA2B;IACzE,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC3E,OAAO,KAAK,CAAC,CAAC,gDAAgD;AAChE,CAAC;AAiBD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,MAAyB,OAAO,CAAC,GAAG;IACtF,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAiB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC3F,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAkB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAaD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACZ,WAAW,CAAS;IACpB,GAAG,CAAS;IACZ,GAAG,CAAe;IAClB,IAAI,CAAS;IACb,QAAQ,CAA2B;IACnC,eAAe,CAAyB;IACxC,KAAK,CAAe;IACrC;;kEAE8D;IACtD,aAAa,CAAsB;IAE3C,YAAY,OAA+B,EAAE;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;QAC5D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,sBAAsB,CAAC;QACtE,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,KAAK;gBACV,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,sEAAsE;gBACtE,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,uEAAuE;YACvE,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,OAAO,CAAC,EAAU;QAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,kFAAkF;YAClF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,qFAAqF;IACrF,SAAS,CAAC,EAAU;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;oBAChB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,OAAO;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,yFAAyF;IACzF,MAAM;QACJ,IAAI,IAAI,GAAkB,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnD,OAAO,MAAM,CAAC;YAChB,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,mEAAmE;YACnE,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzE,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,YAAY;YACZ,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;OAUG;IACK,SAAS,CAAC,OAAsB;QACtC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,0EAA0E;YAC1E,+CAA+C;YAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,oBAAoB;YAC9D,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;YAC9E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,eAAe,CAAC;YAC9D,4EAA4E;YAC5E,MAAM,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrC,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,2EAA2E;YAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAiB;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gCAAgC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,cAAc,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC;YACnG,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,QAAQ,CAAI,EAAW,EAAE,kBAAqB;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,OAAO,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,oDAAoD;QACxF,+EAA+E;QAC/E,SAAS,CAAC;YACR,IAAI,EAAE,GAAkB,IAAI,CAAC;YAC7B,IAAI,CAAC;gBACH,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,iBAAiB;gBAC1D,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAA4B,CAAC;gBACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,kEAAkE;oBAClE,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAC9C,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;wBAAE,OAAO,kBAAkB,CAAC,CAAC,iBAAiB;oBACxE,YAAY,EAAE,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,sEAAsE;gBACtE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAChB,IAAI,CAAC;wBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC;oBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,yFAAyF,CAAC,CAAC;gBAC7H,IAAI,CAAC;oBACH,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;gBAChG,CAAC;gBAAC,MAAM,CAAC;oBACP,oFAAoF;gBACtF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,gBAAgB,CAAC,QAAgB;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;YAC3E,+CAA+C;YAC/C,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,4EAA4E;YAC5E,gEAAgE;YAChE,IAAI,CAAC;gBACH,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC;gBACtG,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;gBACrE,yEAAyE;gBACzE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU;IACpC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;QACxB,eAAe;IACjB,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,mFAAmF;AAEnF,IAAI,UAAU,GAA8B,IAAI,CAAC;AACjD,IAAI,cAAkC,CAAC;AACvC,IAAI,oBAAwC,CAAC;AAC7C,IAAI,qBAAyC,CAAC;AAS9C;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAoB;IAC9D,cAAc,GAAG,GAAG,EAAE,aAAa,CAAC;IACpC,oBAAoB,GAAG,GAAG,EAAE,SAAS,CAAC;IACtC,qBAAqB,GAAG,GAAG,EAAE,UAAU,CAAC;IACxC,UAAU,GAAG,IAAI,kBAAkB,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,kBAAkB,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB;IACvC,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;AACvD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,+BAA+B;IAC7C,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,SAAS,CAAC;IAC3B,oBAAoB,GAAG,SAAS,CAAC;IACjC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hostSpawnSemaphore.js","sourceRoot":"","sources":["../../src/core/hostSpawnSemaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAyChD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAW,EACX,EAAsB,EACtB,EAAsB;IAEtB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAK,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAK,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAOD;;;;+CAI+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,CAAS;IAC9C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,6EAA6E;QAC7E,6EAA6E;QAC7E,sEAAsE;QACtE,wEAAwE;QACxE,sDAAsD;QACtD,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,yEAAyE;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,4BAA4B;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,kCAAkC;IAC7E,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,2BAA2B;IACzE,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC3E,OAAO,KAAK,CAAC,CAAC,gDAAgD;AAChE,CAAC;AAuBD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,MAAyB,OAAO,CAAC,GAAG;IACtF,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAiB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC3F,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAkB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAmBD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACZ,WAAW,CAAS;IACpB,GAAG,CAAS;IACZ,GAAG,CAAe;IAClB,IAAI,CAAS;IACb,QAAQ,CAA2B;IACnC,eAAe,CAAyB;IACxC,KAAK,CAAe;IACrC,qEAAqE;IACpD,QAAQ,CAA+C;IACxE;;kEAE8D;IACtD,aAAa,CAAsB;IAE3C,YAAY,OAA+B,EAAE;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;QAC5D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,sBAAsB,CAAC;QACtE,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,KAAK;gBACV,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9G,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;4FACwF;IACxF,0BAA0B;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,EAAU,EAAE,OAAkB,YAAY;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,+EAA+E;YAC/E,6DAA6D;YAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,2EAA2E;YAC3E,iFAAiF;YACjF,wEAAwE;YACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;gBAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;gBACrD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC3B,IAAI,eAAe,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBACnD,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;wBACjD,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;qBAAM,IAAI,cAAc,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACzD,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,uEAAuE;YACvE,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAgB,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACjG,6EAA6E;gBAC7E,wEAAwE;gBACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;oBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,OAAO,CAAC,EAAU;QAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,kFAAkF;YAClF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,qFAAqF;IACrF,SAAS,CAAC,EAAU;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;oBAChB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,OAAO;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,yFAAyF;IACzF,MAAM;QACJ,IAAI,IAAI,GAAkB,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnD,OAAO,MAAM,CAAC;YAChB,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,mEAAmE;YACnE,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QAC5E,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,YAAY;YACZ,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,mBAAmB,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YACzC,eAAe;YACf,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,eAAe;SAC9C,CAAC;IACJ,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;OAUG;IACK,SAAS,CAAC,OAAsB;QACtC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,0EAA0E;YAC1E,+CAA+C;YAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,oBAAoB;YAC9D,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;YAC9E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,eAAe,CAAC;YAC9D,4EAA4E;YAC5E,MAAM,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrC,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,2EAA2E;YAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAiB;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gCAAgC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,cAAc,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC;YACnG,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,QAAQ,CAAI,EAAW,EAAE,kBAAqB;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,OAAO,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,oDAAoD;QACxF,+EAA+E;QAC/E,SAAS,CAAC;YACR,IAAI,EAAE,GAAkB,IAAI,CAAC;YAC7B,IAAI,CAAC;gBACH,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,iBAAiB;gBAC1D,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAA4B,CAAC;gBACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,kEAAkE;oBAClE,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAC9C,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;wBAAE,OAAO,kBAAkB,CAAC,CAAC,iBAAiB;oBACxE,YAAY,EAAE,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,sEAAsE;gBACtE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAChB,IAAI,CAAC;wBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC;oBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,yFAAyF,CAAC,CAAC;gBAC7H,IAAI,CAAC;oBACH,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;gBAChG,CAAC;gBAAC,MAAM,CAAC;oBACP,oFAAoF;gBACtF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,gBAAgB,CAAC,QAAgB;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;YAC3E,+CAA+C;YAC/C,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,4EAA4E;YAC5E,gEAAgE;YAChE,IAAI,CAAC;gBACH,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC;gBACtG,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;gBACrE,yEAAyE;gBACzE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU;IACpC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;QACxB,eAAe;IACjB,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,mFAAmF;AAEnF,IAAI,UAAU,GAA8B,IAAI,CAAC;AACjD,IAAI,cAAkC,CAAC;AACvC,IAAI,oBAAwC,CAAC;AAC7C,IAAI,qBAAyC,CAAC;AAC9C,IAAI,mBAA0D,CAAC;AAa/D;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAoB;IAC9D,cAAc,GAAG,GAAG,EAAE,aAAa,CAAC;IACpC,oBAAoB,GAAG,GAAG,EAAE,SAAS,CAAC;IACtC,qBAAqB,GAAG,GAAG,EAAE,UAAU,CAAC;IACxC,mBAAmB,GAAG,GAAG,EAAE,mBAAmB,CAAC;IAC/C,UAAU,GAAG,IAAI,kBAAkB,CAAC;QAClC,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC;QACpC,mBAAmB,EAAE,mBAAmB;KACzC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,kBAAkB,CAAC;YAClC,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC;YACpC,mBAAmB,EAAE,mBAAmB;SACzC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB;IACvC,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;AACvD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,+BAA+B;IAC7C,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,SAAS,CAAC;IAC3B,oBAAoB,GAAG,SAAS,CAAC;IACjC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -867,6 +867,15 @@ export interface IntelligenceOptions {
|
|
|
867
867
|
* (today's behavior: no backoff/queue rung).
|
|
868
868
|
*/
|
|
869
869
|
deferrable?: boolean;
|
|
870
|
+
/**
|
|
871
|
+
* F5 RESERVATION LANE (docs/specs/spawn-cap-interactive-priority.md).
|
|
872
|
+
* `interactive` requests the user-facing reserved headroom in the host spawn cap
|
|
873
|
+
* — set ONLY by a synchronous, user-blocking seam (the operator-facing tone gate /
|
|
874
|
+
* operator-inbound sentinel). It is HONORED only when the caller's component is on
|
|
875
|
+
* `INTERACTIVE_LANE_ALLOWLIST` AND interactive-priority is enabled; otherwise it is
|
|
876
|
+
* downgraded to `background` (the safe default). Omitted ⇒ background.
|
|
877
|
+
*/
|
|
878
|
+
lane?: 'interactive' | 'background';
|
|
870
879
|
};
|
|
871
880
|
/**
|
|
872
881
|
* Optional token-usage callback (Iris-audit item 1, spec
|
|
@@ -3048,6 +3057,20 @@ export interface InstarConfig {
|
|
|
3048
3057
|
acquireMs?: number;
|
|
3049
3058
|
/** Concurrent-poller ceiling (bounds the waiters, no queue-node heap). Default 64. */
|
|
3050
3059
|
waitersMax?: number;
|
|
3060
|
+
/**
|
|
3061
|
+
* F5 interactive-priority reservation (docs/specs/spawn-cap-interactive-priority.md).
|
|
3062
|
+
* SUBDIVIDES the cap into reserved interactive/background headroom so a user-facing
|
|
3063
|
+
* (gate) call is not starved by background work; NEVER raises the total cap.
|
|
3064
|
+
* `enabled` is OMITTED from ConfigDefaults so it rides the dev-agent gate
|
|
3065
|
+
* (live-on-dev / dark-fleet); off ⇒ byte-identical to the all-or-nothing cap.
|
|
3066
|
+
*/
|
|
3067
|
+
interactivePriority?: {
|
|
3068
|
+
enabled?: boolean;
|
|
3069
|
+
/** Slots reserved for the interactive lane (clamped to [0, N-1]). Default 2. */
|
|
3070
|
+
ri?: number;
|
|
3071
|
+
/** Slots reserved for background (clamped to [0, N-1-Ri]). Default 2. */
|
|
3072
|
+
rb?: number;
|
|
3073
|
+
};
|
|
3051
3074
|
};
|
|
3052
3075
|
};
|
|
3053
3076
|
/**
|