@sema-agent/server 1.253.0 → 1.255.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/capabilities/scenarios.d.ts.map +1 -1
- package/dist/capabilities/scenarios.js +3 -0
- package/dist/capabilities/scenarios.js.map +1 -1
- package/dist/fleet/subagent-tail-bus.d.ts.map +1 -1
- package/dist/fleet/subagent-tail-bus.js.map +1 -1
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +45 -12
- package/dist/http/server.js.map +1 -1
- package/dist/main.js +7 -0
- package/dist/main.js.map +1 -1
- package/dist/plugins/caching-session-store.d.ts +1 -0
- package/dist/plugins/caching-session-store.d.ts.map +1 -1
- package/dist/plugins/caching-session-store.js +5 -0
- package/dist/plugins/caching-session-store.js.map +1 -1
- package/dist/plugins/mailbox-store-sql.d.ts +45 -0
- package/dist/plugins/mailbox-store-sql.d.ts.map +1 -0
- package/dist/plugins/mailbox-store-sql.js +292 -0
- package/dist/plugins/mailbox-store-sql.js.map +1 -0
- package/dist/plugins/roster-store-sql.d.ts.map +1 -1
- package/dist/plugins/roster-store-sql.js +14 -5
- package/dist/plugins/roster-store-sql.js.map +1 -1
- package/dist/plugins/task-list-store-sql.d.ts +10 -0
- package/dist/plugins/task-list-store-sql.d.ts.map +1 -0
- package/dist/plugins/task-list-store-sql.js +218 -0
- package/dist/plugins/task-list-store-sql.js.map +1 -0
- package/dist/runs.d.ts +4 -1
- package/dist/runs.d.ts.map +1 -1
- package/dist/runs.js +5 -5
- package/dist/runs.js.map +1 -1
- package/dist/spec-fields.d.ts +3 -0
- package/dist/spec-fields.d.ts.map +1 -1
- package/dist/spec-fields.js +8 -0
- package/dist/spec-fields.js.map +1 -1
- package/dist/task-mcp.d.ts.map +1 -1
- package/dist/task-mcp.js +17 -2
- package/dist/task-mcp.js.map +1 -1
- package/dist/task-settings.d.ts.map +1 -1
- package/dist/task-settings.js +2 -2
- package/dist/task-settings.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caching-session-store.d.ts","sourceRoot":"","sources":["../../src/plugins/caching-session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAoBD,qBAAa,mBAAoB,YAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"caching-session-store.d.ts","sourceRoot":"","sources":["../../src/plugins/caching-session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ export class CachingSessionStore {
|
|
|
17
17
|
exportEntries;
|
|
18
18
|
listEntryIds;
|
|
19
19
|
exportEntriesStream;
|
|
20
|
+
forget;
|
|
20
21
|
importEntries;
|
|
21
22
|
replaceEntries;
|
|
22
23
|
constructor(inner, opts) {
|
|
@@ -47,6 +48,10 @@ export class CachingSessionStore {
|
|
|
47
48
|
this.listEntryIds = ownerAware.listEntryIds.bind(inner);
|
|
48
49
|
if (ownerAware.exportEntriesStream)
|
|
49
50
|
this.exportEntriesStream = ownerAware.exportEntriesStream.bind(inner);
|
|
51
|
+
this.forget = (sessionId) => {
|
|
52
|
+
this.evict(sessionId);
|
|
53
|
+
return inner.forget?.(sessionId);
|
|
54
|
+
};
|
|
50
55
|
if (ownerAware.importEntries) {
|
|
51
56
|
const imp = ownerAware.importEntries.bind(inner);
|
|
52
57
|
this.importEntries = async (sessionId, owner, entries) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caching-session-store.js","sourceRoot":"","sources":["../../src/plugins/caching-session-store.ts"],"names":[],"mappings":"AAmCA,MAAM,OAAO,mBAAmB;
|
|
1
|
+
{"version":3,"file":"caching-session-store.js","sourceRoot":"","sources":["../../src/plugins/caching-session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Pool as MySqlPool } from "mysql2/promise";
|
|
2
|
+
import type { Pool as PgPool } from "pg";
|
|
3
|
+
import type { MailboxLease, MailboxStore } from "@sema-agent/core";
|
|
4
|
+
export declare const MAILBOX_TABLE = "mailboxes";
|
|
5
|
+
export declare const MAILBOX_MSG_TABLE = "mailbox_messages";
|
|
6
|
+
export declare function ensureTiDBMailboxSchema(pool: MySqlPool): Promise<void>;
|
|
7
|
+
export declare function ensurePgMailboxSchema(q: (text: string, params?: unknown[]) => Promise<unknown>): Promise<void>;
|
|
8
|
+
export declare class TiDBMailboxStore implements MailboxStore {
|
|
9
|
+
private readonly pool;
|
|
10
|
+
constructor(pool: MySqlPool);
|
|
11
|
+
private tx;
|
|
12
|
+
append(scope: string, handle: string, msg: {
|
|
13
|
+
from?: string;
|
|
14
|
+
content: string;
|
|
15
|
+
sentAt: number;
|
|
16
|
+
}): Promise<number>;
|
|
17
|
+
claimLease(scope: string, handle: string, owner: string, ttlMs: number, now?: number): Promise<MailboxLease | null>;
|
|
18
|
+
ack(scope: string, handle: string, upToSeq: number): Promise<void>;
|
|
19
|
+
releaseLease(scope: string, handle: string, owner: string): Promise<void>;
|
|
20
|
+
peekCount(scope: string, handle: string): Promise<number>;
|
|
21
|
+
drop(scope: string, handle: string): Promise<void>;
|
|
22
|
+
reap(scope: string, now: number, opts?: {
|
|
23
|
+
maxAgeMs?: number;
|
|
24
|
+
}): Promise<number>;
|
|
25
|
+
}
|
|
26
|
+
export declare class PgMailboxStore implements MailboxStore {
|
|
27
|
+
private readonly pool;
|
|
28
|
+
constructor(pool: PgPool);
|
|
29
|
+
private tx;
|
|
30
|
+
private assertIdentity;
|
|
31
|
+
append(scope: string, handle: string, msg: {
|
|
32
|
+
from?: string;
|
|
33
|
+
content: string;
|
|
34
|
+
sentAt: number;
|
|
35
|
+
}): Promise<number>;
|
|
36
|
+
claimLease(scope: string, handle: string, owner: string, ttlMs: number, now?: number): Promise<MailboxLease | null>;
|
|
37
|
+
ack(scope: string, handle: string, upToSeq: number): Promise<void>;
|
|
38
|
+
releaseLease(scope: string, handle: string, owner: string): Promise<void>;
|
|
39
|
+
peekCount(scope: string, handle: string): Promise<number>;
|
|
40
|
+
drop(scope: string, handle: string): Promise<void>;
|
|
41
|
+
reap(scope: string, now: number, opts?: {
|
|
42
|
+
maxAgeMs?: number;
|
|
43
|
+
}): Promise<number>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=mailbox-store-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox-store-sql.d.ts","sourceRoot":"","sources":["../../src/plugins/mailbox-store-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { pgHasUnstorable, pgSanitizeText, PgUnstorableError } from "./pg-safe-json.js";
|
|
2
|
+
export const MAILBOX_TABLE = "mailboxes";
|
|
3
|
+
export const MAILBOX_MSG_TABLE = "mailbox_messages";
|
|
4
|
+
function assertScope(scope) {
|
|
5
|
+
if (scope === undefined || scope === "") {
|
|
6
|
+
throw new Error("MailboxStore.append: refusing a message without a scope");
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function assertKeyBytes(what, v) {
|
|
10
|
+
if (Buffer.byteLength(v, "utf8") > 190) {
|
|
11
|
+
throw new Error(`MailboxStore: ${what} exceeds the 190-byte key column (refusing — a truncated key would desync from its byte-exact lookups)`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function bufToStr(v) {
|
|
15
|
+
return Buffer.isBuffer(v) ? v.toString("utf8") : String(v);
|
|
16
|
+
}
|
|
17
|
+
function rowToMessage(r) {
|
|
18
|
+
return {
|
|
19
|
+
seq: Number(r.seq),
|
|
20
|
+
...(r.from_id !== null && r.from_id !== undefined ? { from: bufToStr(r.from_id) } : {}),
|
|
21
|
+
content: String(r.content),
|
|
22
|
+
sentAt: Number(r.sent_at_ms),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export async function ensureTiDBMailboxSchema(pool) {
|
|
26
|
+
await pool.query(`CREATE TABLE IF NOT EXISTS ${MAILBOX_TABLE} (
|
|
27
|
+
scope_key VARBINARY(190) NOT NULL,
|
|
28
|
+
handle VARBINARY(190) NOT NULL,
|
|
29
|
+
scope VARCHAR(190) NOT NULL,
|
|
30
|
+
next_seq BIGINT NOT NULL,
|
|
31
|
+
lease_owner VARBINARY(190) NULL,
|
|
32
|
+
lease_expires_at_ms BIGINT NULL,
|
|
33
|
+
lease_max_seq BIGINT NULL,
|
|
34
|
+
PRIMARY KEY (scope_key, handle)
|
|
35
|
+
) COLLATE utf8mb4_bin`);
|
|
36
|
+
await pool.query(`CREATE TABLE IF NOT EXISTS ${MAILBOX_MSG_TABLE} (
|
|
37
|
+
scope_key VARBINARY(190) NOT NULL,
|
|
38
|
+
handle VARBINARY(190) NOT NULL,
|
|
39
|
+
seq BIGINT NOT NULL,
|
|
40
|
+
from_id VARBINARY(255) NULL,
|
|
41
|
+
content LONGTEXT NOT NULL,
|
|
42
|
+
sent_at_ms BIGINT NOT NULL,
|
|
43
|
+
PRIMARY KEY (scope_key, handle, seq),
|
|
44
|
+
KEY idx_mbm_sent (scope_key, handle, sent_at_ms)
|
|
45
|
+
) COLLATE utf8mb4_bin`);
|
|
46
|
+
}
|
|
47
|
+
export async function ensurePgMailboxSchema(q) {
|
|
48
|
+
await q(`CREATE TABLE IF NOT EXISTS ${MAILBOX_TABLE} (
|
|
49
|
+
scope_key VARCHAR(190) COLLATE "C" NOT NULL,
|
|
50
|
+
handle VARCHAR(190) COLLATE "C" NOT NULL,
|
|
51
|
+
scope VARCHAR(190) NOT NULL,
|
|
52
|
+
next_seq BIGINT NOT NULL,
|
|
53
|
+
lease_owner VARCHAR(190) COLLATE "C",
|
|
54
|
+
lease_expires_at_ms BIGINT,
|
|
55
|
+
lease_max_seq BIGINT,
|
|
56
|
+
PRIMARY KEY (scope_key, handle)
|
|
57
|
+
)`);
|
|
58
|
+
await q(`CREATE TABLE IF NOT EXISTS ${MAILBOX_MSG_TABLE} (
|
|
59
|
+
scope_key VARCHAR(190) COLLATE "C" NOT NULL,
|
|
60
|
+
handle VARCHAR(190) COLLATE "C" NOT NULL,
|
|
61
|
+
seq BIGINT NOT NULL,
|
|
62
|
+
from_id VARCHAR(255) COLLATE "C",
|
|
63
|
+
content TEXT NOT NULL,
|
|
64
|
+
sent_at_ms BIGINT NOT NULL,
|
|
65
|
+
PRIMARY KEY (scope_key, handle, seq)
|
|
66
|
+
)`);
|
|
67
|
+
await q(`CREATE INDEX IF NOT EXISTS idx_mbm_sent ON ${MAILBOX_MSG_TABLE} (scope_key, handle, sent_at_ms)`);
|
|
68
|
+
}
|
|
69
|
+
export class TiDBMailboxStore {
|
|
70
|
+
pool;
|
|
71
|
+
constructor(pool) {
|
|
72
|
+
this.pool = pool;
|
|
73
|
+
}
|
|
74
|
+
async tx(fn) {
|
|
75
|
+
const c = await this.pool.getConnection();
|
|
76
|
+
try {
|
|
77
|
+
await c.beginTransaction();
|
|
78
|
+
const out = await fn(c);
|
|
79
|
+
await c.commit();
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
await c.rollback().catch(() => { });
|
|
84
|
+
throw e;
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
c.release();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async append(scope, handle, msg) {
|
|
91
|
+
assertScope(scope);
|
|
92
|
+
assertKeyBytes("scope", scope);
|
|
93
|
+
assertKeyBytes("handle", handle);
|
|
94
|
+
return this.tx(async (c) => {
|
|
95
|
+
await c.query(`INSERT IGNORE INTO ${MAILBOX_TABLE} (scope_key, handle, scope, next_seq) VALUES (?, ?, ?, 1)`, [scope, handle, scope]);
|
|
96
|
+
let [rows] = (await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ? FOR UPDATE`, [scope, handle]));
|
|
97
|
+
if (rows.length === 0) {
|
|
98
|
+
await c.query(`INSERT IGNORE INTO ${MAILBOX_TABLE} (scope_key, handle, scope, next_seq) VALUES (?, ?, ?, 1)`, [scope, handle, scope]);
|
|
99
|
+
[rows] = (await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ? FOR UPDATE`, [scope, handle]));
|
|
100
|
+
}
|
|
101
|
+
const seq = Number(rows[0].next_seq);
|
|
102
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET next_seq = ? WHERE scope_key = ? AND handle = ?`, [seq + 1, scope, handle]);
|
|
103
|
+
await c.query(`INSERT INTO ${MAILBOX_MSG_TABLE} (scope_key, handle, seq, from_id, content, sent_at_ms) VALUES (?, ?, ?, ?, ?, ?)`, [scope, handle, seq, msg.from ?? null, msg.content, msg.sentAt]);
|
|
104
|
+
return seq;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async claimLease(scope, handle, owner, ttlMs, now = Date.now()) {
|
|
108
|
+
return this.tx(async (c) => {
|
|
109
|
+
const [boxes] = (await c.query(`SELECT lease_owner, lease_expires_at_ms FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ? FOR UPDATE`, [scope, handle]));
|
|
110
|
+
if (boxes.length === 0)
|
|
111
|
+
return null;
|
|
112
|
+
const box = boxes[0];
|
|
113
|
+
if (box.lease_owner !== null &&
|
|
114
|
+
Number(box.lease_expires_at_ms) > now &&
|
|
115
|
+
bufToStr(box.lease_owner) !== owner) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
const [msgs] = (await c.query(`SELECT seq, from_id, content, sent_at_ms FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ? ORDER BY seq FOR UPDATE`, [scope, handle]));
|
|
119
|
+
if (msgs.length === 0)
|
|
120
|
+
return null;
|
|
121
|
+
const maxSeq = Number(msgs[msgs.length - 1].seq);
|
|
122
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = ?, lease_expires_at_ms = ?, lease_max_seq = ? WHERE scope_key = ? AND handle = ?`, [owner, now + ttlMs, maxSeq, scope, handle]);
|
|
123
|
+
return { messages: msgs.map(rowToMessage), maxSeq };
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
async ack(scope, handle, upToSeq) {
|
|
127
|
+
await this.tx(async (c) => {
|
|
128
|
+
await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ? FOR UPDATE`, [scope, handle]);
|
|
129
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ? AND seq <= ?`, [scope, handle, upToSeq]);
|
|
130
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = NULL, lease_expires_at_ms = NULL, lease_max_seq = NULL
|
|
131
|
+
WHERE scope_key = ? AND handle = ? AND lease_max_seq IS NOT NULL AND lease_max_seq <= ?`, [scope, handle, upToSeq]);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async releaseLease(scope, handle, owner) {
|
|
135
|
+
await this.pool.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = NULL, lease_expires_at_ms = NULL, lease_max_seq = NULL
|
|
136
|
+
WHERE scope_key = ? AND handle = ? AND lease_owner = ?`, [scope, handle, owner]);
|
|
137
|
+
}
|
|
138
|
+
async peekCount(scope, handle) {
|
|
139
|
+
const [rows] = (await this.pool.query(`SELECT COUNT(*) AS n FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ?`, [scope, handle]));
|
|
140
|
+
return Number(rows[0].n);
|
|
141
|
+
}
|
|
142
|
+
async drop(scope, handle) {
|
|
143
|
+
await this.tx(async (c) => {
|
|
144
|
+
await c.query(`DELETE FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ?`, [scope, handle]);
|
|
145
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ?`, [scope, handle]);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async reap(scope, now, opts) {
|
|
149
|
+
if (opts?.maxAgeMs === undefined)
|
|
150
|
+
return 0;
|
|
151
|
+
const cutoff = now - opts.maxAgeMs;
|
|
152
|
+
const [cands] = (await this.pool.query(`SELECT handle FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? GROUP BY handle HAVING MAX(sent_at_ms) < ?`, [scope, cutoff]));
|
|
153
|
+
if (cands.length === 0)
|
|
154
|
+
return 0;
|
|
155
|
+
const handles = cands.map((r) => bufToStr(r.handle));
|
|
156
|
+
return this.tx(async (c) => {
|
|
157
|
+
let dropped = 0;
|
|
158
|
+
for (const h of handles) {
|
|
159
|
+
const [box] = (await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ? FOR UPDATE`, [scope, h]));
|
|
160
|
+
if (box.length === 0)
|
|
161
|
+
continue;
|
|
162
|
+
const [newest] = (await c.query(`SELECT sent_at_ms FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ? ORDER BY sent_at_ms DESC LIMIT 1 FOR UPDATE`, [scope, h]));
|
|
163
|
+
if (newest.length === 0 || Number(newest[0].sent_at_ms) >= cutoff)
|
|
164
|
+
continue;
|
|
165
|
+
await c.query(`DELETE FROM ${MAILBOX_TABLE} WHERE scope_key = ? AND handle = ?`, [scope, h]);
|
|
166
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = ? AND handle = ?`, [scope, h]);
|
|
167
|
+
dropped++;
|
|
168
|
+
}
|
|
169
|
+
return dropped;
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export class PgMailboxStore {
|
|
174
|
+
pool;
|
|
175
|
+
constructor(pool) {
|
|
176
|
+
this.pool = pool;
|
|
177
|
+
}
|
|
178
|
+
async tx(fn) {
|
|
179
|
+
const c = await this.pool.connect();
|
|
180
|
+
try {
|
|
181
|
+
await c.query("BEGIN");
|
|
182
|
+
const out = await fn(c);
|
|
183
|
+
await c.query("COMMIT");
|
|
184
|
+
return out;
|
|
185
|
+
}
|
|
186
|
+
catch (e) {
|
|
187
|
+
await c.query("ROLLBACK").catch(() => { });
|
|
188
|
+
throw e;
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
c.release();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
assertIdentity(what, v) {
|
|
195
|
+
if (v !== undefined && pgHasUnstorable(v))
|
|
196
|
+
throw new PgUnstorableError(`mailbox ${what}`);
|
|
197
|
+
}
|
|
198
|
+
async append(scope, handle, msg) {
|
|
199
|
+
assertScope(scope);
|
|
200
|
+
this.assertIdentity("scope", scope);
|
|
201
|
+
this.assertIdentity("handle", handle);
|
|
202
|
+
this.assertIdentity("from", msg.from);
|
|
203
|
+
const content = pgSanitizeText(msg.content);
|
|
204
|
+
assertKeyBytes("scope", scope);
|
|
205
|
+
assertKeyBytes("handle", handle);
|
|
206
|
+
return this.tx(async (c) => {
|
|
207
|
+
await c.query(`INSERT INTO ${MAILBOX_TABLE} (scope_key, handle, scope, next_seq) VALUES ($1, $2, $3, 1) ON CONFLICT (scope_key, handle) DO NOTHING`, [
|
|
208
|
+
scope,
|
|
209
|
+
handle,
|
|
210
|
+
scope,
|
|
211
|
+
]);
|
|
212
|
+
let { rows } = await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2 FOR UPDATE`, [scope, handle]);
|
|
213
|
+
if (rows.length === 0) {
|
|
214
|
+
await c.query(`INSERT INTO ${MAILBOX_TABLE} (scope_key, handle, scope, next_seq) VALUES ($1, $2, $3, 1) ON CONFLICT (scope_key, handle) DO NOTHING`, [
|
|
215
|
+
scope,
|
|
216
|
+
handle,
|
|
217
|
+
scope,
|
|
218
|
+
]);
|
|
219
|
+
({ rows } = await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2 FOR UPDATE`, [scope, handle]));
|
|
220
|
+
}
|
|
221
|
+
const seq = Number(rows[0].next_seq);
|
|
222
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET next_seq = $1 WHERE scope_key = $2 AND handle = $3`, [seq + 1, scope, handle]);
|
|
223
|
+
await c.query(`INSERT INTO ${MAILBOX_MSG_TABLE} (scope_key, handle, seq, from_id, content, sent_at_ms) VALUES ($1, $2, $3, $4, $5, $6)`, [scope, handle, seq, msg.from ?? null, content, msg.sentAt]);
|
|
224
|
+
return seq;
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
async claimLease(scope, handle, owner, ttlMs, now = Date.now()) {
|
|
228
|
+
this.assertIdentity("owner", owner);
|
|
229
|
+
return this.tx(async (c) => {
|
|
230
|
+
const { rows: boxes } = await c.query(`SELECT lease_owner, lease_expires_at_ms FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2 FOR UPDATE`, [scope, handle]);
|
|
231
|
+
if (boxes.length === 0)
|
|
232
|
+
return null;
|
|
233
|
+
const box = boxes[0];
|
|
234
|
+
if (box.lease_owner !== null && Number(box.lease_expires_at_ms) > now && String(box.lease_owner) !== owner)
|
|
235
|
+
return null;
|
|
236
|
+
const { rows: msgs } = await c.query(`SELECT seq, from_id, content, sent_at_ms FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2 ORDER BY seq FOR UPDATE`, [scope, handle]);
|
|
237
|
+
if (msgs.length === 0)
|
|
238
|
+
return null;
|
|
239
|
+
const maxSeq = Number(msgs[msgs.length - 1].seq);
|
|
240
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = $1, lease_expires_at_ms = $2, lease_max_seq = $3 WHERE scope_key = $4 AND handle = $5`, [owner, now + ttlMs, maxSeq, scope, handle]);
|
|
241
|
+
return { messages: msgs.map((r) => rowToMessage(r)), maxSeq };
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
async ack(scope, handle, upToSeq) {
|
|
245
|
+
await this.tx(async (c) => {
|
|
246
|
+
await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2 FOR UPDATE`, [scope, handle]);
|
|
247
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2 AND seq <= $3`, [scope, handle, upToSeq]);
|
|
248
|
+
await c.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = NULL, lease_expires_at_ms = NULL, lease_max_seq = NULL
|
|
249
|
+
WHERE scope_key = $1 AND handle = $2 AND lease_max_seq IS NOT NULL AND lease_max_seq <= $3`, [scope, handle, upToSeq]);
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
async releaseLease(scope, handle, owner) {
|
|
253
|
+
this.assertIdentity("owner", owner);
|
|
254
|
+
await this.pool.query(`UPDATE ${MAILBOX_TABLE} SET lease_owner = NULL, lease_expires_at_ms = NULL, lease_max_seq = NULL
|
|
255
|
+
WHERE scope_key = $1 AND handle = $2 AND lease_owner = $3`, [scope, handle, owner]);
|
|
256
|
+
}
|
|
257
|
+
async peekCount(scope, handle) {
|
|
258
|
+
const { rows } = await this.pool.query(`SELECT COUNT(*) AS n FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2`, [scope, handle]);
|
|
259
|
+
return Number(rows[0].n);
|
|
260
|
+
}
|
|
261
|
+
async drop(scope, handle) {
|
|
262
|
+
await this.tx(async (c) => {
|
|
263
|
+
await c.query(`DELETE FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2`, [scope, handle]);
|
|
264
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2`, [scope, handle]);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
async reap(scope, now, opts) {
|
|
268
|
+
if (opts?.maxAgeMs === undefined)
|
|
269
|
+
return 0;
|
|
270
|
+
const cutoff = now - opts.maxAgeMs;
|
|
271
|
+
const { rows: cands } = await this.pool.query(`SELECT handle FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 GROUP BY handle HAVING MAX(sent_at_ms) < $2`, [scope, cutoff]);
|
|
272
|
+
if (cands.length === 0)
|
|
273
|
+
return 0;
|
|
274
|
+
const handles = cands.map((r) => String(r.handle));
|
|
275
|
+
return this.tx(async (c) => {
|
|
276
|
+
let dropped = 0;
|
|
277
|
+
for (const h of handles) {
|
|
278
|
+
const { rows: box } = await c.query(`SELECT next_seq FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2 FOR UPDATE`, [scope, h]);
|
|
279
|
+
if (box.length === 0)
|
|
280
|
+
continue;
|
|
281
|
+
const { rows: newest } = await c.query(`SELECT sent_at_ms FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2 ORDER BY sent_at_ms DESC LIMIT 1 FOR UPDATE`, [scope, h]);
|
|
282
|
+
if (newest.length === 0 || Number(newest[0].sent_at_ms) >= cutoff)
|
|
283
|
+
continue;
|
|
284
|
+
await c.query(`DELETE FROM ${MAILBOX_TABLE} WHERE scope_key = $1 AND handle = $2`, [scope, h]);
|
|
285
|
+
await c.query(`DELETE FROM ${MAILBOX_MSG_TABLE} WHERE scope_key = $1 AND handle = $2`, [scope, h]);
|
|
286
|
+
dropped++;
|
|
287
|
+
}
|
|
288
|
+
return dropped;
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=mailbox-store-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox-store-sql.js","sourceRoot":"","sources":["../../src/plugins/mailbox-store-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-store-sql.d.ts","sourceRoot":"","sources":["../../src/plugins/roster-store-sql.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1F,KAAK,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,eAAO,MAAM,uBAAuB,2BAAqB,CAAC;AAE1D,eAAO,MAAM,YAAY,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"roster-store-sql.d.ts","sourceRoot":"","sources":["../../src/plugins/roster-store-sql.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1F,KAAK,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,eAAO,MAAM,uBAAuB,2BAAqB,CAAC;AAE1D,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAoC3C,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CtE;AAED,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BtE;AAsBD,qBAAa,eAAgB,YAAW,WAAW;IAE/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,IAAI,EACV,KAAK,GAAE,MAAM,MAAyB;IAGnD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAU7E,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK9B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIvD;AAED,qBAAa,aAAc,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,CAAC,EAAE,SAAS,EACZ,KAAK,GAAE,MAAM,MAAyB;IAGnD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAU7E,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK9B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIvD"}
|
|
@@ -11,12 +11,13 @@ function rowToEntry(r) {
|
|
|
11
11
|
scope: String(r.scope),
|
|
12
12
|
...(r.session_scoped !== null && r.session_scoped !== undefined ? { sessionScoped: Boolean(Number(r.session_scoped)) || r.session_scoped === true } : {}),
|
|
13
13
|
...(r.root_session_id !== null && r.root_session_id !== undefined ? { rootSessionId: String(r.root_session_id) } : {}),
|
|
14
|
+
...(r.model !== null && r.model !== undefined ? { model: String(r.model) } : {}),
|
|
14
15
|
createdAt: Number(r.created_at_ms),
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
const RESOLVE_WHERE_TIDB = `name_key = ? AND BINARY scope = ? AND (BINARY owner = ? OR (session_scoped = 1 AND ? IS NOT NULL AND BINARY owner = ?))`;
|
|
18
19
|
const RESOLVE_WHERE_PG = `name_key = $1 AND scope = $2 AND (owner = $3 OR (session_scoped = TRUE AND $4::varchar IS NOT NULL AND owner = $5))`;
|
|
19
|
-
const COLS = "name, agent_id, session_id, tool_use_id, owner, scope, session_scoped, root_session_id, created_at_ms";
|
|
20
|
+
const COLS = "name, agent_id, session_id, tool_use_id, owner, scope, session_scoped, root_session_id, model, created_at_ms";
|
|
20
21
|
export async function ensureTiDBRosterSchema(pool) {
|
|
21
22
|
await pool.query(`CREATE TABLE IF NOT EXISTS ${ROSTER_TABLE} (
|
|
22
23
|
name_key VARBINARY(190) NOT NULL,
|
|
@@ -30,6 +31,7 @@ export async function ensureTiDBRosterSchema(pool) {
|
|
|
30
31
|
scope VARCHAR(190) NOT NULL,
|
|
31
32
|
session_scoped TINYINT NULL,
|
|
32
33
|
root_session_id VARCHAR(190) NULL,
|
|
34
|
+
model VARCHAR(190) NULL,
|
|
33
35
|
created_at_ms BIGINT NOT NULL,
|
|
34
36
|
recorded_at_ms BIGINT NOT NULL,
|
|
35
37
|
PRIMARY KEY (name_key, owner_key, scope_key),
|
|
@@ -42,6 +44,10 @@ export async function ensureTiDBRosterSchema(pool) {
|
|
|
42
44
|
if (rootCol.length === 0) {
|
|
43
45
|
await pool.query(`ALTER TABLE ${ROSTER_TABLE} ADD COLUMN root_session_id VARCHAR(190) NULL AFTER session_scoped`);
|
|
44
46
|
}
|
|
47
|
+
const [modelCol] = (await pool.query(`SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = 'model'`, [ROSTER_TABLE]));
|
|
48
|
+
if (modelCol.length === 0) {
|
|
49
|
+
await pool.query(`ALTER TABLE ${ROSTER_TABLE} ADD COLUMN model VARCHAR(190) NULL AFTER root_session_id`);
|
|
50
|
+
}
|
|
45
51
|
}
|
|
46
52
|
export async function ensurePgRosterSchema(q) {
|
|
47
53
|
await q(`CREATE TABLE IF NOT EXISTS ${ROSTER_TABLE} (
|
|
@@ -56,6 +62,7 @@ export async function ensurePgRosterSchema(q) {
|
|
|
56
62
|
scope VARCHAR(190) COLLATE "C" NOT NULL,
|
|
57
63
|
session_scoped BOOLEAN,
|
|
58
64
|
root_session_id VARCHAR(190),
|
|
65
|
+
model VARCHAR(190),
|
|
59
66
|
created_at_ms BIGINT NOT NULL,
|
|
60
67
|
recorded_at_ms BIGINT NOT NULL,
|
|
61
68
|
PRIMARY KEY (name_key, owner_key, scope_key)
|
|
@@ -65,6 +72,7 @@ export async function ensurePgRosterSchema(q) {
|
|
|
65
72
|
await q(`ALTER TABLE ${ROSTER_TABLE} ALTER COLUMN owner SET NOT NULL`);
|
|
66
73
|
await q(`ALTER TABLE ${ROSTER_TABLE} ALTER COLUMN scope SET NOT NULL`);
|
|
67
74
|
await q(`ALTER TABLE ${ROSTER_TABLE} ADD COLUMN IF NOT EXISTS root_session_id VARCHAR(190)`);
|
|
75
|
+
await q(`ALTER TABLE ${ROSTER_TABLE} ADD COLUMN IF NOT EXISTS model VARCHAR(190)`);
|
|
68
76
|
}
|
|
69
77
|
function upsertParams(entry, now) {
|
|
70
78
|
return [
|
|
@@ -79,6 +87,7 @@ function upsertParams(entry, now) {
|
|
|
79
87
|
entry.scope,
|
|
80
88
|
entry.sessionScoped === undefined ? null : entry.sessionScoped,
|
|
81
89
|
entry.rootSessionId ?? null,
|
|
90
|
+
entry.model ?? null,
|
|
82
91
|
entry.createdAt,
|
|
83
92
|
now,
|
|
84
93
|
];
|
|
@@ -93,10 +102,10 @@ export class TiDBRosterStore {
|
|
|
93
102
|
async record(entry) {
|
|
94
103
|
const p = upsertParams(entry, this.clock());
|
|
95
104
|
await this.pool.query(`INSERT INTO ${ROSTER_TABLE} (name_key, owner_key, scope_key, ${COLS}, recorded_at_ms)
|
|
96
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
105
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
97
106
|
ON DUPLICATE KEY UPDATE name = VALUES(name), agent_id = VALUES(agent_id), session_id = VALUES(session_id),
|
|
98
107
|
tool_use_id = VALUES(tool_use_id), owner = VALUES(owner), scope = VALUES(scope),
|
|
99
|
-
session_scoped = VALUES(session_scoped), root_session_id = VALUES(root_session_id), created_at_ms = VALUES(created_at_ms), recorded_at_ms = VALUES(recorded_at_ms)`, p.map((v) => (typeof v === "boolean" ? (v ? 1 : 0) : v)));
|
|
108
|
+
session_scoped = VALUES(session_scoped), root_session_id = VALUES(root_session_id), model = VALUES(model), created_at_ms = VALUES(created_at_ms), recorded_at_ms = VALUES(recorded_at_ms)`, p.map((v) => (typeof v === "boolean" ? (v ? 1 : 0) : v)));
|
|
100
109
|
}
|
|
101
110
|
async resolve(name, access) {
|
|
102
111
|
const key = normalizeAgentNameLocal(name);
|
|
@@ -126,10 +135,10 @@ export class PgRosterStore {
|
|
|
126
135
|
}
|
|
127
136
|
async record(entry) {
|
|
128
137
|
await this.q(`INSERT INTO ${ROSTER_TABLE} (name_key, owner_key, scope_key, ${COLS}, recorded_at_ms)
|
|
129
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
|
138
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)
|
|
130
139
|
ON CONFLICT (name_key, owner_key, scope_key) DO UPDATE SET name = EXCLUDED.name, agent_id = EXCLUDED.agent_id,
|
|
131
140
|
session_id = EXCLUDED.session_id, tool_use_id = EXCLUDED.tool_use_id, owner = EXCLUDED.owner,
|
|
132
|
-
scope = EXCLUDED.scope, session_scoped = EXCLUDED.session_scoped, root_session_id = EXCLUDED.root_session_id, created_at_ms = EXCLUDED.created_at_ms,
|
|
141
|
+
scope = EXCLUDED.scope, session_scoped = EXCLUDED.session_scoped, root_session_id = EXCLUDED.root_session_id, model = EXCLUDED.model, created_at_ms = EXCLUDED.created_at_ms,
|
|
133
142
|
recorded_at_ms = EXCLUDED.recorded_at_ms`, upsertParams(entry, this.clock()));
|
|
134
143
|
}
|
|
135
144
|
async resolve(name, access) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-store-sql.js","sourceRoot":"","sources":["../../src/plugins/roster-store-sql.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,kBAAkB,EAAsC,MAAM,kBAAkB,CAAC;AAK1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAK3C,SAAS,UAAU,CAAC,CAA0B;IAC5C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzJ,GAAG,CAAC,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;KACnC,CAAC;AACJ,CAAC;AAWD,MAAM,kBAAkB,GAAG,yHAAyH,CAAC;AACrJ,MAAM,gBAAgB,GAAG,qHAAqH,CAAC;
|
|
1
|
+
{"version":3,"file":"roster-store-sql.js","sourceRoot":"","sources":["../../src/plugins/roster-store-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Pool as MySqlPool } from "mysql2/promise";
|
|
2
|
+
import type { Pool as PgPool } from "pg";
|
|
3
|
+
import type { TaskListStore } from "@sema-agent/core";
|
|
4
|
+
export declare const TASK_LIST_META_TABLE = "task_list_meta";
|
|
5
|
+
export declare const TASK_LIST_ITEMS_TABLE = "task_list_items";
|
|
6
|
+
export declare function ensureTiDBTaskListSchema(pool: MySqlPool): Promise<void>;
|
|
7
|
+
export declare function ensurePgTaskListSchema(q: (text: string, params?: unknown[]) => Promise<unknown>): Promise<void>;
|
|
8
|
+
export declare function createTiDBTaskListStore(pool: MySqlPool, listKey: string): TaskListStore;
|
|
9
|
+
export declare function createPgTaskListStore(pool: PgPool, listKey: string): TaskListStore;
|
|
10
|
+
//# sourceMappingURL=task-list-store-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-list-store-sql.d.ts","sourceRoot":"","sources":["../../src/plugins/task-list-store-sql.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,IAAI,IAAI,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAc,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAwBpE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAuBvD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7E;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAerH;AA8DD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAkEvF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CA2ElF"}
|