@audit-tools/shared 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/observability/runLog.d.ts +7 -2
- package/dist/observability/runLog.d.ts.map +1 -1
- package/dist/observability/runLog.js.map +1 -1
- package/dist/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/quota/compositeQuotaSource.js +4 -2
- package/dist/quota/compositeQuotaSource.js.map +1 -1
- package/dist/quota/scheduler.d.ts +0 -2
- package/dist/quota/scheduler.d.ts.map +1 -1
- package/dist/quota/scheduler.js +87 -64
- package/dist/quota/scheduler.js.map +1 -1
- package/dist/quota/state.d.ts.map +1 -1
- package/dist/quota/state.js +2 -1
- package/dist/quota/state.js.map +1 -1
- package/dist/tooling/analyzerDeps.d.ts +6 -1
- package/dist/tooling/analyzerDeps.d.ts.map +1 -1
- package/dist/tooling/analyzerDeps.js +9 -1
- package/dist/tooling/analyzerDeps.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable vocabulary of run-log event kinds emitted across both orchestrators.
|
|
3
|
+
* Typed as a union so consumers can rely on a fixed set when aggregating logs.
|
|
4
|
+
*/
|
|
5
|
+
export type RunLogEventKind = "obligation" | "executor_start" | "executor_end" | "artifact_write" | "scope" | "outcome" | "provider_launch" | "step" | "state" | "error";
|
|
1
6
|
export interface RunLogEvent {
|
|
2
7
|
/** Coarse phase/state, e.g. "advance" or "implementing". */
|
|
3
8
|
phase?: string;
|
|
4
9
|
/** The obligation/decision this event relates to. */
|
|
5
10
|
obligation?: string;
|
|
6
|
-
/** Event kind
|
|
7
|
-
kind:
|
|
11
|
+
/** Event kind drawn from the stable {@link RunLogEventKind} vocabulary. */
|
|
12
|
+
kind: RunLogEventKind;
|
|
8
13
|
artifact?: string;
|
|
9
14
|
provider?: string;
|
|
10
15
|
tokens_est?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runLog.d.ts","sourceRoot":"","sources":["../../src/observability/runLog.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"runLog.d.ts","sourceRoot":"","sources":["../../src/observability/runLog.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,OAAO,GACP,SAAS,GACT,iBAAiB,GACjB,MAAM,GACN,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAMxD,2EAA2E;IAC3E,MAAM,CAAC,QAAQ,IAAI,SAAS;IAI5B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,8EAA8E;IAC9E,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAgBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runLog.js","sourceRoot":"","sources":["../../src/observability/runLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"runLog.js","sourceRoot":"","sources":["../../src/observability/runLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,MAAM,OAAO,SAAS;IACH,IAAI,CAAS;IACb,OAAO,CAAU;IACjB,GAAG,CAAe;IAEnC,YAAY,IAAY,EAAE,UAA4B,EAAE;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,KAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACpD,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,GAAG,IAAI,CAAC;QAC3H,CAAC;QACD,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -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;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;
|
|
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;CAetF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,WAAW,CAKnF"}
|
|
@@ -12,8 +12,10 @@ export class CompositeQuotaSource {
|
|
|
12
12
|
if (snapshot)
|
|
13
13
|
return snapshot;
|
|
14
14
|
}
|
|
15
|
-
catch {
|
|
16
|
-
// Skip failing sources, try next
|
|
15
|
+
catch (err) {
|
|
16
|
+
// Skip failing sources, try next — but surface the failure so operators
|
|
17
|
+
// can detect a persistently failing quota source.
|
|
18
|
+
console.warn(`[compositeQuotaSource] quota source '${source.name}' threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
return null;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,OAAO,GAAG,EAAE,CAAC;gBACb,wEAAwE;gBACxE,kDAAkD;gBAClD,OAAO,CAAC,IAAI,CACV,wCAAwC,MAAM,CAAC,IAAI,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAClH,CAAC;YACJ,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"}
|
|
@@ -19,8 +19,6 @@ export interface ScheduleWaveOptions {
|
|
|
19
19
|
requestedConcurrency: number;
|
|
20
20
|
/** Per-slot estimated tokens (one entry per worker slot). Used for TPM budget. */
|
|
21
21
|
estimatedSlotTokens?: number[];
|
|
22
|
-
/** @deprecated Use estimatedSlotTokens instead. Average tokens per slot — used as fallback. */
|
|
23
|
-
estimatedPacketTokens?: number;
|
|
24
22
|
quotaStateEntry?: QuotaStateEntry | null;
|
|
25
23
|
hostConcurrencyLimit?: HostConcurrencyLimit | null;
|
|
26
24
|
quotaSourceSnapshot?: QuotaUsageSnapshot | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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;AAClG,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAEf,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D;;;;;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,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;AAmGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAwHvE;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAER"}
|
package/dist/quota/scheduler.js
CHANGED
|
@@ -6,15 +6,91 @@ function sumTopN(sorted, n) {
|
|
|
6
6
|
sum += sorted[i];
|
|
7
7
|
return sum;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Compute the wave size after applying the RPM cap, the TPM cap, and exactly one
|
|
11
|
+
* of the learned-limit / unknown-provider-fallback caps — but BEFORE the
|
|
12
|
+
* real-time quota-source adjustment and the host-concurrency ceiling, both of
|
|
13
|
+
* which the caller applies. Pure: it never mutates an outer variable, so each
|
|
14
|
+
* cap is a single `Math.min` at the end of its branch rather than a scattered
|
|
15
|
+
* sequence of reassignments.
|
|
16
|
+
*
|
|
17
|
+
* The host-concurrency limit is deliberately NOT considered here: when the host
|
|
18
|
+
* reports its active-subagent capacity it is enforced as a hard ceiling by
|
|
19
|
+
* `applyHostConcurrencyLimit()` at the call site, so the only effect inside this
|
|
20
|
+
* function is that a reported host limit suppresses the conservative
|
|
21
|
+
* unknown-provider fallback (which exists solely as a no-signal default).
|
|
22
|
+
*/
|
|
23
|
+
function computeUncappedWaveSize(waveSize, limits, safetyMargin, avgTokens, slotsSorted, quotaStateEntry, hostConcurrencyLimit, providerName, quota, halfLifeHours) {
|
|
24
|
+
let current = waveSize;
|
|
25
|
+
// Cap by requests-per-minute
|
|
26
|
+
if (limits.requests_per_minute != null) {
|
|
27
|
+
const rpmCap = Math.max(1, Math.floor(limits.requests_per_minute * safetyMargin));
|
|
28
|
+
current = Math.min(current, rpmCap);
|
|
29
|
+
}
|
|
30
|
+
// Cap by input tokens-per-minute
|
|
31
|
+
if (limits.input_tokens_per_minute != null && avgTokens > 0) {
|
|
32
|
+
const tpmBudget = limits.input_tokens_per_minute * safetyMargin;
|
|
33
|
+
if (slotsSorted && slotsSorted.length > 0) {
|
|
34
|
+
let candidateSize = current;
|
|
35
|
+
while (candidateSize > 1 && sumTopN(slotsSorted, candidateSize) > tpmBudget) {
|
|
36
|
+
candidateSize--;
|
|
37
|
+
}
|
|
38
|
+
current = Math.max(1, candidateSize);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const tpmCap = Math.max(1, Math.floor(tpmBudget / avgTokens));
|
|
42
|
+
current = Math.min(current, tpmCap);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (quotaStateEntry) {
|
|
46
|
+
const rampUp = quota.ramp_up_enabled !== false;
|
|
47
|
+
const cap = rampUp
|
|
48
|
+
? computeRampUpConcurrency(quotaStateEntry, halfLifeHours)
|
|
49
|
+
: computeMaxSafeConcurrency(quotaStateEntry, halfLifeHours);
|
|
50
|
+
return Math.min(current, cap);
|
|
51
|
+
}
|
|
52
|
+
else if (hostConcurrencyLimit !== null) {
|
|
53
|
+
// The host explicitly reported its active-subagent capacity. That is a real
|
|
54
|
+
// concurrency signal, so it supersedes the conservative unknown-provider
|
|
55
|
+
// fallback. The reported limit is enforced as the hard ceiling by
|
|
56
|
+
// applyHostConcurrencyLimit() at the call site, so nothing is capped here.
|
|
57
|
+
return current;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const providerType = classifyProvider(providerName);
|
|
61
|
+
const fallbackCap = providerType === "local"
|
|
62
|
+
? quota.unknown_local_concurrency
|
|
63
|
+
: (quota.unknown_hosted_concurrency ??
|
|
64
|
+
agentHostFallbackConcurrency(providerName));
|
|
65
|
+
if (fallbackCap === "unlimited") {
|
|
66
|
+
// no cap — "unlimited" intentionally skips clamping
|
|
67
|
+
}
|
|
68
|
+
else if (typeof fallbackCap === "number" && Number.isFinite(fallbackCap)) {
|
|
69
|
+
current = Math.min(current, Math.max(1, Math.floor(fallbackCap)));
|
|
70
|
+
}
|
|
71
|
+
// First-contact cap: when no learned history, no configured fallback, AND
|
|
72
|
+
// no RPM/TPM limits from any source, apply a conservative ceiling.
|
|
73
|
+
// This triggers only for unconfigured local providers (fallbackCap is
|
|
74
|
+
// undefined). Hosted providers default to 1 via unknown_hosted_concurrency,
|
|
75
|
+
// and "unlimited" is an explicit opt-out.
|
|
76
|
+
if (fallbackCap == null &&
|
|
77
|
+
limits.requests_per_minute == null &&
|
|
78
|
+
limits.input_tokens_per_minute == null) {
|
|
79
|
+
const firstContactCap = quota.first_contact_concurrency ?? 3;
|
|
80
|
+
current = Math.min(current, Math.max(1, firstContactCap));
|
|
81
|
+
}
|
|
82
|
+
return current;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
9
85
|
export function scheduleWave(options) {
|
|
10
|
-
const { providerName, sessionConfig, hostModel, requestedConcurrency, estimatedSlotTokens,
|
|
86
|
+
const { providerName, sessionConfig, hostModel, requestedConcurrency, estimatedSlotTokens, quotaStateEntry = null, hostConcurrencyLimit = null, quotaSourceSnapshot = null, discoveredLimits = null, } = options;
|
|
11
87
|
// Descending sort so sumTopN picks the largest slots
|
|
12
88
|
const slotsSorted = estimatedSlotTokens
|
|
13
89
|
? [...estimatedSlotTokens].sort((a, b) => b - a)
|
|
14
90
|
: null;
|
|
15
91
|
const avgTokens = slotsSorted && slotsSorted.length > 0
|
|
16
92
|
? Math.floor(slotsSorted.reduce((a, b) => a + b, 0) / slotsSorted.length)
|
|
17
|
-
:
|
|
93
|
+
: 0;
|
|
18
94
|
const quota = sessionConfig.quota ?? {};
|
|
19
95
|
const applyHostConcurrencyLimit = (waveSize) => {
|
|
20
96
|
if (hostConcurrencyLimit === null)
|
|
@@ -50,76 +126,23 @@ export function scheduleWave(options) {
|
|
|
50
126
|
limits.input_tokens_per_minute ??= discoveredLimits.input_tokens_per_minute ?? null;
|
|
51
127
|
limits.output_tokens_per_minute ??= discoveredLimits.output_tokens_per_minute ?? null;
|
|
52
128
|
}
|
|
53
|
-
let waveSize = requestedConcurrency;
|
|
54
129
|
let cooldownUntil = null;
|
|
55
130
|
// Respect an active cooldown period
|
|
56
131
|
if (quotaStateEntry?.cooldown_until) {
|
|
57
132
|
const cooldownExpiry = new Date(quotaStateEntry.cooldown_until).getTime();
|
|
58
133
|
if (cooldownExpiry > Date.now()) {
|
|
59
134
|
cooldownUntil = quotaStateEntry.cooldown_until;
|
|
60
|
-
waveSize = 1;
|
|
61
135
|
}
|
|
62
136
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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 ??
|
|
104
|
-
agentHostFallbackConcurrency(providerName));
|
|
105
|
-
if (fallbackCap === "unlimited") {
|
|
106
|
-
// no cap — "unlimited" intentionally skips clamping
|
|
107
|
-
}
|
|
108
|
-
else if (typeof fallbackCap === "number" && Number.isFinite(fallbackCap)) {
|
|
109
|
-
waveSize = Math.min(waveSize, Math.max(1, Math.floor(fallbackCap)));
|
|
110
|
-
}
|
|
111
|
-
// First-contact cap: when no learned history, no configured fallback, AND
|
|
112
|
-
// no RPM/TPM limits from any source, apply a conservative ceiling.
|
|
113
|
-
// This triggers only for unconfigured local providers (fallbackCap is
|
|
114
|
-
// undefined). Hosted providers default to 1 via unknown_hosted_concurrency,
|
|
115
|
-
// and "unlimited" is an explicit opt-out.
|
|
116
|
-
if (fallbackCap == null &&
|
|
117
|
-
limits.requests_per_minute == null &&
|
|
118
|
-
limits.input_tokens_per_minute == null) {
|
|
119
|
-
const firstContactCap = quota.first_contact_concurrency ?? 3;
|
|
120
|
-
waveSize = Math.min(waveSize, Math.max(1, firstContactCap));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
137
|
+
// During an active cooldown we throttle to a single request and skip all cap
|
|
138
|
+
// logic; otherwise apply RPM/TPM and learned/fallback caps. The host-concurrency
|
|
139
|
+
// ceiling is enforced uniformly below by applyHostConcurrencyLimit().
|
|
140
|
+
let waveSize = requestedConcurrency;
|
|
141
|
+
if (cooldownUntil) {
|
|
142
|
+
waveSize = 1;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
waveSize = computeUncappedWaveSize(waveSize, limits, safetyMargin, avgTokens, slotsSorted, quotaStateEntry, hostConcurrencyLimit, providerName, quota, halfLifeHours);
|
|
123
146
|
}
|
|
124
147
|
// Apply real-time quota source data if available
|
|
125
148
|
if (quotaSourceSnapshot && !cooldownUntil) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/quota/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/quota/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/quota/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAStG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGlD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,MAAM,CAGR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,GACpB,eAAe,CAWjB;AASD,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CA2B1D;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,SAAK,GACd,MAAM,CAgBR;AAID,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,SAAK,GACd,MAAM,CAYR;AASD,wBAAgB,wBAAwB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,wBAAgB,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,mBAAmB,EAC5B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
package/dist/quota/state.js
CHANGED
|
@@ -2,6 +2,7 @@ import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { withFileLock } from "./fileLock.js";
|
|
4
4
|
const MIN_EVIDENCE_WEIGHT = 0.5;
|
|
5
|
+
const FAILURE_SPREAD_BUCKETS = 4;
|
|
5
6
|
let _stateDir;
|
|
6
7
|
let _statePath;
|
|
7
8
|
export function setQuotaStateDir(dir) {
|
|
@@ -140,7 +141,7 @@ async function recordWaveOutcomeUnsafe(providerModelKey, outcome, halfLifeHours)
|
|
|
140
141
|
const failureWeight = outcome.outcome === "rate_limited"
|
|
141
142
|
? computeBackoffFailureWeight(new429Count)
|
|
142
143
|
: 1.0;
|
|
143
|
-
for (let n = outcome.concurrency; n <= outcome.concurrency +
|
|
144
|
+
for (let n = outcome.concurrency; n <= outcome.concurrency + FAILURE_SPREAD_BUCKETS; n++) {
|
|
144
145
|
const bucket = entry.buckets[String(n)] ?? { success_weight: 0, failure_weight: 0 };
|
|
145
146
|
bucket.failure_weight += failureWeight;
|
|
146
147
|
entry.buckets[String(n)] = bucket;
|
package/dist/quota/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/quota/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,mBAAmB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/quota/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,12 @@ export interface ResolveAnalyzerDepOptions {
|
|
|
9
9
|
/** Override the cache root; defaults to ~/.audit-tools/analyzer-cache. */
|
|
10
10
|
cacheRoot?: string;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Shared analyzer cache root. Defaults to ~/.audit-tools/analyzer-cache; the
|
|
14
|
+
* `AUDIT_TOOLS_ANALYZER_CACHE` environment variable overrides it so a run can be
|
|
15
|
+
* pinned to an isolated cache (e.g. tests that need dependency resolution to be
|
|
16
|
+
* deterministic regardless of what the host machine has previously cached).
|
|
17
|
+
*/
|
|
13
18
|
export declare function analyzerCacheRoot(): string;
|
|
14
19
|
interface ParsedSpec {
|
|
15
20
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzerDeps.d.ts","sourceRoot":"","sources":["../../src/tooling/analyzerDeps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAS9D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,cAAc,CAAC;IACpB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"analyzerDeps.d.ts","sourceRoot":"","sources":["../../src/tooling/analyzerDeps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAS9D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,cAAc,CAAC;IACpB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAO1D;AAiDD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,yBAA8B,GACtC,mBAAmB,CAerB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,gBAAgB,CAAC;CACzD;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAqCtB"}
|
|
@@ -2,8 +2,16 @@ import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { runTracked } from "./exec.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Shared analyzer cache root. Defaults to ~/.audit-tools/analyzer-cache; the
|
|
7
|
+
* `AUDIT_TOOLS_ANALYZER_CACHE` environment variable overrides it so a run can be
|
|
8
|
+
* pinned to an isolated cache (e.g. tests that need dependency resolution to be
|
|
9
|
+
* deterministic regardless of what the host machine has previously cached).
|
|
10
|
+
*/
|
|
6
11
|
export function analyzerCacheRoot() {
|
|
12
|
+
const override = process.env.AUDIT_TOOLS_ANALYZER_CACHE;
|
|
13
|
+
if (override && override.trim().length > 0)
|
|
14
|
+
return override;
|
|
7
15
|
return join(homedir(), ".audit-tools", "analyzer-cache");
|
|
8
16
|
}
|
|
9
17
|
/** Parse "name", "name@version", or "@scope/name@version". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzerDeps.js","sourceRoot":"","sources":["../../src/tooling/analyzerDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAyB,MAAM,WAAW,CAAC;AAsB9D
|
|
1
|
+
{"version":3,"file":"analyzerDeps.js","sourceRoot":"","sources":["../../src/tooling/analyzerDeps.ts"],"names":[],"mappings":"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"}
|