@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
package/dist/scheduler/index.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { loadGlobalConfig, loadAgentConfig, discoverAgents, validateAgentConfig } from "../shared/config.js";
|
|
3
|
-
import { requireCredentialRef } from "../shared/credentials.js";
|
|
1
|
+
import { loadGlobalConfig } from "../shared/config.js";
|
|
4
2
|
import { createLogger, createFileOnlyLogger } from "../shared/logger.js";
|
|
5
3
|
import { CONSTANTS } from "../shared/constants.js";
|
|
6
|
-
import {
|
|
7
|
-
import { WorkQueue } from "./event-queue.js";
|
|
8
|
-
import { RunnerPool } from "./runner-pool.js";
|
|
4
|
+
import { createWorkQueue } from "./event-queue.js";
|
|
9
5
|
import { createContainerRuntime, buildAgentImages } from "./runtime-factory.js";
|
|
10
|
-
import {
|
|
6
|
+
import { setupWebhookRegistry, registerWebhookBindings } from "./webhook-setup.js";
|
|
11
7
|
import { initTelemetry } from "../telemetry/index.js";
|
|
12
|
-
import {
|
|
13
|
-
import { DEFAULT_MAX_RERUNS, DEFAULT_MAX_TRIGGER_DEPTH, executeRun, drainQueues, runWithReruns, makeWebhookPrompt, makeTriggeredPrompt, } from "./execution.js";
|
|
8
|
+
import { drainQueues } from "./execution.js";
|
|
14
9
|
import { SchedulerEventBus } from "./events.js";
|
|
10
|
+
import { validateAndDiscover } from "./validation.js";
|
|
11
|
+
import { setupGateway } from "./gateway-setup.js";
|
|
12
|
+
import { createRunnerPools } from "./runner-setup.js";
|
|
13
|
+
import { wireCallDispatcher } from "./call-dispatcher.js";
|
|
14
|
+
import { setupCronJobs, setupEnableDisableHandlers, fireInitialRuns } from "./cron-setup.js";
|
|
15
|
+
import { registerShutdownHandlers } from "./shutdown.js";
|
|
15
16
|
export { SchedulerEventBus } from "./events.js";
|
|
16
17
|
export async function startScheduler(projectPath, globalConfigOverride, statusTracker, webUI, expose) {
|
|
17
18
|
const mkLogger = statusTracker ? createFileOnlyLogger : createLogger;
|
|
@@ -30,44 +31,9 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
30
31
|
logger.warn({ error: error.message }, "Failed to initialize telemetry");
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
// Discover
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
throw new ConfigError("No agents found. Run 'al new' to create a project with agents.");
|
|
37
|
-
}
|
|
38
|
-
const agentConfigs = agentNames.map((name) => loadAgentConfig(projectPath, name));
|
|
39
|
-
// Validate each agent has schedule, webhooks, or both
|
|
40
|
-
for (const config of agentConfigs) {
|
|
41
|
-
validateAgentConfig(config);
|
|
42
|
-
}
|
|
43
|
-
const activeAgentConfigs = agentConfigs.filter((a) => (a.scale ?? 1) > 0);
|
|
44
|
-
// Validate credentials exist for each active agent
|
|
45
|
-
const allCredentials = new Set(activeAgentConfigs.flatMap((a) => a.credentials));
|
|
46
|
-
for (const credRef of allCredentials) {
|
|
47
|
-
await requireCredentialRef(credRef);
|
|
48
|
-
}
|
|
49
|
-
const maxReruns = globalConfig.maxReruns ?? DEFAULT_MAX_RERUNS;
|
|
50
|
-
const maxTriggerDepth = globalConfig.maxCallDepth ?? globalConfig.maxTriggerDepth ?? DEFAULT_MAX_TRIGGER_DEPTH;
|
|
51
|
-
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
52
|
-
const dockerEnabled = true;
|
|
53
|
-
const anyWebhooks = activeAgentConfigs.some((a) => a.webhooks?.length);
|
|
54
|
-
// Validate pi_auth is not used with Docker (containers can't access host auth storage)
|
|
55
|
-
for (const config of activeAgentConfigs) {
|
|
56
|
-
if (config.model.authType === "pi_auth") {
|
|
57
|
-
throw new ConfigError(`Agent "${config.name}" uses pi_auth which is not supported in container mode. ` +
|
|
58
|
-
`Switch to api_key/oauth_token (run 'al doctor').`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Resolve webhook sources from global config
|
|
62
|
-
const webhookSources = globalConfig.webhooks ?? {};
|
|
63
|
-
// Validate all agent webhook sources reference valid global config entries
|
|
64
|
-
if (anyWebhooks) {
|
|
65
|
-
for (const config of activeAgentConfigs) {
|
|
66
|
-
for (const trigger of config.webhooks ?? []) {
|
|
67
|
-
resolveWebhookSource(trigger.source, config.name, webhookSources);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
34
|
+
// Discover agents and validate config
|
|
35
|
+
const validated = await validateAndDiscover(projectPath, globalConfig, logger);
|
|
36
|
+
const { agentConfigs, activeAgentConfigs, maxReruns, maxTriggerDepth, timezone, anyWebhooks, webhookSources } = validated;
|
|
71
37
|
// Set up webhook registry if any agents use webhooks
|
|
72
38
|
const { registry: webhookRegistry, secrets: webhookSecrets } = anyWebhooks
|
|
73
39
|
? await setupWebhookRegistry(globalConfig, logger)
|
|
@@ -78,10 +44,6 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
78
44
|
for (const agentConfig of agentConfigs) {
|
|
79
45
|
statusTracker?.registerAgent(agentConfig.name, agentConfig.scale ?? 1);
|
|
80
46
|
}
|
|
81
|
-
// Declare runner pools and cron jobs early so control route closures can reference them.
|
|
82
|
-
// They are populated after image builds complete.
|
|
83
|
-
const runnerPools = {};
|
|
84
|
-
let cronJobs = [];
|
|
85
47
|
// Create persistent state store (SQLite)
|
|
86
48
|
let stateStore;
|
|
87
49
|
{
|
|
@@ -93,124 +55,24 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
93
55
|
});
|
|
94
56
|
logger.info("State store: SQLite (.al/state.db)");
|
|
95
57
|
}
|
|
96
|
-
// Create the lifecycle event bus
|
|
58
|
+
// Create the lifecycle event bus
|
|
97
59
|
const events = new SchedulerEventBus();
|
|
60
|
+
// Create the shared mutable state container for late-binding closures
|
|
61
|
+
const state = {
|
|
62
|
+
runnerPools: {},
|
|
63
|
+
cronJobs: [],
|
|
64
|
+
schedulerCtx: null,
|
|
65
|
+
};
|
|
98
66
|
// Start gateway early (before Docker builds) so users can see build status
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
logger.info("Generated gateway API key (run 'al doctor' to view it)");
|
|
104
|
-
}
|
|
105
|
-
const { startGateway } = await import("../gateway/index.js");
|
|
106
|
-
const gatewayPort = globalConfig.gateway?.port || 8080;
|
|
107
|
-
gateway = await startGateway({
|
|
108
|
-
port: gatewayPort,
|
|
109
|
-
hostname: expose ? "0.0.0.0" : "127.0.0.1",
|
|
110
|
-
logger: mkLogger(projectPath, "gateway"),
|
|
111
|
-
killContainer: undefined, // Runtime not ready yet, will handle container ops later
|
|
112
|
-
webhookRegistry,
|
|
113
|
-
webhookSecrets,
|
|
114
|
-
statusTracker,
|
|
115
|
-
projectPath,
|
|
116
|
-
webUI,
|
|
117
|
-
lockTimeout: globalConfig.gateway?.lockTimeout,
|
|
118
|
-
apiKey: gatewayApiKey,
|
|
119
|
-
stateStore,
|
|
120
|
-
events,
|
|
121
|
-
controlDeps: {
|
|
122
|
-
statusTracker,
|
|
123
|
-
logger,
|
|
124
|
-
killInstance: async (instanceId) => {
|
|
125
|
-
for (const pool of Object.values(runnerPools)) {
|
|
126
|
-
if (pool.killInstance(instanceId))
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
return false;
|
|
130
|
-
},
|
|
131
|
-
killAgent: async (name) => {
|
|
132
|
-
const pool = runnerPools[name];
|
|
133
|
-
if (!pool)
|
|
134
|
-
return null;
|
|
135
|
-
const killed = pool.killAll();
|
|
136
|
-
logger.info({ agent: name, killed }, "kill all instances requested via control API");
|
|
137
|
-
return { killed };
|
|
138
|
-
},
|
|
139
|
-
pauseScheduler: async () => {
|
|
140
|
-
for (const job of cronJobs) {
|
|
141
|
-
job.pause();
|
|
142
|
-
}
|
|
143
|
-
statusTracker?.setPaused(true);
|
|
144
|
-
logger.info("Scheduler paused via control API");
|
|
145
|
-
},
|
|
146
|
-
resumeScheduler: async () => {
|
|
147
|
-
for (const job of cronJobs) {
|
|
148
|
-
job.resume();
|
|
149
|
-
}
|
|
150
|
-
statusTracker?.setPaused(false);
|
|
151
|
-
logger.info("Scheduler resumed via control API");
|
|
152
|
-
},
|
|
153
|
-
triggerAgent: async (name) => {
|
|
154
|
-
const pool = runnerPools[name];
|
|
155
|
-
if (!pool)
|
|
156
|
-
return false;
|
|
157
|
-
const runner = pool.getAvailableRunner();
|
|
158
|
-
if (!runner)
|
|
159
|
-
return false;
|
|
160
|
-
const config = agentConfigs.find((a) => a.name === name);
|
|
161
|
-
if (!config)
|
|
162
|
-
return false;
|
|
163
|
-
logger.info({ agent: name }, "manual trigger via control API");
|
|
164
|
-
runWithReruns(runner, config, 0, schedulerCtx).catch((err) => {
|
|
165
|
-
logger.error({ err, agent: name }, "manual trigger run failed");
|
|
166
|
-
});
|
|
167
|
-
return true;
|
|
168
|
-
},
|
|
169
|
-
enableAgent: async (name) => {
|
|
170
|
-
if (!statusTracker)
|
|
171
|
-
return false;
|
|
172
|
-
const config = agentConfigs.find((a) => a.name === name);
|
|
173
|
-
if (!config)
|
|
174
|
-
return false;
|
|
175
|
-
statusTracker.enableAgent(name);
|
|
176
|
-
return true;
|
|
177
|
-
},
|
|
178
|
-
disableAgent: async (name) => {
|
|
179
|
-
if (!statusTracker)
|
|
180
|
-
return false;
|
|
181
|
-
const config = agentConfigs.find((a) => a.name === name);
|
|
182
|
-
if (!config)
|
|
183
|
-
return false;
|
|
184
|
-
statusTracker.disableAgent(name);
|
|
185
|
-
return true;
|
|
186
|
-
},
|
|
187
|
-
stopScheduler: async () => {
|
|
188
|
-
logger.info("Stop requested via control API");
|
|
189
|
-
schedulerCtx.shuttingDown = true;
|
|
190
|
-
schedulerCtx.workQueue.clearAll();
|
|
191
|
-
for (const job of cronJobs)
|
|
192
|
-
job.stop();
|
|
193
|
-
if (gateway)
|
|
194
|
-
await gateway.close();
|
|
195
|
-
if (stateStore)
|
|
196
|
-
await stateStore.close();
|
|
197
|
-
if (telemetry) {
|
|
198
|
-
try {
|
|
199
|
-
await telemetry.shutdown();
|
|
200
|
-
}
|
|
201
|
-
catch { }
|
|
202
|
-
}
|
|
203
|
-
process.exit(0);
|
|
204
|
-
},
|
|
205
|
-
},
|
|
67
|
+
const { gateway, gatewayPort, registerContainer, unregisterContainer } = await setupGateway({
|
|
68
|
+
projectPath, globalConfig, state, agentConfigs,
|
|
69
|
+
webhookRegistry, webhookSecrets, stateStore, events, telemetry,
|
|
70
|
+
mkLogger, statusTracker, webUI, expose, logger,
|
|
206
71
|
});
|
|
207
|
-
|
|
208
|
-
// 1. Create the container runtime
|
|
72
|
+
// Create the container runtime
|
|
209
73
|
const { runtime, agentRuntimeOverrides } = await createContainerRuntime(globalConfig, activeAgentConfigs, logger);
|
|
210
74
|
logger.info({ runtime: "local" }, "Container mode enabled — initializing infrastructure");
|
|
211
|
-
// Check for orphan containers from a previous scheduler run
|
|
212
|
-
// Only clean up containers belonging to agents in this project to avoid
|
|
213
|
-
// killing containers from other schedulers running in parallel (e.g. tests).
|
|
75
|
+
// Check for orphan containers from a previous scheduler run
|
|
214
76
|
try {
|
|
215
77
|
const ownAgentNames = new Set(activeAgentConfigs.map((a) => a.name));
|
|
216
78
|
const orphans = (await runtime.listRunningAgents()).filter((o) => ownAgentNames.has(o.agentName));
|
|
@@ -231,7 +93,7 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
231
93
|
catch (err) {
|
|
232
94
|
logger.debug({ err }, "orphan detection skipped (runtime does not support listing)");
|
|
233
95
|
}
|
|
234
|
-
//
|
|
96
|
+
// Build base + per-agent images
|
|
235
97
|
const buildSkills = { locking: true };
|
|
236
98
|
const buildResult = await buildAgentImages({
|
|
237
99
|
projectPath, globalConfig, activeAgentConfigs,
|
|
@@ -239,298 +101,80 @@ export async function startScheduler(projectPath, globalConfigOverride, statusTr
|
|
|
239
101
|
});
|
|
240
102
|
baseImage = buildResult.baseImage;
|
|
241
103
|
Object.assign(agentImages, buildResult.agentImages);
|
|
242
|
-
//
|
|
243
|
-
const {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
: async (_secret) => { };
|
|
252
|
-
// Enforce project-wide scale limit
|
|
253
|
-
let totalScale = 0;
|
|
254
|
-
const adjustedConfigs = agentConfigs.map(config => ({ ...config }));
|
|
255
|
-
if (globalConfig.scale !== undefined) {
|
|
256
|
-
for (let i = 0; i < adjustedConfigs.length; i++) {
|
|
257
|
-
const config = adjustedConfigs[i];
|
|
258
|
-
const requestedScale = config.scale ?? 1;
|
|
259
|
-
const remainingCapacity = globalConfig.scale - totalScale;
|
|
260
|
-
if (remainingCapacity <= 0) {
|
|
261
|
-
config.scale = 1; // Ensure at least 1 runner per agent
|
|
262
|
-
if (requestedScale > 1) {
|
|
263
|
-
logger.warn({
|
|
264
|
-
agent: config.name,
|
|
265
|
-
requested: requestedScale,
|
|
266
|
-
reduced: 1,
|
|
267
|
-
projectLimit: globalConfig.scale
|
|
268
|
-
}, "Agent scale reduced due to project scale limit");
|
|
269
|
-
}
|
|
270
|
-
totalScale += 1;
|
|
271
|
-
}
|
|
272
|
-
else if (requestedScale > remainingCapacity) {
|
|
273
|
-
config.scale = remainingCapacity;
|
|
274
|
-
logger.warn({
|
|
275
|
-
agent: config.name,
|
|
276
|
-
requested: requestedScale,
|
|
277
|
-
reduced: remainingCapacity,
|
|
278
|
-
projectLimit: globalConfig.scale
|
|
279
|
-
}, "Agent scale reduced due to project scale limit");
|
|
280
|
-
totalScale += remainingCapacity;
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
totalScale += requestedScale;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
for (const agentConfig of adjustedConfigs) {
|
|
288
|
-
const scale = agentConfig.scale ?? 1;
|
|
289
|
-
const runners = [];
|
|
290
|
-
// Single log file per agent — instances share the file and are distinguished
|
|
291
|
-
// by the `instance` field in each log entry (generated per-run by the runner).
|
|
292
|
-
const agentLogger = mkLogger(projectPath, agentConfig.name);
|
|
293
|
-
for (let i = 0; i < scale; i++) {
|
|
294
|
-
const agentRuntime = agentRuntimeOverrides[agentConfig.name] || runtime;
|
|
295
|
-
runners.push(new ContainerAgentRunnerClass(agentRuntime, globalConfig, agentConfig, agentLogger, registerContainer, unregisterContainer, gatewayUrl, projectPath, agentImages[agentConfig.name] || baseImage, statusTracker));
|
|
296
|
-
}
|
|
297
|
-
runnerPools[agentConfig.name] = new RunnerPool(runners);
|
|
298
|
-
logger.info({ agent: agentConfig.name, scale }, "Created runner pool");
|
|
299
|
-
}
|
|
104
|
+
// Create runner pools
|
|
105
|
+
const { runnerPools, createRunner } = await createRunnerPools({
|
|
106
|
+
globalConfig, agentConfigs, runtime, agentRuntimeOverrides,
|
|
107
|
+
agentImages, baseImage, gatewayPort, registerContainer, unregisterContainer,
|
|
108
|
+
statusTracker, mkLogger, projectPath, logger,
|
|
109
|
+
});
|
|
110
|
+
// Populate late-binding state
|
|
111
|
+
Object.assign(state.runnerPools, runnerPools);
|
|
112
|
+
// Create work queue + scheduler context
|
|
300
113
|
const queueSize = globalConfig.workQueueSize ?? globalConfig.webhookQueueSize ?? 20;
|
|
301
|
-
const workQueue =
|
|
302
|
-
|
|
114
|
+
const workQueue = await createWorkQueue(queueSize, {
|
|
115
|
+
type: "sqlite",
|
|
116
|
+
path: (await import("path")).resolve(projectPath, ".al", "work-queue.db"),
|
|
117
|
+
});
|
|
303
118
|
const skills = { locking: true };
|
|
304
|
-
const callStore = gateway
|
|
305
|
-
const schedulerCtx = {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
const targetConfig = agentConfigs.find((a) => a.name === entry.targetAgent);
|
|
316
|
-
if (!targetConfig) {
|
|
317
|
-
return { ok: false, reason: `target agent "${entry.targetAgent}" not found` };
|
|
318
|
-
}
|
|
319
|
-
const pool = runnerPools[entry.targetAgent];
|
|
320
|
-
if (!pool || pool.size === 0) {
|
|
321
|
-
return { ok: false, reason: `target agent "${entry.targetAgent}" is disabled` };
|
|
322
|
-
}
|
|
323
|
-
const runner = pool.getAvailableRunner();
|
|
324
|
-
if (runner) {
|
|
325
|
-
logger.info({ caller: entry.callerAgent, target: entry.targetAgent, depth: entry.depth }, "dispatching call");
|
|
326
|
-
callStore?.setRunning(entry.callId);
|
|
327
|
-
const prompt = makeTriggeredPrompt(targetConfig, entry.callerAgent, entry.context, schedulerCtx);
|
|
328
|
-
executeRun(runner, prompt, { type: 'agent', source: entry.callerAgent }, entry.targetAgent, entry.depth + 1, schedulerCtx)
|
|
329
|
-
.then(({ result, returnValue }) => {
|
|
330
|
-
if (result === "completed" || result === "rerun") {
|
|
331
|
-
callStore?.complete(entry.callId, returnValue);
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
callStore?.fail(entry.callId, "agent run failed");
|
|
335
|
-
}
|
|
336
|
-
return drainQueues(schedulerCtx);
|
|
337
|
-
})
|
|
338
|
-
.catch((err) => {
|
|
339
|
-
callStore?.fail(entry.callId, err?.message || "unknown error");
|
|
340
|
-
logger.error({ err, target: entry.targetAgent }, "called agent run failed");
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
schedulerCtx.workQueue.enqueue(entry.targetAgent, {
|
|
345
|
-
type: 'agent-trigger',
|
|
346
|
-
sourceAgent: entry.callerAgent,
|
|
347
|
-
context: entry.context,
|
|
348
|
-
depth: entry.depth,
|
|
349
|
-
callId: entry.callId,
|
|
350
|
-
});
|
|
351
|
-
logger.info({ caller: entry.callerAgent, target: entry.targetAgent }, "all runners busy, call queued");
|
|
352
|
-
}
|
|
353
|
-
return { ok: true };
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
// Set up webhook bindings (only when gateway is enabled)
|
|
119
|
+
const callStore = gateway.callStore;
|
|
120
|
+
const schedulerCtx = {
|
|
121
|
+
runnerPools, agentConfigs, maxReruns, maxTriggerDepth, logger, workQueue,
|
|
122
|
+
shuttingDown: false, skills, useBakedImages: true, events, callStore, statusTracker,
|
|
123
|
+
isAgentEnabled: statusTracker ? (name) => statusTracker.isAgentEnabled(name) : undefined,
|
|
124
|
+
};
|
|
125
|
+
// Populate late-binding state
|
|
126
|
+
state.schedulerCtx = schedulerCtx;
|
|
127
|
+
// Wire up call dispatcher
|
|
128
|
+
wireCallDispatcher(gateway, schedulerCtx, statusTracker);
|
|
129
|
+
// Set up webhook bindings
|
|
357
130
|
if (webhookRegistry) {
|
|
358
131
|
for (const agentConfig of activeAgentConfigs) {
|
|
359
132
|
if (!agentConfig.webhooks?.length)
|
|
360
133
|
continue;
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
filter,
|
|
371
|
-
trigger: (context) => {
|
|
372
|
-
if (statusTracker && !statusTracker.isAgentEnabled(agentConfig.name))
|
|
373
|
-
return false;
|
|
374
|
-
const runner = pool.getAvailableRunner();
|
|
375
|
-
if (!runner) {
|
|
376
|
-
const { dropped } = schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'webhook', context });
|
|
377
|
-
logger.info({ agent: agentConfig.name, event: context.event, queueSize: schedulerCtx.workQueue.size(agentConfig.name) }, "webhook queued");
|
|
378
|
-
if (dropped)
|
|
379
|
-
logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
|
|
380
|
-
return true;
|
|
381
|
-
}
|
|
382
|
-
logger.info({ agent: agentConfig.name, event: context.event, action: context.action }, "webhook triggering agent");
|
|
383
|
-
const prompt = makeWebhookPrompt(agentConfig, context, schedulerCtx);
|
|
384
|
-
executeRun(runner, prompt, { type: 'webhook', source: context.event }, agentConfig.name, 0, schedulerCtx)
|
|
385
|
-
.then(() => drainQueues(schedulerCtx))
|
|
386
|
-
.catch((err) => logger.error({ err, agent: agentConfig.name }, "webhook run failed"));
|
|
387
|
-
return true;
|
|
388
|
-
},
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
// Set up cron jobs (only for agents with a schedule)
|
|
394
|
-
cronJobs = [];
|
|
395
|
-
for (const agentConfig of activeAgentConfigs) {
|
|
396
|
-
if (!agentConfig.schedule)
|
|
397
|
-
continue;
|
|
398
|
-
const pool = runnerPools[agentConfig.name];
|
|
399
|
-
const job = new Cron(agentConfig.schedule, { timezone }, async () => {
|
|
400
|
-
// Skip if agent is disabled
|
|
401
|
-
if (statusTracker && !statusTracker.isAgentEnabled(agentConfig.name)) {
|
|
402
|
-
logger.info({ agent: agentConfig.name }, "agent is disabled, skipping scheduled run");
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
const availableRunner = pool.getAvailableRunner();
|
|
406
|
-
if (!availableRunner) {
|
|
407
|
-
logger.warn({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "all agent runners busy, skipping scheduled run");
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
logger.info({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "triggering scheduled run");
|
|
411
|
-
await runWithReruns(availableRunner, agentConfig, 0, schedulerCtx);
|
|
412
|
-
});
|
|
413
|
-
cronJobs.push(job);
|
|
414
|
-
const nextRun = job.nextRun();
|
|
415
|
-
if (nextRun) {
|
|
416
|
-
statusTracker?.setNextRunAt(agentConfig.name, nextRun);
|
|
417
|
-
}
|
|
418
|
-
logger.info(`Scheduled ${agentConfig.name}: "${agentConfig.schedule}" (${timezone})`);
|
|
419
|
-
}
|
|
420
|
-
const webhookUrls = [];
|
|
421
|
-
if (anyWebhooks && gateway) {
|
|
422
|
-
const gatewayPort = globalConfig.gateway?.port || 8080;
|
|
423
|
-
const providerTypes = new Set(agentConfigs.flatMap((a) => a.webhooks?.map((t) => webhookSources[t.source]?.type).filter(Boolean) || []));
|
|
424
|
-
for (const pt of providerTypes) {
|
|
425
|
-
webhookUrls.push(`http://localhost:${gatewayPort}/webhooks/${pt}`);
|
|
134
|
+
registerWebhookBindings({
|
|
135
|
+
agentConfig,
|
|
136
|
+
pool: runnerPools[agentConfig.name],
|
|
137
|
+
webhookRegistry,
|
|
138
|
+
webhookSources,
|
|
139
|
+
schedulerCtx,
|
|
140
|
+
statusTracker,
|
|
141
|
+
logger,
|
|
142
|
+
});
|
|
426
143
|
}
|
|
427
144
|
}
|
|
145
|
+
// Set up cron jobs
|
|
146
|
+
const { cronJobs, agentCronJobs, webhookUrls } = setupCronJobs({
|
|
147
|
+
activeAgentConfigs, runnerPools, schedulerCtx, webhookSources,
|
|
148
|
+
globalConfig, agentConfigs, gateway, statusTracker, logger, timezone, anyWebhooks,
|
|
149
|
+
});
|
|
150
|
+
// Populate late-binding state
|
|
151
|
+
state.cronJobs.push(...cronJobs);
|
|
428
152
|
for (const url of webhookUrls) {
|
|
429
153
|
logger.info({ url }, "Webhook endpoint registered");
|
|
430
154
|
}
|
|
431
155
|
logger.info(`Scheduler running with ${cronJobs.length} scheduled jobs`);
|
|
432
156
|
// Handle agent enable/disable events
|
|
433
157
|
if (statusTracker) {
|
|
434
|
-
|
|
435
|
-
const agentCronJobs = new Map();
|
|
436
|
-
for (let i = 0; i < agentConfigs.length; i++) {
|
|
437
|
-
const config = agentConfigs[i];
|
|
438
|
-
if (config.schedule && cronJobs[i]) {
|
|
439
|
-
agentCronJobs.set(config.name, cronJobs[i]);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
statusTracker.on("agent-enabled", (agentName) => {
|
|
443
|
-
const job = agentCronJobs.get(agentName);
|
|
444
|
-
if (job) {
|
|
445
|
-
job.resume();
|
|
446
|
-
const nextRun = job.nextRun();
|
|
447
|
-
if (nextRun) {
|
|
448
|
-
statusTracker.setNextRunAt(agentName, nextRun);
|
|
449
|
-
}
|
|
450
|
-
logger.info({ agent: agentName }, "agent enabled, cron job resumed");
|
|
451
|
-
}
|
|
452
|
-
});
|
|
453
|
-
statusTracker.on("agent-disabled", (agentName) => {
|
|
454
|
-
const job = agentCronJobs.get(agentName);
|
|
455
|
-
if (job) {
|
|
456
|
-
job.pause();
|
|
457
|
-
statusTracker.setNextRunAt(agentName, null);
|
|
458
|
-
logger.info({ agent: agentName }, "agent disabled, cron job paused");
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
// Fire initial run for scheduled agents
|
|
463
|
-
for (const agentConfig of agentConfigs) {
|
|
464
|
-
if (!agentConfig.schedule)
|
|
465
|
-
continue;
|
|
466
|
-
const pool = runnerPools[agentConfig.name];
|
|
467
|
-
const availableRunner = pool.getAvailableRunner();
|
|
468
|
-
if (availableRunner) {
|
|
469
|
-
logger.info(`Initial run for ${agentConfig.name}`);
|
|
470
|
-
runWithReruns(availableRunner, agentConfig, 0, schedulerCtx).catch((err) => {
|
|
471
|
-
logger.error({ err }, `Initial ${agentConfig.name} run failed`);
|
|
472
|
-
});
|
|
473
|
-
}
|
|
474
|
-
else {
|
|
475
|
-
logger.warn(`${agentConfig.name}: all runners busy, skipping initial run`);
|
|
476
|
-
}
|
|
158
|
+
setupEnableDisableHandlers({ statusTracker, agentCronJobs, logger });
|
|
477
159
|
}
|
|
478
|
-
//
|
|
160
|
+
// Fire initial runs + drain persisted queue items
|
|
161
|
+
fireInitialRuns({ agentConfigs, runnerPools, schedulerCtx, logger });
|
|
162
|
+
drainQueues(schedulerCtx).catch((err) => {
|
|
163
|
+
logger.error({ err }, "initial queue drain failed");
|
|
164
|
+
});
|
|
165
|
+
// Start hot-reload watcher
|
|
479
166
|
const { watchAgents } = await import("./watcher.js");
|
|
480
167
|
const watcherHandle = watchAgents({
|
|
481
|
-
projectPath,
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
runnerPools,
|
|
486
|
-
agentConfigs,
|
|
487
|
-
agentImages,
|
|
488
|
-
cronJobs,
|
|
489
|
-
schedulerCtx,
|
|
490
|
-
webhookRegistry,
|
|
491
|
-
webhookSources,
|
|
492
|
-
statusTracker,
|
|
493
|
-
logger,
|
|
494
|
-
skills,
|
|
495
|
-
timezone,
|
|
496
|
-
baseImage,
|
|
497
|
-
createRunner: (agentConfig, image) => {
|
|
498
|
-
const agentRuntime = agentRuntimeOverrides[agentConfig.name] || runtime;
|
|
499
|
-
return new ContainerAgentRunnerClass(agentRuntime, globalConfig, agentConfig, mkLogger(projectPath, agentConfig.name), registerContainer, unregisterContainer, gatewayUrl, projectPath, image, statusTracker);
|
|
500
|
-
},
|
|
168
|
+
projectPath, globalConfig, runtime, agentRuntimeOverrides,
|
|
169
|
+
runnerPools, agentConfigs, agentImages, cronJobs,
|
|
170
|
+
schedulerCtx, webhookRegistry, webhookSources, statusTracker,
|
|
171
|
+
logger, skills, timezone, baseImage, createRunner,
|
|
501
172
|
});
|
|
502
173
|
logger.info("Watching agents/ for changes (hot reload enabled)");
|
|
503
174
|
// Graceful shutdown
|
|
504
|
-
|
|
505
|
-
logger
|
|
506
|
-
|
|
507
|
-
schedulerCtx.shuttingDown = true;
|
|
508
|
-
schedulerCtx.workQueue.clearAll();
|
|
509
|
-
for (const job of cronJobs) {
|
|
510
|
-
job.stop();
|
|
511
|
-
}
|
|
512
|
-
if (gateway) {
|
|
513
|
-
await gateway.close();
|
|
514
|
-
logger.info("Gateway server stopped");
|
|
515
|
-
}
|
|
516
|
-
if (stateStore) {
|
|
517
|
-
await stateStore.close();
|
|
518
|
-
}
|
|
519
|
-
// Shutdown telemetry
|
|
520
|
-
if (telemetry) {
|
|
521
|
-
try {
|
|
522
|
-
await telemetry.shutdown();
|
|
523
|
-
logger.info("Telemetry shutdown completed");
|
|
524
|
-
}
|
|
525
|
-
catch (error) {
|
|
526
|
-
logger.warn({ error: error.message }, "Error during telemetry shutdown");
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
logger.info("All cron jobs stopped");
|
|
530
|
-
process.exit(0);
|
|
531
|
-
};
|
|
532
|
-
process.on("SIGINT", shutdown);
|
|
533
|
-
process.on("SIGTERM", shutdown);
|
|
175
|
+
registerShutdownHandlers({
|
|
176
|
+
logger, schedulerCtx, cronJobs, gateway, stateStore, telemetry, watcherHandle,
|
|
177
|
+
});
|
|
534
178
|
return { cronJobs, runnerPools, gateway, webhookRegistry, webhookUrls, statusTracker, schedulerCtx, events };
|
|
535
179
|
}
|
|
536
180
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
|