@action-llama/action-llama 0.13.3 → 0.13.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/README.md +6 -6
- package/agent-docs/AGENTS.md +1 -1
- package/agent-docs/skills/resource-locks.md +40 -2
- package/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +3 -1
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/execution-engine.d.ts.map +1 -1
- package/dist/agents/execution-engine.js +3 -1
- package/dist/agents/execution-engine.js.map +1 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +3 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/chat.js +6 -2
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/push.d.ts +1 -0
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +22 -4
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +10 -5
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +3 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cloud/{vps/cloudflare-api.d.ts → cloudflare/api.d.ts} +1 -1
- package/dist/cloud/cloudflare/api.d.ts.map +1 -0
- package/dist/cloud/{vps/cloudflare-api.js → cloudflare/api.js} +1 -1
- package/dist/cloud/cloudflare/api.js.map +1 -0
- package/dist/cloud/provider.js +2 -2
- package/dist/cloud/provider.js.map +1 -1
- package/dist/cloud/vps/provider.d.ts +4 -4
- package/dist/cloud/vps/provider.d.ts.map +1 -1
- package/dist/cloud/vps/provider.js +4 -4
- package/dist/cloud/vps/provider.js.map +1 -1
- package/dist/cloud/vps/provision.js +4 -4
- package/dist/cloud/vps/provision.js.map +1 -1
- package/dist/cloud/vps/teardown.d.ts +2 -2
- package/dist/cloud/vps/teardown.d.ts.map +1 -1
- package/dist/cloud/vps/teardown.js +3 -3
- package/dist/cloud/vps/teardown.js.map +1 -1
- package/dist/cloud/vps/verify.js +2 -2
- package/dist/cloud/vps/verify.js.map +1 -1
- package/dist/credentials/builtins/cloudflare-api-token.js +1 -1
- package/dist/credentials/builtins/cloudflare-api-token.js.map +1 -1
- package/dist/gateway/auth.d.ts +6 -1
- package/dist/gateway/auth.d.ts.map +1 -1
- package/dist/gateway/auth.js +21 -4
- package/dist/gateway/auth.js.map +1 -1
- package/dist/gateway/index.d.ts +1 -0
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +13 -6
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/lock-store.d.ts +17 -0
- package/dist/gateway/lock-store.d.ts.map +1 -1
- package/dist/gateway/lock-store.js +101 -28
- package/dist/gateway/lock-store.js.map +1 -1
- package/dist/gateway/routes/control.d.ts +3 -0
- package/dist/gateway/routes/control.d.ts.map +1 -1
- package/dist/gateway/routes/control.js +7 -0
- package/dist/gateway/routes/control.js.map +1 -1
- package/dist/gateway/routes/dashboard.d.ts +6 -1
- package/dist/gateway/routes/dashboard.d.ts.map +1 -1
- package/dist/gateway/routes/dashboard.js +37 -3
- package/dist/gateway/routes/dashboard.js.map +1 -1
- package/dist/gateway/routes/locks.d.ts.map +1 -1
- package/dist/gateway/routes/locks.js +7 -3
- package/dist/gateway/routes/locks.js.map +1 -1
- package/dist/gateway/routes/webhooks.d.ts.map +1 -1
- package/dist/gateway/routes/webhooks.js +0 -3
- package/dist/gateway/routes/webhooks.js.map +1 -1
- package/dist/gateway/session-store.d.ts +11 -0
- package/dist/gateway/session-store.d.ts.map +1 -0
- package/dist/gateway/session-store.js +33 -0
- package/dist/gateway/session-store.js.map +1 -0
- package/dist/gateway/types.d.ts +5 -0
- package/dist/gateway/types.d.ts.map +1 -1
- package/dist/remote/push.d.ts +15 -1
- package/dist/remote/push.d.ts.map +1 -1
- package/dist/remote/push.js +54 -3
- package/dist/remote/push.js.map +1 -1
- package/dist/scheduler/call-dispatcher.d.ts +11 -0
- package/dist/scheduler/call-dispatcher.d.ts.map +1 -0
- package/dist/scheduler/call-dispatcher.js +65 -0
- package/dist/scheduler/call-dispatcher.js.map +1 -0
- package/dist/scheduler/cron-setup.d.ts +41 -0
- package/dist/scheduler/cron-setup.d.ts.map +1 -0
- package/dist/scheduler/cron-setup.js +94 -0
- package/dist/scheduler/cron-setup.js.map +1 -0
- package/dist/scheduler/event-queue-sqlite.d.ts +27 -0
- package/dist/scheduler/event-queue-sqlite.d.ts.map +1 -0
- package/dist/scheduler/event-queue-sqlite.js +105 -0
- package/dist/scheduler/event-queue-sqlite.js.map +1 -0
- package/dist/scheduler/event-queue.d.ts +31 -9
- package/dist/scheduler/event-queue.d.ts.map +1 -1
- package/dist/scheduler/event-queue.js +21 -32
- package/dist/scheduler/event-queue.js.map +1 -1
- package/dist/scheduler/execution.d.ts +9 -2
- package/dist/scheduler/execution.d.ts.map +1 -1
- package/dist/scheduler/execution.js +64 -48
- package/dist/scheduler/execution.js.map +1 -1
- package/dist/scheduler/gateway-setup.d.ts +40 -0
- package/dist/scheduler/gateway-setup.d.ts.map +1 -0
- package/dist/scheduler/gateway-setup.js +135 -0
- package/dist/scheduler/gateway-setup.js.map +1 -0
- package/dist/scheduler/index.d.ts +4 -7
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +81 -437
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/runner-setup.d.ts +34 -0
- package/dist/scheduler/runner-setup.d.ts.map +1 -0
- package/dist/scheduler/runner-setup.js +63 -0
- package/dist/scheduler/runner-setup.js.map +1 -0
- package/dist/scheduler/shutdown.d.ts +20 -0
- package/dist/scheduler/shutdown.d.ts.map +1 -0
- package/dist/scheduler/shutdown.js +38 -0
- package/dist/scheduler/shutdown.js.map +1 -0
- package/dist/scheduler/state.d.ts +17 -0
- package/dist/scheduler/state.d.ts.map +1 -0
- package/dist/scheduler/state.js +10 -0
- package/dist/scheduler/state.js.map +1 -0
- package/dist/scheduler/validation.d.ts +18 -0
- package/dist/scheduler/validation.d.ts.map +1 -0
- package/dist/scheduler/validation.js +59 -0
- package/dist/scheduler/validation.js.map +1 -0
- package/dist/scheduler/watcher.d.ts.map +1 -1
- package/dist/scheduler/watcher.js +31 -48
- package/dist/scheduler/watcher.js.map +1 -1
- package/dist/scheduler/webhook-setup.d.ts +18 -1
- package/dist/scheduler/webhook-setup.d.ts.map +1 -1
- package/dist/scheduler/webhook-setup.js +51 -0
- package/dist/scheduler/webhook-setup.js.map +1 -1
- package/dist/shared/config.d.ts +2 -3
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +0 -15
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/queue-memory.d.ts +16 -0
- package/dist/shared/queue-memory.d.ts.map +1 -0
- package/dist/shared/queue-memory.js +28 -0
- package/dist/shared/queue-memory.js.map +1 -0
- package/dist/shared/queue-sqlite.d.ts +28 -0
- package/dist/shared/queue-sqlite.d.ts.map +1 -0
- package/dist/shared/queue-sqlite.js +86 -0
- package/dist/shared/queue-sqlite.js.map +1 -0
- package/dist/shared/queue.d.ts +55 -0
- package/dist/shared/queue.d.ts.map +1 -0
- package/dist/shared/queue.js +22 -0
- package/dist/shared/queue.js.map +1 -0
- package/dist/shared/server.d.ts +1 -0
- package/dist/shared/server.d.ts.map +1 -1
- package/dist/shared/server.js +3 -0
- package/dist/shared/server.js.map +1 -1
- package/package.json +2 -2
- package/dist/cloud/vps/cloudflare-api.d.ts.map +0 -1
- package/dist/cloud/vps/cloudflare-api.js.map +0 -1
- package/dist/gateway/rate-limiter.d.ts +0 -16
- package/dist/gateway/rate-limiter.d.ts.map +0 -1
- package/dist/gateway/rate-limiter.js +0 -38
- package/dist/gateway/rate-limiter.js.map +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner pool creation with project-wide scale enforcement.
|
|
3
|
+
*
|
|
4
|
+
* Also exports the `createRunner` factory shared between initial setup and
|
|
5
|
+
* hot-reload (watcher.ts).
|
|
6
|
+
*/
|
|
7
|
+
import type { GlobalConfig, AgentConfig } from "../shared/config.js";
|
|
8
|
+
import type { ContainerRuntime } from "../docker/runtime.js";
|
|
9
|
+
import type { StatusTracker } from "../tui/status-tracker.js";
|
|
10
|
+
import type { ContainerRegistration } from "../gateway/types.js";
|
|
11
|
+
import type { Logger } from "../shared/logger.js";
|
|
12
|
+
import { createLogger, createFileOnlyLogger } from "../shared/logger.js";
|
|
13
|
+
import { RunnerPool, type PoolRunner } from "./runner-pool.js";
|
|
14
|
+
export interface RunnerSetupResult {
|
|
15
|
+
runnerPools: Record<string, RunnerPool>;
|
|
16
|
+
createRunner: (agentConfig: AgentConfig, image: string) => PoolRunner;
|
|
17
|
+
}
|
|
18
|
+
export interface RunnerSetupOpts {
|
|
19
|
+
globalConfig: GlobalConfig;
|
|
20
|
+
agentConfigs: AgentConfig[];
|
|
21
|
+
runtime: ContainerRuntime;
|
|
22
|
+
agentRuntimeOverrides: Record<string, ContainerRuntime>;
|
|
23
|
+
agentImages: Record<string, string>;
|
|
24
|
+
baseImage: string;
|
|
25
|
+
gatewayPort: number;
|
|
26
|
+
registerContainer: (secret: string, reg: ContainerRegistration) => Promise<void>;
|
|
27
|
+
unregisterContainer: (secret: string) => Promise<void>;
|
|
28
|
+
statusTracker?: StatusTracker;
|
|
29
|
+
mkLogger: typeof createLogger | typeof createFileOnlyLogger;
|
|
30
|
+
projectPath: string;
|
|
31
|
+
logger: Logger;
|
|
32
|
+
}
|
|
33
|
+
export declare function createRunnerPools(opts: RunnerSetupOpts): Promise<RunnerSetupResult>;
|
|
34
|
+
//# sourceMappingURL=runner-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,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;AAE/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;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,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,CA6EzF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner pool creation with project-wide scale enforcement.
|
|
3
|
+
*
|
|
4
|
+
* Also exports the `createRunner` factory shared between initial setup and
|
|
5
|
+
* hot-reload (watcher.ts).
|
|
6
|
+
*/
|
|
7
|
+
import { RunnerPool } from "./runner-pool.js";
|
|
8
|
+
export async function createRunnerPools(opts) {
|
|
9
|
+
const { globalConfig, agentConfigs, runtime, agentRuntimeOverrides, agentImages, baseImage, gatewayPort, registerContainer, unregisterContainer, statusTracker, mkLogger, projectPath, logger, } = opts;
|
|
10
|
+
const { ContainerAgentRunner: ContainerAgentRunnerClass } = await import("../agents/container-runner.js");
|
|
11
|
+
const gatewayUrl = process.env.GATEWAY_URL || `http://gateway:${gatewayPort}`;
|
|
12
|
+
const createRunner = (agentConfig, image) => {
|
|
13
|
+
const agentRuntime = agentRuntimeOverrides[agentConfig.name] || runtime;
|
|
14
|
+
return new ContainerAgentRunnerClass(agentRuntime, globalConfig, agentConfig, mkLogger(projectPath, agentConfig.name), registerContainer, unregisterContainer, gatewayUrl, projectPath, image, statusTracker);
|
|
15
|
+
};
|
|
16
|
+
// Enforce project-wide scale limit
|
|
17
|
+
let totalScale = 0;
|
|
18
|
+
const adjustedConfigs = agentConfigs.map(config => ({ ...config }));
|
|
19
|
+
if (globalConfig.scale !== undefined) {
|
|
20
|
+
for (let i = 0; i < adjustedConfigs.length; i++) {
|
|
21
|
+
const config = adjustedConfigs[i];
|
|
22
|
+
const requestedScale = config.scale ?? 1;
|
|
23
|
+
const remainingCapacity = globalConfig.scale - totalScale;
|
|
24
|
+
if (remainingCapacity <= 0) {
|
|
25
|
+
config.scale = 1; // Ensure at least 1 runner per agent
|
|
26
|
+
if (requestedScale > 1) {
|
|
27
|
+
logger.warn({
|
|
28
|
+
agent: config.name,
|
|
29
|
+
requested: requestedScale,
|
|
30
|
+
reduced: 1,
|
|
31
|
+
projectLimit: globalConfig.scale,
|
|
32
|
+
}, "Agent scale reduced due to project scale limit");
|
|
33
|
+
}
|
|
34
|
+
totalScale += 1;
|
|
35
|
+
}
|
|
36
|
+
else if (requestedScale > remainingCapacity) {
|
|
37
|
+
config.scale = remainingCapacity;
|
|
38
|
+
logger.warn({
|
|
39
|
+
agent: config.name,
|
|
40
|
+
requested: requestedScale,
|
|
41
|
+
reduced: remainingCapacity,
|
|
42
|
+
projectLimit: globalConfig.scale,
|
|
43
|
+
}, "Agent scale reduced due to project scale limit");
|
|
44
|
+
totalScale += remainingCapacity;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
totalScale += requestedScale;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const runnerPools = {};
|
|
52
|
+
for (const agentConfig of adjustedConfigs) {
|
|
53
|
+
const scale = agentConfig.scale ?? 1;
|
|
54
|
+
const runners = [];
|
|
55
|
+
for (let i = 0; i < scale; i++) {
|
|
56
|
+
runners.push(createRunner(agentConfig, agentImages[agentConfig.name] || baseImage));
|
|
57
|
+
}
|
|
58
|
+
runnerPools[agentConfig.name] = new RunnerPool(runners);
|
|
59
|
+
logger.info({ agent: agentConfig.name, scale }, "Created runner pool");
|
|
60
|
+
}
|
|
61
|
+
return { runnerPools, createRunner };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=runner-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-setup.js","sourceRoot":"","sources":["../../src/scheduler/runner-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful shutdown handler for the scheduler.
|
|
3
|
+
*/
|
|
4
|
+
import type { Cron } from "croner";
|
|
5
|
+
import type { GatewayServer } from "../gateway/index.js";
|
|
6
|
+
import type { StateStore } from "../shared/state-store.js";
|
|
7
|
+
import type { Logger } from "../shared/logger.js";
|
|
8
|
+
import type { SchedulerContext } from "./execution.js";
|
|
9
|
+
export declare function registerShutdownHandlers(deps: {
|
|
10
|
+
logger: Logger;
|
|
11
|
+
schedulerCtx: SchedulerContext;
|
|
12
|
+
cronJobs: Cron[];
|
|
13
|
+
gateway?: GatewayServer;
|
|
14
|
+
stateStore?: StateStore;
|
|
15
|
+
telemetry?: any;
|
|
16
|
+
watcherHandle: {
|
|
17
|
+
stop: () => void;
|
|
18
|
+
};
|
|
19
|
+
}): void;
|
|
20
|
+
//# sourceMappingURL=shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../src/scheduler/shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACrC,GAAG,IAAI,CAoCP"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful shutdown handler for the scheduler.
|
|
3
|
+
*/
|
|
4
|
+
export function registerShutdownHandlers(deps) {
|
|
5
|
+
const { logger, schedulerCtx, cronJobs, gateway, stateStore, telemetry, watcherHandle } = deps;
|
|
6
|
+
const shutdown = async () => {
|
|
7
|
+
logger.info("Shutting down scheduler...");
|
|
8
|
+
watcherHandle.stop();
|
|
9
|
+
schedulerCtx.shuttingDown = true;
|
|
10
|
+
schedulerCtx.workQueue.clearAll();
|
|
11
|
+
schedulerCtx.workQueue.close();
|
|
12
|
+
for (const job of cronJobs) {
|
|
13
|
+
job.stop();
|
|
14
|
+
}
|
|
15
|
+
if (gateway) {
|
|
16
|
+
await gateway.close();
|
|
17
|
+
logger.info("Gateway server stopped");
|
|
18
|
+
}
|
|
19
|
+
if (stateStore) {
|
|
20
|
+
await stateStore.close();
|
|
21
|
+
}
|
|
22
|
+
// Shutdown telemetry
|
|
23
|
+
if (telemetry) {
|
|
24
|
+
try {
|
|
25
|
+
await telemetry.shutdown();
|
|
26
|
+
logger.info("Telemetry shutdown completed");
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
logger.warn({ error: error.message }, "Error during telemetry shutdown");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
logger.info("All cron jobs stopped");
|
|
33
|
+
process.exit(0);
|
|
34
|
+
};
|
|
35
|
+
process.on("SIGINT", shutdown);
|
|
36
|
+
process.on("SIGTERM", shutdown);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../src/scheduler/shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,UAAU,wBAAwB,CAAC,IAQxC;IACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE/F,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACjC,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAClC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,qBAAqB;QACrB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared mutable state container for the scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Multiple modules close over this container to access state that is populated
|
|
5
|
+
* after gateway startup (e.g. runner pools, cron jobs, scheduler context).
|
|
6
|
+
* JS closures capture variable bindings, not values, so reading from this
|
|
7
|
+
* container at invocation time preserves late binding.
|
|
8
|
+
*/
|
|
9
|
+
import type { Cron } from "croner";
|
|
10
|
+
import type { RunnerPool } from "./runner-pool.js";
|
|
11
|
+
import type { SchedulerContext } from "./execution.js";
|
|
12
|
+
export interface SchedulerState {
|
|
13
|
+
runnerPools: Record<string, RunnerPool>;
|
|
14
|
+
cronJobs: Cron[];
|
|
15
|
+
schedulerCtx: SchedulerContext | null;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/scheduler/state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared mutable state container for the scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Multiple modules close over this container to access state that is populated
|
|
5
|
+
* after gateway startup (e.g. runner pools, cron jobs, scheduler context).
|
|
6
|
+
* JS closures capture variable bindings, not values, so reading from this
|
|
7
|
+
* container at invocation time preserves late binding.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/scheduler/state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config loading, agent discovery, and validation.
|
|
3
|
+
*
|
|
4
|
+
* Pure validation — no mutable state.
|
|
5
|
+
*/
|
|
6
|
+
import type { GlobalConfig, AgentConfig, WebhookSourceConfig } from "../shared/config.js";
|
|
7
|
+
import type { Logger } from "../shared/logger.js";
|
|
8
|
+
export interface ValidatedConfig {
|
|
9
|
+
agentConfigs: AgentConfig[];
|
|
10
|
+
activeAgentConfigs: AgentConfig[];
|
|
11
|
+
maxReruns: number;
|
|
12
|
+
maxTriggerDepth: number;
|
|
13
|
+
timezone: string;
|
|
14
|
+
anyWebhooks: boolean;
|
|
15
|
+
webhookSources: Record<string, WebhookSourceConfig>;
|
|
16
|
+
}
|
|
17
|
+
export declare function validateAndDiscover(projectPath: string, globalConfig: GlobalConfig, logger: Logger): Promise<ValidatedConfig>;
|
|
18
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/scheduler/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACrD;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CA0D1B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config loading, agent discovery, and validation.
|
|
3
|
+
*
|
|
4
|
+
* Pure validation — no mutable state.
|
|
5
|
+
*/
|
|
6
|
+
import { discoverAgents, loadAgentConfig, validateAgentConfig } from "../shared/config.js";
|
|
7
|
+
import { requireCredentialRef } from "../shared/credentials.js";
|
|
8
|
+
import { ConfigError } from "../shared/errors.js";
|
|
9
|
+
import { DEFAULT_MAX_RERUNS, DEFAULT_MAX_TRIGGER_DEPTH } from "./execution.js";
|
|
10
|
+
import { resolveWebhookSource } from "./webhook-setup.js";
|
|
11
|
+
export async function validateAndDiscover(projectPath, globalConfig, logger) {
|
|
12
|
+
// Discover all agents in the project
|
|
13
|
+
const agentNames = discoverAgents(projectPath);
|
|
14
|
+
if (agentNames.length === 0) {
|
|
15
|
+
throw new ConfigError("No agents found. Run 'al new' to create a project with agents.");
|
|
16
|
+
}
|
|
17
|
+
const agentConfigs = agentNames.map((name) => loadAgentConfig(projectPath, name));
|
|
18
|
+
// Validate each agent has schedule, webhooks, or both
|
|
19
|
+
for (const config of agentConfigs) {
|
|
20
|
+
validateAgentConfig(config);
|
|
21
|
+
}
|
|
22
|
+
const activeAgentConfigs = agentConfigs.filter((a) => (a.scale ?? 1) > 0);
|
|
23
|
+
// Validate credentials exist for each active agent
|
|
24
|
+
const allCredentials = new Set(activeAgentConfigs.flatMap((a) => a.credentials));
|
|
25
|
+
for (const credRef of allCredentials) {
|
|
26
|
+
await requireCredentialRef(credRef);
|
|
27
|
+
}
|
|
28
|
+
const maxReruns = globalConfig.maxReruns ?? DEFAULT_MAX_RERUNS;
|
|
29
|
+
const maxTriggerDepth = globalConfig.maxCallDepth ?? globalConfig.maxTriggerDepth ?? DEFAULT_MAX_TRIGGER_DEPTH;
|
|
30
|
+
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
31
|
+
const anyWebhooks = activeAgentConfigs.some((a) => a.webhooks?.length);
|
|
32
|
+
// Validate pi_auth is not used with Docker (containers can't access host auth storage)
|
|
33
|
+
for (const config of activeAgentConfigs) {
|
|
34
|
+
if (config.model.authType === "pi_auth") {
|
|
35
|
+
throw new ConfigError(`Agent "${config.name}" uses pi_auth which is not supported in container mode. ` +
|
|
36
|
+
`Switch to api_key/oauth_token (run 'al doctor').`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Resolve webhook sources from global config
|
|
40
|
+
const webhookSources = globalConfig.webhooks ?? {};
|
|
41
|
+
// Validate all agent webhook sources reference valid global config entries
|
|
42
|
+
if (anyWebhooks) {
|
|
43
|
+
for (const config of activeAgentConfigs) {
|
|
44
|
+
for (const trigger of config.webhooks ?? []) {
|
|
45
|
+
resolveWebhookSource(trigger.source, config.name, webhookSources);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
agentConfigs,
|
|
51
|
+
activeAgentConfigs,
|
|
52
|
+
maxReruns,
|
|
53
|
+
maxTriggerDepth,
|
|
54
|
+
timezone,
|
|
55
|
+
anyWebhooks,
|
|
56
|
+
webhookSources,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/scheduler/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAY1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,YAA0B,EAC1B,MAAc;IAEd,qCAAqC;IACrC,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,WAAW,CAAC,gEAAgE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,YAAY,GAAkB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjG,sDAAsD;IACtD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1E,mDAAmD;IACnD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC/D,MAAM,eAAe,GAAG,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,eAAe,IAAI,yBAAyB,CAAC;IAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAClE,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvE,uFAAuF;IACvF,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,WAAW,CACnB,UAAU,MAAM,CAAC,IAAI,2DAA2D;gBAChF,kDAAkD,CACnD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEnD,2EAA2E;IAC3E,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACxC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC5C,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY;QACZ,kBAAkB;QAClB,SAAS;QACT,eAAe;QACf,QAAQ;QACR,WAAW;QACX,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/scheduler/watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/scheduler/watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,qDAAqD;AACrD,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;CACvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMjE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,kEAAkE;IAClE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iEAAiE;IACjE,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAuVhE"}
|
|
@@ -10,8 +10,8 @@ import { Cron } from "croner";
|
|
|
10
10
|
import { loadAgentConfig, discoverAgents, validateAgentConfig } from "../shared/config.js";
|
|
11
11
|
import { RunnerPool } from "./runner-pool.js";
|
|
12
12
|
import { buildSingleAgentImage } from "./image-builder.js";
|
|
13
|
-
import {
|
|
14
|
-
import { runWithReruns
|
|
13
|
+
import { registerWebhookBindings } from "./webhook-setup.js";
|
|
14
|
+
import { runWithReruns } from "./execution.js";
|
|
15
15
|
/** Debounce delay in ms. Overridable for testing. */
|
|
16
16
|
export const DEBOUNCE_MS = 500;
|
|
17
17
|
/**
|
|
@@ -148,7 +148,10 @@ export function watchAgents(ctx) {
|
|
|
148
148
|
return;
|
|
149
149
|
const runner = pool.getAvailableRunner();
|
|
150
150
|
if (!runner) {
|
|
151
|
-
ctx.
|
|
151
|
+
const { dropped } = ctx.schedulerCtx.workQueue.enqueue(agentName, { type: 'schedule' });
|
|
152
|
+
ctx.logger.info({ agent: agentName }, "all runners busy, scheduled run queued");
|
|
153
|
+
if (dropped)
|
|
154
|
+
ctx.logger.warn({ agent: agentName }, "queue full, oldest event dropped");
|
|
152
155
|
return;
|
|
153
156
|
}
|
|
154
157
|
await runWithReruns(runner, agentConfig, 0, ctx.schedulerCtx);
|
|
@@ -159,7 +162,13 @@ export function watchAgents(ctx) {
|
|
|
159
162
|
ctx.statusTracker?.setNextRunAt(agentName, nextRun);
|
|
160
163
|
}
|
|
161
164
|
// Set up webhooks
|
|
162
|
-
|
|
165
|
+
if (ctx.webhookRegistry) {
|
|
166
|
+
registerWebhookBindings({
|
|
167
|
+
agentConfig, pool, webhookRegistry: ctx.webhookRegistry,
|
|
168
|
+
webhookSources: ctx.webhookSources, schedulerCtx: ctx.schedulerCtx,
|
|
169
|
+
statusTracker: ctx.statusTracker, logger: ctx.logger,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
163
172
|
ctx.statusTracker?.setAgentState(agentName, "idle");
|
|
164
173
|
ctx.statusTracker?.addLogLine(agentName, "hot-reloaded (new)");
|
|
165
174
|
ctx.logger.info({ agent: agentName }, "hot reload: new agent ready");
|
|
@@ -267,8 +276,13 @@ export function watchAgents(ctx) {
|
|
|
267
276
|
if (ctx.statusTracker && !ctx.statusTracker.isAgentEnabled(agentName))
|
|
268
277
|
return;
|
|
269
278
|
const runner = pool.getAvailableRunner();
|
|
270
|
-
if (!runner)
|
|
279
|
+
if (!runner) {
|
|
280
|
+
const { dropped } = ctx.schedulerCtx.workQueue.enqueue(agentName, { type: 'schedule' });
|
|
281
|
+
ctx.logger.info({ agent: agentName }, "all runners busy, scheduled run queued");
|
|
282
|
+
if (dropped)
|
|
283
|
+
ctx.logger.warn({ agent: agentName }, "queue full, oldest event dropped");
|
|
271
284
|
return;
|
|
285
|
+
}
|
|
272
286
|
await runWithReruns(runner, newConfig, 0, ctx.schedulerCtx);
|
|
273
287
|
});
|
|
274
288
|
ctx.cronJobs.push(job);
|
|
@@ -285,8 +299,12 @@ export function watchAgents(ctx) {
|
|
|
285
299
|
const newWebhooks = JSON.stringify(newConfig.webhooks ?? []);
|
|
286
300
|
if (oldWebhooks !== newWebhooks) {
|
|
287
301
|
ctx.webhookRegistry?.removeBindingsForAgent(agentName);
|
|
288
|
-
if (pool) {
|
|
289
|
-
|
|
302
|
+
if (pool && ctx.webhookRegistry) {
|
|
303
|
+
registerWebhookBindings({
|
|
304
|
+
agentConfig: newConfig, pool, webhookRegistry: ctx.webhookRegistry,
|
|
305
|
+
webhookSources: ctx.webhookSources, schedulerCtx: ctx.schedulerCtx,
|
|
306
|
+
statusTracker: ctx.statusTracker, logger: ctx.logger,
|
|
307
|
+
});
|
|
290
308
|
}
|
|
291
309
|
}
|
|
292
310
|
ctx.statusTracker?.setAgentState(agentName, "idle");
|
|
@@ -312,8 +330,13 @@ export function watchAgents(ctx) {
|
|
|
312
330
|
if (ctx.statusTracker && !ctx.statusTracker.isAgentEnabled(agentConfig.name))
|
|
313
331
|
return;
|
|
314
332
|
const runner = pool.getAvailableRunner();
|
|
315
|
-
if (!runner)
|
|
333
|
+
if (!runner) {
|
|
334
|
+
const { dropped } = ctx.schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'schedule' });
|
|
335
|
+
ctx.logger.info({ agent: agentConfig.name }, "all runners busy, scheduled run queued");
|
|
336
|
+
if (dropped)
|
|
337
|
+
ctx.logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
|
|
316
338
|
return;
|
|
339
|
+
}
|
|
317
340
|
await runWithReruns(runner, agentConfig, 0, ctx.schedulerCtx);
|
|
318
341
|
});
|
|
319
342
|
ctx.cronJobs.push(job);
|
|
@@ -322,46 +345,6 @@ export function watchAgents(ctx) {
|
|
|
322
345
|
ctx.statusTracker?.setNextRunAt(agentConfig.name, nextRun);
|
|
323
346
|
}
|
|
324
347
|
}
|
|
325
|
-
function setupAgentWebhooks(agentConfig, pool) {
|
|
326
|
-
if (!ctx.webhookRegistry || !agentConfig.webhooks?.length)
|
|
327
|
-
return;
|
|
328
|
-
for (const trigger of agentConfig.webhooks) {
|
|
329
|
-
let sourceConfig;
|
|
330
|
-
try {
|
|
331
|
-
sourceConfig = resolveWebhookSource(trigger.source, agentConfig.name, ctx.webhookSources);
|
|
332
|
-
}
|
|
333
|
-
catch {
|
|
334
|
-
ctx.logger.warn({ agent: agentConfig.name, source: trigger.source }, "hot reload: invalid webhook source");
|
|
335
|
-
continue;
|
|
336
|
-
}
|
|
337
|
-
const providerType = sourceConfig.type;
|
|
338
|
-
const filter = buildFilterFromTrigger(trigger, providerType);
|
|
339
|
-
ctx.webhookRegistry.addBinding({
|
|
340
|
-
agentName: agentConfig.name,
|
|
341
|
-
source: sourceConfig.credential,
|
|
342
|
-
type: providerType,
|
|
343
|
-
filter,
|
|
344
|
-
trigger: (context) => {
|
|
345
|
-
if (ctx.statusTracker && !ctx.statusTracker.isAgentEnabled(agentConfig.name))
|
|
346
|
-
return false;
|
|
347
|
-
const runner = pool.getAvailableRunner();
|
|
348
|
-
if (!runner) {
|
|
349
|
-
const { dropped } = ctx.schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'webhook', context });
|
|
350
|
-
ctx.logger.info({ agent: agentConfig.name, event: context.event }, "webhook queued");
|
|
351
|
-
if (dropped)
|
|
352
|
-
ctx.logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
|
|
353
|
-
return true;
|
|
354
|
-
}
|
|
355
|
-
ctx.logger.info({ agent: agentConfig.name, event: context.event }, "webhook triggering agent");
|
|
356
|
-
const prompt = makeWebhookPrompt(agentConfig, context, ctx.schedulerCtx);
|
|
357
|
-
executeRun(runner, prompt, { type: 'webhook', source: context.event }, agentConfig.name, 0, ctx.schedulerCtx)
|
|
358
|
-
.then(() => drainQueues(ctx.schedulerCtx))
|
|
359
|
-
.catch((err) => ctx.logger.error({ err, agent: agentConfig.name }, "webhook run failed"));
|
|
360
|
-
return true;
|
|
361
|
-
},
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
348
|
return {
|
|
366
349
|
stop: () => {
|
|
367
350
|
watcher.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/scheduler/watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/scheduler/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
* Extracted from scheduler/index.ts to keep webhook-specific logic separate
|
|
5
5
|
* from the main scheduling orchestrator.
|
|
6
6
|
*/
|
|
7
|
-
import type { GlobalConfig, WebhookSourceConfig } from "../shared/config.js";
|
|
7
|
+
import type { AgentConfig, GlobalConfig, WebhookSourceConfig } from "../shared/config.js";
|
|
8
8
|
import type { Logger } from "../shared/logger.js";
|
|
9
|
+
import type { StatusTracker } from "../tui/status-tracker.js";
|
|
9
10
|
import { WebhookRegistry } from "../webhooks/registry.js";
|
|
11
|
+
import type { RunnerPool } from "./runner-pool.js";
|
|
12
|
+
import type { SchedulerContext } from "./execution.js";
|
|
10
13
|
import type { WebhookFilter, WebhookTrigger } from "../webhooks/types.js";
|
|
11
14
|
export declare const PROVIDER_TO_CREDENTIAL: Record<string, string>;
|
|
12
15
|
export declare function resolveWebhookSource(sourceName: string, agentName: string, webhookSources: Record<string, WebhookSourceConfig>): WebhookSourceConfig;
|
|
@@ -17,4 +20,18 @@ export interface WebhookSetupResult {
|
|
|
17
20
|
secrets: Record<string, Record<string, string>>;
|
|
18
21
|
}
|
|
19
22
|
export declare function setupWebhookRegistry(globalConfig: GlobalConfig, logger: Logger): Promise<WebhookSetupResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Register webhook bindings for a single agent.
|
|
25
|
+
*
|
|
26
|
+
* Shared between initial setup (index.ts) and hot-reload (watcher.ts).
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerWebhookBindings(opts: {
|
|
29
|
+
agentConfig: AgentConfig;
|
|
30
|
+
pool: RunnerPool;
|
|
31
|
+
webhookRegistry: WebhookRegistry;
|
|
32
|
+
webhookSources: Record<string, WebhookSourceConfig>;
|
|
33
|
+
schedulerCtx: SchedulerContext;
|
|
34
|
+
statusTracker?: StatusTracker;
|
|
35
|
+
logger: Logger;
|
|
36
|
+
}): void;
|
|
20
37
|
//# sourceMappingURL=webhook-setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"webhook-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAwF,MAAM,sBAAsB,CAAC;AAIhK,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzD,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAClD,mBAAmB,CAUrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CA6C/G;AAsBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAsBV;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CA4CP"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { listCredentialInstances, loadCredentialField } from "../shared/credentials.js";
|
|
8
8
|
import { WebhookRegistry } from "../webhooks/registry.js";
|
|
9
|
+
import { makeWebhookPrompt, executeRun, drainQueues } from "./execution.js";
|
|
9
10
|
import { GitHubWebhookProvider } from "../webhooks/providers/github.js";
|
|
10
11
|
import { SentryWebhookProvider } from "../webhooks/providers/sentry.js";
|
|
11
12
|
import { LinearWebhookProvider } from "../webhooks/providers/linear.js";
|
|
@@ -166,4 +167,54 @@ export async function setupWebhookRegistry(globalConfig, logger) {
|
|
|
166
167
|
}
|
|
167
168
|
return { registry, secrets };
|
|
168
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Register webhook bindings for a single agent.
|
|
172
|
+
*
|
|
173
|
+
* Shared between initial setup (index.ts) and hot-reload (watcher.ts).
|
|
174
|
+
*/
|
|
175
|
+
export function registerWebhookBindings(opts) {
|
|
176
|
+
const { agentConfig, pool, webhookRegistry, webhookSources, schedulerCtx, statusTracker, logger } = opts;
|
|
177
|
+
if (!agentConfig.webhooks?.length)
|
|
178
|
+
return;
|
|
179
|
+
for (const trigger of agentConfig.webhooks) {
|
|
180
|
+
let sourceConfig;
|
|
181
|
+
try {
|
|
182
|
+
sourceConfig = resolveWebhookSource(trigger.source, agentConfig.name, webhookSources);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
logger.warn({ agent: agentConfig.name, source: trigger.source }, "invalid webhook source, skipping");
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const providerType = sourceConfig.type;
|
|
189
|
+
const filter = buildFilterFromTrigger(trigger, providerType);
|
|
190
|
+
webhookRegistry.addBinding({
|
|
191
|
+
agentName: agentConfig.name,
|
|
192
|
+
source: sourceConfig.credential,
|
|
193
|
+
type: providerType,
|
|
194
|
+
filter,
|
|
195
|
+
trigger: (context) => {
|
|
196
|
+
if (statusTracker && !statusTracker.isAgentEnabled(agentConfig.name))
|
|
197
|
+
return false;
|
|
198
|
+
if (statusTracker?.isPaused()) {
|
|
199
|
+
logger.info({ agent: agentConfig.name, event: context.event }, "scheduler paused, webhook rejected");
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const runner = pool.getAvailableRunner();
|
|
203
|
+
if (!runner) {
|
|
204
|
+
const { dropped } = schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'webhook', context });
|
|
205
|
+
logger.info({ agent: agentConfig.name, event: context.event, queueSize: schedulerCtx.workQueue.size(agentConfig.name) }, "webhook queued");
|
|
206
|
+
if (dropped)
|
|
207
|
+
logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
logger.info({ agent: agentConfig.name, event: context.event, action: context.action }, "webhook triggering agent");
|
|
211
|
+
const prompt = makeWebhookPrompt(agentConfig, context, schedulerCtx);
|
|
212
|
+
executeRun(runner, prompt, { type: 'webhook', source: context.event }, agentConfig.name, 0, schedulerCtx)
|
|
213
|
+
.then(() => drainQueues(schedulerCtx))
|
|
214
|
+
.catch((err) => logger.error({ err, agent: agentConfig.name }, "webhook run failed"));
|
|
215
|
+
return true;
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
169
220
|
//# sourceMappingURL=webhook-setup.js.map
|