@audit-tools/shared 0.5.0 → 0.5.4
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/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/spawnLoggedCommand.d.ts +12 -0
- package/dist/providers/spawnLoggedCommand.d.ts.map +1 -0
- package/dist/providers/spawnLoggedCommand.js +232 -0
- package/dist/providers/spawnLoggedCommand.js.map +1 -0
- package/dist/quota/compositeQuotaSource.d.ts +11 -0
- package/dist/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/quota/compositeQuotaSource.js +13 -0
- package/dist/quota/compositeQuotaSource.js.map +1 -1
- package/dist/quota/limits.d.ts.map +1 -1
- package/dist/quota/limits.js +12 -2
- package/dist/quota/limits.js.map +1 -1
- package/dist/quota/scheduler.d.ts +33 -0
- package/dist/quota/scheduler.d.ts.map +1 -0
- package/dist/quota/scheduler.js +153 -0
- package/dist/quota/scheduler.js.map +1 -0
- package/dist/quota/types.d.ts +1 -1
- package/dist/quota/types.d.ts.map +1 -1
- package/package.json +6 -1
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ export type { ValidationSeverity, ValidationIssue } from "./validation/basic.js"
|
|
|
32
32
|
export { describeValue, isRecord, createValidationIssue, pushValidationIssue, prefixValidationIssues, formatValidationIssues, requireKeys, } from "./validation/basic.js";
|
|
33
33
|
export type { WorkerProgress, LaunchFreshSessionInput, LaunchFreshSessionResult, ProviderRateLimits, FreshSessionProvider, } from "./providers/types.js";
|
|
34
34
|
export { LOCAL_SUBPROCESS_PROVIDER_NAME } from "./providers/constants.js";
|
|
35
|
+
export { spawnLoggedCommand } from "./providers/spawnLoggedCommand.js";
|
|
36
|
+
export type { SpawnLoggedCommandOptions } from "./providers/spawnLoggedCommand.js";
|
|
35
37
|
export type { LimitSource, LimitConfidence, HostConcurrencyLimitSource, HostConcurrencyLimit, ResolvedLimits, ConcurrencyBucket, QuotaStateEntry, QuotaState, WaveSchedule, BackoffState, ObservedWaveOutcome, } from "./quota/types.js";
|
|
36
38
|
export type { QuotaSource, QuotaUsageSnapshot } from "./quota/quotaSource.js";
|
|
37
39
|
export { resolveLimits, lookupKnownModel, classifyProvider, } from "./quota/limits.js";
|
|
@@ -43,6 +45,8 @@ export type { RateLimitDetectionResult } from "./quota/errorParsing.js";
|
|
|
43
45
|
export { acquireLock, releaseLock, withFileLock, FileLockTimeoutError, } from "./quota/fileLock.js";
|
|
44
46
|
export { runSlidingWindow } from "./quota/slidingWindow.js";
|
|
45
47
|
export type { SlidingWindowResult } from "./quota/slidingWindow.js";
|
|
48
|
+
export { scheduleWave, buildProviderModelKey } from "./quota/scheduler.js";
|
|
49
|
+
export type { ScheduleWaveOptions, DiscoveredRateLimitsInput, } from "./quota/scheduler.js";
|
|
46
50
|
export { LearnedQuotaSource } from "./quota/learnedQuotaSource.js";
|
|
47
51
|
export { CompositeQuotaSource } from "./quota/compositeQuotaSource.js";
|
|
48
52
|
export type { ErrorParser } from "./quota/errorParsers/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,12 +17,15 @@ export { isFileMissingError, readJsonFile, writeJsonFile, appendNdjsonFile, read
|
|
|
17
17
|
export { describeValue, isRecord, createValidationIssue, pushValidationIssue, prefixValidationIssues, formatValidationIssues, requireKeys, } from "./validation/basic.js";
|
|
18
18
|
// Provider constants
|
|
19
19
|
export { LOCAL_SUBPROCESS_PROVIDER_NAME } from "./providers/constants.js";
|
|
20
|
+
// Provider command runner (single source of truth for both orchestrators)
|
|
21
|
+
export { spawnLoggedCommand } from "./providers/spawnLoggedCommand.js";
|
|
20
22
|
export { resolveLimits, lookupKnownModel, classifyProvider, } from "./quota/limits.js";
|
|
21
23
|
export { setQuotaStateDir, getQuotaStatePath, readQuotaState, writeQuotaState, computeMaxSafeConcurrency, recordWaveOutcome, decayWeight, applyDecayToEntry, computeBackoffCooldownMs, computeBackoffFailureWeight, computeRampUpConcurrency, } from "./quota/state.js";
|
|
22
24
|
export { detectRateLimitError, computeCooldownUntil, } from "./quota/errorParsing.js";
|
|
23
25
|
export { detectHostActiveSubagentLimit, resolveHostActiveSubagentLimit, } from "./quota/hostLimits.js";
|
|
24
26
|
export { acquireLock, releaseLock, withFileLock, FileLockTimeoutError, } from "./quota/fileLock.js";
|
|
25
27
|
export { runSlidingWindow } from "./quota/slidingWindow.js";
|
|
28
|
+
export { scheduleWave, buildProviderModelKey } from "./quota/scheduler.js";
|
|
26
29
|
export { LearnedQuotaSource } from "./quota/learnedQuotaSource.js";
|
|
27
30
|
export { CompositeQuotaSource } from "./quota/compositeQuotaSource.js";
|
|
28
31
|
export { GenericErrorParser, ClaudeCodeErrorParser, getErrorParserForProvider, } from "./quota/errorParsers/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAwB3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAwBtC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUnE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,cAAc;AACd,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,KAAK;AACL,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAW/B,qBAAqB;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAwB3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAwBtC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUnE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,cAAc;AACd,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,KAAK;AACL,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAW/B,qBAAqB;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAE1E,0EAA0E;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAkBvE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createWriteStream } from "node:fs";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import type { LaunchFreshSessionInput, LaunchFreshSessionResult } from "./types.js";
|
|
4
|
+
export interface SpawnLoggedCommandOptions {
|
|
5
|
+
createWriteStream?: typeof createWriteStream;
|
|
6
|
+
spawn?: typeof spawn;
|
|
7
|
+
killGraceMs?: number;
|
|
8
|
+
opentoken?: boolean;
|
|
9
|
+
opentokenCommand?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function spawnLoggedCommand(command: string, args: string[], input: LaunchFreshSessionInput, env?: Record<string, string>, options?: SpawnLoggedCommandOptions): Promise<LaunchFreshSessionResult>;
|
|
12
|
+
//# sourceMappingURL=spawnLoggedCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawnLoggedCommand.d.ts","sourceRoot":"","sources":["../../src/providers/spawnLoggedCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAoCD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,uBAAuB,EAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAwOnC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { createWriteStream } from "node:fs";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
const TERMINATION_SIGNAL = "SIGTERM";
|
|
4
|
+
const FORCE_KILL_SIGNAL = "SIGKILL";
|
|
5
|
+
const FORCE_KILL_GRACE_MS = 1_000;
|
|
6
|
+
const HEARTBEAT_INTERVAL_MS = 30_000;
|
|
7
|
+
function formatCommand(command, args) {
|
|
8
|
+
return [command, ...args].join(" ");
|
|
9
|
+
}
|
|
10
|
+
function quoteCmdArg(value) {
|
|
11
|
+
if (/^[A-Za-z0-9_./:=@+-]+$/.test(value))
|
|
12
|
+
return value;
|
|
13
|
+
return `"${value.replace(/(["^&|<>%])/g, "^$1")}"`;
|
|
14
|
+
}
|
|
15
|
+
function applyOpenTokenWrap(command, args, opentokenCommand, platform = process.platform) {
|
|
16
|
+
if (platform === "win32") {
|
|
17
|
+
const shell = process.env.ComSpec ?? "cmd.exe";
|
|
18
|
+
const inner = [command, ...args].map(quoteCmdArg).join(" ");
|
|
19
|
+
return {
|
|
20
|
+
command: shell,
|
|
21
|
+
args: ["/d", "/s", "/c", `${opentokenCommand} wrap ${inner}`],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return { command: opentokenCommand, args: ["wrap", command, ...args] };
|
|
25
|
+
}
|
|
26
|
+
// Single source of truth for both orchestrators. Combines the auditor's
|
|
27
|
+
// flush-before-settle correctness (settle on "close" only after all buffered
|
|
28
|
+
// log writes have drained, and a computed `accepted`/rich result) with the
|
|
29
|
+
// remediator's stdin piping and optional structured progress telemetry.
|
|
30
|
+
//
|
|
31
|
+
// On Windows `command` must be the resolved .cmd / .exe path because `spawn`
|
|
32
|
+
// does not consult PATH for executables without a shell. Callers should use
|
|
33
|
+
// `platformCommand()` or similar to supply the correct command form per OS.
|
|
34
|
+
export async function spawnLoggedCommand(command, args, input, env, options = {}) {
|
|
35
|
+
const openWriteStream = options.createWriteStream ?? createWriteStream;
|
|
36
|
+
const spawnProcess = options.spawn ?? spawn;
|
|
37
|
+
const killGraceMs = options.killGraceMs ?? FORCE_KILL_GRACE_MS;
|
|
38
|
+
if (options.opentoken) {
|
|
39
|
+
const wrapped = applyOpenTokenWrap(command, args, options.opentokenCommand ?? "opentoken");
|
|
40
|
+
command = wrapped.command;
|
|
41
|
+
args = wrapped.args;
|
|
42
|
+
}
|
|
43
|
+
return await new Promise((resolve, reject) => {
|
|
44
|
+
const stdoutLog = openWriteStream(input.stdoutPath, { flags: "a" });
|
|
45
|
+
const stderrLog = openWriteStream(input.stderrPath, { flags: "a" });
|
|
46
|
+
const startedAt = Date.now();
|
|
47
|
+
let timedOut = false;
|
|
48
|
+
let settled = false;
|
|
49
|
+
let child = null;
|
|
50
|
+
let timer;
|
|
51
|
+
let heartbeat;
|
|
52
|
+
let forceKillTimer;
|
|
53
|
+
let pendingLogWrites = 0;
|
|
54
|
+
let childClosed = false;
|
|
55
|
+
let closeCode = null;
|
|
56
|
+
let closeSignal = null;
|
|
57
|
+
let logsEnded = false;
|
|
58
|
+
let stdoutLineBuf = "";
|
|
59
|
+
const clearTimers = () => {
|
|
60
|
+
if (timer) {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
if (heartbeat) {
|
|
64
|
+
clearInterval(heartbeat);
|
|
65
|
+
}
|
|
66
|
+
if (forceKillTimer) {
|
|
67
|
+
clearTimeout(forceKillTimer);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const endLogs = (callback) => {
|
|
71
|
+
if (logsEnded) {
|
|
72
|
+
callback();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
logsEnded = true;
|
|
76
|
+
let remaining = 2;
|
|
77
|
+
const done = () => {
|
|
78
|
+
remaining -= 1;
|
|
79
|
+
if (remaining === 0) {
|
|
80
|
+
callback();
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
stdoutLog.end(done);
|
|
84
|
+
stderrLog.end(done);
|
|
85
|
+
};
|
|
86
|
+
const settle = (callback) => {
|
|
87
|
+
if (settled) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
settled = true;
|
|
91
|
+
clearTimers();
|
|
92
|
+
endLogs(callback);
|
|
93
|
+
};
|
|
94
|
+
const fail = (error) => {
|
|
95
|
+
if (child && !child.killed) {
|
|
96
|
+
child.kill(FORCE_KILL_SIGNAL);
|
|
97
|
+
}
|
|
98
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
99
|
+
settle(() => reject(normalized));
|
|
100
|
+
};
|
|
101
|
+
const writeLog = (write, chunk) => {
|
|
102
|
+
pendingLogWrites += 1;
|
|
103
|
+
write.write(chunk, () => {
|
|
104
|
+
pendingLogWrites -= 1;
|
|
105
|
+
maybeSettleFromClose();
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
const maybeSettleFromClose = () => {
|
|
109
|
+
if (!childClosed || pendingLogWrites > 0 || settled) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (timedOut) {
|
|
113
|
+
settle(() => reject(new Error(`Fresh session timed out after ${input.timeoutMs}ms for run ${input.runId}.`)));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
settle(() => resolve({
|
|
117
|
+
accepted: closeCode === 0 && closeSignal === null,
|
|
118
|
+
processId: spawnedChild.pid,
|
|
119
|
+
exitCode: closeCode,
|
|
120
|
+
signal: closeSignal,
|
|
121
|
+
command: formatCommand(command, args),
|
|
122
|
+
args,
|
|
123
|
+
stdoutPath: input.stdoutPath,
|
|
124
|
+
stderrPath: input.stderrPath,
|
|
125
|
+
error: closeCode === 0 && closeSignal === null
|
|
126
|
+
? undefined
|
|
127
|
+
: closeSignal
|
|
128
|
+
? `Provider command exited with signal ${closeSignal}.`
|
|
129
|
+
: `Provider command exited with code ${closeCode}.`,
|
|
130
|
+
}));
|
|
131
|
+
};
|
|
132
|
+
stdoutLog.on("error", fail);
|
|
133
|
+
stderrLog.on("error", fail);
|
|
134
|
+
let spawnedChild;
|
|
135
|
+
try {
|
|
136
|
+
spawnedChild = spawnProcess(command, args, {
|
|
137
|
+
cwd: input.repoRoot,
|
|
138
|
+
env: { ...process.env, ...env },
|
|
139
|
+
stdio: [input.stdinText === undefined ? "ignore" : "pipe", "pipe", "pipe"],
|
|
140
|
+
});
|
|
141
|
+
child = spawnedChild;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
fail(error);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (input.stdinText !== undefined) {
|
|
148
|
+
if (!spawnedChild.stdin) {
|
|
149
|
+
fail(new Error(`Fresh session spawn for run ${input.runId} did not provide pipe-backed stdin.`));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
spawnedChild.stdin.end(input.stdinText);
|
|
153
|
+
}
|
|
154
|
+
if (!spawnedChild.stdout || !spawnedChild.stderr) {
|
|
155
|
+
fail(new Error(`Fresh session spawn for run ${input.runId} did not provide pipe-backed stdout/stderr streams.`));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
timer = setTimeout(() => {
|
|
159
|
+
timedOut = true;
|
|
160
|
+
spawnedChild.kill(TERMINATION_SIGNAL);
|
|
161
|
+
forceKillTimer = setTimeout(() => {
|
|
162
|
+
if (!settled) {
|
|
163
|
+
spawnedChild.kill(FORCE_KILL_SIGNAL);
|
|
164
|
+
}
|
|
165
|
+
}, killGraceMs);
|
|
166
|
+
}, input.timeoutMs);
|
|
167
|
+
heartbeat = setInterval(() => {
|
|
168
|
+
const elapsedMs = Date.now() - startedAt;
|
|
169
|
+
const message = `[provider] run ${input.runId} still running after ${elapsedMs}ms\n`;
|
|
170
|
+
writeLog(stderrLog, message);
|
|
171
|
+
if (input.uiMode === "visible") {
|
|
172
|
+
process.stderr.write(message);
|
|
173
|
+
}
|
|
174
|
+
// Structured telemetry only when a consumer is attached, so the auditor's
|
|
175
|
+
// stderr (which never wires onProgress) stays exactly as before.
|
|
176
|
+
if (input.onProgress) {
|
|
177
|
+
process.stderr.write(JSON.stringify({
|
|
178
|
+
type: "provider_heartbeat",
|
|
179
|
+
runId: input.runId,
|
|
180
|
+
elapsedMs,
|
|
181
|
+
}) + "\n");
|
|
182
|
+
input.onProgress({
|
|
183
|
+
type: "heartbeat",
|
|
184
|
+
runId: input.runId,
|
|
185
|
+
obligationId: input.obligationId,
|
|
186
|
+
elapsedMs,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}, HEARTBEAT_INTERVAL_MS);
|
|
190
|
+
spawnedChild.stdout.on("data", (chunk) => {
|
|
191
|
+
writeLog(stdoutLog, chunk);
|
|
192
|
+
if (input.uiMode === "visible") {
|
|
193
|
+
process.stdout.write(chunk);
|
|
194
|
+
}
|
|
195
|
+
if (input.onProgress) {
|
|
196
|
+
stdoutLineBuf += chunk.toString();
|
|
197
|
+
const lines = stdoutLineBuf.split("\n");
|
|
198
|
+
stdoutLineBuf = lines.pop() ?? "";
|
|
199
|
+
for (const line of lines) {
|
|
200
|
+
const trimmed = line.trim();
|
|
201
|
+
if (trimmed.length > 0) {
|
|
202
|
+
input.onProgress({
|
|
203
|
+
type: "output",
|
|
204
|
+
runId: input.runId,
|
|
205
|
+
obligationId: input.obligationId,
|
|
206
|
+
elapsedMs: Date.now() - startedAt,
|
|
207
|
+
message: trimmed,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
spawnedChild.stderr.on("data", (chunk) => {
|
|
214
|
+
writeLog(stderrLog, chunk);
|
|
215
|
+
if (input.uiMode === "visible") {
|
|
216
|
+
process.stderr.write(chunk);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
spawnedChild.on("error", fail);
|
|
220
|
+
spawnedChild.on("exit", (code, signal) => {
|
|
221
|
+
closeCode = code;
|
|
222
|
+
closeSignal = signal;
|
|
223
|
+
});
|
|
224
|
+
spawnedChild.on("close", (code, signal) => {
|
|
225
|
+
childClosed = true;
|
|
226
|
+
closeCode = code;
|
|
227
|
+
closeSignal = signal;
|
|
228
|
+
maybeSettleFromClose();
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=spawnLoggedCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawnLoggedCommand.js","sourceRoot":"","sources":["../../src/providers/spawnLoggedCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import type { QuotaSource, QuotaUsageSnapshot } from "./quotaSource.js";
|
|
2
|
+
export interface BuildQuotaSourceOptions {
|
|
3
|
+
halfLifeHours?: number;
|
|
4
|
+
additionalSources?: QuotaSource[];
|
|
5
|
+
}
|
|
2
6
|
export declare class CompositeQuotaSource implements QuotaSource {
|
|
3
7
|
readonly name = "composite";
|
|
4
8
|
private sources;
|
|
5
9
|
constructor(sources: QuotaSource[]);
|
|
6
10
|
queryCurrentUsage(providerModelKey: string): Promise<QuotaUsageSnapshot | null>;
|
|
7
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Builds the standard runtime quota snapshot cascade.
|
|
14
|
+
*
|
|
15
|
+
* Order: provider/additional sources first, then the learned reactive source.
|
|
16
|
+
* CompositeQuotaSource skips throwing sources and returns the first snapshot.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildQuotaSource(options?: BuildQuotaSourceOptions): QuotaSource;
|
|
8
19
|
//# sourceMappingURL=compositeQuotaSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositeQuotaSource.d.ts","sourceRoot":"","sources":["../../src/quota/compositeQuotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"compositeQuotaSource.d.ts","sourceRoot":"","sources":["../../src/quota/compositeQuotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC;CACnC;AAED,qBAAa,oBAAqB,YAAW,WAAW;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,EAAE,WAAW,EAAE;IAI5B,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAWtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,WAAW,CAKnF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { LearnedQuotaSource } from "./learnedQuotaSource.js";
|
|
1
2
|
export class CompositeQuotaSource {
|
|
2
3
|
name = "composite";
|
|
3
4
|
sources;
|
|
@@ -18,4 +19,16 @@ export class CompositeQuotaSource {
|
|
|
18
19
|
return null;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds the standard runtime quota snapshot cascade.
|
|
24
|
+
*
|
|
25
|
+
* Order: provider/additional sources first, then the learned reactive source.
|
|
26
|
+
* CompositeQuotaSource skips throwing sources and returns the first snapshot.
|
|
27
|
+
*/
|
|
28
|
+
export function buildQuotaSource(options = {}) {
|
|
29
|
+
return new CompositeQuotaSource([
|
|
30
|
+
...(options.additionalSources ?? []),
|
|
31
|
+
new LearnedQuotaSource(options.halfLifeHours ?? 24),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
21
34
|
//# sourceMappingURL=compositeQuotaSource.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositeQuotaSource.js","sourceRoot":"","sources":["../../src/quota/compositeQuotaSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compositeQuotaSource.js","sourceRoot":"","sources":["../../src/quota/compositeQuotaSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,WAAW,CAAC;IACpB,OAAO,CAAgB;IAE/B,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,gBAAwB;QAC9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gBAClE,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAmC,EAAE;IACpE,OAAO,IAAI,oBAAoB,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACpC,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/quota/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG/E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,GAAG,YAAY,CAYjF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GACf,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,eAAe,CAAC,GAAG,SAAS,CAEtE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAaD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/quota/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG/E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,GAAG,YAAY,CAYjF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GACf,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,eAAe,CAAC,GAAG,SAAS,CAEtE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAaD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,CAoDlF"}
|
package/dist/quota/limits.js
CHANGED
|
@@ -26,10 +26,14 @@ function defaultLimits(sessionConfig) {
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
export function resolveLimits(options) {
|
|
29
|
-
const { providerName
|
|
29
|
+
const { providerName, sessionConfig, hostModel } = options;
|
|
30
30
|
const quota = sessionConfig.quota ?? {};
|
|
31
31
|
const defaults = defaultLimits(sessionConfig);
|
|
32
|
+
// Resolution order:
|
|
32
33
|
// 1. Explicit per-model config overrides
|
|
34
|
+
// 2. Static known-model metadata
|
|
35
|
+
// 3. Conservative provider-typed default
|
|
36
|
+
// 4. Generic default fallback
|
|
33
37
|
if (hostModel && quota.models?.[hostModel]) {
|
|
34
38
|
const override = quota.models[hostModel];
|
|
35
39
|
return {
|
|
@@ -61,7 +65,13 @@ export function resolveLimits(options) {
|
|
|
61
65
|
};
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
|
-
// 3. Conservative defaults
|
|
68
|
+
// 3. Conservative provider defaults. Concurrency caps remain in the scheduler;
|
|
69
|
+
// this rung records that the provider was part of limit resolution.
|
|
70
|
+
const providerType = classifyProvider(providerName);
|
|
71
|
+
if (providerType !== "unknown") {
|
|
72
|
+
return { limits: defaults, source: "provider_default", confidence: "low" };
|
|
73
|
+
}
|
|
74
|
+
// 4. Conservative defaults for all unknown provider types
|
|
65
75
|
return { limits: defaults, source: "default", confidence: "low" };
|
|
66
76
|
}
|
|
67
77
|
//# sourceMappingURL=limits.js.map
|
package/dist/quota/limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/quota/limits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,MAAM,UAAU,gBAAgB,CAAC,YAAkC;IACjE,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,kBAAkB;YACrB,OAAO,OAAO,CAAC;QACjB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,aAAa,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB;IAEhB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAcD,SAAS,aAAa,CAAC,aAA4B;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;IACxC,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,sBAAsB,IAAI,MAAM;QACtD,aAAa,EAAE,KAAK,CAAC,sBAAsB,IAAI,KAAK;QACpD,mBAAmB,EAAE,IAAI;QACzB,uBAAuB,EAAE,IAAI;QAC7B,wBAAwB,EAAE,IAAI;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/quota/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ResolvedProviderName, SessionConfig } from "../types/sessionConfig.js";
|
|
2
|
+
import type { HostConcurrencyLimit, QuotaStateEntry, WaveSchedule } from "./types.js";
|
|
3
|
+
import type { QuotaUsageSnapshot } from "./quotaSource.js";
|
|
4
|
+
/**
|
|
5
|
+
* Minimal structural shape of RPM/TPM limits discovered at runtime (e.g. via
|
|
6
|
+
* response-header extraction). Declared here so the scheduler stays decoupled
|
|
7
|
+
* from any package-specific discovery implementation — callers may pass a
|
|
8
|
+
* richer object (with a `source` field, etc.); only these fields are read.
|
|
9
|
+
*/
|
|
10
|
+
export interface DiscoveredRateLimitsInput {
|
|
11
|
+
requests_per_minute?: number | null;
|
|
12
|
+
input_tokens_per_minute?: number | null;
|
|
13
|
+
output_tokens_per_minute?: number | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ScheduleWaveOptions {
|
|
16
|
+
providerName: ResolvedProviderName;
|
|
17
|
+
sessionConfig: SessionConfig;
|
|
18
|
+
hostModel: string | null;
|
|
19
|
+
requestedConcurrency: number;
|
|
20
|
+
/** Per-slot estimated tokens (one entry per worker slot). Used for TPM budget. */
|
|
21
|
+
estimatedSlotTokens?: number[];
|
|
22
|
+
/** @deprecated Use estimatedSlotTokens instead. Average tokens per slot — used as fallback. */
|
|
23
|
+
estimatedPacketTokens?: number;
|
|
24
|
+
quotaStateEntry?: QuotaStateEntry | null;
|
|
25
|
+
hostConcurrencyLimit?: HostConcurrencyLimit | null;
|
|
26
|
+
quotaSourceSnapshot?: QuotaUsageSnapshot | null;
|
|
27
|
+
/** RPM/TPM discovered from provider queries or response header extraction. */
|
|
28
|
+
discoveredLimits?: DiscoveredRateLimitsInput | null;
|
|
29
|
+
}
|
|
30
|
+
export declare function scheduleWave(options: ScheduleWaveOptions): WaveSchedule;
|
|
31
|
+
/** Build the state key used for indexing quota-state.json entries. */
|
|
32
|
+
export declare function buildProviderModelKey(providerName: string, hostModel: string | null | undefined): string;
|
|
33
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAEf,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI3D;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACrD;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAqKvE;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAER"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { classifyProvider, resolveLimits } from "./limits.js";
|
|
2
|
+
import { computeMaxSafeConcurrency, computeRampUpConcurrency } from "./state.js";
|
|
3
|
+
function sumTopN(sorted, n) {
|
|
4
|
+
let sum = 0;
|
|
5
|
+
for (let i = 0; i < Math.min(n, sorted.length); i++)
|
|
6
|
+
sum += sorted[i];
|
|
7
|
+
return sum;
|
|
8
|
+
}
|
|
9
|
+
export function scheduleWave(options) {
|
|
10
|
+
const { providerName, sessionConfig, hostModel, requestedConcurrency, estimatedSlotTokens, estimatedPacketTokens = 0, quotaStateEntry = null, hostConcurrencyLimit = null, quotaSourceSnapshot = null, discoveredLimits = null, } = options;
|
|
11
|
+
// Descending sort so sumTopN picks the largest slots
|
|
12
|
+
const slotsSorted = estimatedSlotTokens
|
|
13
|
+
? [...estimatedSlotTokens].sort((a, b) => b - a)
|
|
14
|
+
: null;
|
|
15
|
+
const avgTokens = slotsSorted && slotsSorted.length > 0
|
|
16
|
+
? Math.floor(slotsSorted.reduce((a, b) => a + b, 0) / slotsSorted.length)
|
|
17
|
+
: estimatedPacketTokens;
|
|
18
|
+
const quota = sessionConfig.quota ?? {};
|
|
19
|
+
const applyHostConcurrencyLimit = (waveSize) => {
|
|
20
|
+
if (hostConcurrencyLimit === null)
|
|
21
|
+
return waveSize;
|
|
22
|
+
return Math.min(waveSize, hostConcurrencyLimit.active_subagents);
|
|
23
|
+
};
|
|
24
|
+
if (quota.enabled === false) {
|
|
25
|
+
const waveSize = Math.max(1, applyHostConcurrencyLimit(requestedConcurrency));
|
|
26
|
+
const limits = {
|
|
27
|
+
context_tokens: quota.default_context_tokens ?? 32_000,
|
|
28
|
+
output_tokens: quota.reserved_output_tokens ?? 4_096,
|
|
29
|
+
requests_per_minute: null,
|
|
30
|
+
input_tokens_per_minute: null,
|
|
31
|
+
output_tokens_per_minute: null,
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
wave_size: waveSize,
|
|
35
|
+
estimated_wave_tokens: slotsSorted ? sumTopN(slotsSorted, waveSize) : waveSize * avgTokens,
|
|
36
|
+
cooldown_until: null,
|
|
37
|
+
confidence: "high",
|
|
38
|
+
source: "default",
|
|
39
|
+
resolved_limits: limits,
|
|
40
|
+
host_concurrency_limit: hostConcurrencyLimit,
|
|
41
|
+
model: hostModel,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const safetyMargin = quota.safety_margin ?? 0.8;
|
|
45
|
+
const halfLifeHours = quota.empirical_half_life_hours ?? 24;
|
|
46
|
+
const { limits, source, confidence } = resolveLimits({ providerName, sessionConfig, hostModel });
|
|
47
|
+
// Fill null RPM/TPM from discovered limits (provider query or header extraction)
|
|
48
|
+
if (discoveredLimits) {
|
|
49
|
+
limits.requests_per_minute ??= discoveredLimits.requests_per_minute ?? null;
|
|
50
|
+
limits.input_tokens_per_minute ??= discoveredLimits.input_tokens_per_minute ?? null;
|
|
51
|
+
limits.output_tokens_per_minute ??= discoveredLimits.output_tokens_per_minute ?? null;
|
|
52
|
+
}
|
|
53
|
+
let waveSize = requestedConcurrency;
|
|
54
|
+
let cooldownUntil = null;
|
|
55
|
+
// Respect an active cooldown period
|
|
56
|
+
if (quotaStateEntry?.cooldown_until) {
|
|
57
|
+
const cooldownExpiry = new Date(quotaStateEntry.cooldown_until).getTime();
|
|
58
|
+
if (cooldownExpiry > Date.now()) {
|
|
59
|
+
cooldownUntil = quotaStateEntry.cooldown_until;
|
|
60
|
+
waveSize = 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!cooldownUntil) {
|
|
64
|
+
// Cap by requests-per-minute
|
|
65
|
+
if (limits.requests_per_minute != null) {
|
|
66
|
+
const rpmCap = Math.max(1, Math.floor(limits.requests_per_minute * safetyMargin));
|
|
67
|
+
waveSize = Math.min(waveSize, rpmCap);
|
|
68
|
+
}
|
|
69
|
+
// Cap by input tokens-per-minute
|
|
70
|
+
if (limits.input_tokens_per_minute != null && avgTokens > 0) {
|
|
71
|
+
const tpmBudget = limits.input_tokens_per_minute * safetyMargin;
|
|
72
|
+
if (slotsSorted && slotsSorted.length > 0) {
|
|
73
|
+
let candidateSize = waveSize;
|
|
74
|
+
while (candidateSize > 1 && sumTopN(slotsSorted, candidateSize) > tpmBudget) {
|
|
75
|
+
candidateSize--;
|
|
76
|
+
}
|
|
77
|
+
waveSize = Math.max(1, candidateSize);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const tpmCap = Math.max(1, Math.floor(tpmBudget / avgTokens));
|
|
81
|
+
waveSize = Math.min(waveSize, tpmCap);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (quotaStateEntry) {
|
|
85
|
+
const rampUp = quota.ramp_up_enabled !== false;
|
|
86
|
+
const learnedCap = rampUp
|
|
87
|
+
? computeRampUpConcurrency(quotaStateEntry, halfLifeHours)
|
|
88
|
+
: computeMaxSafeConcurrency(quotaStateEntry, halfLifeHours);
|
|
89
|
+
waveSize = Math.min(waveSize, learnedCap);
|
|
90
|
+
}
|
|
91
|
+
else if (hostConcurrencyLimit !== null) {
|
|
92
|
+
// The host explicitly reported its active-subagent capacity. That is a
|
|
93
|
+
// real concurrency signal, so it supersedes the conservative
|
|
94
|
+
// unknown-provider fallback (which exists only when we have no signal at
|
|
95
|
+
// all). Leaving waveSize untouched here lets applyHostConcurrencyLimit()
|
|
96
|
+
// below enforce the reported limit as the hard ceiling, while any RPM/TPM
|
|
97
|
+
// caps applied above still bind.
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const providerType = classifyProvider(providerName);
|
|
101
|
+
const fallbackCap = providerType === "local"
|
|
102
|
+
? quota.unknown_local_concurrency
|
|
103
|
+
: (quota.unknown_hosted_concurrency ?? 1);
|
|
104
|
+
if (fallbackCap === "unlimited") {
|
|
105
|
+
// no cap — "unlimited" intentionally skips clamping
|
|
106
|
+
}
|
|
107
|
+
else if (typeof fallbackCap === "number" && Number.isFinite(fallbackCap)) {
|
|
108
|
+
waveSize = Math.min(waveSize, Math.max(1, Math.floor(fallbackCap)));
|
|
109
|
+
}
|
|
110
|
+
// First-contact cap: when no learned history, no configured fallback, AND
|
|
111
|
+
// no RPM/TPM limits from any source, apply a conservative ceiling.
|
|
112
|
+
// This triggers only for unconfigured local providers (fallbackCap is
|
|
113
|
+
// undefined). Hosted providers default to 1 via unknown_hosted_concurrency,
|
|
114
|
+
// and "unlimited" is an explicit opt-out.
|
|
115
|
+
if (fallbackCap == null &&
|
|
116
|
+
limits.requests_per_minute == null &&
|
|
117
|
+
limits.input_tokens_per_minute == null) {
|
|
118
|
+
const firstContactCap = quota.first_contact_concurrency ?? 3;
|
|
119
|
+
waveSize = Math.min(waveSize, Math.max(1, firstContactCap));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Apply real-time quota source data if available
|
|
124
|
+
if (quotaSourceSnapshot && !cooldownUntil) {
|
|
125
|
+
if (quotaSourceSnapshot.remaining_pct != null && quotaSourceSnapshot.remaining_pct < 0.1) {
|
|
126
|
+
waveSize = 1;
|
|
127
|
+
if (quotaSourceSnapshot.reset_at) {
|
|
128
|
+
cooldownUntil = quotaSourceSnapshot.reset_at;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (quotaSourceSnapshot.remaining_pct != null && quotaSourceSnapshot.remaining_pct < 0.3) {
|
|
132
|
+
waveSize = Math.min(waveSize, Math.max(1, Math.floor(waveSize * 0.5)));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
waveSize = applyHostConcurrencyLimit(waveSize);
|
|
136
|
+
waveSize = Math.max(1, waveSize);
|
|
137
|
+
return {
|
|
138
|
+
wave_size: waveSize,
|
|
139
|
+
estimated_wave_tokens: slotsSorted ? sumTopN(slotsSorted, waveSize) : waveSize * avgTokens,
|
|
140
|
+
cooldown_until: cooldownUntil,
|
|
141
|
+
confidence,
|
|
142
|
+
source,
|
|
143
|
+
resolved_limits: limits,
|
|
144
|
+
host_concurrency_limit: hostConcurrencyLimit,
|
|
145
|
+
model: hostModel,
|
|
146
|
+
quota_source_snapshot: quotaSourceSnapshot,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/** Build the state key used for indexing quota-state.json entries. */
|
|
150
|
+
export function buildProviderModelKey(providerName, hostModel) {
|
|
151
|
+
return hostModel ? `${providerName}/${hostModel}` : `${providerName}/*`;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/quota/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type LimitSource = "explicit_config" | "cli_flags" | "known_metadata" | "learned" | "default";
|
|
1
|
+
export type LimitSource = "explicit_config" | "cli_flags" | "known_metadata" | "provider_default" | "learned" | "default";
|
|
2
2
|
export type LimitConfidence = "high" | "medium" | "low";
|
|
3
3
|
export type HostConcurrencyLimitSource = "cli_flags" | "host_reported" | "session_config" | "environment";
|
|
4
4
|
export interface HostConcurrencyLimit {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/quota/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,MAAM,0BAA0B,GAClC,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,0BAA0B,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,cAAc,CAAC;IAChC,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/quota/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,MAAM,0BAA0B,GAClC,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,0BAA0B,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,cAAc,CAAC;IAChC,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@audit-tools/shared",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -35,6 +35,11 @@
|
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=20"
|
|
37
37
|
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "git+https://github.com/OhOkThisIsFine/audit-tools.git",
|
|
41
|
+
"directory": "packages/shared"
|
|
42
|
+
},
|
|
38
43
|
"publishConfig": {
|
|
39
44
|
"access": "public"
|
|
40
45
|
}
|