@action-llama/action-llama 0.18.11 → 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/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 +10 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +125 -121
- 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/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/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +16 -117
- package/dist/cli/commands/run-agent.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/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/local-runtime.js +1 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +1 -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/execution.d.ts +1 -0
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +8 -3
- package/dist/execution/execution.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 -214
- 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 +8 -2
- 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 +20 -176
- 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 -1
- package/dist/scheduler/shutdown.js.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 +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAuJ3G"}
|
|
@@ -61,6 +61,60 @@ export function registerStatsRoutes(app, statsStore, statusTracker) {
|
|
|
61
61
|
}
|
|
62
62
|
return c.json({ triggers: mergedTriggers, total: mergedTotal, limit, offset });
|
|
63
63
|
});
|
|
64
|
+
// Paginated jobs (pending + running + completed, no dead letters)
|
|
65
|
+
app.get("/api/stats/jobs", (c) => {
|
|
66
|
+
const limit = Math.min(100, Math.max(1, parseInt(c.req.query("limit") || "50", 10) || 50));
|
|
67
|
+
const offset = Math.max(0, parseInt(c.req.query("offset") || "0", 10) || 0);
|
|
68
|
+
const since = parseInt(c.req.query("since") || "0", 10) || 0;
|
|
69
|
+
const agentFilter = c.req.query("agent") || undefined;
|
|
70
|
+
// Completed/errored jobs from runs table (no dead letters — dead letters aren't jobs)
|
|
71
|
+
const runs = statsStore
|
|
72
|
+
? statsStore.queryTriggerHistory({ since, limit, offset, includeDeadLetters: false, agentName: agentFilter })
|
|
73
|
+
: [];
|
|
74
|
+
const total = statsStore ? statsStore.countTriggerHistory(since, false, agentFilter) : 0;
|
|
75
|
+
// Running instances (only on first page)
|
|
76
|
+
let mergedJobs = runs;
|
|
77
|
+
let mergedTotal = total;
|
|
78
|
+
if (statusTracker && offset === 0) {
|
|
79
|
+
const running = statusTracker.getInstances()
|
|
80
|
+
.filter((inst) => {
|
|
81
|
+
if (inst.status !== "running")
|
|
82
|
+
return false;
|
|
83
|
+
if (agentFilter && inst.agentName !== agentFilter)
|
|
84
|
+
return false;
|
|
85
|
+
return true;
|
|
86
|
+
})
|
|
87
|
+
.map((inst) => {
|
|
88
|
+
const sep = inst.trigger.indexOf(":");
|
|
89
|
+
return {
|
|
90
|
+
ts: new Date(inst.startedAt).getTime(),
|
|
91
|
+
triggerType: sep > -1 ? inst.trigger.slice(0, sep) : inst.trigger,
|
|
92
|
+
triggerSource: sep > -1 ? inst.trigger.slice(sep + 1).trim() : null,
|
|
93
|
+
agentName: inst.agentName,
|
|
94
|
+
instanceId: inst.id,
|
|
95
|
+
result: "running",
|
|
96
|
+
webhookReceiptId: null,
|
|
97
|
+
deadLetterReason: null,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
const runningIds = new Set(runs.map((r) => r.instanceId));
|
|
101
|
+
const uniqueRunning = running.filter((r) => !runningIds.has(r.instanceId));
|
|
102
|
+
mergedJobs = [...uniqueRunning, ...runs].sort((a, b) => b.ts - a.ts);
|
|
103
|
+
mergedTotal = total + uniqueRunning.length;
|
|
104
|
+
}
|
|
105
|
+
// Pending counts per agent
|
|
106
|
+
const agents = statusTracker ? statusTracker.getAllAgents() : [];
|
|
107
|
+
const pending = {};
|
|
108
|
+
for (const a of agents) {
|
|
109
|
+
if (a.queuedWebhooks > 0) {
|
|
110
|
+
if (!agentFilter || a.name === agentFilter) {
|
|
111
|
+
pending[a.name] = a.queuedWebhooks;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const totalPending = Object.values(pending).reduce((s, n) => s + n, 0);
|
|
116
|
+
return c.json({ jobs: mergedJobs, total: mergedTotal, pending, totalPending, limit, offset });
|
|
117
|
+
});
|
|
64
118
|
// Single webhook receipt by ID
|
|
65
119
|
app.get("/api/stats/webhooks/:receiptId", (c) => {
|
|
66
120
|
const receiptId = c.req.param("receiptId");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared database connection factory for action-llama.
|
|
3
|
+
*
|
|
4
|
+
* Creates a Drizzle ORM instance backed by better-sqlite3.
|
|
5
|
+
* All database access should go through the returned Drizzle instance.
|
|
6
|
+
* The underlying better-sqlite3 Database is available via `db.$client`.
|
|
7
|
+
*/
|
|
8
|
+
import { drizzle } from "drizzle-orm/better-sqlite3";
|
|
9
|
+
import * as schema from "./schema.js";
|
|
10
|
+
export type AppDb = ReturnType<typeof createDb>;
|
|
11
|
+
/**
|
|
12
|
+
* Create a Drizzle database connection for the given file path.
|
|
13
|
+
* Creates parent directories if needed. Sets WAL mode and performance pragmas.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createDb(dbPath: string): ReturnType<typeof drizzle<typeof schema>>;
|
|
16
|
+
/**
|
|
17
|
+
* Create an in-memory Drizzle database for tests.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createMemoryDb(): ReturnType<typeof drizzle<typeof schema>>;
|
|
20
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,CAUlF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,CAE1E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared database connection factory for action-llama.
|
|
3
|
+
*
|
|
4
|
+
* Creates a Drizzle ORM instance backed by better-sqlite3.
|
|
5
|
+
* All database access should go through the returned Drizzle instance.
|
|
6
|
+
* The underlying better-sqlite3 Database is available via `db.$client`.
|
|
7
|
+
*/
|
|
8
|
+
import Database from "better-sqlite3";
|
|
9
|
+
import { drizzle } from "drizzle-orm/better-sqlite3";
|
|
10
|
+
import { mkdirSync } from "fs";
|
|
11
|
+
import { dirname } from "path";
|
|
12
|
+
import * as schema from "./schema.js";
|
|
13
|
+
/**
|
|
14
|
+
* Create a Drizzle database connection for the given file path.
|
|
15
|
+
* Creates parent directories if needed. Sets WAL mode and performance pragmas.
|
|
16
|
+
*/
|
|
17
|
+
export function createDb(dbPath) {
|
|
18
|
+
if (dbPath !== ":memory:") {
|
|
19
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
const sqlite = new Database(dbPath);
|
|
22
|
+
sqlite.pragma("journal_mode = WAL");
|
|
23
|
+
sqlite.pragma("synchronous = NORMAL");
|
|
24
|
+
sqlite.pragma("cache_size = 1000");
|
|
25
|
+
sqlite.pragma("temp_store = memory");
|
|
26
|
+
return drizzle(sqlite, { schema });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create an in-memory Drizzle database for tests.
|
|
30
|
+
*/
|
|
31
|
+
export function createMemoryDb() {
|
|
32
|
+
return createDb(":memory:");
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -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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"}
|