@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
@@ -1,253 +1,30 @@
1
- import Database from "better-sqlite3";
2
- import { mkdirSync } from "fs";
3
- import { dirname } from "path";
1
+ import { eq } from "drizzle-orm";
2
+ import { createDb } from "../db/connection.js";
3
+ import { applyMigrations } from "../db/migrate.js";
4
+ import { runsTable, webhookReceiptsTable, callEdgesTable } from "../db/schema.js";
5
+ /**
6
+ * SQLite-backed StatsStore using Drizzle ORM.
7
+ *
8
+ * Supports two constructor signatures:
9
+ * new StatsStore(dbPath: string) — creates its own connection (backward compat)
10
+ * new StatsStore(db: AppDb) — uses a shared connection (preferred)
11
+ */
4
12
  export class StatsStore {
5
13
  db;
6
- stmts;
7
- constructor(dbPath) {
8
- mkdirSync(dirname(dbPath), { recursive: true });
9
- this.db = new Database(dbPath);
10
- this.db.pragma("journal_mode = WAL");
11
- this.db.exec(`
12
- CREATE TABLE IF NOT EXISTS runs (
13
- id INTEGER PRIMARY KEY AUTOINCREMENT,
14
- instance_id TEXT NOT NULL,
15
- agent_name TEXT NOT NULL,
16
- trigger_type TEXT NOT NULL,
17
- trigger_source TEXT,
18
- result TEXT NOT NULL,
19
- exit_code INTEGER,
20
- started_at INTEGER NOT NULL,
21
- duration_ms INTEGER NOT NULL,
22
- input_tokens INTEGER NOT NULL DEFAULT 0,
23
- output_tokens INTEGER NOT NULL DEFAULT 0,
24
- cache_read_tokens INTEGER NOT NULL DEFAULT 0,
25
- cache_write_tokens INTEGER NOT NULL DEFAULT 0,
26
- total_tokens INTEGER NOT NULL DEFAULT 0,
27
- cost_usd REAL NOT NULL DEFAULT 0,
28
- turn_count INTEGER NOT NULL DEFAULT 0,
29
- error_message TEXT,
30
- pre_hook_ms INTEGER,
31
- post_hook_ms INTEGER
32
- )
33
- `);
34
- this.db.exec(`
35
- CREATE TABLE IF NOT EXISTS webhook_receipts (
36
- id TEXT PRIMARY KEY,
37
- delivery_id TEXT,
38
- source TEXT NOT NULL,
39
- event_summary TEXT,
40
- timestamp INTEGER NOT NULL,
41
- headers TEXT,
42
- body TEXT,
43
- matched_agents INTEGER NOT NULL DEFAULT 0,
44
- status TEXT NOT NULL,
45
- dead_letter_reason TEXT
46
- )
47
- `);
48
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_wr_timestamp ON webhook_receipts(timestamp)");
49
- this.db.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_wr_delivery ON webhook_receipts(delivery_id) WHERE delivery_id IS NOT NULL");
50
- // Migrate: add webhook_receipt_id column to runs if missing
51
- const runsColumns = this.db.pragma("table_info(runs)");
52
- if (!runsColumns.some(c => c.name === "webhook_receipt_id")) {
53
- this.db.exec("ALTER TABLE runs ADD COLUMN webhook_receipt_id TEXT");
14
+ ownDb;
15
+ constructor(dbOrPath) {
16
+ if (typeof dbOrPath === "string") {
17
+ this.db = createDb(dbOrPath);
18
+ this.ownDb = true;
19
+ applyMigrations(this.db);
20
+ }
21
+ else {
22
+ this.db = dbOrPath;
23
+ this.ownDb = false;
54
24
  }
55
- this.db.exec(`
56
- CREATE TABLE IF NOT EXISTS call_edges (
57
- id INTEGER PRIMARY KEY AUTOINCREMENT,
58
- caller_agent TEXT NOT NULL,
59
- caller_instance TEXT NOT NULL,
60
- target_agent TEXT NOT NULL,
61
- target_instance TEXT,
62
- depth INTEGER NOT NULL DEFAULT 0,
63
- started_at INTEGER NOT NULL,
64
- duration_ms INTEGER,
65
- status TEXT NOT NULL DEFAULT 'pending'
66
- )
67
- `);
68
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_runs_agent ON runs(agent_name, started_at)");
69
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_runs_started ON runs(started_at)");
70
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_calls_caller ON call_edges(caller_agent, started_at)");
71
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_calls_target ON call_edges(target_agent, started_at)");
72
- this.db.exec("CREATE INDEX IF NOT EXISTS idx_calls_target_instance ON call_edges(target_instance)");
73
- this.stmts = {
74
- insertRun: this.db.prepare(`
75
- INSERT INTO runs (
76
- instance_id, agent_name, trigger_type, trigger_source, result, exit_code,
77
- started_at, duration_ms, input_tokens, output_tokens, cache_read_tokens,
78
- cache_write_tokens, total_tokens, cost_usd, turn_count, error_message,
79
- pre_hook_ms, post_hook_ms, webhook_receipt_id
80
- ) VALUES (
81
- @instanceId, @agentName, @triggerType, @triggerSource, @result, @exitCode,
82
- @startedAt, @durationMs, @inputTokens, @outputTokens, @cacheReadTokens,
83
- @cacheWriteTokens, @totalTokens, @costUsd, @turnCount, @errorMessage,
84
- @preHookMs, @postHookMs, @webhookReceiptId
85
- )
86
- `),
87
- insertCallEdge: this.db.prepare(`
88
- INSERT INTO call_edges (
89
- caller_agent, caller_instance, target_agent, target_instance, depth, started_at, duration_ms, status
90
- ) VALUES (
91
- @callerAgent, @callerInstance, @targetAgent, @targetInstance, @depth, @startedAt, @durationMs, @status
92
- )
93
- `),
94
- updateCallEdge: this.db.prepare(`
95
- UPDATE call_edges SET duration_ms = @durationMs, status = @status, target_instance = COALESCE(@targetInstance, target_instance) WHERE id = @id
96
- `),
97
- queryRuns: this.db.prepare(`
98
- SELECT * FROM runs WHERE started_at >= @since ORDER BY started_at DESC LIMIT @limit
99
- `),
100
- queryRunsByAgent: this.db.prepare(`
101
- SELECT * FROM runs WHERE agent_name = @agent AND started_at >= @since ORDER BY started_at DESC LIMIT @limit
102
- `),
103
- agentSummary: this.db.prepare(`
104
- SELECT
105
- agent_name as agentName,
106
- COUNT(*) as totalRuns,
107
- SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
108
- SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
109
- AVG(duration_ms) as avgDurationMs,
110
- SUM(total_tokens) as totalTokens,
111
- SUM(cost_usd) as totalCost,
112
- AVG(pre_hook_ms) as avgPreHookMs,
113
- AVG(post_hook_ms) as avgPostHookMs
114
- FROM runs
115
- WHERE started_at >= @since
116
- GROUP BY agent_name
117
- ORDER BY totalRuns DESC
118
- `),
119
- agentSummaryByName: this.db.prepare(`
120
- SELECT
121
- agent_name as agentName,
122
- COUNT(*) as totalRuns,
123
- SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
124
- SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
125
- AVG(duration_ms) as avgDurationMs,
126
- SUM(total_tokens) as totalTokens,
127
- SUM(cost_usd) as totalCost,
128
- AVG(pre_hook_ms) as avgPreHookMs,
129
- AVG(post_hook_ms) as avgPostHookMs
130
- FROM runs
131
- WHERE agent_name = @agent AND started_at >= @since
132
- GROUP BY agent_name
133
- `),
134
- callGraph: this.db.prepare(`
135
- SELECT
136
- caller_agent as callerAgent,
137
- target_agent as targetAgent,
138
- COUNT(*) as count,
139
- AVG(depth) as avgDepth,
140
- AVG(duration_ms) as avgDurationMs
141
- FROM call_edges
142
- WHERE started_at >= @since
143
- GROUP BY caller_agent, target_agent
144
- ORDER BY count DESC
145
- `),
146
- queryRunsByAgentPaginated: this.db.prepare(`
147
- SELECT * FROM runs WHERE agent_name = @agent ORDER BY started_at DESC LIMIT @limit OFFSET @offset
148
- `),
149
- countRunsByAgent: this.db.prepare(`
150
- SELECT COUNT(*) as count FROM runs WHERE agent_name = @agent
151
- `),
152
- queryRunByInstanceId: this.db.prepare(`
153
- SELECT * FROM runs WHERE instance_id = @instanceId LIMIT 1
154
- `),
155
- insertReceipt: this.db.prepare(`
156
- INSERT INTO webhook_receipts (
157
- id, delivery_id, source, event_summary, timestamp, headers, body,
158
- matched_agents, status, dead_letter_reason
159
- ) VALUES (
160
- @id, @deliveryId, @source, @eventSummary, @timestamp, @headers, @body,
161
- @matchedAgents, @status, @deadLetterReason
162
- )
163
- `),
164
- findReceiptByDeliveryId: this.db.prepare("SELECT * FROM webhook_receipts WHERE delivery_id = @deliveryId LIMIT 1"),
165
- getReceipt: this.db.prepare("SELECT * FROM webhook_receipts WHERE id = @id LIMIT 1"),
166
- updateReceiptStatus: this.db.prepare("UPDATE webhook_receipts SET matched_agents = @matchedAgents, status = @status, dead_letter_reason = @deadLetterReason WHERE id = @id"),
167
- queryTriggerHistory: this.db.prepare(`
168
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
169
- trigger_type AS triggerType, trigger_source AS triggerSource,
170
- result, webhook_receipt_id AS webhookReceiptId,
171
- NULL AS deadLetterReason
172
- FROM runs WHERE started_at > @since
173
- UNION ALL
174
- SELECT timestamp AS ts, NULL AS instanceId, NULL AS agentName,
175
- 'webhook' AS triggerType, source AS triggerSource,
176
- 'dead-letter' AS result, id AS webhookReceiptId,
177
- dead_letter_reason AS deadLetterReason
178
- FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > @since
179
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
180
- `),
181
- queryTriggerHistoryNoDeadLetters: this.db.prepare(`
182
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
183
- trigger_type AS triggerType, trigger_source AS triggerSource,
184
- result, webhook_receipt_id AS webhookReceiptId,
185
- NULL AS deadLetterReason
186
- FROM runs WHERE started_at > @since
187
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
188
- `),
189
- countTriggerHistory: this.db.prepare("SELECT (SELECT COUNT(*) FROM runs WHERE started_at > @since) + (SELECT COUNT(*) FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > @since) AS count"),
190
- countTriggerHistoryNoDeadLetters: this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > @since"),
191
- queryTriggerHistoryByAgent: this.db.prepare(`
192
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
193
- trigger_type AS triggerType, trigger_source AS triggerSource,
194
- result, webhook_receipt_id AS webhookReceiptId,
195
- NULL AS deadLetterReason
196
- FROM runs WHERE started_at > @since AND agent_name = @agentName
197
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
198
- `),
199
- countTriggerHistoryByAgent: this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > @since AND agent_name = @agentName"),
200
- queryTriggerHistoryByType: this.db.prepare(`
201
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
202
- trigger_type AS triggerType, trigger_source AS triggerSource,
203
- result, webhook_receipt_id AS webhookReceiptId,
204
- NULL AS deadLetterReason
205
- FROM runs WHERE started_at > @since AND trigger_type = @triggerType
206
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
207
- `),
208
- queryTriggerHistoryByTypeWithDeadLetters: this.db.prepare(`
209
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
210
- trigger_type AS triggerType, trigger_source AS triggerSource,
211
- result, webhook_receipt_id AS webhookReceiptId,
212
- NULL AS deadLetterReason
213
- FROM runs WHERE started_at > @since AND trigger_type = @triggerType
214
- UNION ALL
215
- SELECT timestamp AS ts, NULL AS instanceId, NULL AS agentName,
216
- 'webhook' AS triggerType, source AS triggerSource,
217
- 'dead-letter' AS result, id AS webhookReceiptId,
218
- dead_letter_reason AS deadLetterReason
219
- FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > @since
220
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
221
- `),
222
- queryTriggerHistoryByAgentAndType: this.db.prepare(`
223
- SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
224
- trigger_type AS triggerType, trigger_source AS triggerSource,
225
- result, webhook_receipt_id AS webhookReceiptId,
226
- NULL AS deadLetterReason
227
- FROM runs WHERE started_at > @since AND agent_name = @agentName AND trigger_type = @triggerType
228
- ORDER BY ts DESC LIMIT @limit OFFSET @offset
229
- `),
230
- countTriggerHistoryByType: this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > @since AND trigger_type = @triggerType"),
231
- countTriggerHistoryByTypeWithDeadLetters: this.db.prepare("SELECT (SELECT COUNT(*) FROM runs WHERE started_at > @since AND trigger_type = @triggerType) + (SELECT COUNT(*) FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > @since) AS count"),
232
- countTriggerHistoryByAgentAndType: this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > @since AND agent_name = @agentName AND trigger_type = @triggerType"),
233
- pruneRuns: this.db.prepare("DELETE FROM runs WHERE started_at < @threshold"),
234
- pruneCallEdges: this.db.prepare("DELETE FROM call_edges WHERE started_at < @threshold"),
235
- queryCallEdgeByTarget: this.db.prepare("SELECT * FROM call_edges WHERE target_instance = @targetInstance LIMIT 1"),
236
- pruneReceipts: this.db.prepare("DELETE FROM webhook_receipts WHERE timestamp < @threshold"),
237
- globalSummary: this.db.prepare(`
238
- SELECT
239
- COUNT(*) as totalRuns,
240
- SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
241
- SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
242
- SUM(total_tokens) as totalTokens,
243
- SUM(cost_usd) as totalCost
244
- FROM runs
245
- WHERE started_at >= @since
246
- `),
247
- };
248
25
  }
249
26
  recordRun(run) {
250
- this.stmts.insertRun.run({
27
+ this.db.insert(runsTable).values({
251
28
  instanceId: run.instanceId,
252
29
  agentName: run.agentName,
253
30
  triggerType: run.triggerType,
@@ -267,10 +44,11 @@ export class StatsStore {
267
44
  preHookMs: run.preHookMs ?? null,
268
45
  postHookMs: run.postHookMs ?? null,
269
46
  webhookReceiptId: run.webhookReceiptId ?? null,
270
- });
47
+ triggerContext: run.triggerContext ?? null,
48
+ }).run();
271
49
  }
272
50
  recordCallEdge(edge) {
273
- const result = this.stmts.insertCallEdge.run({
51
+ const result = this.db.insert(callEdgesTable).values({
274
52
  callerAgent: edge.callerAgent,
275
53
  callerInstance: edge.callerInstance,
276
54
  targetAgent: edge.targetAgent,
@@ -279,47 +57,102 @@ export class StatsStore {
279
57
  startedAt: edge.startedAt,
280
58
  durationMs: edge.durationMs ?? null,
281
59
  status: edge.status ?? "pending",
282
- });
60
+ }).run();
283
61
  return Number(result.lastInsertRowid);
284
62
  }
285
63
  updateCallEdge(id, updates) {
286
- this.stmts.updateCallEdge.run({
287
- id,
288
- durationMs: updates.durationMs ?? null,
289
- status: updates.status ?? null,
290
- targetInstance: updates.targetInstance ?? null,
291
- });
64
+ this.db.update(callEdgesTable)
65
+ .set({
66
+ durationMs: updates.durationMs ?? undefined,
67
+ status: updates.status ?? undefined,
68
+ targetInstance: updates.targetInstance
69
+ ? updates.targetInstance
70
+ : undefined,
71
+ })
72
+ .where(eq(callEdgesTable.id, id))
73
+ .run();
292
74
  }
293
75
  queryRunsByAgentPaginated(agent, limit, offset) {
294
- return this.stmts.queryRunsByAgentPaginated.all({ agent, limit, offset });
76
+ return this.db.$client
77
+ .prepare("SELECT * FROM runs WHERE agent_name = ? ORDER BY started_at DESC LIMIT ? OFFSET ?")
78
+ .all(agent, limit, offset);
295
79
  }
296
80
  countRunsByAgent(agent) {
297
- const row = this.stmts.countRunsByAgent.get({ agent });
81
+ const row = this.db.$client
82
+ .prepare("SELECT COUNT(*) as count FROM runs WHERE agent_name = ?")
83
+ .get(agent);
298
84
  return row?.count ?? 0;
299
85
  }
300
86
  queryRunByInstanceId(instanceId) {
301
- return this.stmts.queryRunByInstanceId.get({ instanceId });
87
+ return this.db.$client
88
+ .prepare("SELECT * FROM runs WHERE instance_id = ? LIMIT 1")
89
+ .get(instanceId);
302
90
  }
303
91
  queryCallEdgeByTargetInstance(targetInstance) {
304
- return this.stmts.queryCallEdgeByTarget.get({ targetInstance });
92
+ return this.db.$client
93
+ .prepare("SELECT * FROM call_edges WHERE target_instance = ? LIMIT 1")
94
+ .get(targetInstance);
305
95
  }
306
96
  queryRuns(query = {}) {
307
97
  const since = query.since ?? 0;
308
98
  const limit = query.limit ?? 100;
309
99
  if (query.agent) {
310
- return this.stmts.queryRunsByAgent.all({ agent: query.agent, since, limit });
100
+ return this.db.$client
101
+ .prepare("SELECT * FROM runs WHERE agent_name = ? AND started_at >= ? ORDER BY started_at DESC LIMIT ?")
102
+ .all(query.agent, since, limit);
311
103
  }
312
- return this.stmts.queryRuns.all({ since, limit });
104
+ return this.db.$client
105
+ .prepare("SELECT * FROM runs WHERE started_at >= ? ORDER BY started_at DESC LIMIT ?")
106
+ .all(since, limit);
313
107
  }
314
108
  queryAgentSummary(query = {}) {
315
109
  const since = query.since ?? 0;
110
+ const client = this.db.$client;
316
111
  if (query.agent) {
317
- return this.stmts.agentSummaryByName.all({ agent: query.agent, since });
112
+ return client.prepare(`
113
+ SELECT
114
+ agent_name as agentName,
115
+ COUNT(*) as totalRuns,
116
+ SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
117
+ SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
118
+ AVG(duration_ms) as avgDurationMs,
119
+ SUM(total_tokens) as totalTokens,
120
+ SUM(cost_usd) as totalCost,
121
+ AVG(pre_hook_ms) as avgPreHookMs,
122
+ AVG(post_hook_ms) as avgPostHookMs
123
+ FROM runs
124
+ WHERE agent_name = ? AND started_at >= ?
125
+ GROUP BY agent_name
126
+ `).all(query.agent, since);
318
127
  }
319
- return this.stmts.agentSummary.all({ since });
128
+ return client.prepare(`
129
+ SELECT
130
+ agent_name as agentName,
131
+ COUNT(*) as totalRuns,
132
+ SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
133
+ SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
134
+ AVG(duration_ms) as avgDurationMs,
135
+ SUM(total_tokens) as totalTokens,
136
+ SUM(cost_usd) as totalCost,
137
+ AVG(pre_hook_ms) as avgPreHookMs,
138
+ AVG(post_hook_ms) as avgPostHookMs
139
+ FROM runs
140
+ WHERE started_at >= ?
141
+ GROUP BY agent_name
142
+ ORDER BY totalRuns DESC
143
+ `).all(since);
320
144
  }
321
145
  queryGlobalSummary(since = 0) {
322
- const row = this.stmts.globalSummary.get({ since });
146
+ const row = this.db.$client.prepare(`
147
+ SELECT
148
+ COUNT(*) as totalRuns,
149
+ SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
150
+ SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
151
+ SUM(total_tokens) as totalTokens,
152
+ SUM(cost_usd) as totalCost
153
+ FROM runs
154
+ WHERE started_at >= ?
155
+ `).get(since);
323
156
  return {
324
157
  totalRuns: row.totalRuns ?? 0,
325
158
  okRuns: row.okRuns ?? 0,
@@ -330,10 +163,21 @@ export class StatsStore {
330
163
  }
331
164
  queryCallGraph(query = {}) {
332
165
  const since = query.since ?? 0;
333
- return this.stmts.callGraph.all({ since });
166
+ return this.db.$client.prepare(`
167
+ SELECT
168
+ caller_agent as callerAgent,
169
+ target_agent as targetAgent,
170
+ COUNT(*) as count,
171
+ AVG(depth) as avgDepth,
172
+ AVG(duration_ms) as avgDurationMs
173
+ FROM call_edges
174
+ WHERE started_at >= ?
175
+ GROUP BY caller_agent, target_agent
176
+ ORDER BY count DESC
177
+ `).all(since);
334
178
  }
335
179
  recordWebhookReceipt(receipt) {
336
- this.stmts.insertReceipt.run({
180
+ this.db.insert(webhookReceiptsTable).values({
337
181
  id: receipt.id,
338
182
  deliveryId: receipt.deliveryId ?? null,
339
183
  source: receipt.source,
@@ -344,61 +188,123 @@ export class StatsStore {
344
188
  matchedAgents: receipt.matchedAgents,
345
189
  status: receipt.status,
346
190
  deadLetterReason: receipt.deadLetterReason ?? null,
347
- });
191
+ }).run();
348
192
  }
349
193
  updateWebhookReceiptStatus(id, matchedAgents, status, deadLetterReason) {
350
- this.stmts.updateReceiptStatus.run({
351
- id,
352
- matchedAgents,
353
- status,
354
- deadLetterReason: deadLetterReason ?? null,
355
- });
194
+ this.db.update(webhookReceiptsTable)
195
+ .set({ matchedAgents, status, deadLetterReason: deadLetterReason ?? null })
196
+ .where(eq(webhookReceiptsTable.id, id))
197
+ .run();
356
198
  }
357
199
  findWebhookReceiptByDeliveryId(deliveryId) {
358
- const row = this.stmts.findReceiptByDeliveryId.get({ deliveryId });
200
+ const row = this.db.$client
201
+ .prepare("SELECT * FROM webhook_receipts WHERE delivery_id = ? LIMIT 1")
202
+ .get(deliveryId);
359
203
  return row ? this.mapReceipt(row) : undefined;
360
204
  }
361
205
  getWebhookReceipt(id) {
362
- const row = this.stmts.getReceipt.get({ id });
206
+ const row = this.db.$client
207
+ .prepare("SELECT * FROM webhook_receipts WHERE id = ? LIMIT 1")
208
+ .get(id);
363
209
  return row ? this.mapReceipt(row) : undefined;
364
210
  }
365
211
  queryTriggerHistory(opts) {
366
212
  const { since, limit, offset, includeDeadLetters, agentName, triggerType } = opts;
213
+ const client = this.db.$client;
367
214
  if (agentName && triggerType) {
368
- return this.stmts.queryTriggerHistoryByAgentAndType.all({ since, limit, offset, agentName, triggerType });
215
+ return client.prepare(`
216
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
217
+ trigger_type AS triggerType, trigger_source AS triggerSource,
218
+ result, webhook_receipt_id AS webhookReceiptId,
219
+ NULL AS deadLetterReason
220
+ FROM runs WHERE started_at > ? AND agent_name = ? AND trigger_type = ?
221
+ ORDER BY ts DESC LIMIT ? OFFSET ?
222
+ `).all(since, agentName, triggerType, limit, offset);
369
223
  }
370
224
  if (agentName) {
371
- return this.stmts.queryTriggerHistoryByAgent.all({ since, limit, offset, agentName });
225
+ return client.prepare(`
226
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
227
+ trigger_type AS triggerType, trigger_source AS triggerSource,
228
+ result, webhook_receipt_id AS webhookReceiptId,
229
+ NULL AS deadLetterReason
230
+ FROM runs WHERE started_at > ? AND agent_name = ?
231
+ ORDER BY ts DESC LIMIT ? OFFSET ?
232
+ `).all(since, agentName, limit, offset);
372
233
  }
373
234
  if (triggerType) {
374
- // For non-webhook types, dead letters are always webhook so we can skip them unless filtering for webhook
375
235
  if (includeDeadLetters && triggerType === "webhook") {
376
- return this.stmts.queryTriggerHistoryByTypeWithDeadLetters.all({ since, limit, offset, triggerType });
236
+ return client.prepare(`
237
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
238
+ trigger_type AS triggerType, trigger_source AS triggerSource,
239
+ result, webhook_receipt_id AS webhookReceiptId,
240
+ NULL AS deadLetterReason
241
+ FROM runs WHERE started_at > ? AND trigger_type = ?
242
+ UNION ALL
243
+ SELECT timestamp AS ts, NULL AS instanceId, NULL AS agentName,
244
+ 'webhook' AS triggerType, source AS triggerSource,
245
+ 'dead-letter' AS result, id AS webhookReceiptId,
246
+ dead_letter_reason AS deadLetterReason
247
+ FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > ?
248
+ ORDER BY ts DESC LIMIT ? OFFSET ?
249
+ `).all(since, triggerType, since, limit, offset);
377
250
  }
378
- return this.stmts.queryTriggerHistoryByType.all({ since, limit, offset, triggerType });
251
+ return client.prepare(`
252
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
253
+ trigger_type AS triggerType, trigger_source AS triggerSource,
254
+ result, webhook_receipt_id AS webhookReceiptId,
255
+ NULL AS deadLetterReason
256
+ FROM runs WHERE started_at > ? AND trigger_type = ?
257
+ ORDER BY ts DESC LIMIT ? OFFSET ?
258
+ `).all(since, triggerType, limit, offset);
379
259
  }
380
- const stmt = includeDeadLetters ? this.stmts.queryTriggerHistory : this.stmts.queryTriggerHistoryNoDeadLetters;
381
- return stmt.all({ since, limit, offset });
260
+ if (includeDeadLetters) {
261
+ return client.prepare(`
262
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
263
+ trigger_type AS triggerType, trigger_source AS triggerSource,
264
+ result, webhook_receipt_id AS webhookReceiptId,
265
+ NULL AS deadLetterReason
266
+ FROM runs WHERE started_at > ?
267
+ UNION ALL
268
+ SELECT timestamp AS ts, NULL AS instanceId, NULL AS agentName,
269
+ 'webhook' AS triggerType, source AS triggerSource,
270
+ 'dead-letter' AS result, id AS webhookReceiptId,
271
+ dead_letter_reason AS deadLetterReason
272
+ FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > ?
273
+ ORDER BY ts DESC LIMIT ? OFFSET ?
274
+ `).all(since, since, limit, offset);
275
+ }
276
+ return client.prepare(`
277
+ SELECT started_at AS ts, instance_id AS instanceId, agent_name AS agentName,
278
+ trigger_type AS triggerType, trigger_source AS triggerSource,
279
+ result, webhook_receipt_id AS webhookReceiptId,
280
+ NULL AS deadLetterReason
281
+ FROM runs WHERE started_at > ?
282
+ ORDER BY ts DESC LIMIT ? OFFSET ?
283
+ `).all(since, limit, offset);
382
284
  }
383
285
  countTriggerHistory(since, includeDeadLetters, agentName, triggerType) {
286
+ const client = this.db.$client;
384
287
  if (agentName && triggerType) {
385
- const row = this.stmts.countTriggerHistoryByAgentAndType.get({ since, agentName, triggerType });
288
+ const row = client.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > ? AND agent_name = ? AND trigger_type = ?").get(since, agentName, triggerType);
386
289
  return row?.count ?? 0;
387
290
  }
388
291
  if (agentName) {
389
- const row = this.stmts.countTriggerHistoryByAgent.get({ since, agentName });
292
+ const row = client.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > ? AND agent_name = ?").get(since, agentName);
390
293
  return row?.count ?? 0;
391
294
  }
392
295
  if (triggerType) {
393
296
  if (includeDeadLetters && triggerType === "webhook") {
394
- const row = this.stmts.countTriggerHistoryByTypeWithDeadLetters.get({ since, triggerType });
297
+ const row = client.prepare("SELECT (SELECT COUNT(*) FROM runs WHERE started_at > ? AND trigger_type = ?) + (SELECT COUNT(*) FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > ?) AS count").get(since, triggerType, since);
395
298
  return row?.count ?? 0;
396
299
  }
397
- const row = this.stmts.countTriggerHistoryByType.get({ since, triggerType });
300
+ const row = client.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > ? AND trigger_type = ?").get(since, triggerType);
398
301
  return row?.count ?? 0;
399
302
  }
400
- const stmt = includeDeadLetters ? this.stmts.countTriggerHistory : this.stmts.countTriggerHistoryNoDeadLetters;
401
- const row = stmt.get({ since });
303
+ if (includeDeadLetters) {
304
+ const row = client.prepare("SELECT (SELECT COUNT(*) FROM runs WHERE started_at > ?) + (SELECT COUNT(*) FROM webhook_receipts WHERE status = 'dead-letter' AND timestamp > ?) AS count").get(since, since);
305
+ return row?.count ?? 0;
306
+ }
307
+ const row = client.prepare("SELECT COUNT(*) AS count FROM runs WHERE started_at > ?").get(since);
402
308
  return row?.count ?? 0;
403
309
  }
404
310
  mapReceipt(row) {
@@ -417,9 +323,10 @@ export class StatsStore {
417
323
  }
418
324
  prune(olderThanDays) {
419
325
  const threshold = Date.now() - olderThanDays * 24 * 60 * 60 * 1000;
420
- const runsResult = this.stmts.pruneRuns.run({ threshold });
421
- const callEdgesResult = this.stmts.pruneCallEdges.run({ threshold });
422
- const receiptsResult = this.stmts.pruneReceipts.run({ threshold });
326
+ const client = this.db.$client;
327
+ const runsResult = client.prepare("DELETE FROM runs WHERE started_at < ?").run(threshold);
328
+ const callEdgesResult = client.prepare("DELETE FROM call_edges WHERE started_at < ?").run(threshold);
329
+ const receiptsResult = client.prepare("DELETE FROM webhook_receipts WHERE timestamp < ?").run(threshold);
423
330
  return {
424
331
  runs: runsResult.changes,
425
332
  callEdges: callEdgesResult.changes,
@@ -427,7 +334,9 @@ export class StatsStore {
427
334
  };
428
335
  }
429
336
  close() {
430
- this.db.close();
337
+ if (this.ownDb) {
338
+ this.db.$client.close();
339
+ }
431
340
  }
432
341
  }
433
342
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/stats/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/stats/store.ts"],"names":[],"mappings":"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"}