@action-llama/action-llama 0.18.10 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/bash-prefix.d.ts +6 -5
- package/dist/agents/bash-prefix.d.ts.map +1 -1
- package/dist/agents/bash-prefix.js +26 -10
- package/dist/agents/bash-prefix.js.map +1 -1
- package/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +16 -158
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +19 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +176 -85
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/session-loop.d.ts +22 -0
- package/dist/agents/session-loop.d.ts.map +1 -0
- package/dist/agents/session-loop.js +159 -0
- package/dist/agents/session-loop.js.map +1 -0
- package/dist/agents/signals.d.ts.map +1 -1
- package/dist/agents/signals.js +7 -1
- package/dist/agents/signals.js.map +1 -1
- package/dist/agents/types.d.ts +17 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +3 -1
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +100 -19
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +18 -118
- package/dist/cli/commands/run-agent.js.map +1 -1
- package/dist/cli/main.js +3 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts.map +1 -1
- package/dist/control/routes/dashboard-api.js +43 -0
- package/dist/control/routes/dashboard-api.js.map +1 -1
- package/dist/control/routes/logs.d.ts.map +1 -1
- package/dist/control/routes/logs.js +46 -13
- package/dist/control/routes/logs.js.map +1 -1
- package/dist/control/routes/stats.d.ts.map +1 -1
- package/dist/control/routes/stats.js +54 -0
- package/dist/control/routes/stats.js.map +1 -1
- package/dist/db/connection.d.ts +20 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +34 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +27 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +180 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +1383 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +158 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/docker/host-user-runtime.d.ts +1 -0
- package/dist/docker/host-user-runtime.d.ts.map +1 -1
- package/dist/docker/host-user-runtime.js +3 -0
- package/dist/docker/host-user-runtime.js.map +1 -1
- package/dist/docker/local-runtime.d.ts +3 -0
- package/dist/docker/local-runtime.d.ts.map +1 -1
- package/dist/docker/local-runtime.js +18 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/runtime.d.ts +8 -0
- package/dist/docker/runtime.d.ts.map +1 -1
- package/dist/docker/runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.d.ts +1 -0
- package/dist/docker/ssh-docker-runtime.d.ts.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +4 -1
- package/dist/docker/ssh-docker-runtime.js.map +1 -1
- package/dist/events/event-queue-sqlite.d.ts +8 -3
- package/dist/events/event-queue-sqlite.d.ts.map +1 -1
- package/dist/events/event-queue-sqlite.js +42 -41
- package/dist/events/event-queue-sqlite.js.map +1 -1
- package/dist/execution/container-registry.d.ts +8 -0
- package/dist/execution/container-registry.d.ts.map +1 -1
- package/dist/execution/container-registry.js +11 -0
- package/dist/execution/container-registry.js.map +1 -1
- package/dist/execution/execution.d.ts +4 -0
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +13 -3
- package/dist/execution/execution.js.map +1 -1
- package/dist/execution/image-builder.js +2 -2
- package/dist/execution/image-builder.js.map +1 -1
- package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
- package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
- package/dist/frontend/index.html +2 -2
- package/dist/gateway/frontend.d.ts +20 -0
- package/dist/gateway/frontend.d.ts.map +1 -0
- package/dist/gateway/frontend.js +80 -0
- package/dist/gateway/frontend.js.map +1 -0
- package/dist/gateway/index.d.ts +3 -70
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +109 -213
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/middleware/auth.d.ts +12 -0
- package/dist/gateway/middleware/auth.d.ts.map +1 -0
- package/dist/gateway/middleware/auth.js +25 -0
- package/dist/gateway/middleware/auth.js.map +1 -0
- package/dist/gateway/middleware/request-logging.d.ts +9 -0
- package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
- package/dist/gateway/middleware/request-logging.js +26 -0
- package/dist/gateway/middleware/request-logging.js.map +1 -0
- package/dist/gateway/middleware/telemetry.d.ts +7 -0
- package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
- package/dist/gateway/middleware/telemetry.js +28 -0
- package/dist/gateway/middleware/telemetry.js.map +1 -0
- package/dist/gateway/routes/chat.d.ts +32 -0
- package/dist/gateway/routes/chat.d.ts.map +1 -0
- package/dist/gateway/routes/chat.js +24 -0
- package/dist/gateway/routes/chat.js.map +1 -0
- package/dist/gateway/routes/dashboard.d.ts +19 -0
- package/dist/gateway/routes/dashboard.d.ts.map +1 -0
- package/dist/gateway/routes/dashboard.js +26 -0
- package/dist/gateway/routes/dashboard.js.map +1 -0
- package/dist/gateway/routes/execution.d.ts +24 -0
- package/dist/gateway/routes/execution.d.ts.map +1 -0
- package/dist/gateway/routes/execution.js +13 -0
- package/dist/gateway/routes/execution.js.map +1 -0
- package/dist/gateway/routes/system.d.ts +14 -0
- package/dist/gateway/routes/system.d.ts.map +1 -0
- package/dist/gateway/routes/system.js +18 -0
- package/dist/gateway/routes/system.js.map +1 -0
- package/dist/gateway/routes/webhooks.d.ts +20 -0
- package/dist/gateway/routes/webhooks.d.ts.map +1 -0
- package/dist/gateway/routes/webhooks.js +11 -0
- package/dist/gateway/routes/webhooks.js.map +1 -0
- package/dist/gateway/stores.d.ts +21 -0
- package/dist/gateway/stores.d.ts.map +1 -0
- package/dist/gateway/stores.js +24 -0
- package/dist/gateway/stores.js.map +1 -0
- package/dist/gateway/types.d.ts +65 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/dependencies.d.ts +11 -0
- package/dist/scheduler/dependencies.d.ts.map +1 -0
- package/dist/scheduler/dependencies.js +34 -0
- package/dist/scheduler/dependencies.js.map +1 -0
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +22 -10
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +66 -132
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/orphan-recovery.d.ts +25 -0
- package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
- package/dist/scheduler/orphan-recovery.js +130 -0
- package/dist/scheduler/orphan-recovery.js.map +1 -0
- package/dist/scheduler/persistence.d.ts +18 -0
- package/dist/scheduler/persistence.d.ts.map +1 -0
- package/dist/scheduler/persistence.js +42 -0
- package/dist/scheduler/persistence.js.map +1 -0
- package/dist/scheduler/shutdown.d.ts +2 -0
- package/dist/scheduler/shutdown.d.ts.map +1 -1
- package/dist/scheduler/shutdown.js +8 -2
- package/dist/scheduler/shutdown.js.map +1 -1
- package/dist/scheduler/state.d.ts +3 -1
- package/dist/scheduler/state.d.ts.map +1 -1
- package/dist/shared/config/index.d.ts +5 -0
- package/dist/shared/config/index.d.ts.map +1 -0
- package/dist/shared/config/index.js +5 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/load-agent.d.ts +27 -0
- package/dist/shared/config/load-agent.d.ts.map +1 -0
- package/dist/shared/config/load-agent.js +169 -0
- package/dist/shared/config/load-agent.js.map +1 -0
- package/dist/shared/config/load-project.d.ts +22 -0
- package/dist/shared/config/load-project.d.ts.map +1 -0
- package/dist/shared/config/load-project.js +84 -0
- package/dist/shared/config/load-project.js.map +1 -0
- package/dist/shared/config/types.d.ts +115 -0
- package/dist/shared/config/types.d.ts.map +1 -0
- package/dist/shared/config/types.js +2 -0
- package/dist/shared/config/types.js.map +1 -0
- package/dist/shared/config/validate.d.ts +4 -0
- package/dist/shared/config/validate.d.ts.map +1 -0
- package/dist/shared/config/validate.js +23 -0
- package/dist/shared/config/validate.js.map +1 -0
- package/dist/shared/config.d.ts +4 -161
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +5 -269
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +4 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +4 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +12 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
- package/dist/shared/persistence/backends/sqlite.js +107 -135
- package/dist/shared/persistence/backends/sqlite.js.map +1 -1
- package/dist/shared/queue-sqlite.d.ts +9 -4
- package/dist/shared/queue-sqlite.d.ts.map +1 -1
- package/dist/shared/queue-sqlite.js +41 -36
- package/dist/shared/queue-sqlite.js.map +1 -1
- package/dist/shared/state-store-sqlite.d.ts +8 -3
- package/dist/shared/state-store-sqlite.d.ts.map +1 -1
- package/dist/shared/state-store-sqlite.js +55 -37
- package/dist/shared/state-store-sqlite.js.map +1 -1
- package/dist/stats/store.d.ts +11 -2
- package/dist/stats/store.d.ts.map +1 -1
- package/dist/stats/store.js +200 -291
- package/dist/stats/store.js.map +1 -1
- package/docker/bin/al-bash-init.sh +44 -0
- package/package.json +4 -1
- package/dist/agents/execution-engine.d.ts +0 -19
- package/dist/agents/execution-engine.d.ts.map +0 -1
- package/dist/agents/execution-engine.js +0 -179
- package/dist/agents/execution-engine.js.map +0 -1
- package/dist/agents/runner.d.ts +0 -38
- package/dist/agents/runner.d.ts.map +0 -1
- package/dist/agents/runner.js +0 -375
- package/dist/agents/runner.js.map +0 -1
- package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
- package/dist/frontend/assets/index-W_Sfmu8j.js +0 -13
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// packages/action-llama/src/scheduler/persistence.ts
|
|
2
|
+
/**
|
|
3
|
+
* Run database migrations, create state/stats stores, and create the work queue.
|
|
4
|
+
* All persistence concerns are co-located here for independent testability.
|
|
5
|
+
*/
|
|
6
|
+
export async function createPersistence(projectPath, globalConfig, logger) {
|
|
7
|
+
// Run database migrations and open the consolidated DB connection
|
|
8
|
+
const { runMigrations } = await import("../db/migrate.js");
|
|
9
|
+
const { resolve: resolvePath } = await import("path");
|
|
10
|
+
const { dbPath } = await import("../shared/paths.js");
|
|
11
|
+
const consolidatedDbPath = dbPath(projectPath);
|
|
12
|
+
const { fileURLToPath } = await import("url");
|
|
13
|
+
const migrationsFolder = resolvePath(fileURLToPath(new URL("../../drizzle", import.meta.url)));
|
|
14
|
+
const sharedDb = runMigrations(consolidatedDbPath, migrationsFolder);
|
|
15
|
+
logger.info("Database: SQLite (.al/action-llama.db)");
|
|
16
|
+
// Create persistent state store (using shared DB)
|
|
17
|
+
let stateStore;
|
|
18
|
+
{
|
|
19
|
+
const { SqliteStateStore } = await import("../shared/state-store-sqlite.js");
|
|
20
|
+
stateStore = new SqliteStateStore(sharedDb);
|
|
21
|
+
logger.info("State store: SQLite (.al/action-llama.db)");
|
|
22
|
+
}
|
|
23
|
+
// Create stats store (using shared DB)
|
|
24
|
+
let statsStore;
|
|
25
|
+
{
|
|
26
|
+
const { StatsStore: StatsStoreClass } = await import("../stats/index.js");
|
|
27
|
+
statsStore = new StatsStoreClass(sharedDb);
|
|
28
|
+
// Auto-prune old data on startup
|
|
29
|
+
const retentionDays = globalConfig.historyRetentionDays ?? 14;
|
|
30
|
+
const pruned = statsStore.prune(retentionDays);
|
|
31
|
+
if (pruned.runs > 0 || pruned.callEdges > 0 || pruned.receipts > 0) {
|
|
32
|
+
logger.info({ prunedRuns: pruned.runs, prunedCallEdges: pruned.callEdges, prunedReceipts: pruned.receipts, retentionDays }, "Pruned old stats data");
|
|
33
|
+
}
|
|
34
|
+
logger.info("Stats store: SQLite (.al/action-llama.db)");
|
|
35
|
+
}
|
|
36
|
+
// Create work queue (before Docker builds so incoming webhooks can be queued)
|
|
37
|
+
const queueSize = globalConfig.workQueueSize ?? globalConfig.webhookQueueSize ?? 20;
|
|
38
|
+
const { SqliteWorkQueue } = await import("../events/event-queue-sqlite.js");
|
|
39
|
+
const workQueue = new SqliteWorkQueue(queueSize, sharedDb);
|
|
40
|
+
return { sharedDb, stateStore, statsStore, workQueue };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/scheduler/persistence.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAgBrD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,YAA0B,EAC1B,MAAc;IAEd,kEAAkE;IAClE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,WAAW,CAClC,aAAa,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAEtD,kDAAkD;IAClD,IAAI,UAAkC,CAAC;IACvC,CAAC;QACC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC7E,UAAU,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,uCAAuC;IACvC,IAAI,UAAkC,CAAC;IACvC,CAAC;QACC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC1E,UAAU,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,iCAAiC;QACjC,MAAM,aAAa,GAAG,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACvJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,8EAA8E;IAC9E,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACpF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,eAAe,CAAW,SAAS,EAAE,QAAQ,CAAC,CAAC;IAErE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -7,6 +7,7 @@ import type { StateStore } from "../shared/state-store.js";
|
|
|
7
7
|
import type { Logger } from "../shared/logger.js";
|
|
8
8
|
import type { SchedulerContext } from "../execution/execution.js";
|
|
9
9
|
import type { StatsStore } from "../stats/index.js";
|
|
10
|
+
import type { AppDb } from "../db/connection.js";
|
|
10
11
|
export declare function registerShutdownHandlers(deps: {
|
|
11
12
|
logger: Logger;
|
|
12
13
|
schedulerCtx: SchedulerContext;
|
|
@@ -14,6 +15,7 @@ export declare function registerShutdownHandlers(deps: {
|
|
|
14
15
|
gateway?: GatewayServer;
|
|
15
16
|
stateStore?: StateStore;
|
|
16
17
|
statsStore?: StatsStore;
|
|
18
|
+
sharedDb?: AppDb;
|
|
17
19
|
telemetry?: any;
|
|
18
20
|
watcherHandle: {
|
|
19
21
|
stop: () => void;
|
|
@@ -1 +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,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
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,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,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,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACrC,GAAG,IAAI,CA4CP"}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* Graceful shutdown handler for the scheduler.
|
|
3
3
|
*/
|
|
4
4
|
export function registerShutdownHandlers(deps) {
|
|
5
|
-
const { logger, schedulerCtx, cronJobs, gateway, stateStore, statsStore, telemetry, watcherHandle } = deps;
|
|
5
|
+
const { logger, schedulerCtx, cronJobs, gateway, stateStore, statsStore, sharedDb, telemetry, watcherHandle } = deps;
|
|
6
6
|
const shutdown = async () => {
|
|
7
7
|
logger.info("Shutting down scheduler...");
|
|
8
8
|
watcherHandle.stop();
|
|
9
9
|
schedulerCtx.shuttingDown = true;
|
|
10
|
-
schedulerCtx.workQueue.clearAll();
|
|
11
10
|
schedulerCtx.workQueue.close();
|
|
12
11
|
for (const job of cronJobs) {
|
|
13
12
|
job.stop();
|
|
@@ -22,6 +21,13 @@ export function registerShutdownHandlers(deps) {
|
|
|
22
21
|
if (statsStore) {
|
|
23
22
|
statsStore.close();
|
|
24
23
|
}
|
|
24
|
+
// Close the shared DB connection (after stores are done with it)
|
|
25
|
+
if (sharedDb) {
|
|
26
|
+
try {
|
|
27
|
+
sharedDb.$client.close();
|
|
28
|
+
}
|
|
29
|
+
catch { }
|
|
30
|
+
}
|
|
25
31
|
// Shutdown telemetry
|
|
26
32
|
if (telemetry) {
|
|
27
33
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../src/scheduler/shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../src/scheduler/shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,UAAU,wBAAwB,CAAC,IAUxC;IACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAErH,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,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;QACD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,iEAAiE;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACF,QAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,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"}
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { Cron } from "croner";
|
|
10
10
|
import type { RunnerPool } from "../execution/runner-pool.js";
|
|
11
|
-
import type { SchedulerContext } from "../execution/execution.js";
|
|
11
|
+
import type { SchedulerContext, WorkItem } from "../execution/execution.js";
|
|
12
|
+
import type { WorkQueue } from "../shared/work-queue.js";
|
|
12
13
|
export interface SchedulerState {
|
|
13
14
|
runnerPools: Record<string, RunnerPool>;
|
|
14
15
|
cronJobs: Cron[];
|
|
15
16
|
schedulerCtx: SchedulerContext | null;
|
|
17
|
+
workQueue: WorkQueue<WorkItem> | null;
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +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,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;
|
|
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,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,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;IACtC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AgentConfig, AgentRuntimeConfig } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Load the raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function loadAgentRuntimeConfig(projectPath: string, agentName: string): AgentRuntimeConfig;
|
|
6
|
+
export declare function loadAgentConfig(projectPath: string, agentName: string): AgentConfig;
|
|
7
|
+
/**
|
|
8
|
+
* Load the SKILL.md body (markdown content after frontmatter).
|
|
9
|
+
* Used by image builder and container entry to get agent instructions.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadAgentBody(projectPath: string, agentName: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Load all files from `<projectPath>/shared/` recursively.
|
|
14
|
+
* Returns a map of relative paths (prefixed with `shared/`) to file contents.
|
|
15
|
+
* Returns an empty object if the directory doesn't exist.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadSharedFiles(projectPath: string): Record<string, string>;
|
|
18
|
+
export declare function discoverAgents(projectPath: string): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Get current agent scale from config
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAgentScale(projectPath: string, agentName: string): number;
|
|
23
|
+
/**
|
|
24
|
+
* Update a field in the per-agent config.toml.
|
|
25
|
+
*/
|
|
26
|
+
export declare function updateAgentRuntimeField(projectPath: string, agentName: string, field: string, value: unknown): void;
|
|
27
|
+
//# sourceMappingURL=load-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-agent.d.ts","sourceRoot":"","sources":["../../../src/shared/config/load-agent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAe,MAAM,YAAY,CAAC;AAG/E;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAgBjG;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CA2EnF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAa5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwB3E;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,IAAI,CAQN"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, readdirSync, statSync } from "fs";
|
|
2
|
+
import { resolve, relative, join } from "path";
|
|
3
|
+
import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
|
|
4
|
+
import { ConfigError } from "../errors.js";
|
|
5
|
+
import { parseFrontmatter } from "../frontmatter.js";
|
|
6
|
+
import { loadGlobalConfig } from "./load-project.js";
|
|
7
|
+
/**
|
|
8
|
+
* Load the raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
9
|
+
*/
|
|
10
|
+
export function loadAgentRuntimeConfig(projectPath, agentName) {
|
|
11
|
+
const configPath = resolve(projectPath, "agents", agentName, "config.toml");
|
|
12
|
+
if (!existsSync(configPath)) {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
16
|
+
try {
|
|
17
|
+
return parseTOML(raw);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
throw new ConfigError(`Error parsing ${configPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function loadAgentConfig(projectPath, agentName) {
|
|
24
|
+
const agentDir = resolve(projectPath, "agents", agentName);
|
|
25
|
+
const skillPath = resolve(agentDir, "SKILL.md");
|
|
26
|
+
if (!existsSync(skillPath)) {
|
|
27
|
+
throw new ConfigError(`Agent config not found at ${skillPath}.`);
|
|
28
|
+
}
|
|
29
|
+
// Read portable fields from SKILL.md frontmatter
|
|
30
|
+
const raw = readFileSync(skillPath, "utf-8");
|
|
31
|
+
let data;
|
|
32
|
+
try {
|
|
33
|
+
({ data } = parseFrontmatter(raw));
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
throw new ConfigError(`Error parsing ${skillPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
37
|
+
}
|
|
38
|
+
// Read runtime config from per-agent config.toml
|
|
39
|
+
const runtime = loadAgentRuntimeConfig(projectPath, agentName);
|
|
40
|
+
const parsed = {
|
|
41
|
+
name: agentName,
|
|
42
|
+
// Portable fields from SKILL.md frontmatter
|
|
43
|
+
description: data.description,
|
|
44
|
+
license: data.license,
|
|
45
|
+
compatibility: data.compatibility,
|
|
46
|
+
// Runtime fields from config.toml
|
|
47
|
+
credentials: runtime.credentials,
|
|
48
|
+
schedule: runtime.schedule,
|
|
49
|
+
webhooks: runtime.webhooks,
|
|
50
|
+
hooks: runtime.hooks,
|
|
51
|
+
params: runtime.params,
|
|
52
|
+
scale: runtime.scale,
|
|
53
|
+
timeout: runtime.timeout,
|
|
54
|
+
runtime: runtime.runtime,
|
|
55
|
+
};
|
|
56
|
+
// Resolve named model references from global config
|
|
57
|
+
const rawModels = runtime.models;
|
|
58
|
+
if (!rawModels || !Array.isArray(rawModels) || rawModels.length === 0) {
|
|
59
|
+
throw new ConfigError(`Agent "${agentName}" must have a "models" field listing at least one named model.`);
|
|
60
|
+
}
|
|
61
|
+
const global = loadGlobalConfig(projectPath);
|
|
62
|
+
if (!global.models || Object.keys(global.models).length === 0) {
|
|
63
|
+
throw new ConfigError(`No models defined in config.toml [models]. Define at least one named model.`);
|
|
64
|
+
}
|
|
65
|
+
const resolvedModels = [];
|
|
66
|
+
for (const name of rawModels) {
|
|
67
|
+
const modelDef = global.models[name];
|
|
68
|
+
if (!modelDef) {
|
|
69
|
+
const available = Object.keys(global.models).join(", ");
|
|
70
|
+
throw new ConfigError(`Agent "${agentName}" references model "${name}" which is not defined in config.toml. Available: ${available}`);
|
|
71
|
+
}
|
|
72
|
+
resolvedModels.push(modelDef);
|
|
73
|
+
}
|
|
74
|
+
parsed.models = resolvedModels;
|
|
75
|
+
// Apply defaultAgentScale as fallback when no explicit per-agent scale is set
|
|
76
|
+
if (parsed.scale === undefined && global.defaultAgentScale !== undefined) {
|
|
77
|
+
parsed.scale = global.defaultAgentScale;
|
|
78
|
+
}
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Load the SKILL.md body (markdown content after frontmatter).
|
|
83
|
+
* Used by image builder and container entry to get agent instructions.
|
|
84
|
+
*/
|
|
85
|
+
export function loadAgentBody(projectPath, agentName) {
|
|
86
|
+
const skillPath = resolve(projectPath, "agents", agentName, "SKILL.md");
|
|
87
|
+
if (!existsSync(skillPath))
|
|
88
|
+
return "";
|
|
89
|
+
const raw = readFileSync(skillPath, "utf-8");
|
|
90
|
+
try {
|
|
91
|
+
const { body } = parseFrontmatter(raw);
|
|
92
|
+
return body;
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
throw new ConfigError(`Error parsing ${skillPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Load all files from `<projectPath>/shared/` recursively.
|
|
100
|
+
* Returns a map of relative paths (prefixed with `shared/`) to file contents.
|
|
101
|
+
* Returns an empty object if the directory doesn't exist.
|
|
102
|
+
*/
|
|
103
|
+
export function loadSharedFiles(projectPath) {
|
|
104
|
+
const sharedDir = resolve(projectPath, "shared");
|
|
105
|
+
if (!existsSync(sharedDir) || !statSync(sharedDir).isDirectory()) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
const result = {};
|
|
109
|
+
function walk(dir) {
|
|
110
|
+
for (const entry of readdirSync(dir)) {
|
|
111
|
+
if (entry.startsWith("."))
|
|
112
|
+
continue;
|
|
113
|
+
const fullPath = resolve(dir, entry);
|
|
114
|
+
const stat = statSync(fullPath);
|
|
115
|
+
if (stat.isDirectory()) {
|
|
116
|
+
walk(fullPath);
|
|
117
|
+
}
|
|
118
|
+
else if (stat.isFile()) {
|
|
119
|
+
const relPath = join("shared", relative(sharedDir, fullPath));
|
|
120
|
+
result[relPath] = readFileSync(fullPath, "utf-8");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
walk(sharedDir);
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
export function discoverAgents(projectPath) {
|
|
128
|
+
const excluded = new Set(["node_modules"]);
|
|
129
|
+
const agents = [];
|
|
130
|
+
if (!existsSync(projectPath))
|
|
131
|
+
return agents;
|
|
132
|
+
const agentsPath = resolve(projectPath, "agents");
|
|
133
|
+
if (!existsSync(agentsPath))
|
|
134
|
+
return agents;
|
|
135
|
+
for (const entry of readdirSync(agentsPath)) {
|
|
136
|
+
if (excluded.has(entry))
|
|
137
|
+
continue;
|
|
138
|
+
if (entry.startsWith("."))
|
|
139
|
+
continue;
|
|
140
|
+
const entryPath = resolve(agentsPath, entry);
|
|
141
|
+
if (!statSync(entryPath).isDirectory())
|
|
142
|
+
continue;
|
|
143
|
+
if (existsSync(resolve(entryPath, "SKILL.md"))) {
|
|
144
|
+
agents.push(entry);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return agents.sort();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get current agent scale from config
|
|
151
|
+
*/
|
|
152
|
+
export function getAgentScale(projectPath, agentName) {
|
|
153
|
+
const config = loadAgentConfig(projectPath, agentName);
|
|
154
|
+
// defaultAgentScale is already applied in loadAgentConfig, so just fall back to 1
|
|
155
|
+
return config.scale ?? 1;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Update a field in the per-agent config.toml.
|
|
159
|
+
*/
|
|
160
|
+
export function updateAgentRuntimeField(projectPath, agentName, field, value) {
|
|
161
|
+
const configPath = resolve(projectPath, "agents", agentName, "config.toml");
|
|
162
|
+
let existing = {};
|
|
163
|
+
if (existsSync(configPath)) {
|
|
164
|
+
existing = parseTOML(readFileSync(configPath, "utf-8"));
|
|
165
|
+
}
|
|
166
|
+
existing[field] = value;
|
|
167
|
+
writeFileSync(configPath, stringifyTOML(existing));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=load-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-agent.js","sourceRoot":"","sources":["../../../src/shared/config/load-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GlobalConfig } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Load the raw project config.toml without environment merging.
|
|
4
|
+
* Used internally and by tests that need the raw project config.
|
|
5
|
+
*/
|
|
6
|
+
export declare function loadProjectConfig(projectPath: string): GlobalConfig;
|
|
7
|
+
/**
|
|
8
|
+
* Load the merged global config: config.toml → .env.toml → environment file.
|
|
9
|
+
*
|
|
10
|
+
* @param projectPath - path to the project directory
|
|
11
|
+
* @param envName - explicit environment name (from --env flag); takes precedence over .env.toml and AL_ENV
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadGlobalConfig(projectPath: string, envName?: string): GlobalConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Update the project-level scale in config.toml
|
|
16
|
+
*/
|
|
17
|
+
export declare function updateProjectScale(projectPath: string, scale: number): void;
|
|
18
|
+
/**
|
|
19
|
+
* Get current project scale from config
|
|
20
|
+
*/
|
|
21
|
+
export declare function getProjectScale(projectPath: string): number;
|
|
22
|
+
//# sourceMappingURL=load-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-project.d.ts","sourceRoot":"","sources":["../../../src/shared/config/load-project.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAiBnE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CA0CpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAO3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG3D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
|
|
4
|
+
import { ConfigError } from "../errors.js";
|
|
5
|
+
import { resolveEnvironmentName, loadEnvToml, loadEnvironmentConfig, deepMerge, } from "../environment.js";
|
|
6
|
+
/**
|
|
7
|
+
* Load the raw project config.toml without environment merging.
|
|
8
|
+
* Used internally and by tests that need the raw project config.
|
|
9
|
+
*/
|
|
10
|
+
export function loadProjectConfig(projectPath) {
|
|
11
|
+
const configPath = resolve(projectPath, "config.toml");
|
|
12
|
+
let config = {};
|
|
13
|
+
if (existsSync(configPath)) {
|
|
14
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
15
|
+
try {
|
|
16
|
+
config = parseTOML(raw);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
throw new ConfigError(`Error parsing ${configPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return config;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load the merged global config: config.toml → .env.toml → environment file.
|
|
26
|
+
*
|
|
27
|
+
* @param projectPath - path to the project directory
|
|
28
|
+
* @param envName - explicit environment name (from --env flag); takes precedence over .env.toml and AL_ENV
|
|
29
|
+
*/
|
|
30
|
+
export function loadGlobalConfig(projectPath, envName) {
|
|
31
|
+
let config = loadProjectConfig(projectPath);
|
|
32
|
+
// Layer 2: .env.toml overrides
|
|
33
|
+
const envToml = loadEnvToml(projectPath);
|
|
34
|
+
let projectName;
|
|
35
|
+
if (envToml) {
|
|
36
|
+
const { environment: _, projectName: pn, ...overrides } = envToml;
|
|
37
|
+
projectName = typeof pn === "string" ? pn : undefined;
|
|
38
|
+
if (Object.keys(overrides).length > 0) {
|
|
39
|
+
config = deepMerge(config, overrides);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Layer 3: environment file
|
|
43
|
+
const resolvedEnv = resolveEnvironmentName(envName, projectPath);
|
|
44
|
+
if (resolvedEnv) {
|
|
45
|
+
const envConfig = loadEnvironmentConfig(resolvedEnv);
|
|
46
|
+
config = deepMerge(config, envConfig);
|
|
47
|
+
}
|
|
48
|
+
// Set default telemetry config if not provided
|
|
49
|
+
if (!config.telemetry) {
|
|
50
|
+
config.telemetry = {
|
|
51
|
+
enabled: false,
|
|
52
|
+
provider: "none",
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// projectName is .env.toml-only — not deep-merged from config.toml or environment files
|
|
56
|
+
if (projectName) {
|
|
57
|
+
config.projectName = projectName;
|
|
58
|
+
}
|
|
59
|
+
// Validate defaultAgentScale
|
|
60
|
+
if (config.defaultAgentScale !== undefined) {
|
|
61
|
+
if (!Number.isInteger(config.defaultAgentScale) || config.defaultAgentScale < 0) {
|
|
62
|
+
throw new ConfigError("defaultAgentScale must be a non-negative integer.");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return config;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Update the project-level scale in config.toml
|
|
69
|
+
*/
|
|
70
|
+
export function updateProjectScale(projectPath, scale) {
|
|
71
|
+
const config = loadProjectConfig(projectPath);
|
|
72
|
+
config.scale = scale;
|
|
73
|
+
const configPath = resolve(projectPath, "config.toml");
|
|
74
|
+
const tomlStr = stringifyTOML(config);
|
|
75
|
+
writeFileSync(configPath, tomlStr);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get current project scale from config
|
|
79
|
+
*/
|
|
80
|
+
export function getProjectScale(projectPath) {
|
|
81
|
+
const config = loadGlobalConfig(projectPath);
|
|
82
|
+
return config.scale ?? 5; // Default project scale
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=load-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-project.js","sourceRoot":"","sources":["../../../src/shared/config/load-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { WebhookTrigger } from "../../webhooks/types.js";
|
|
2
|
+
export interface ModelConfig {
|
|
3
|
+
provider: string;
|
|
4
|
+
model: string;
|
|
5
|
+
thinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
6
|
+
authType: "api_key" | "oauth_token" | "pi_auth";
|
|
7
|
+
}
|
|
8
|
+
export interface LocalConfig {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
image?: string;
|
|
11
|
+
memory?: string;
|
|
12
|
+
cpus?: number;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface VpsConfig {
|
|
16
|
+
provider: "vps";
|
|
17
|
+
host: string;
|
|
18
|
+
sshUser?: string;
|
|
19
|
+
sshPort?: number;
|
|
20
|
+
sshKeyPath?: string;
|
|
21
|
+
vultrInstanceId?: string;
|
|
22
|
+
vultrRegion?: string;
|
|
23
|
+
hetznerServerId?: number;
|
|
24
|
+
hetznerLocation?: string;
|
|
25
|
+
cloudflareZoneId?: string;
|
|
26
|
+
cloudflareDnsRecordId?: string;
|
|
27
|
+
cloudflareHostname?: string;
|
|
28
|
+
}
|
|
29
|
+
export type CloudConfig = VpsConfig;
|
|
30
|
+
export interface GatewayConfig {
|
|
31
|
+
port?: number;
|
|
32
|
+
url?: string;
|
|
33
|
+
maxChatSessions?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface WebhookSourceConfig {
|
|
36
|
+
type: string;
|
|
37
|
+
credential?: string;
|
|
38
|
+
allowUnsigned?: boolean;
|
|
39
|
+
[credentialType: string]: string | boolean | undefined;
|
|
40
|
+
}
|
|
41
|
+
export interface TelemetryConfig {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
provider: "otel" | "none";
|
|
44
|
+
endpoint?: string;
|
|
45
|
+
serviceName?: string;
|
|
46
|
+
headers?: Record<string, string>;
|
|
47
|
+
samplingRate?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface GlobalConfig {
|
|
50
|
+
models?: Record<string, ModelConfig>;
|
|
51
|
+
local?: LocalConfig;
|
|
52
|
+
gateway?: GatewayConfig;
|
|
53
|
+
webhooks?: Record<string, WebhookSourceConfig>;
|
|
54
|
+
telemetry?: TelemetryConfig;
|
|
55
|
+
projectName?: string;
|
|
56
|
+
maxReruns?: number;
|
|
57
|
+
maxCallDepth?: number;
|
|
58
|
+
/** @deprecated Use maxCallDepth instead */
|
|
59
|
+
maxTriggerDepth?: number;
|
|
60
|
+
/** @deprecated Use workQueueSize instead */
|
|
61
|
+
webhookQueueSize?: number;
|
|
62
|
+
workQueueSize?: number;
|
|
63
|
+
resourceLockTimeout?: number;
|
|
64
|
+
scale?: number;
|
|
65
|
+
defaultAgentScale?: number;
|
|
66
|
+
historyRetentionDays?: number;
|
|
67
|
+
}
|
|
68
|
+
export interface AgentHooks {
|
|
69
|
+
pre?: string[];
|
|
70
|
+
post?: string[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Per-agent `[runtime]` table from `agents/<name>/config.toml`.
|
|
74
|
+
* Controls how the agent process is launched.
|
|
75
|
+
*/
|
|
76
|
+
export interface AgentRuntimeType {
|
|
77
|
+
type?: "container" | "host-user";
|
|
78
|
+
run_as?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
82
|
+
* Fields here are project-specific bindings — not portable.
|
|
83
|
+
*/
|
|
84
|
+
export interface AgentRuntimeConfig {
|
|
85
|
+
source?: string;
|
|
86
|
+
credentials?: string[];
|
|
87
|
+
models?: string[];
|
|
88
|
+
schedule?: string;
|
|
89
|
+
webhooks?: WebhookTrigger[];
|
|
90
|
+
hooks?: AgentHooks;
|
|
91
|
+
params?: Record<string, unknown>;
|
|
92
|
+
scale?: number;
|
|
93
|
+
timeout?: number;
|
|
94
|
+
runtime?: AgentRuntimeType;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Resolved agent config — the runtime representation after merging
|
|
98
|
+
* portable SKILL.md fields with per-agent config.toml and global defaults.
|
|
99
|
+
*/
|
|
100
|
+
export interface AgentConfig {
|
|
101
|
+
name: string;
|
|
102
|
+
description?: string;
|
|
103
|
+
credentials: string[];
|
|
104
|
+
models: ModelConfig[];
|
|
105
|
+
schedule?: string;
|
|
106
|
+
webhooks?: WebhookTrigger[];
|
|
107
|
+
hooks?: AgentHooks;
|
|
108
|
+
params?: Record<string, unknown>;
|
|
109
|
+
scale?: number;
|
|
110
|
+
timeout?: number;
|
|
111
|
+
license?: string;
|
|
112
|
+
compatibility?: string;
|
|
113
|
+
runtime?: AgentRuntimeType;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/config/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/shared/config/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgBpD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAW7D"}
|