@action-llama/action-llama 0.15.0 → 0.16.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/build-info.json +1 -1
- package/dist/cli/commands/doctor.d.ts +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +101 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/webhook.d.ts +11 -0
- package/dist/cli/commands/webhook.d.ts.map +1 -0
- package/dist/cli/commands/webhook.js +271 -0
- package/dist/cli/commands/webhook.js.map +1 -0
- package/dist/cli/main.js +17 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/docker/local-runtime.d.ts.map +1 -1
- package/dist/docker/local-runtime.js +36 -7
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/runtime.d.ts +4 -0
- package/dist/docker/runtime.d.ts.map +1 -1
- package/dist/gateway/index.d.ts +2 -0
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +1 -1
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/routes/webhooks.d.ts +2 -1
- package/dist/gateway/routes/webhooks.d.ts.map +1 -1
- package/dist/gateway/routes/webhooks.js +3 -2
- package/dist/gateway/routes/webhooks.js.map +1 -1
- package/dist/remote/push.d.ts.map +1 -1
- package/dist/remote/push.js +11 -2
- package/dist/remote/push.js.map +1 -1
- package/dist/scheduler/event-queue-unified.d.ts +50 -0
- package/dist/scheduler/event-queue-unified.d.ts.map +1 -0
- package/dist/scheduler/event-queue-unified.js +280 -0
- package/dist/scheduler/event-queue-unified.js.map +1 -0
- package/dist/scheduler/execution.d.ts +2 -1
- package/dist/scheduler/execution.d.ts.map +1 -1
- package/dist/scheduler/execution.js +48 -8
- package/dist/scheduler/execution.js.map +1 -1
- package/dist/scheduler/gateway-setup.d.ts +2 -1
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +2 -1
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/lifecycle/agent-lifecycle.d.ts +114 -0
- package/dist/scheduler/lifecycle/agent-lifecycle.d.ts.map +1 -0
- package/dist/scheduler/lifecycle/agent-lifecycle.js +236 -0
- package/dist/scheduler/lifecycle/agent-lifecycle.js.map +1 -0
- package/dist/scheduler/lifecycle/index.d.ts +60 -0
- package/dist/scheduler/lifecycle/index.d.ts.map +1 -0
- package/dist/scheduler/lifecycle/index.js +103 -0
- package/dist/scheduler/lifecycle/index.js.map +1 -0
- package/dist/scheduler/lifecycle/instance-lifecycle.d.ts +88 -0
- package/dist/scheduler/lifecycle/instance-lifecycle.d.ts.map +1 -0
- package/dist/scheduler/lifecycle/instance-lifecycle.js +142 -0
- package/dist/scheduler/lifecycle/instance-lifecycle.js.map +1 -0
- package/dist/scheduler/types.d.ts +2 -0
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/scheduler/webhook-setup.d.ts +1 -0
- package/dist/scheduler/webhook-setup.d.ts.map +1 -1
- package/dist/scheduler/webhook-setup.js +14 -2
- package/dist/scheduler/webhook-setup.js.map +1 -1
- package/dist/shared/config.d.ts +1 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +16 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +54 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/persistence/adapters/state-store.d.ts +24 -0
- package/dist/shared/persistence/adapters/state-store.d.ts.map +1 -0
- package/dist/shared/persistence/adapters/state-store.js +32 -0
- package/dist/shared/persistence/adapters/state-store.js.map +1 -0
- package/dist/shared/persistence/adapters/stats-store.d.ts +49 -0
- package/dist/shared/persistence/adapters/stats-store.d.ts.map +1 -0
- package/dist/shared/persistence/adapters/stats-store.js +213 -0
- package/dist/shared/persistence/adapters/stats-store.js.map +1 -0
- package/dist/shared/persistence/backends/memory.d.ts +39 -0
- package/dist/shared/persistence/backends/memory.d.ts.map +1 -0
- package/dist/shared/persistence/backends/memory.js +214 -0
- package/dist/shared/persistence/backends/memory.js.map +1 -0
- package/dist/shared/persistence/backends/sqlite.d.ts +38 -0
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -0
- package/dist/shared/persistence/backends/sqlite.js +250 -0
- package/dist/shared/persistence/backends/sqlite.js.map +1 -0
- package/dist/shared/persistence/event-store.d.ts +77 -0
- package/dist/shared/persistence/event-store.d.ts.map +1 -0
- package/dist/shared/persistence/event-store.js +139 -0
- package/dist/shared/persistence/event-store.js.map +1 -0
- package/dist/shared/persistence/index.d.ts +119 -0
- package/dist/shared/persistence/index.d.ts.map +1 -0
- package/dist/shared/persistence/index.js +93 -0
- package/dist/shared/persistence/index.js.map +1 -0
- package/dist/shared/persistence/migration.d.ts +47 -0
- package/dist/shared/persistence/migration.d.ts.map +1 -0
- package/dist/shared/persistence/migration.js +297 -0
- package/dist/shared/persistence/migration.js.map +1 -0
- package/dist/shared/validation.d.ts +61 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +280 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/stats/event-store.d.ts +37 -0
- package/dist/stats/event-store.d.ts.map +1 -0
- package/dist/stats/event-store.js +366 -0
- package/dist/stats/event-store.js.map +1 -0
- package/dist/tui/status-tracker.d.ts +19 -0
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js +96 -1
- package/dist/tui/status-tracker.js.map +1 -1
- package/dist/webhooks/providers/github.d.ts +1 -1
- package/dist/webhooks/providers/github.d.ts.map +1 -1
- package/dist/webhooks/providers/github.js +2 -2
- package/dist/webhooks/providers/github.js.map +1 -1
- package/dist/webhooks/providers/linear.d.ts +1 -1
- package/dist/webhooks/providers/linear.d.ts.map +1 -1
- package/dist/webhooks/providers/linear.js +2 -2
- package/dist/webhooks/providers/linear.js.map +1 -1
- package/dist/webhooks/providers/mintlify.d.ts +1 -1
- package/dist/webhooks/providers/mintlify.d.ts.map +1 -1
- package/dist/webhooks/providers/mintlify.js +2 -2
- package/dist/webhooks/providers/mintlify.js.map +1 -1
- package/dist/webhooks/providers/sentry.d.ts +1 -1
- package/dist/webhooks/providers/sentry.d.ts.map +1 -1
- package/dist/webhooks/providers/sentry.js +2 -2
- package/dist/webhooks/providers/sentry.js.map +1 -1
- package/dist/webhooks/providers/test.d.ts +1 -1
- package/dist/webhooks/providers/test.d.ts.map +1 -1
- package/dist/webhooks/providers/test.js +1 -1
- package/dist/webhooks/providers/test.js.map +1 -1
- package/dist/webhooks/registry.d.ts +8 -2
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/registry.js +155 -3
- package/dist/webhooks/registry.js.map +1 -1
- package/dist/webhooks/types.d.ts +28 -1
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/webhooks/validation.d.ts +7 -6
- package/dist/webhooks/validation.d.ts.map +1 -1
- package/dist/webhooks/validation.js +11 -9
- package/dist/webhooks/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatsStore adapter for backward compatibility.
|
|
3
|
+
*
|
|
4
|
+
* Implements the old StatsStore interface using event sourcing on the new persistence layer.
|
|
5
|
+
* Converts method calls to events and builds projections for queries.
|
|
6
|
+
*/
|
|
7
|
+
import { EventTypes, EventStreamWrapper } from "../event-store.js";
|
|
8
|
+
export class StatsStoreAdapter {
|
|
9
|
+
persistence;
|
|
10
|
+
statsStream;
|
|
11
|
+
callIdCounter = 0;
|
|
12
|
+
constructor(persistence) {
|
|
13
|
+
this.persistence = persistence;
|
|
14
|
+
this.statsStream = new EventStreamWrapper(persistence.events.stream("stats"));
|
|
15
|
+
}
|
|
16
|
+
recordRun(run) {
|
|
17
|
+
// Record as events asynchronously
|
|
18
|
+
this.recordRunAsync(run).catch(error => {
|
|
19
|
+
console.error("Failed to record run event:", error);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async recordRunAsync(run) {
|
|
23
|
+
// Create run started event
|
|
24
|
+
await this.statsStream.appendTyped(EventTypes.RUN_STARTED, {
|
|
25
|
+
instanceId: run.instanceId,
|
|
26
|
+
agentName: run.agentName,
|
|
27
|
+
triggerType: run.triggerType,
|
|
28
|
+
triggerSource: run.triggerSource,
|
|
29
|
+
}, {
|
|
30
|
+
source: "stats-adapter",
|
|
31
|
+
correlationId: run.instanceId,
|
|
32
|
+
actor: run.agentName,
|
|
33
|
+
});
|
|
34
|
+
// Create run completed/failed event
|
|
35
|
+
const eventType = run.result === "error" ? EventTypes.RUN_FAILED : EventTypes.RUN_COMPLETED;
|
|
36
|
+
await this.statsStream.appendTyped(eventType, {
|
|
37
|
+
instanceId: run.instanceId,
|
|
38
|
+
agentName: run.agentName,
|
|
39
|
+
result: run.result,
|
|
40
|
+
exitCode: run.exitCode,
|
|
41
|
+
durationMs: run.durationMs,
|
|
42
|
+
inputTokens: run.inputTokens || 0,
|
|
43
|
+
outputTokens: run.outputTokens || 0,
|
|
44
|
+
cacheReadTokens: run.cacheReadTokens || 0,
|
|
45
|
+
cacheWriteTokens: run.cacheWriteTokens || 0,
|
|
46
|
+
totalTokens: run.totalTokens || 0,
|
|
47
|
+
costUsd: run.costUsd || 0,
|
|
48
|
+
turnCount: run.turnCount || 0,
|
|
49
|
+
errorMessage: run.errorMessage,
|
|
50
|
+
preHookMs: run.preHookMs,
|
|
51
|
+
postHookMs: run.postHookMs,
|
|
52
|
+
}, {
|
|
53
|
+
source: "stats-adapter",
|
|
54
|
+
correlationId: run.instanceId,
|
|
55
|
+
actor: run.agentName,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
recordCallEdge(edge) {
|
|
59
|
+
const callId = ++this.callIdCounter;
|
|
60
|
+
// Record as events asynchronously
|
|
61
|
+
this.recordCallEdgeAsync(edge, callId).catch(error => {
|
|
62
|
+
console.error("Failed to record call edge event:", error);
|
|
63
|
+
});
|
|
64
|
+
return callId;
|
|
65
|
+
}
|
|
66
|
+
async recordCallEdgeAsync(edge, callId) {
|
|
67
|
+
// Create call initiated event
|
|
68
|
+
await this.statsStream.appendTyped(EventTypes.CALL_INITIATED, {
|
|
69
|
+
callId,
|
|
70
|
+
callerAgent: edge.callerAgent,
|
|
71
|
+
callerInstance: edge.callerInstance,
|
|
72
|
+
targetAgent: edge.targetAgent,
|
|
73
|
+
targetInstance: edge.targetInstance,
|
|
74
|
+
depth: edge.depth,
|
|
75
|
+
}, {
|
|
76
|
+
source: "stats-adapter",
|
|
77
|
+
correlationId: edge.callerInstance,
|
|
78
|
+
actor: edge.callerAgent,
|
|
79
|
+
});
|
|
80
|
+
// If the call already has completion data, record that too
|
|
81
|
+
if (edge.durationMs !== undefined) {
|
|
82
|
+
const eventType = edge.status === "error" ? EventTypes.CALL_FAILED : EventTypes.CALL_COMPLETED;
|
|
83
|
+
await this.statsStream.appendTyped(eventType, {
|
|
84
|
+
callId,
|
|
85
|
+
callerAgent: edge.callerAgent,
|
|
86
|
+
callerInstance: edge.callerInstance,
|
|
87
|
+
targetAgent: edge.targetAgent,
|
|
88
|
+
targetInstance: edge.targetInstance,
|
|
89
|
+
depth: edge.depth,
|
|
90
|
+
durationMs: edge.durationMs,
|
|
91
|
+
status: edge.status,
|
|
92
|
+
}, {
|
|
93
|
+
source: "stats-adapter",
|
|
94
|
+
correlationId: edge.callerInstance,
|
|
95
|
+
actor: edge.callerAgent,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
updateCallEdge(id, updates) {
|
|
100
|
+
// This is tricky since we need to find the original call and update it
|
|
101
|
+
// For now, we'll just record a completion event with the call ID
|
|
102
|
+
this.updateCallEdgeAsync(id, updates).catch(error => {
|
|
103
|
+
console.error("Failed to update call edge event:", error);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async updateCallEdgeAsync(id, updates) {
|
|
107
|
+
if (updates.durationMs !== undefined) {
|
|
108
|
+
const eventType = updates.status === "error" ? EventTypes.CALL_FAILED : EventTypes.CALL_COMPLETED;
|
|
109
|
+
await this.statsStream.appendTyped(eventType, {
|
|
110
|
+
callId: id,
|
|
111
|
+
durationMs: updates.durationMs,
|
|
112
|
+
status: updates.status,
|
|
113
|
+
targetInstance: updates.targetInstance,
|
|
114
|
+
}, {
|
|
115
|
+
source: "stats-adapter",
|
|
116
|
+
tags: ["call-update"],
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async queryRunsByAgentPaginated(agent, limit, offset) {
|
|
121
|
+
// Use SQL fallback for complex queries during migration
|
|
122
|
+
return this.persistence.query.sql(`SELECT * FROM runs WHERE agent_name = ? ORDER BY started_at DESC LIMIT ? OFFSET ?`, [agent, limit, offset]);
|
|
123
|
+
}
|
|
124
|
+
async countRunsByAgent(agent) {
|
|
125
|
+
const result = await this.persistence.query.sql(`SELECT COUNT(*) as count FROM runs WHERE agent_name = ?`, [agent]);
|
|
126
|
+
return result[0]?.count || 0;
|
|
127
|
+
}
|
|
128
|
+
async queryRunByInstanceId(instanceId) {
|
|
129
|
+
const result = await this.persistence.query.sql(`SELECT * FROM runs WHERE instance_id = ? LIMIT 1`, [instanceId]);
|
|
130
|
+
return result[0];
|
|
131
|
+
}
|
|
132
|
+
async queryRuns(query = {}) {
|
|
133
|
+
const since = query.since || 0;
|
|
134
|
+
const limit = query.limit || 100;
|
|
135
|
+
if (query.agent) {
|
|
136
|
+
return this.persistence.query.sql(`SELECT * FROM runs WHERE agent_name = ? AND started_at >= ? ORDER BY started_at DESC LIMIT ?`, [query.agent, since, limit]);
|
|
137
|
+
}
|
|
138
|
+
return this.persistence.query.sql(`SELECT * FROM runs WHERE started_at >= ? ORDER BY started_at DESC LIMIT ?`, [since, limit]);
|
|
139
|
+
}
|
|
140
|
+
async queryAgentSummary(query = {}) {
|
|
141
|
+
const since = query.since || 0;
|
|
142
|
+
if (query.agent) {
|
|
143
|
+
return this.persistence.query.sql(`SELECT
|
|
144
|
+
agent_name as agentName,
|
|
145
|
+
COUNT(*) as totalRuns,
|
|
146
|
+
SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
|
|
147
|
+
SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
|
|
148
|
+
AVG(duration_ms) as avgDurationMs,
|
|
149
|
+
SUM(total_tokens) as totalTokens,
|
|
150
|
+
SUM(cost_usd) as totalCost,
|
|
151
|
+
AVG(pre_hook_ms) as avgPreHookMs,
|
|
152
|
+
AVG(post_hook_ms) as avgPostHookMs
|
|
153
|
+
FROM runs
|
|
154
|
+
WHERE agent_name = ? AND started_at >= ?
|
|
155
|
+
GROUP BY agent_name`, [query.agent, since]);
|
|
156
|
+
}
|
|
157
|
+
return this.persistence.query.sql(`SELECT
|
|
158
|
+
agent_name as agentName,
|
|
159
|
+
COUNT(*) as totalRuns,
|
|
160
|
+
SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
|
|
161
|
+
SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
|
|
162
|
+
AVG(duration_ms) as avgDurationMs,
|
|
163
|
+
SUM(total_tokens) as totalTokens,
|
|
164
|
+
SUM(cost_usd) as totalCost,
|
|
165
|
+
AVG(pre_hook_ms) as avgPreHookMs,
|
|
166
|
+
AVG(post_hook_ms) as avgPostHookMs
|
|
167
|
+
FROM runs
|
|
168
|
+
WHERE started_at >= ?
|
|
169
|
+
GROUP BY agent_name
|
|
170
|
+
ORDER BY totalRuns DESC`, [since]);
|
|
171
|
+
}
|
|
172
|
+
async queryGlobalSummary(since = 0) {
|
|
173
|
+
const result = await this.persistence.query.sql(`SELECT
|
|
174
|
+
COUNT(*) as totalRuns,
|
|
175
|
+
SUM(CASE WHEN result IN ('completed', 'rerun') THEN 1 ELSE 0 END) as okRuns,
|
|
176
|
+
SUM(CASE WHEN result = 'error' THEN 1 ELSE 0 END) as errorRuns,
|
|
177
|
+
SUM(total_tokens) as totalTokens,
|
|
178
|
+
SUM(cost_usd) as totalCost
|
|
179
|
+
FROM runs
|
|
180
|
+
WHERE started_at >= ?`, [since]);
|
|
181
|
+
return result[0] || { totalRuns: 0, okRuns: 0, errorRuns: 0, totalTokens: 0, totalCost: 0 };
|
|
182
|
+
}
|
|
183
|
+
async queryCallGraph(query = {}) {
|
|
184
|
+
const since = query.since || 0;
|
|
185
|
+
return this.persistence.query.sql(`SELECT
|
|
186
|
+
caller_agent as callerAgent,
|
|
187
|
+
target_agent as targetAgent,
|
|
188
|
+
COUNT(*) as count,
|
|
189
|
+
AVG(depth) as avgDepth,
|
|
190
|
+
AVG(duration_ms) as avgDurationMs
|
|
191
|
+
FROM call_edges
|
|
192
|
+
WHERE started_at >= ?
|
|
193
|
+
GROUP BY caller_agent, target_agent
|
|
194
|
+
ORDER BY count DESC`, [since]);
|
|
195
|
+
}
|
|
196
|
+
prune(olderThanDays) {
|
|
197
|
+
const threshold = Date.now() - olderThanDays * 24 * 60 * 60 * 1000;
|
|
198
|
+
// This is a synchronous method in the original, so we'll make it async internally
|
|
199
|
+
this.pruneAsync(threshold).catch(error => {
|
|
200
|
+
console.error("Failed to prune stats:", error);
|
|
201
|
+
});
|
|
202
|
+
return { runs: 0, callEdges: 0 }; // Return dummy values for compatibility
|
|
203
|
+
}
|
|
204
|
+
async pruneAsync(threshold) {
|
|
205
|
+
await this.persistence.query.sql("DELETE FROM runs WHERE started_at < ?", [threshold]);
|
|
206
|
+
await this.persistence.query.sql("DELETE FROM call_edges WHERE started_at < ?", [threshold]);
|
|
207
|
+
}
|
|
208
|
+
close() {
|
|
209
|
+
// Don't close the underlying store since it might be shared
|
|
210
|
+
// The actual store will be closed by the main application
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=stats-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-store.js","sourceRoot":"","sources":["../../../../src/shared/persistence/adapters/stats-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory backend for unified persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Used primarily for testing and development. Provides the same interface
|
|
5
|
+
* as SQLite backend but stores everything in memory with optional size limits.
|
|
6
|
+
*/
|
|
7
|
+
import type { PersistenceBackend, Event, EventQuery } from "../index.js";
|
|
8
|
+
export declare class MemoryBackend implements PersistenceBackend {
|
|
9
|
+
private maxSize?;
|
|
10
|
+
private kvStore;
|
|
11
|
+
private events;
|
|
12
|
+
private snapshots;
|
|
13
|
+
private sweepTimer;
|
|
14
|
+
private transactionStack;
|
|
15
|
+
private transactionDepth;
|
|
16
|
+
constructor(maxSize?: number | undefined);
|
|
17
|
+
init(): Promise<void>;
|
|
18
|
+
kvGet<T>(namespace: string, key: string): Promise<T | null>;
|
|
19
|
+
kvSet<T>(namespace: string, key: string, value: T, ttlMs?: number): Promise<void>;
|
|
20
|
+
kvDelete(namespace: string, key: string): Promise<void>;
|
|
21
|
+
kvDeleteAll(namespace: string): Promise<void>;
|
|
22
|
+
kvList<T>(namespace: string): Promise<Array<{
|
|
23
|
+
key: string;
|
|
24
|
+
value: T;
|
|
25
|
+
}>>;
|
|
26
|
+
eventAppend(stream: string, event: Omit<Event, 'id' | 'timestamp'>): Promise<Event>;
|
|
27
|
+
eventReplay(stream: string, query?: EventQuery): AsyncIterable<Event>;
|
|
28
|
+
eventGetSnapshot<T>(stream: string, type: string): Promise<T | null>;
|
|
29
|
+
eventSaveSnapshot<T>(stream: string, type: string, data: T, eventId: string): Promise<void>;
|
|
30
|
+
eventListStreams(): Promise<string[]>;
|
|
31
|
+
querySql<T>(query: string, params?: any[]): Promise<T[]>;
|
|
32
|
+
transactionBegin(): Promise<void>;
|
|
33
|
+
transactionCommit(): Promise<void>;
|
|
34
|
+
transactionRollback(): Promise<void>;
|
|
35
|
+
transactionRun<T>(fn: () => Promise<T>): Promise<T>;
|
|
36
|
+
private sweep;
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/shared/persistence/backends/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBzE,qBAAa,aAAc,YAAW,kBAAkB;IAQ1C,OAAO,CAAC,OAAO,CAAC;IAP5B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,gBAAgB,CAAK;gBAET,OAAO,CAAC,EAAE,MAAM,YAAA;IAE9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe3D,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAsBvE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IA4BlF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;IA4BtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAMpE,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3F,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK5D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAazD,OAAO,CAAC,KAAK;IAgBP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory backend for unified persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Used primarily for testing and development. Provides the same interface
|
|
5
|
+
* as SQLite backend but stores everything in memory with optional size limits.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from "crypto";
|
|
8
|
+
export class MemoryBackend {
|
|
9
|
+
maxSize;
|
|
10
|
+
kvStore = new Map();
|
|
11
|
+
events = new Map(); // stream -> events
|
|
12
|
+
snapshots = new Map(); // stream:type -> snapshot
|
|
13
|
+
sweepTimer;
|
|
14
|
+
transactionStack = [];
|
|
15
|
+
transactionDepth = 0;
|
|
16
|
+
constructor(maxSize) {
|
|
17
|
+
this.maxSize = maxSize;
|
|
18
|
+
}
|
|
19
|
+
async init() {
|
|
20
|
+
// Start periodic cleanup of expired KV entries
|
|
21
|
+
this.sweepTimer = setInterval(() => this.sweep(), 60_000);
|
|
22
|
+
if (this.sweepTimer.unref)
|
|
23
|
+
this.sweepTimer.unref();
|
|
24
|
+
}
|
|
25
|
+
// Key-value operations
|
|
26
|
+
async kvGet(namespace, key) {
|
|
27
|
+
const storeKey = `${namespace}:${key}`;
|
|
28
|
+
const entry = this.kvStore.get(storeKey);
|
|
29
|
+
if (!entry)
|
|
30
|
+
return null;
|
|
31
|
+
// Check expiration
|
|
32
|
+
if (entry.expiresAt && Date.now() >= entry.expiresAt) {
|
|
33
|
+
this.kvStore.delete(storeKey);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return entry.value;
|
|
37
|
+
}
|
|
38
|
+
async kvSet(namespace, key, value, ttlMs) {
|
|
39
|
+
const storeKey = `${namespace}:${key}`;
|
|
40
|
+
const now = Date.now();
|
|
41
|
+
// Check size limits if specified
|
|
42
|
+
if (this.maxSize && this.kvStore.size >= this.maxSize && !this.kvStore.has(storeKey)) {
|
|
43
|
+
throw new Error(`Memory store size limit exceeded (${this.maxSize})`);
|
|
44
|
+
}
|
|
45
|
+
const entry = {
|
|
46
|
+
value,
|
|
47
|
+
expiresAt: ttlMs ? now + ttlMs : undefined,
|
|
48
|
+
createdAt: this.kvStore.has(storeKey) ? this.kvStore.get(storeKey).createdAt : now,
|
|
49
|
+
updatedAt: now,
|
|
50
|
+
};
|
|
51
|
+
this.kvStore.set(storeKey, entry);
|
|
52
|
+
}
|
|
53
|
+
async kvDelete(namespace, key) {
|
|
54
|
+
const storeKey = `${namespace}:${key}`;
|
|
55
|
+
this.kvStore.delete(storeKey);
|
|
56
|
+
}
|
|
57
|
+
async kvDeleteAll(namespace) {
|
|
58
|
+
const prefix = `${namespace}:`;
|
|
59
|
+
for (const key of this.kvStore.keys()) {
|
|
60
|
+
if (key.startsWith(prefix)) {
|
|
61
|
+
this.kvStore.delete(key);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async kvList(namespace) {
|
|
66
|
+
const prefix = `${namespace}:`;
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
const results = [];
|
|
69
|
+
for (const [storeKey, entry] of this.kvStore.entries()) {
|
|
70
|
+
if (!storeKey.startsWith(prefix))
|
|
71
|
+
continue;
|
|
72
|
+
// Skip expired entries
|
|
73
|
+
if (entry.expiresAt && now >= entry.expiresAt) {
|
|
74
|
+
this.kvStore.delete(storeKey);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const key = storeKey.slice(prefix.length);
|
|
78
|
+
results.push({ key, value: entry.value });
|
|
79
|
+
}
|
|
80
|
+
return results.sort((a, b) => a.key.localeCompare(b.key));
|
|
81
|
+
}
|
|
82
|
+
// Event operations
|
|
83
|
+
async eventAppend(stream, event) {
|
|
84
|
+
const id = randomUUID();
|
|
85
|
+
const timestamp = Date.now();
|
|
86
|
+
const fullEvent = {
|
|
87
|
+
id,
|
|
88
|
+
timestamp,
|
|
89
|
+
type: event.type,
|
|
90
|
+
data: event.data,
|
|
91
|
+
metadata: event.metadata,
|
|
92
|
+
version: event.version,
|
|
93
|
+
};
|
|
94
|
+
if (!this.events.has(stream)) {
|
|
95
|
+
this.events.set(stream, []);
|
|
96
|
+
}
|
|
97
|
+
const streamEvents = this.events.get(stream);
|
|
98
|
+
const sequence = streamEvents.length + 1;
|
|
99
|
+
streamEvents.push({
|
|
100
|
+
event: fullEvent,
|
|
101
|
+
sequence,
|
|
102
|
+
});
|
|
103
|
+
return fullEvent;
|
|
104
|
+
}
|
|
105
|
+
async *eventReplay(stream, query) {
|
|
106
|
+
const streamEvents = this.events.get(stream) || [];
|
|
107
|
+
let filteredEvents = streamEvents.map(e => e.event);
|
|
108
|
+
// Apply filters
|
|
109
|
+
if (query?.type) {
|
|
110
|
+
filteredEvents = filteredEvents.filter(e => e.type === query.type);
|
|
111
|
+
}
|
|
112
|
+
if (query?.from) {
|
|
113
|
+
filteredEvents = filteredEvents.filter(e => e.timestamp >= query.from);
|
|
114
|
+
}
|
|
115
|
+
if (query?.to) {
|
|
116
|
+
filteredEvents = filteredEvents.filter(e => e.timestamp < query.to);
|
|
117
|
+
}
|
|
118
|
+
// Apply pagination
|
|
119
|
+
const offset = query?.offset || 0;
|
|
120
|
+
const limit = Math.min(query?.limit || 1000, 10000);
|
|
121
|
+
const paginatedEvents = filteredEvents.slice(offset, offset + limit);
|
|
122
|
+
for (const event of paginatedEvents) {
|
|
123
|
+
yield { ...event }; // Return a copy
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async eventGetSnapshot(stream, type) {
|
|
127
|
+
const key = `${stream}:${type}`;
|
|
128
|
+
const snapshot = this.snapshots.get(key);
|
|
129
|
+
return snapshot ? snapshot.data : null;
|
|
130
|
+
}
|
|
131
|
+
async eventSaveSnapshot(stream, type, data, eventId) {
|
|
132
|
+
const key = `${stream}:${type}`;
|
|
133
|
+
const snapshot = {
|
|
134
|
+
data,
|
|
135
|
+
eventId,
|
|
136
|
+
createdAt: Date.now(),
|
|
137
|
+
};
|
|
138
|
+
this.snapshots.set(key, snapshot);
|
|
139
|
+
}
|
|
140
|
+
async eventListStreams() {
|
|
141
|
+
return Array.from(this.events.keys()).sort();
|
|
142
|
+
}
|
|
143
|
+
// Query operations (limited in memory backend)
|
|
144
|
+
async querySql(query, params = []) {
|
|
145
|
+
throw new Error("SQL queries are not supported in memory backend. Use KV and event operations instead.");
|
|
146
|
+
}
|
|
147
|
+
// Transaction operations (simplified for memory)
|
|
148
|
+
async transactionBegin() {
|
|
149
|
+
this.transactionDepth++;
|
|
150
|
+
if (this.transactionDepth === 1) {
|
|
151
|
+
// Take snapshots of current state
|
|
152
|
+
const kvSnapshot = new Map(this.kvStore);
|
|
153
|
+
const eventsSnapshot = new Map(Array.from(this.events.entries()).map(([k, v]) => [k, [...v]]));
|
|
154
|
+
const snapshotsSnapshot = new Map(this.snapshots);
|
|
155
|
+
this.transactionStack.push(() => {
|
|
156
|
+
this.kvStore = kvSnapshot;
|
|
157
|
+
this.events = eventsSnapshot;
|
|
158
|
+
this.snapshots = snapshotsSnapshot;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async transactionCommit() {
|
|
163
|
+
this.transactionDepth--;
|
|
164
|
+
if (this.transactionDepth === 0) {
|
|
165
|
+
this.transactionStack.pop(); // Discard rollback function
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async transactionRollback() {
|
|
169
|
+
this.transactionDepth--;
|
|
170
|
+
if (this.transactionDepth === 0) {
|
|
171
|
+
const rollback = this.transactionStack.pop();
|
|
172
|
+
if (rollback) {
|
|
173
|
+
rollback();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async transactionRun(fn) {
|
|
178
|
+
await this.transactionBegin();
|
|
179
|
+
try {
|
|
180
|
+
const result = await fn();
|
|
181
|
+
await this.transactionCommit();
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
await this.transactionRollback();
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Cleanup and maintenance
|
|
190
|
+
sweep() {
|
|
191
|
+
const now = Date.now();
|
|
192
|
+
let cleaned = 0;
|
|
193
|
+
for (const [key, entry] of this.kvStore.entries()) {
|
|
194
|
+
if (entry.expiresAt && now >= entry.expiresAt) {
|
|
195
|
+
this.kvStore.delete(key);
|
|
196
|
+
cleaned++;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (cleaned > 0) {
|
|
200
|
+
console.debug(`Cleaned up ${cleaned} expired KV entries`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async close() {
|
|
204
|
+
if (this.sweepTimer) {
|
|
205
|
+
clearInterval(this.sweepTimer);
|
|
206
|
+
this.sweepTimer = undefined;
|
|
207
|
+
}
|
|
208
|
+
this.kvStore.clear();
|
|
209
|
+
this.events.clear();
|
|
210
|
+
this.snapshots.clear();
|
|
211
|
+
this.transactionStack.length = 0;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/shared/persistence/backends/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite backend for unified persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Implements the PersistenceBackend interface with SQLite storage,
|
|
5
|
+
* combining key-value operations, event sourcing, and query capabilities
|
|
6
|
+
* in a single database with optimized indexes and transaction support.
|
|
7
|
+
*/
|
|
8
|
+
import type { PersistenceBackend, Event, EventQuery } from "../index.js";
|
|
9
|
+
export declare class SqliteBackend implements PersistenceBackend {
|
|
10
|
+
private dbPath;
|
|
11
|
+
private db;
|
|
12
|
+
private stmts;
|
|
13
|
+
private sweepTimer;
|
|
14
|
+
private transactionDepth;
|
|
15
|
+
constructor(dbPath: string);
|
|
16
|
+
init(): Promise<void>;
|
|
17
|
+
kvGet<T>(namespace: string, key: string): Promise<T | null>;
|
|
18
|
+
kvSet<T>(namespace: string, key: string, value: T, ttlMs?: number): Promise<void>;
|
|
19
|
+
kvDelete(namespace: string, key: string): Promise<void>;
|
|
20
|
+
kvDeleteAll(namespace: string): Promise<void>;
|
|
21
|
+
kvList<T>(namespace: string): Promise<Array<{
|
|
22
|
+
key: string;
|
|
23
|
+
value: T;
|
|
24
|
+
}>>;
|
|
25
|
+
eventAppend(stream: string, event: Omit<Event, 'id' | 'timestamp'>): Promise<Event>;
|
|
26
|
+
eventReplay(stream: string, query?: EventQuery): AsyncIterable<Event>;
|
|
27
|
+
eventGetSnapshot<T>(stream: string, type: string): Promise<T | null>;
|
|
28
|
+
eventSaveSnapshot<T>(stream: string, type: string, data: T, eventId: string): Promise<void>;
|
|
29
|
+
eventListStreams(): Promise<string[]>;
|
|
30
|
+
querySql<T>(query: string, params?: any[]): Promise<T[]>;
|
|
31
|
+
transactionBegin(): Promise<void>;
|
|
32
|
+
transactionCommit(): Promise<void>;
|
|
33
|
+
transactionRollback(): Promise<void>;
|
|
34
|
+
transactionRun<T>(fn: () => Promise<T>): Promise<T>;
|
|
35
|
+
private sweep;
|
|
36
|
+
close(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/shared/persistence/backends/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,qBAAa,aAAc,YAAW,kBAAkB;IAM1C,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,EAAE,CAAgC;IAC1C,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,gBAAgB,CAAK;gBAET,MAAM,EAAE,MAAM;IAW5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8GrB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAK3D,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAMvE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAyBlF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;IA+BtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKpE,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3F,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAU5D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAazD,OAAO,CAAC,KAAK;IAQP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
|