@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 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database layer — re-exports for convenient imports.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./schema.js";
|
|
5
|
+
export { createDb, createMemoryDb } from "./connection.js";
|
|
6
|
+
export type { AppDb } from "./connection.js";
|
|
7
|
+
export { runMigrations, applyMigrations, defaultMigrationsFolder } from "./migrate.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database layer — re-exports for convenient imports.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./schema.js";
|
|
5
|
+
export { createDb, createMemoryDb } from "./connection.js";
|
|
6
|
+
export { runMigrations, applyMigrations, defaultMigrationsFolder } from "./migrate.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-migration runner for the consolidated action-llama database.
|
|
3
|
+
*
|
|
4
|
+
* On startup:
|
|
5
|
+
* 1. Backs up any existing .db files to .al/backups/<timestamp>/
|
|
6
|
+
* 2. Runs pending Drizzle migrations against the consolidated DB
|
|
7
|
+
* 3. If legacy separate .db files exist, migrates their data into the consolidated DB (one-time)
|
|
8
|
+
*/
|
|
9
|
+
import type { AppDb } from "./connection.js";
|
|
10
|
+
/**
|
|
11
|
+
* Get the default migrations folder path relative to this module.
|
|
12
|
+
*/
|
|
13
|
+
export declare function defaultMigrationsFolder(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Run Drizzle migrations on an existing AppDb instance.
|
|
16
|
+
* Useful for standalone stores that create their own connections.
|
|
17
|
+
*/
|
|
18
|
+
export declare function applyMigrations(db: AppDb, migrationsFolder?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Run pending migrations and optionally migrate legacy data.
|
|
21
|
+
*
|
|
22
|
+
* @param dbPath - Path to the consolidated .al/action-llama.db file
|
|
23
|
+
* @param migrationsFolder - Path to the drizzle migrations folder (defaults to bundled drizzle/)
|
|
24
|
+
* @returns The opened Drizzle database instance (caller is responsible for closing)
|
|
25
|
+
*/
|
|
26
|
+
export declare function runMigrations(dbPath: string, migrationsFolder?: string): AppDb;
|
|
27
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAG1E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAiB9E"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-migration runner for the consolidated action-llama database.
|
|
3
|
+
*
|
|
4
|
+
* On startup:
|
|
5
|
+
* 1. Backs up any existing .db files to .al/backups/<timestamp>/
|
|
6
|
+
* 2. Runs pending Drizzle migrations against the consolidated DB
|
|
7
|
+
* 3. If legacy separate .db files exist, migrates their data into the consolidated DB (one-time)
|
|
8
|
+
*/
|
|
9
|
+
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
|
10
|
+
import { existsSync, mkdirSync, copyFileSync } from "fs";
|
|
11
|
+
import { join, dirname, resolve } from "path";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
import { createDb } from "./connection.js";
|
|
14
|
+
/**
|
|
15
|
+
* Get the default migrations folder path relative to this module.
|
|
16
|
+
*/
|
|
17
|
+
export function defaultMigrationsFolder() {
|
|
18
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "../../drizzle");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run Drizzle migrations on an existing AppDb instance.
|
|
22
|
+
* Useful for standalone stores that create their own connections.
|
|
23
|
+
*/
|
|
24
|
+
export function applyMigrations(db, migrationsFolder) {
|
|
25
|
+
const folder = migrationsFolder ?? defaultMigrationsFolder();
|
|
26
|
+
migrate(db, { migrationsFolder: folder });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run pending migrations and optionally migrate legacy data.
|
|
30
|
+
*
|
|
31
|
+
* @param dbPath - Path to the consolidated .al/action-llama.db file
|
|
32
|
+
* @param migrationsFolder - Path to the drizzle migrations folder (defaults to bundled drizzle/)
|
|
33
|
+
* @returns The opened Drizzle database instance (caller is responsible for closing)
|
|
34
|
+
*/
|
|
35
|
+
export function runMigrations(dbPath, migrationsFolder) {
|
|
36
|
+
const projectAlDir = dirname(dbPath);
|
|
37
|
+
// Back up existing database files before migrating
|
|
38
|
+
backupExistingDbs(projectAlDir);
|
|
39
|
+
// Open/create the consolidated DB
|
|
40
|
+
const db = createDb(dbPath);
|
|
41
|
+
// Run Drizzle migrations (idempotent — only applies pending ones)
|
|
42
|
+
const folder = migrationsFolder ?? defaultMigrationsFolder();
|
|
43
|
+
migrate(db, { migrationsFolder: folder });
|
|
44
|
+
// Migrate legacy data if this is the first time we're consolidating
|
|
45
|
+
migrateLegacyData(db, projectAlDir, dbPath);
|
|
46
|
+
return db;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Copy all existing .db files into .al/backups/<timestamp>/ before migrating.
|
|
50
|
+
*/
|
|
51
|
+
function backupExistingDbs(alDir) {
|
|
52
|
+
const legacyFiles = ["state.db", "stats.db", "work-queue.db", "action-llama.db"];
|
|
53
|
+
const toBackup = legacyFiles.filter((f) => existsSync(join(alDir, f)));
|
|
54
|
+
if (toBackup.length === 0)
|
|
55
|
+
return;
|
|
56
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
57
|
+
const backupDir = join(alDir, "backups", ts);
|
|
58
|
+
mkdirSync(backupDir, { recursive: true });
|
|
59
|
+
for (const f of toBackup) {
|
|
60
|
+
const src = join(alDir, f);
|
|
61
|
+
const dst = join(backupDir, f);
|
|
62
|
+
copyFileSync(src, dst);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* One-time migration of legacy separate databases into the consolidated DB.
|
|
67
|
+
*
|
|
68
|
+
* Uses the presence of a special marker in kv_store to know if migration
|
|
69
|
+
* has already been performed.
|
|
70
|
+
*/
|
|
71
|
+
function migrateLegacyData(db, alDir, consolidatedDbPath) {
|
|
72
|
+
// Check if we've already migrated (using the raw sqlite client for a quick check)
|
|
73
|
+
const client = db.$client;
|
|
74
|
+
const alreadyMigrated = client
|
|
75
|
+
.prepare("SELECT value FROM kv_store WHERE namespace = '__migration__' AND key = 'legacy_migrated' LIMIT 1")
|
|
76
|
+
.get();
|
|
77
|
+
if (alreadyMigrated)
|
|
78
|
+
return;
|
|
79
|
+
const legacyStateDb = join(alDir, "state.db");
|
|
80
|
+
const legacyStatsDb = join(alDir, "stats.db");
|
|
81
|
+
const legacyWorkQueueDb = join(alDir, "work-queue.db");
|
|
82
|
+
const hasLegacy = existsSync(legacyStateDb) ||
|
|
83
|
+
existsSync(legacyStatsDb) ||
|
|
84
|
+
existsSync(legacyWorkQueueDb);
|
|
85
|
+
if (!hasLegacy) {
|
|
86
|
+
// No legacy files — mark as migrated and return
|
|
87
|
+
markMigrated(client);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
// Perform migration inside a transaction
|
|
91
|
+
const doMigrate = client.transaction(() => {
|
|
92
|
+
// 1. Migrate state.db
|
|
93
|
+
if (existsSync(legacyStateDb)) {
|
|
94
|
+
migrateLegacyState(client, legacyStateDb);
|
|
95
|
+
}
|
|
96
|
+
// 2. Migrate stats.db
|
|
97
|
+
if (existsSync(legacyStatsDb)) {
|
|
98
|
+
migrateLegacyStats(client, legacyStatsDb);
|
|
99
|
+
}
|
|
100
|
+
// 3. Migrate work-queue.db
|
|
101
|
+
if (existsSync(legacyWorkQueueDb)) {
|
|
102
|
+
migrateLegacyWorkQueue(client, legacyWorkQueueDb);
|
|
103
|
+
}
|
|
104
|
+
markMigrated(client);
|
|
105
|
+
});
|
|
106
|
+
doMigrate();
|
|
107
|
+
}
|
|
108
|
+
function markMigrated(client) {
|
|
109
|
+
const now = Date.now();
|
|
110
|
+
client
|
|
111
|
+
.prepare("INSERT OR REPLACE INTO kv_store (namespace, key, value, created_at, updated_at) VALUES ('__migration__', 'legacy_migrated', '\"true\"', ?, ?)")
|
|
112
|
+
.run(now, now);
|
|
113
|
+
}
|
|
114
|
+
function migrateLegacyState(client, legacyPath) {
|
|
115
|
+
try {
|
|
116
|
+
client.exec(`ATTACH DATABASE '${legacyPath.replace(/'/g, "''")}' AS legacy_state`);
|
|
117
|
+
client.exec(`
|
|
118
|
+
INSERT OR IGNORE INTO state (ns, key, value, expires_at)
|
|
119
|
+
SELECT ns, key, value, expires_at FROM legacy_state.state
|
|
120
|
+
`);
|
|
121
|
+
client.exec("DETACH DATABASE legacy_state");
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// If the legacy db doesn't have the expected schema, skip
|
|
125
|
+
try {
|
|
126
|
+
client.exec("DETACH DATABASE legacy_state");
|
|
127
|
+
}
|
|
128
|
+
catch { }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function migrateLegacyStats(client, legacyPath) {
|
|
132
|
+
try {
|
|
133
|
+
client.exec(`ATTACH DATABASE '${legacyPath.replace(/'/g, "''")}' AS legacy_stats`);
|
|
134
|
+
// Migrate webhook_receipts first (runs has a FK-like reference via webhook_receipt_id)
|
|
135
|
+
client.exec(`
|
|
136
|
+
INSERT OR IGNORE INTO webhook_receipts (id, delivery_id, source, event_summary, timestamp, headers, body, matched_agents, status, dead_letter_reason)
|
|
137
|
+
SELECT id, delivery_id, source, event_summary, timestamp, headers, body, matched_agents, status, dead_letter_reason
|
|
138
|
+
FROM legacy_stats.webhook_receipts
|
|
139
|
+
`);
|
|
140
|
+
// Migrate runs
|
|
141
|
+
client.exec(`
|
|
142
|
+
INSERT OR IGNORE INTO runs (id, instance_id, agent_name, trigger_type, trigger_source, result, exit_code, started_at, duration_ms, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, total_tokens, cost_usd, turn_count, error_message, pre_hook_ms, post_hook_ms, webhook_receipt_id)
|
|
143
|
+
SELECT id, instance_id, agent_name, trigger_type, trigger_source, result, exit_code, started_at, duration_ms,
|
|
144
|
+
COALESCE(input_tokens, 0), COALESCE(output_tokens, 0), COALESCE(cache_read_tokens, 0), COALESCE(cache_write_tokens, 0),
|
|
145
|
+
COALESCE(total_tokens, 0), COALESCE(cost_usd, 0), COALESCE(turn_count, 0),
|
|
146
|
+
error_message, pre_hook_ms, post_hook_ms, webhook_receipt_id
|
|
147
|
+
FROM legacy_stats.runs
|
|
148
|
+
`);
|
|
149
|
+
// Migrate call_edges
|
|
150
|
+
client.exec(`
|
|
151
|
+
INSERT OR IGNORE INTO call_edges (id, caller_agent, caller_instance, target_agent, target_instance, depth, started_at, duration_ms, status)
|
|
152
|
+
SELECT id, caller_agent, caller_instance, target_agent, target_instance, depth, started_at, duration_ms, status
|
|
153
|
+
FROM legacy_stats.call_edges
|
|
154
|
+
`);
|
|
155
|
+
client.exec("DETACH DATABASE legacy_stats");
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
try {
|
|
159
|
+
client.exec("DETACH DATABASE legacy_stats");
|
|
160
|
+
}
|
|
161
|
+
catch { }
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function migrateLegacyWorkQueue(client, legacyPath) {
|
|
165
|
+
try {
|
|
166
|
+
client.exec(`ATTACH DATABASE '${legacyPath.replace(/'/g, "''")}' AS legacy_wq`);
|
|
167
|
+
client.exec(`
|
|
168
|
+
INSERT OR IGNORE INTO work_queue (id, agent, payload, received_at)
|
|
169
|
+
SELECT id, agent, payload, received_at FROM legacy_wq.work_queue
|
|
170
|
+
`);
|
|
171
|
+
client.exec("DETACH DATABASE legacy_wq");
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
try {
|
|
175
|
+
client.exec("DETACH DATABASE legacy_wq");
|
|
176
|
+
}
|
|
177
|
+
catch { }
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
|