@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.
Files changed (227) hide show
  1. package/dist/agents/bash-prefix.d.ts +6 -5
  2. package/dist/agents/bash-prefix.d.ts.map +1 -1
  3. package/dist/agents/bash-prefix.js +26 -10
  4. package/dist/agents/bash-prefix.js.map +1 -1
  5. package/dist/agents/container-entry.d.ts.map +1 -1
  6. package/dist/agents/container-entry.js +16 -158
  7. package/dist/agents/container-entry.js.map +1 -1
  8. package/dist/agents/container-runner.d.ts +19 -1
  9. package/dist/agents/container-runner.d.ts.map +1 -1
  10. package/dist/agents/container-runner.js +176 -85
  11. package/dist/agents/container-runner.js.map +1 -1
  12. package/dist/agents/session-loop.d.ts +22 -0
  13. package/dist/agents/session-loop.d.ts.map +1 -0
  14. package/dist/agents/session-loop.js +159 -0
  15. package/dist/agents/session-loop.js.map +1 -0
  16. package/dist/agents/signals.d.ts.map +1 -1
  17. package/dist/agents/signals.js +7 -1
  18. package/dist/agents/signals.js.map +1 -1
  19. package/dist/agents/types.d.ts +17 -0
  20. package/dist/agents/types.d.ts.map +1 -0
  21. package/dist/agents/types.js +2 -0
  22. package/dist/agents/types.js.map +1 -0
  23. package/dist/build-info.json +1 -1
  24. package/dist/cli/commands/chat.d.ts.map +1 -1
  25. package/dist/cli/commands/chat.js +3 -1
  26. package/dist/cli/commands/chat.js.map +1 -1
  27. package/dist/cli/commands/logs.d.ts +3 -0
  28. package/dist/cli/commands/logs.d.ts.map +1 -1
  29. package/dist/cli/commands/logs.js +100 -19
  30. package/dist/cli/commands/logs.js.map +1 -1
  31. package/dist/cli/commands/run-agent.d.ts.map +1 -1
  32. package/dist/cli/commands/run-agent.js +18 -118
  33. package/dist/cli/commands/run-agent.js.map +1 -1
  34. package/dist/cli/main.js +3 -0
  35. package/dist/cli/main.js.map +1 -1
  36. package/dist/control/routes/dashboard-api.d.ts.map +1 -1
  37. package/dist/control/routes/dashboard-api.js +43 -0
  38. package/dist/control/routes/dashboard-api.js.map +1 -1
  39. package/dist/control/routes/logs.d.ts.map +1 -1
  40. package/dist/control/routes/logs.js +46 -13
  41. package/dist/control/routes/logs.js.map +1 -1
  42. package/dist/control/routes/stats.d.ts.map +1 -1
  43. package/dist/control/routes/stats.js +54 -0
  44. package/dist/control/routes/stats.js.map +1 -1
  45. package/dist/db/connection.d.ts +20 -0
  46. package/dist/db/connection.d.ts.map +1 -0
  47. package/dist/db/connection.js +34 -0
  48. package/dist/db/connection.js.map +1 -0
  49. package/dist/db/index.d.ts +8 -0
  50. package/dist/db/index.d.ts.map +1 -0
  51. package/dist/db/index.js +7 -0
  52. package/dist/db/index.js.map +1 -0
  53. package/dist/db/migrate.d.ts +27 -0
  54. package/dist/db/migrate.d.ts.map +1 -0
  55. package/dist/db/migrate.js +180 -0
  56. package/dist/db/migrate.js.map +1 -0
  57. package/dist/db/schema.d.ts +1383 -0
  58. package/dist/db/schema.d.ts.map +1 -0
  59. package/dist/db/schema.js +158 -0
  60. package/dist/db/schema.js.map +1 -0
  61. package/dist/docker/host-user-runtime.d.ts +1 -0
  62. package/dist/docker/host-user-runtime.d.ts.map +1 -1
  63. package/dist/docker/host-user-runtime.js +3 -0
  64. package/dist/docker/host-user-runtime.js.map +1 -1
  65. package/dist/docker/local-runtime.d.ts +3 -0
  66. package/dist/docker/local-runtime.d.ts.map +1 -1
  67. package/dist/docker/local-runtime.js +18 -1
  68. package/dist/docker/local-runtime.js.map +1 -1
  69. package/dist/docker/runtime.d.ts +8 -0
  70. package/dist/docker/runtime.d.ts.map +1 -1
  71. package/dist/docker/runtime.js.map +1 -1
  72. package/dist/docker/ssh-docker-runtime.d.ts +1 -0
  73. package/dist/docker/ssh-docker-runtime.d.ts.map +1 -1
  74. package/dist/docker/ssh-docker-runtime.js +4 -1
  75. package/dist/docker/ssh-docker-runtime.js.map +1 -1
  76. package/dist/events/event-queue-sqlite.d.ts +8 -3
  77. package/dist/events/event-queue-sqlite.d.ts.map +1 -1
  78. package/dist/events/event-queue-sqlite.js +42 -41
  79. package/dist/events/event-queue-sqlite.js.map +1 -1
  80. package/dist/execution/container-registry.d.ts +8 -0
  81. package/dist/execution/container-registry.d.ts.map +1 -1
  82. package/dist/execution/container-registry.js +11 -0
  83. package/dist/execution/container-registry.js.map +1 -1
  84. package/dist/execution/execution.d.ts +4 -0
  85. package/dist/execution/execution.d.ts.map +1 -1
  86. package/dist/execution/execution.js +13 -3
  87. package/dist/execution/execution.js.map +1 -1
  88. package/dist/execution/image-builder.js +2 -2
  89. package/dist/execution/image-builder.js.map +1 -1
  90. package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
  91. package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
  92. package/dist/frontend/index.html +2 -2
  93. package/dist/gateway/frontend.d.ts +20 -0
  94. package/dist/gateway/frontend.d.ts.map +1 -0
  95. package/dist/gateway/frontend.js +80 -0
  96. package/dist/gateway/frontend.js.map +1 -0
  97. package/dist/gateway/index.d.ts +3 -70
  98. package/dist/gateway/index.d.ts.map +1 -1
  99. package/dist/gateway/index.js +109 -213
  100. package/dist/gateway/index.js.map +1 -1
  101. package/dist/gateway/middleware/auth.d.ts +12 -0
  102. package/dist/gateway/middleware/auth.d.ts.map +1 -0
  103. package/dist/gateway/middleware/auth.js +25 -0
  104. package/dist/gateway/middleware/auth.js.map +1 -0
  105. package/dist/gateway/middleware/request-logging.d.ts +9 -0
  106. package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
  107. package/dist/gateway/middleware/request-logging.js +26 -0
  108. package/dist/gateway/middleware/request-logging.js.map +1 -0
  109. package/dist/gateway/middleware/telemetry.d.ts +7 -0
  110. package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
  111. package/dist/gateway/middleware/telemetry.js +28 -0
  112. package/dist/gateway/middleware/telemetry.js.map +1 -0
  113. package/dist/gateway/routes/chat.d.ts +32 -0
  114. package/dist/gateway/routes/chat.d.ts.map +1 -0
  115. package/dist/gateway/routes/chat.js +24 -0
  116. package/dist/gateway/routes/chat.js.map +1 -0
  117. package/dist/gateway/routes/dashboard.d.ts +19 -0
  118. package/dist/gateway/routes/dashboard.d.ts.map +1 -0
  119. package/dist/gateway/routes/dashboard.js +26 -0
  120. package/dist/gateway/routes/dashboard.js.map +1 -0
  121. package/dist/gateway/routes/execution.d.ts +24 -0
  122. package/dist/gateway/routes/execution.d.ts.map +1 -0
  123. package/dist/gateway/routes/execution.js +13 -0
  124. package/dist/gateway/routes/execution.js.map +1 -0
  125. package/dist/gateway/routes/system.d.ts +14 -0
  126. package/dist/gateway/routes/system.d.ts.map +1 -0
  127. package/dist/gateway/routes/system.js +18 -0
  128. package/dist/gateway/routes/system.js.map +1 -0
  129. package/dist/gateway/routes/webhooks.d.ts +20 -0
  130. package/dist/gateway/routes/webhooks.d.ts.map +1 -0
  131. package/dist/gateway/routes/webhooks.js +11 -0
  132. package/dist/gateway/routes/webhooks.js.map +1 -0
  133. package/dist/gateway/stores.d.ts +21 -0
  134. package/dist/gateway/stores.d.ts.map +1 -0
  135. package/dist/gateway/stores.js +24 -0
  136. package/dist/gateway/stores.js.map +1 -0
  137. package/dist/gateway/types.d.ts +65 -0
  138. package/dist/gateway/types.d.ts.map +1 -0
  139. package/dist/gateway/types.js +2 -0
  140. package/dist/gateway/types.js.map +1 -0
  141. package/dist/scheduler/dependencies.d.ts +11 -0
  142. package/dist/scheduler/dependencies.d.ts.map +1 -0
  143. package/dist/scheduler/dependencies.js +34 -0
  144. package/dist/scheduler/dependencies.js.map +1 -0
  145. package/dist/scheduler/gateway-setup.d.ts.map +1 -1
  146. package/dist/scheduler/gateway-setup.js +22 -10
  147. package/dist/scheduler/gateway-setup.js.map +1 -1
  148. package/dist/scheduler/index.d.ts +1 -1
  149. package/dist/scheduler/index.d.ts.map +1 -1
  150. package/dist/scheduler/index.js +66 -132
  151. package/dist/scheduler/index.js.map +1 -1
  152. package/dist/scheduler/orphan-recovery.d.ts +25 -0
  153. package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
  154. package/dist/scheduler/orphan-recovery.js +130 -0
  155. package/dist/scheduler/orphan-recovery.js.map +1 -0
  156. package/dist/scheduler/persistence.d.ts +18 -0
  157. package/dist/scheduler/persistence.d.ts.map +1 -0
  158. package/dist/scheduler/persistence.js +42 -0
  159. package/dist/scheduler/persistence.js.map +1 -0
  160. package/dist/scheduler/shutdown.d.ts +2 -0
  161. package/dist/scheduler/shutdown.d.ts.map +1 -1
  162. package/dist/scheduler/shutdown.js +8 -2
  163. package/dist/scheduler/shutdown.js.map +1 -1
  164. package/dist/scheduler/state.d.ts +3 -1
  165. package/dist/scheduler/state.d.ts.map +1 -1
  166. package/dist/shared/config/index.d.ts +5 -0
  167. package/dist/shared/config/index.d.ts.map +1 -0
  168. package/dist/shared/config/index.js +5 -0
  169. package/dist/shared/config/index.js.map +1 -0
  170. package/dist/shared/config/load-agent.d.ts +27 -0
  171. package/dist/shared/config/load-agent.d.ts.map +1 -0
  172. package/dist/shared/config/load-agent.js +169 -0
  173. package/dist/shared/config/load-agent.js.map +1 -0
  174. package/dist/shared/config/load-project.d.ts +22 -0
  175. package/dist/shared/config/load-project.d.ts.map +1 -0
  176. package/dist/shared/config/load-project.js +84 -0
  177. package/dist/shared/config/load-project.js.map +1 -0
  178. package/dist/shared/config/types.d.ts +115 -0
  179. package/dist/shared/config/types.d.ts.map +1 -0
  180. package/dist/shared/config/types.js +2 -0
  181. package/dist/shared/config/types.js.map +1 -0
  182. package/dist/shared/config/validate.d.ts +4 -0
  183. package/dist/shared/config/validate.d.ts.map +1 -0
  184. package/dist/shared/config/validate.js +23 -0
  185. package/dist/shared/config/validate.js.map +1 -0
  186. package/dist/shared/config.d.ts +4 -161
  187. package/dist/shared/config.d.ts.map +1 -1
  188. package/dist/shared/config.js +5 -269
  189. package/dist/shared/config.js.map +1 -1
  190. package/dist/shared/constants.d.ts +4 -0
  191. package/dist/shared/constants.d.ts.map +1 -1
  192. package/dist/shared/constants.js +4 -0
  193. package/dist/shared/constants.js.map +1 -1
  194. package/dist/shared/errors.js +1 -1
  195. package/dist/shared/errors.js.map +1 -1
  196. package/dist/shared/paths.d.ts +6 -0
  197. package/dist/shared/paths.d.ts.map +1 -1
  198. package/dist/shared/paths.js +12 -0
  199. package/dist/shared/paths.js.map +1 -1
  200. package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
  201. package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
  202. package/dist/shared/persistence/backends/sqlite.js +107 -135
  203. package/dist/shared/persistence/backends/sqlite.js.map +1 -1
  204. package/dist/shared/queue-sqlite.d.ts +9 -4
  205. package/dist/shared/queue-sqlite.d.ts.map +1 -1
  206. package/dist/shared/queue-sqlite.js +41 -36
  207. package/dist/shared/queue-sqlite.js.map +1 -1
  208. package/dist/shared/state-store-sqlite.d.ts +8 -3
  209. package/dist/shared/state-store-sqlite.d.ts.map +1 -1
  210. package/dist/shared/state-store-sqlite.js +55 -37
  211. package/dist/shared/state-store-sqlite.js.map +1 -1
  212. package/dist/stats/store.d.ts +11 -2
  213. package/dist/stats/store.d.ts.map +1 -1
  214. package/dist/stats/store.js +200 -291
  215. package/dist/stats/store.js.map +1 -1
  216. package/docker/bin/al-bash-init.sh +44 -0
  217. package/package.json +4 -1
  218. package/dist/agents/execution-engine.d.ts +0 -19
  219. package/dist/agents/execution-engine.d.ts.map +0 -1
  220. package/dist/agents/execution-engine.js +0 -179
  221. package/dist/agents/execution-engine.js.map +0 -1
  222. package/dist/agents/runner.d.ts +0 -38
  223. package/dist/agents/runner.d.ts.map +0 -1
  224. package/dist/agents/runner.js +0 -375
  225. package/dist/agents/runner.js.map +0 -1
  226. package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
  227. 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"}
@@ -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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"}