@action-llama/action-llama 0.19.1 → 0.19.2
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/build-info.json +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +3 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/execution/runner-setup.d.ts.map +1 -1
- package/dist/execution/runner-setup.js +3 -47
- package/dist/execution/runner-setup.js.map +1 -1
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +19 -17
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +24 -36
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/policies/index.d.ts +11 -0
- package/dist/scheduler/policies/index.d.ts.map +1 -0
- package/dist/scheduler/policies/index.js +10 -0
- package/dist/scheduler/policies/index.js.map +1 -0
- package/dist/scheduler/policies/scale-reconciliation.d.ts +32 -0
- package/dist/scheduler/policies/scale-reconciliation.d.ts.map +1 -0
- package/dist/scheduler/policies/scale-reconciliation.js +88 -0
- package/dist/scheduler/policies/scale-reconciliation.js.map +1 -0
- package/dist/scheduler/policies/try-run-or-enqueue.d.ts +34 -0
- package/dist/scheduler/policies/try-run-or-enqueue.d.ts.map +1 -0
- package/dist/scheduler/policies/try-run-or-enqueue.js +50 -0
- package/dist/scheduler/policies/try-run-or-enqueue.js.map +1 -0
- package/package.json +1 -1
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"gitSha":"
|
|
1
|
+
{"gitSha":"1604d15f"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAaA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAaA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH1J"}
|
|
@@ -11,6 +11,9 @@ import { gatewayFetch } from "../gateway-client.js";
|
|
|
11
11
|
import { credentialExists } from "../../shared/credentials.js";
|
|
12
12
|
import { ConfigError } from "../../shared/errors.js";
|
|
13
13
|
export async function execute(opts) {
|
|
14
|
+
// The scheduler registers multiple cleanup handlers (TUI, gateway, cron, telemetry, etc.)
|
|
15
|
+
// which collectively exceed Node's default limit of 10 per event.
|
|
16
|
+
process.setMaxListeners(20);
|
|
14
17
|
const projectPath = resolve(opts.project);
|
|
15
18
|
// Guard: refuse to run if the project path looks like an agent directory
|
|
16
19
|
if (existsSync(resolve(projectPath, "SKILL.md"))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-setup.d.ts","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-setup.d.ts","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG/D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;IACtE,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,OAAO,YAAY,GAAG,OAAO,oBAAoB,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoDzF"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* hot-reload (watcher.ts).
|
|
6
6
|
*/
|
|
7
7
|
import { RunnerPool } from "./runner-pool.js";
|
|
8
|
+
import { enforceProjectScaleCap } from "../scheduler/policies/index.js";
|
|
8
9
|
export async function createRunnerPools(opts) {
|
|
9
10
|
const { globalConfig, agentConfigs, runtime, agentRuntimeOverrides, agentImages, baseImage, gatewayPort, registerContainer, unregisterContainer, statusTracker, mkLogger, projectPath, logger, } = opts;
|
|
10
11
|
const { ContainerAgentRunner: ContainerAgentRunnerClass } = await import("../agents/container-runner.js");
|
|
@@ -18,54 +19,9 @@ export async function createRunnerPools(opts) {
|
|
|
18
19
|
: gatewayUrl;
|
|
19
20
|
return new ContainerAgentRunnerClass(agentRuntime, globalConfig, agentConfig, mkLogger(projectPath, agentConfig.name), registerContainer, unregisterContainer, effectiveGatewayUrl, projectPath, image, statusTracker);
|
|
20
21
|
};
|
|
21
|
-
// Enforce project-wide scale limit
|
|
22
|
+
// Enforce project-wide scale limit via policy module
|
|
22
23
|
const defaultScale = globalConfig.defaultAgentScale ?? 1;
|
|
23
|
-
|
|
24
|
-
const adjustedConfigs = agentConfigs.map(config => ({ ...config }));
|
|
25
|
-
// Warn if defaultAgentScale * agentCount exceeds project scale cap
|
|
26
|
-
if (globalConfig.scale !== undefined && globalConfig.defaultAgentScale !== undefined) {
|
|
27
|
-
const totalRequested = agentConfigs.reduce((sum, c) => sum + (c.scale ?? defaultScale), 0);
|
|
28
|
-
if (totalRequested > globalConfig.scale) {
|
|
29
|
-
logger.warn({
|
|
30
|
-
defaultAgentScale: globalConfig.defaultAgentScale,
|
|
31
|
-
agentCount: agentConfigs.length,
|
|
32
|
-
totalRequested,
|
|
33
|
-
projectScale: globalConfig.scale,
|
|
34
|
-
}, "Total requested agent scale (%d) exceeds project scale cap (%d) — agents will be throttled", totalRequested, globalConfig.scale);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (globalConfig.scale !== undefined) {
|
|
38
|
-
for (let i = 0; i < adjustedConfigs.length; i++) {
|
|
39
|
-
const config = adjustedConfigs[i];
|
|
40
|
-
const requestedScale = config.scale ?? defaultScale;
|
|
41
|
-
const remainingCapacity = globalConfig.scale - totalScale;
|
|
42
|
-
if (remainingCapacity <= 0) {
|
|
43
|
-
config.scale = 1; // Ensure at least 1 runner per agent
|
|
44
|
-
if (requestedScale > 1) {
|
|
45
|
-
logger.warn({
|
|
46
|
-
agent: config.name,
|
|
47
|
-
requested: requestedScale,
|
|
48
|
-
reduced: 1,
|
|
49
|
-
projectLimit: globalConfig.scale,
|
|
50
|
-
}, "Agent scale reduced due to project scale limit");
|
|
51
|
-
}
|
|
52
|
-
totalScale += 1;
|
|
53
|
-
}
|
|
54
|
-
else if (requestedScale > remainingCapacity) {
|
|
55
|
-
config.scale = remainingCapacity;
|
|
56
|
-
logger.warn({
|
|
57
|
-
agent: config.name,
|
|
58
|
-
requested: requestedScale,
|
|
59
|
-
reduced: remainingCapacity,
|
|
60
|
-
projectLimit: globalConfig.scale,
|
|
61
|
-
}, "Agent scale reduced due to project scale limit");
|
|
62
|
-
totalScale += remainingCapacity;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
totalScale += requestedScale;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
24
|
+
const adjustedConfigs = enforceProjectScaleCap(agentConfigs, globalConfig, logger);
|
|
69
25
|
const runnerPools = {};
|
|
70
26
|
const actualScales = {};
|
|
71
27
|
for (const agentConfig of adjustedConfigs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-setup.js","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-setup.js","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAyBxE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAqB;IAC3D,MAAM,EACJ,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAC1D,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAC3E,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAC7C,GAAG,IAAI,CAAC;IAET,MAAM,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAC1G,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,kBAAkB,WAAW,EAAE,CAAC;IAE9E,MAAM,YAAY,GAAG,CAAC,WAAwB,EAAE,KAAa,EAAc,EAAE;QAC3E,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oBAAoB,WAAW,EAAE,CAAC;YAChE,CAAC,CAAC,UAAU,CAAC;QACf,OAAO,IAAI,yBAAyB,CAClC,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,EACvC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,KAAK,EACL,aAAa,CACd,CAAC;IACJ,CAAC,CAAC;IAEF,qDAAqD;IACrD,MAAM,YAAY,GAAG,YAAY,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,sBAAsB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAEnF,MAAM,WAAW,GAA+B,EAAE,CAAC;IACnD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,YAAY,CAAC;QAChD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QACxD,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/gateway-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,gFAAgF;IAChF,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACjF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,OAAO,YAAY,GAAG,OAAO,oBAAoB,CAAC;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"gateway-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/gateway-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,gFAAgF;IAChF,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACjF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,OAAO,YAAY,GAAG,OAAO,oBAAoB,CAAC;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsM9B"}
|
|
@@ -96,31 +96,33 @@ export async function setupGateway(opts) {
|
|
|
96
96
|
if (!config)
|
|
97
97
|
return `Agent "${name}" not found`;
|
|
98
98
|
const pool = state.runnerPools[name];
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
const instanceId = `${name}-${randomBytes(4).toString("hex")}`;
|
|
100
|
+
if (pool && state.schedulerCtx) {
|
|
101
|
+
// Scheduler fully ready — try to get a runner, fall back to enqueue
|
|
102
|
+
const runner = pool.getAvailableRunner();
|
|
103
|
+
if (runner) {
|
|
104
|
+
logger.info({ agent: name, hasPrompt: !!prompt, instanceId }, "manual trigger via control API");
|
|
105
|
+
runWithReruns(runner, config, 0, state.schedulerCtx, prompt, instanceId).catch((err) => {
|
|
106
|
+
logger.error({ err, agent: name }, "manual trigger run failed");
|
|
107
|
+
});
|
|
108
|
+
return { instanceId };
|
|
109
|
+
}
|
|
110
|
+
// All runners busy — enqueue (pass undefined pool so tryRunOrEnqueue skips runner check)
|
|
101
111
|
if (!state.workQueue)
|
|
102
112
|
return "Scheduler is not ready";
|
|
103
113
|
const { dropped } = state.workQueue.enqueue(name, { type: 'manual', prompt });
|
|
104
114
|
if (dropped)
|
|
105
115
|
logger.warn({ agent: name }, "queue full, oldest event dropped");
|
|
106
|
-
const instanceId = `${name}-${randomBytes(4).toString("hex")}`;
|
|
107
|
-
logger.info({ agent: name, hasPrompt: !!prompt, instanceId, queued: true }, "manual trigger queued (agents building)");
|
|
108
|
-
return { instanceId };
|
|
109
|
-
}
|
|
110
|
-
const runner = pool.getAvailableRunner();
|
|
111
|
-
if (!runner) {
|
|
112
|
-
const { dropped } = state.workQueue.enqueue(name, { type: 'manual', prompt });
|
|
113
|
-
if (dropped)
|
|
114
|
-
logger.warn({ agent: name }, "queue full, oldest event dropped");
|
|
115
|
-
const instanceId = `${name}-${randomBytes(4).toString("hex")}`;
|
|
116
116
|
logger.info({ agent: name, hasPrompt: !!prompt, instanceId, queued: true }, "manual trigger queued (all runners busy)");
|
|
117
117
|
return { instanceId };
|
|
118
118
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
// Pools not ready yet (still building) — queue for later
|
|
120
|
+
if (!state.workQueue)
|
|
121
|
+
return "Scheduler is not ready";
|
|
122
|
+
const { dropped } = state.workQueue.enqueue(name, { type: 'manual', prompt });
|
|
123
|
+
if (dropped)
|
|
124
|
+
logger.warn({ agent: name }, "queue full, oldest event dropped");
|
|
125
|
+
logger.info({ agent: name, hasPrompt: !!prompt, instanceId, queued: true }, "manual trigger queued (agents building)");
|
|
124
126
|
return { instanceId };
|
|
125
127
|
},
|
|
126
128
|
enableAgent: async (name) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-setup.js","sourceRoot":"","sources":["../../src/scheduler/gateway-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAWtE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAiBlC;IACC,MAAM,EACJ,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAC9C,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAC1F,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAC/C,GAAG,IAAI,CAAC;IAET,2EAA2E;IAC3E,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACtE,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACvD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,oBAAoB,WAAW,EAAE,CAAC;IAElF,iFAAiF;IACjF,IAAI,YAA+C,CAAC;IAEpD,MAAM,mBAAmB,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAiB,EAAE,EAAE;QACzE,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAClG,MAAM,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;QACpD,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,MAAM,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;QACjC,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC1C,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;QACxC,aAAa,EAAE,SAAS;QACxB,eAAe;QACf,cAAc;QACd,cAAc;QACd,aAAa;QACb,WAAW;QACX,KAAK;QACL,WAAW,EAAE,YAAY,CAAC,mBAAmB;QAC7C,uEAAuE;QACvE,+EAA+E;QAC/E,MAAM,EAAE,iBAAiB;QACzB,UAAU;QACV,UAAU;QACV,MAAM;QACN,kBAAkB,EAAE,MAAM;QAC1B,eAAe,EAAE,YAAY,CAAC,OAAO,EAAE,eAAe;QACtD,mBAAmB;QACnB,iBAAiB;QACjB,WAAW,EAAE;YACX,aAAa;YACb,MAAM;YACN,YAAY,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE;gBACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpD,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;wBAAE,OAAO,IAAI,CAAC;gBACjD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,8CAA8C,CAAC,CAAC;gBACrF,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC;YACD,cAAc,EAAE,KAAK,IAAI,EAAE;gBACzB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC;gBACD,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAClD,CAAC;YACD,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,CAAC;gBACD,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACnD,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,IAAY,EAAE,MAAe,EAA4C,EAAE;gBAC9F,IAAI,aAAa,EAAE,QAAQ,EAAE;oBAAE,OAAO,qBAAqB,CAAC;gBAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM;oBAAE,OAAO,UAAU,IAAI,aAAa,CAAC;gBAChD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrC,
|
|
1
|
+
{"version":3,"file":"gateway-setup.js","sourceRoot":"","sources":["../../src/scheduler/gateway-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAahD,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO;;;;;;;;;GAyN9J"}
|
package/dist/scheduler/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { registerShutdownHandlers } from "./shutdown.js";
|
|
|
14
14
|
import { loadDependencies } from "./dependencies.js";
|
|
15
15
|
import { createPersistence } from "./persistence.js";
|
|
16
16
|
import { recoverOrphanContainers } from "./orphan-recovery.js";
|
|
17
|
+
import { syncTrackerScales, tryRunOrEnqueue } from "./policies/index.js";
|
|
17
18
|
export { SchedulerEventBus } from "./events.js";
|
|
18
19
|
export async function startScheduler(projectPath, globalConfigOverride, statusTracker, webUI, expose) {
|
|
19
20
|
const mkLogger = statusTracker ? createFileOnlyLogger : createLogger;
|
|
@@ -71,29 +72,26 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
71
72
|
return false;
|
|
72
73
|
}
|
|
73
74
|
const pool = state.runnerPools[config.name];
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
// Use undefined pool when scheduler is not ready yet (still building)
|
|
76
|
+
const effectivePool = (pool && state.schedulerCtx) ? pool : undefined;
|
|
77
|
+
const { runner, enqueued } = tryRunOrEnqueue(effectivePool, workQueue, config.name, { type: 'webhook', context }, logger, { event: context.event });
|
|
78
|
+
if (enqueued) {
|
|
77
79
|
statusTracker?.setQueuedWebhooks(config.name, workQueue.size(config.name));
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
if (!effectivePool) {
|
|
81
|
+
logger.info({ agent: config.name, event: context.event, queueSize: workQueue.size(config.name) }, "webhook queued (agents building)");
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logger.info({ agent: config.name, event: context.event, queueSize: workQueue.size(config.name) }, "webhook queued");
|
|
85
|
+
}
|
|
81
86
|
return true;
|
|
82
87
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
logger.warn({ agent: config.name }, "queue full, oldest event dropped");
|
|
90
|
-
return true;
|
|
88
|
+
if (runner) {
|
|
89
|
+
logger.info({ agent: config.name, event: context.event, action: context.action }, "webhook triggering agent");
|
|
90
|
+
const prompt = makeWebhookPrompt(config, context, state.schedulerCtx);
|
|
91
|
+
executeRun(runner, prompt, { type: 'webhook', source: context.event, receiptId: context.receiptId }, config.name, 0, state.schedulerCtx)
|
|
92
|
+
.then(() => drainQueues(state.schedulerCtx))
|
|
93
|
+
.catch((err) => logger.error({ err, agent: config.name }, "webhook run failed"));
|
|
91
94
|
}
|
|
92
|
-
logger.info({ agent: config.name, event: context.event, action: context.action }, "webhook triggering agent");
|
|
93
|
-
const prompt = makeWebhookPrompt(config, context, state.schedulerCtx);
|
|
94
|
-
executeRun(runner, prompt, { type: 'webhook', source: context.event, receiptId: context.receiptId }, config.name, 0, state.schedulerCtx)
|
|
95
|
-
.then(() => drainQueues(state.schedulerCtx))
|
|
96
|
-
.catch((err) => logger.error({ err, agent: config.name }, "webhook run failed"));
|
|
97
95
|
return true;
|
|
98
96
|
},
|
|
99
97
|
logger,
|
|
@@ -126,15 +124,7 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
126
124
|
});
|
|
127
125
|
// Sync status tracker with actual pool sizes (may differ from configured scale
|
|
128
126
|
// when a project-wide scale cap throttles individual agents)
|
|
129
|
-
|
|
130
|
-
for (const [agentName, actualScale] of Object.entries(actualScales)) {
|
|
131
|
-
const registeredScale = statusTracker.getAgentScale(agentName);
|
|
132
|
-
if (registeredScale !== actualScale) {
|
|
133
|
-
statusTracker.updateAgentScale(agentName, actualScale);
|
|
134
|
-
logger.info({ agent: agentName, registeredScale, actualScale }, "synced status tracker scale with actual pool size");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
127
|
+
syncTrackerScales(actualScales, statusTracker, logger);
|
|
138
128
|
// Populate late-binding state
|
|
139
129
|
Object.assign(state.runnerPools, runnerPools);
|
|
140
130
|
// === Phase 5: Recover previous state (orphan containers) ===
|
|
@@ -162,17 +152,15 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
162
152
|
globalConfig, agentConfigs,
|
|
163
153
|
onScheduledRun: async (agentConfig) => {
|
|
164
154
|
const pool = runnerPools[agentConfig.name];
|
|
165
|
-
const
|
|
166
|
-
if (
|
|
167
|
-
const { dropped } = schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'schedule' });
|
|
155
|
+
const { runner, enqueued } = tryRunOrEnqueue(pool, schedulerCtx.workQueue, agentConfig.name, { type: 'schedule' }, logger);
|
|
156
|
+
if (enqueued) {
|
|
168
157
|
schedulerCtx.statusTracker?.setQueuedWebhooks(agentConfig.name, schedulerCtx.workQueue.size(agentConfig.name));
|
|
169
|
-
logger.info({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "all runners busy, scheduled run queued");
|
|
170
|
-
if (dropped)
|
|
171
|
-
logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
|
|
172
158
|
return;
|
|
173
159
|
}
|
|
174
|
-
|
|
175
|
-
|
|
160
|
+
if (runner) {
|
|
161
|
+
logger.info({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "triggering scheduled run");
|
|
162
|
+
await runWithReruns(runner, agentConfig, 0, schedulerCtx);
|
|
163
|
+
}
|
|
176
164
|
},
|
|
177
165
|
statusTracker, logger, timezone, anyWebhooks,
|
|
178
166
|
gatewayPort: gateway ? gatewayPort : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named policy modules for the scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Each policy encapsulates a specific operational decision that was previously
|
|
5
|
+
* buried inline in orchestration code. Exporting them from a single barrel
|
|
6
|
+
* makes it easy to find and change any policy in one place.
|
|
7
|
+
*/
|
|
8
|
+
export { enforceProjectScaleCap, syncTrackerScales } from "./scale-reconciliation.js";
|
|
9
|
+
export { tryRunOrEnqueue } from "./try-run-or-enqueue.js";
|
|
10
|
+
export type { TryRunOrEnqueueResult } from "./try-run-or-enqueue.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scheduler/policies/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named policy modules for the scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Each policy encapsulates a specific operational decision that was previously
|
|
5
|
+
* buried inline in orchestration code. Exporting them from a single barrel
|
|
6
|
+
* makes it easy to find and change any policy in one place.
|
|
7
|
+
*/
|
|
8
|
+
export { enforceProjectScaleCap, syncTrackerScales } from "./scale-reconciliation.js";
|
|
9
|
+
export { tryRunOrEnqueue } from "./try-run-or-enqueue.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scheduler/policies/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scale reconciliation policies.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the project-wide scale cap enforcement and the status-tracker
|
|
5
|
+
* sync that follows pool creation. Both rules were previously inline in
|
|
6
|
+
* runner-setup.ts / scheduler/index.ts — moving them here gives maintainers
|
|
7
|
+
* one obvious place to look when scale behaviour changes.
|
|
8
|
+
*/
|
|
9
|
+
import type { GlobalConfig, AgentConfig } from "../../shared/config.js";
|
|
10
|
+
import type { StatusTracker } from "../../tui/status-tracker.js";
|
|
11
|
+
import type { Logger } from "../../shared/logger.js";
|
|
12
|
+
/**
|
|
13
|
+
* Enforce the project-wide scale limit across all agent configs.
|
|
14
|
+
*
|
|
15
|
+
* Walks the list in order, granting each agent as much of the remaining
|
|
16
|
+
* capacity as it requested. Agents whose requested scale exceeds what
|
|
17
|
+
* remains are throttled; agents that are reached with zero capacity are
|
|
18
|
+
* pinned to 1 (minimum viable runner).
|
|
19
|
+
*
|
|
20
|
+
* Returns a new array of agent configs with adjusted `scale` fields.
|
|
21
|
+
* The original objects are not mutated.
|
|
22
|
+
*/
|
|
23
|
+
export declare function enforceProjectScaleCap(agentConfigs: AgentConfig[], globalConfig: GlobalConfig, logger: Logger): AgentConfig[];
|
|
24
|
+
/**
|
|
25
|
+
* Sync the status tracker with actual pool sizes after scale cap enforcement.
|
|
26
|
+
*
|
|
27
|
+
* The status tracker is seeded with the configured scale at agent-registration
|
|
28
|
+
* time; if the project-wide cap reduced any pool, we update the tracker so the
|
|
29
|
+
* TUI shows the real runner count.
|
|
30
|
+
*/
|
|
31
|
+
export declare function syncTrackerScales(actualScales: Record<string, number>, statusTracker: StatusTracker | undefined, logger: Logger): void;
|
|
32
|
+
//# sourceMappingURL=scale-reconciliation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale-reconciliation.d.ts","sourceRoot":"","sources":["../../../src/scheduler/policies/scale-reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,WAAW,EAAE,CAuDf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GACb,IAAI,CAYN"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scale reconciliation policies.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the project-wide scale cap enforcement and the status-tracker
|
|
5
|
+
* sync that follows pool creation. Both rules were previously inline in
|
|
6
|
+
* runner-setup.ts / scheduler/index.ts — moving them here gives maintainers
|
|
7
|
+
* one obvious place to look when scale behaviour changes.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Enforce the project-wide scale limit across all agent configs.
|
|
11
|
+
*
|
|
12
|
+
* Walks the list in order, granting each agent as much of the remaining
|
|
13
|
+
* capacity as it requested. Agents whose requested scale exceeds what
|
|
14
|
+
* remains are throttled; agents that are reached with zero capacity are
|
|
15
|
+
* pinned to 1 (minimum viable runner).
|
|
16
|
+
*
|
|
17
|
+
* Returns a new array of agent configs with adjusted `scale` fields.
|
|
18
|
+
* The original objects are not mutated.
|
|
19
|
+
*/
|
|
20
|
+
export function enforceProjectScaleCap(agentConfigs, globalConfig, logger) {
|
|
21
|
+
const defaultScale = globalConfig.defaultAgentScale ?? 1;
|
|
22
|
+
const adjustedConfigs = agentConfigs.map(config => ({ ...config }));
|
|
23
|
+
if (globalConfig.scale === undefined) {
|
|
24
|
+
return adjustedConfigs;
|
|
25
|
+
}
|
|
26
|
+
// Warn up-front when the total requested scale exceeds the cap.
|
|
27
|
+
if (globalConfig.defaultAgentScale !== undefined) {
|
|
28
|
+
const totalRequested = agentConfigs.reduce((sum, c) => sum + (c.scale ?? defaultScale), 0);
|
|
29
|
+
if (totalRequested > globalConfig.scale) {
|
|
30
|
+
logger.warn({
|
|
31
|
+
defaultAgentScale: globalConfig.defaultAgentScale,
|
|
32
|
+
agentCount: agentConfigs.length,
|
|
33
|
+
totalRequested,
|
|
34
|
+
projectScale: globalConfig.scale,
|
|
35
|
+
}, "Total requested agent scale (%d) exceeds project scale cap (%d) — agents will be throttled", totalRequested, globalConfig.scale);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
let totalScale = 0;
|
|
39
|
+
for (const config of adjustedConfigs) {
|
|
40
|
+
const requestedScale = config.scale ?? defaultScale;
|
|
41
|
+
const remainingCapacity = globalConfig.scale - totalScale;
|
|
42
|
+
if (remainingCapacity <= 0) {
|
|
43
|
+
config.scale = 1; // Ensure at least 1 runner per agent
|
|
44
|
+
if (requestedScale > 1) {
|
|
45
|
+
logger.warn({
|
|
46
|
+
agent: config.name,
|
|
47
|
+
requested: requestedScale,
|
|
48
|
+
reduced: 1,
|
|
49
|
+
projectLimit: globalConfig.scale,
|
|
50
|
+
}, "Agent scale reduced due to project scale limit");
|
|
51
|
+
}
|
|
52
|
+
totalScale += 1;
|
|
53
|
+
}
|
|
54
|
+
else if (requestedScale > remainingCapacity) {
|
|
55
|
+
config.scale = remainingCapacity;
|
|
56
|
+
logger.warn({
|
|
57
|
+
agent: config.name,
|
|
58
|
+
requested: requestedScale,
|
|
59
|
+
reduced: remainingCapacity,
|
|
60
|
+
projectLimit: globalConfig.scale,
|
|
61
|
+
}, "Agent scale reduced due to project scale limit");
|
|
62
|
+
totalScale += remainingCapacity;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
totalScale += requestedScale;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return adjustedConfigs;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sync the status tracker with actual pool sizes after scale cap enforcement.
|
|
72
|
+
*
|
|
73
|
+
* The status tracker is seeded with the configured scale at agent-registration
|
|
74
|
+
* time; if the project-wide cap reduced any pool, we update the tracker so the
|
|
75
|
+
* TUI shows the real runner count.
|
|
76
|
+
*/
|
|
77
|
+
export function syncTrackerScales(actualScales, statusTracker, logger) {
|
|
78
|
+
if (!statusTracker)
|
|
79
|
+
return;
|
|
80
|
+
for (const [agentName, actualScale] of Object.entries(actualScales)) {
|
|
81
|
+
const registeredScale = statusTracker.getAgentScale(agentName);
|
|
82
|
+
if (registeredScale !== actualScale) {
|
|
83
|
+
statusTracker.updateAgentScale(agentName, actualScale);
|
|
84
|
+
logger.info({ agent: agentName, registeredScale, actualScale }, "synced status tracker scale with actual pool size");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=scale-reconciliation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale-reconciliation.js","sourceRoot":"","sources":["../../../src/scheduler/policies/scale-reconciliation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* try-run-or-enqueue policy
|
|
3
|
+
*
|
|
4
|
+
* The "get an available runner or enqueue with drop-oldest" pattern appears at
|
|
5
|
+
* four call sites:
|
|
6
|
+
* - scheduler/index.ts — webhook handler (two branches: building & no-runner)
|
|
7
|
+
* - scheduler/index.ts — cron handler
|
|
8
|
+
* - scheduler/gateway-setup.ts — triggerAgent control-API handler
|
|
9
|
+
*
|
|
10
|
+
* Centralising the logic here gives one place to change backpressure behaviour.
|
|
11
|
+
*/
|
|
12
|
+
import type { RunnerPool, PoolRunner } from "../../execution/runner-pool.js";
|
|
13
|
+
import type { WorkQueue, EnqueueResult } from "../../shared/work-queue.js";
|
|
14
|
+
import type { Logger } from "../../shared/logger.js";
|
|
15
|
+
export interface TryRunOrEnqueueResult<T> {
|
|
16
|
+
/** Available runner ready to accept work, when one was free. */
|
|
17
|
+
runner?: PoolRunner;
|
|
18
|
+
/** Enqueue result when no runner was available (or pool not yet ready). */
|
|
19
|
+
enqueued?: EnqueueResult<T>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Try to acquire an available runner from `pool`.
|
|
23
|
+
*
|
|
24
|
+
* - If `pool` is undefined (agents still building), the item is queued
|
|
25
|
+
* immediately without attempting runner acquisition.
|
|
26
|
+
* - If all runners are busy, the item is enqueued instead.
|
|
27
|
+
* - If the queue is at capacity the oldest item is silently dropped and a
|
|
28
|
+
* warning is logged.
|
|
29
|
+
*
|
|
30
|
+
* Callers must check whether the returned value has a `runner` or `enqueued`
|
|
31
|
+
* field to know which path was taken.
|
|
32
|
+
*/
|
|
33
|
+
export declare function tryRunOrEnqueue<T>(pool: RunnerPool | undefined, queue: WorkQueue<T>, agentName: string, workItem: T, logger: Logger, logContext?: Record<string, unknown>): TryRunOrEnqueueResult<T>;
|
|
34
|
+
//# sourceMappingURL=try-run-or-enqueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"try-run-or-enqueue.d.ts","sourceRoot":"","sources":["../../../src/scheduler/policies/try-run-or-enqueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,gEAAgE;IAChE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,qBAAqB,CAAC,CAAC,CAAC,CA+B1B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* try-run-or-enqueue policy
|
|
3
|
+
*
|
|
4
|
+
* The "get an available runner or enqueue with drop-oldest" pattern appears at
|
|
5
|
+
* four call sites:
|
|
6
|
+
* - scheduler/index.ts — webhook handler (two branches: building & no-runner)
|
|
7
|
+
* - scheduler/index.ts — cron handler
|
|
8
|
+
* - scheduler/gateway-setup.ts — triggerAgent control-API handler
|
|
9
|
+
*
|
|
10
|
+
* Centralising the logic here gives one place to change backpressure behaviour.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Try to acquire an available runner from `pool`.
|
|
14
|
+
*
|
|
15
|
+
* - If `pool` is undefined (agents still building), the item is queued
|
|
16
|
+
* immediately without attempting runner acquisition.
|
|
17
|
+
* - If all runners are busy, the item is enqueued instead.
|
|
18
|
+
* - If the queue is at capacity the oldest item is silently dropped and a
|
|
19
|
+
* warning is logged.
|
|
20
|
+
*
|
|
21
|
+
* Callers must check whether the returned value has a `runner` or `enqueued`
|
|
22
|
+
* field to know which path was taken.
|
|
23
|
+
*/
|
|
24
|
+
export function tryRunOrEnqueue(pool, queue, agentName, workItem, logger, logContext) {
|
|
25
|
+
const ctx = logContext ?? {};
|
|
26
|
+
if (!pool) {
|
|
27
|
+
const enqueued = queue.enqueue(agentName, workItem);
|
|
28
|
+
if (enqueued.dropped) {
|
|
29
|
+
logger.warn({ agent: agentName, ...ctx }, "queue full, oldest event dropped");
|
|
30
|
+
}
|
|
31
|
+
return { enqueued };
|
|
32
|
+
}
|
|
33
|
+
const runner = pool.getAvailableRunner();
|
|
34
|
+
if (!runner) {
|
|
35
|
+
const enqueued = queue.enqueue(agentName, workItem);
|
|
36
|
+
logger.info({
|
|
37
|
+
agent: agentName,
|
|
38
|
+
running: pool.runningJobCount,
|
|
39
|
+
scale: pool.size,
|
|
40
|
+
queueSize: queue.size(agentName),
|
|
41
|
+
...ctx,
|
|
42
|
+
}, "all runners busy, work queued");
|
|
43
|
+
if (enqueued.dropped) {
|
|
44
|
+
logger.warn({ agent: agentName, ...ctx }, "queue full, oldest event dropped");
|
|
45
|
+
}
|
|
46
|
+
return { enqueued };
|
|
47
|
+
}
|
|
48
|
+
return { runner };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=try-run-or-enqueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"try-run-or-enqueue.js","sourceRoot":"","sources":["../../../src/scheduler/policies/try-run-or-enqueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA4B,EAC5B,KAAmB,EACnB,SAAiB,EACjB,QAAW,EACX,MAAc,EACd,UAAoC;IAEpC,MAAM,GAAG,GAAG,UAAU,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CACT;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAChC,GAAG,GAAG;SACP,EACD,+BAA+B,CAChC,CAAC;QACF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|