@adonis-agora/agent 0.58.0 → 0.59.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/CHANGELOG.md +45 -0
- package/dist/providers/agent_provider.js +1 -1
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/durable/agent-run-context.d.ts +13 -0
- package/dist/src/durable/agent-run-context.d.ts.map +1 -1
- package/dist/src/durable/agent-run-context.js +9 -0
- package/dist/src/durable/agent-run-context.js.map +1 -1
- package/dist/src/durable/agent-run-workflow.d.ts +4 -3
- package/dist/src/durable/agent-run-workflow.d.ts.map +1 -1
- package/dist/src/durable/agent-run-workflow.js +62 -8
- package/dist/src/durable/agent-run-workflow.js.map +1 -1
- package/dist/src/durable/durable-agent-runner.d.ts +7 -0
- package/dist/src/durable/durable-agent-runner.d.ts.map +1 -1
- package/dist/src/durable/durable-agent-runner.js +44 -12
- package/dist/src/durable/durable-agent-runner.js.map +1 -1
- package/dist/src/durable/index.d.ts.map +1 -1
- package/dist/src/durable/index.js +2 -0
- package/dist/src/durable/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/lucid-token-stream-sink.d.ts.map +1 -1
- package/dist/src/lucid-token-stream-sink.js +11 -4
- package/dist/src/lucid-token-stream-sink.js.map +1 -1
- package/dist/src/stores/lucid-confirm-tokens.d.ts.map +1 -1
- package/dist/src/stores/lucid-confirm-tokens.js +1 -12
- package/dist/src/stores/lucid-confirm-tokens.js.map +1 -1
- package/dist/src/stores/lucid-governance-queries.d.ts +1 -1
- package/dist/src/stores/lucid-governance-queries.d.ts.map +1 -1
- package/dist/src/stores/lucid-governance-queries.js +3 -9
- package/dist/src/stores/lucid-governance-queries.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts +16 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +89 -22
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +12 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +39 -22
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/stores/sql-dialect.d.ts +18 -0
- package/dist/src/stores/sql-dialect.d.ts.map +1 -0
- package/dist/src/stores/sql-dialect.js +32 -0
- package/dist/src/stores/sql-dialect.js.map +1 -0
- package/package.json +9 -2
- package/skills/agent-personas-agents/SKILL.md +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isMySql, portableSql } from './sql-dialect.js';
|
|
1
2
|
/**
|
|
2
3
|
* The nine agent table names. They match the cross-adapter snake_case contract the reference Drizzle
|
|
3
4
|
* store uses, so a dashboard or migration can point at any adapter and see the same physical schema.
|
|
@@ -16,6 +17,31 @@ export const AGENT_TABLES = {
|
|
|
16
17
|
/** A run's live stream, buffered for replay by the Lucid token sink (`tokenSinks.lucid()`). */
|
|
17
18
|
streamFrames: 'agent_stream_frame',
|
|
18
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* One statement of this module, as `db`'s dialect has to read it. The statements are written once,
|
|
22
|
+
* Postgres/SQLite-style; MySQL needs four things changed, and every one of them used to fail or
|
|
23
|
+
* silently misbehave there:
|
|
24
|
+
*
|
|
25
|
+
* - identifiers in backticks — a `"quoted"` name is a string literal to MySQL, so every statement
|
|
26
|
+
* failed to parse;
|
|
27
|
+
* - `TEXT` as `LONGTEXT` — MySQL's `TEXT` holds 64 KB, and a long answer, a tool's output or a stream
|
|
28
|
+
* frame past that failed the insert;
|
|
29
|
+
* - no `IF NOT EXISTS` on `CREATE INDEX`, which MySQL does not have (the catalog is read first, see
|
|
30
|
+
* {@link existingIndexes});
|
|
31
|
+
* - InnoDB with a case-sensitive collation: the foreign keys need InnoDB, and under MySQL's default
|
|
32
|
+
* `utf8mb4_0900_ai_ci` an actor `alice` read the threads of an actor `ALICE`. Postgres and SQLite
|
|
33
|
+
* compare those exactly; `utf8mb4_bin` makes MySQL do the same.
|
|
34
|
+
*/
|
|
35
|
+
export function forDialect(statement, mysql) {
|
|
36
|
+
if (!mysql)
|
|
37
|
+
return statement;
|
|
38
|
+
let out = statement.replaceAll('"', '`').replace(/\bTEXT\b/g, 'LONGTEXT');
|
|
39
|
+
out = out.replace(/^CREATE INDEX IF NOT EXISTS /, 'CREATE INDEX ');
|
|
40
|
+
if (/^CREATE TABLE /.test(out)) {
|
|
41
|
+
out = `${out} ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin`;
|
|
42
|
+
}
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
19
45
|
/**
|
|
20
46
|
* `CREATE TABLE IF NOT EXISTS` for the Lucid token sink's frame buffer, under `table` (the sink takes
|
|
21
47
|
* a `tableName`). One row per frame of a run's stream, numbered from 1 in write order; the row whose
|
|
@@ -71,7 +97,7 @@ export function createTableStatements() {
|
|
|
71
97
|
`CREATE INDEX IF NOT EXISTS "${t.threads}_actor_updated_idx" ON "${t.threads}" ("actor_ref", "updated_at")`,
|
|
72
98
|
`CREATE TABLE IF NOT EXISTS "${t.messages}" (
|
|
73
99
|
"id" VARCHAR(255) PRIMARY KEY NOT NULL,
|
|
74
|
-
"thread_id" VARCHAR(255) NOT NULL
|
|
100
|
+
"thread_id" VARCHAR(255) NOT NULL,
|
|
75
101
|
"role" VARCHAR(255) NOT NULL,
|
|
76
102
|
"content" TEXT NOT NULL,
|
|
77
103
|
"tool_calls" TEXT NULL,
|
|
@@ -86,13 +112,15 @@ export function createTableStatements() {
|
|
|
86
112
|
"ui" TEXT NULL,
|
|
87
113
|
"feedback" TEXT NULL,
|
|
88
114
|
"agent_name" VARCHAR(255) NULL,
|
|
89
|
-
"
|
|
115
|
+
"seq" BIGINT NOT NULL DEFAULT 0,
|
|
116
|
+
"created_at" BIGINT NOT NULL,
|
|
117
|
+
FOREIGN KEY ("thread_id") REFERENCES "${t.threads}" ("id") ON DELETE CASCADE
|
|
90
118
|
)`,
|
|
91
119
|
`CREATE INDEX IF NOT EXISTS "${t.messages}_thread_created_idx" ON "${t.messages}" ("thread_id", "created_at")`,
|
|
92
120
|
`CREATE INDEX IF NOT EXISTS "${t.messages}_run_idx" ON "${t.messages}" ("run_id")`,
|
|
93
121
|
`CREATE TABLE IF NOT EXISTS "${t.toolCalls}" (
|
|
94
122
|
"id" VARCHAR(255) PRIMARY KEY NOT NULL,
|
|
95
|
-
"message_id" VARCHAR(255) NOT NULL
|
|
123
|
+
"message_id" VARCHAR(255) NOT NULL,
|
|
96
124
|
"tool_name" VARCHAR(255) NOT NULL,
|
|
97
125
|
"tool_type" VARCHAR(255) NOT NULL,
|
|
98
126
|
"input" TEXT NULL,
|
|
@@ -107,13 +135,14 @@ export function createTableStatements() {
|
|
|
107
135
|
"approver" VARCHAR(255) NULL,
|
|
108
136
|
"expires_at" BIGINT NULL,
|
|
109
137
|
"remember" INTEGER NULL,
|
|
110
|
-
"decided_via" VARCHAR(64) NULL
|
|
138
|
+
"decided_via" VARCHAR(64) NULL,
|
|
139
|
+
FOREIGN KEY ("message_id") REFERENCES "${t.messages}" ("id") ON DELETE CASCADE
|
|
111
140
|
)`,
|
|
112
141
|
`CREATE INDEX IF NOT EXISTS "${t.toolCalls}_run_idx" ON "${t.toolCalls}" ("run_id")`,
|
|
113
142
|
`CREATE INDEX IF NOT EXISTS "${t.toolCalls}_status_created_idx" ON "${t.toolCalls}" ("status", "created_at")`,
|
|
114
143
|
`CREATE TABLE IF NOT EXISTS "${t.tokenUsage}" (
|
|
115
144
|
"id" VARCHAR(255) PRIMARY KEY NOT NULL,
|
|
116
|
-
"thread_id" VARCHAR(255) NOT NULL
|
|
145
|
+
"thread_id" VARCHAR(255) NOT NULL,
|
|
117
146
|
"actor_ref" VARCHAR(255) NOT NULL,
|
|
118
147
|
"message_id" VARCHAR(255) NULL,
|
|
119
148
|
"model_id" VARCHAR(255) NOT NULL,
|
|
@@ -124,7 +153,8 @@ export function createTableStatements() {
|
|
|
124
153
|
"cache_read_tokens" INTEGER NULL,
|
|
125
154
|
"cost_usd" DOUBLE PRECISION NULL,
|
|
126
155
|
"run_id" VARCHAR(255) NULL,
|
|
127
|
-
"created_at" BIGINT NOT NULL
|
|
156
|
+
"created_at" BIGINT NOT NULL,
|
|
157
|
+
FOREIGN KEY ("thread_id") REFERENCES "${t.threads}" ("id") ON DELETE CASCADE
|
|
128
158
|
)`,
|
|
129
159
|
`CREATE INDEX IF NOT EXISTS "${t.tokenUsage}_actor_created_idx" ON "${t.tokenUsage}" ("actor_ref", "created_at")`,
|
|
130
160
|
`CREATE INDEX IF NOT EXISTS "${t.tokenUsage}_run_idx" ON "${t.tokenUsage}" ("run_id")`,
|
|
@@ -140,7 +170,7 @@ export function createTableStatements() {
|
|
|
140
170
|
)`,
|
|
141
171
|
`CREATE TABLE IF NOT EXISTS "${t.runs}" (
|
|
142
172
|
"id" VARCHAR(255) PRIMARY KEY NOT NULL,
|
|
143
|
-
"thread_id" VARCHAR(255) NOT NULL
|
|
173
|
+
"thread_id" VARCHAR(255) NOT NULL,
|
|
144
174
|
"agent_name" VARCHAR(255) NULL,
|
|
145
175
|
"parent_run_id" VARCHAR(255) NULL,
|
|
146
176
|
"actor_ref" VARCHAR(255) NOT NULL,
|
|
@@ -153,14 +183,15 @@ export function createTableStatements() {
|
|
|
153
183
|
"output_tokens" INTEGER NOT NULL DEFAULT 0,
|
|
154
184
|
"cost_usd" DOUBLE PRECISION NULL,
|
|
155
185
|
"error" TEXT NULL,
|
|
156
|
-
"durable" INTEGER NOT NULL DEFAULT 0
|
|
186
|
+
"durable" INTEGER NOT NULL DEFAULT 0,
|
|
187
|
+
FOREIGN KEY ("thread_id") REFERENCES "${t.threads}" ("id") ON DELETE CASCADE
|
|
157
188
|
)`,
|
|
158
189
|
`CREATE INDEX IF NOT EXISTS "${t.runs}_started_idx" ON "${t.runs}" ("started_at")`,
|
|
159
190
|
`CREATE INDEX IF NOT EXISTS "${t.runs}_actor_started_idx" ON "${t.runs}" ("actor_ref", "started_at")`,
|
|
160
191
|
`CREATE INDEX IF NOT EXISTS "${t.runs}_status_started_idx" ON "${t.runs}" ("status", "started_at")`,
|
|
161
192
|
`CREATE TABLE IF NOT EXISTS "${t.queuedMessages}" (
|
|
162
193
|
"id" VARCHAR(255) PRIMARY KEY NOT NULL,
|
|
163
|
-
"thread_id" VARCHAR(255) NOT NULL
|
|
194
|
+
"thread_id" VARCHAR(255) NOT NULL,
|
|
164
195
|
"actor" TEXT NOT NULL,
|
|
165
196
|
"content" TEXT NOT NULL,
|
|
166
197
|
"attachments" TEXT NULL,
|
|
@@ -170,7 +201,8 @@ export function createTableStatements() {
|
|
|
170
201
|
"interrupt" INTEGER NOT NULL DEFAULT 0,
|
|
171
202
|
"position" INTEGER NOT NULL,
|
|
172
203
|
"created_at" BIGINT NOT NULL,
|
|
173
|
-
"updated_at" BIGINT NOT NULL
|
|
204
|
+
"updated_at" BIGINT NOT NULL,
|
|
205
|
+
FOREIGN KEY ("thread_id") REFERENCES "${t.threads}" ("id") ON DELETE CASCADE
|
|
174
206
|
)`,
|
|
175
207
|
`CREATE INDEX IF NOT EXISTS "${t.queuedMessages}_thread_position_idx" ON "${t.queuedMessages}" ("thread_id", "position")`,
|
|
176
208
|
// The primary key IS the lock: two confirmations of one token race on the insert and one loses.
|
|
@@ -209,6 +241,8 @@ const ADDITIVE_COLUMNS = [
|
|
|
209
241
|
{ table: AGENT_TABLES.messages, column: 'ui', type: 'TEXT NULL' },
|
|
210
242
|
{ table: AGENT_TABLES.messages, column: 'feedback', type: 'TEXT NULL' },
|
|
211
243
|
{ table: AGENT_TABLES.messages, column: 'agent_name', type: 'VARCHAR(255) NULL' },
|
|
244
|
+
// A message's place in its thread, assigned on append. 0 on a row from before: those sort first.
|
|
245
|
+
{ table: AGENT_TABLES.messages, column: 'seq', type: 'BIGINT NOT NULL DEFAULT 0' },
|
|
212
246
|
{ table: AGENT_TABLES.threads, column: 'model', type: 'VARCHAR(255) NULL' },
|
|
213
247
|
{ table: AGENT_TABLES.threads, column: 'queue_pause', type: 'TEXT NULL' },
|
|
214
248
|
{ table: AGENT_TABLES.threads, column: 'default_agent', type: 'VARCHAR(255) NULL' },
|
|
@@ -228,7 +262,7 @@ const ADDITIVE_COLUMNS = [
|
|
|
228
262
|
*/
|
|
229
263
|
async function hasColumn(db, table, column) {
|
|
230
264
|
try {
|
|
231
|
-
await db.rawQuery(`SELECT "${column}" FROM "${table}" WHERE 1 = 0`);
|
|
265
|
+
await db.rawQuery(portableSql(db, `SELECT "${column}" FROM "${table}" WHERE 1 = 0`));
|
|
232
266
|
return true;
|
|
233
267
|
}
|
|
234
268
|
catch {
|
|
@@ -259,6 +293,12 @@ export function rowsOf(result) {
|
|
|
259
293
|
* there the first probe succeeds.
|
|
260
294
|
*/
|
|
261
295
|
async function existingIndexes(db) {
|
|
296
|
+
// MySQL first there: it has no `pg_indexes`, and its own catalog is the only probe that answers.
|
|
297
|
+
const mysqlProbe = 'SELECT index_name AS name FROM information_schema.statistics WHERE table_schema = DATABASE()';
|
|
298
|
+
if (isMySql(db)) {
|
|
299
|
+
const rows = rowsOf(await db.rawQuery(mysqlProbe));
|
|
300
|
+
return new Set(rows.map((row) => String(row.name ?? row.NAME)));
|
|
301
|
+
}
|
|
262
302
|
const probes = [
|
|
263
303
|
// Every schema on the search path, not only the first: an unqualified `CREATE INDEX … ON "t"`
|
|
264
304
|
// finds `t` wherever the path does, so that is where its index has to be looked for.
|
|
@@ -279,7 +319,7 @@ async function existingIndexes(db) {
|
|
|
279
319
|
/** Does `table` exist? Same zero-row probe as {@link hasColumn}. */
|
|
280
320
|
async function hasTable(db, table) {
|
|
281
321
|
try {
|
|
282
|
-
await db.rawQuery(`SELECT 1 FROM "${table}" WHERE 1 = 0`);
|
|
322
|
+
await db.rawQuery(portableSql(db, `SELECT 1 FROM "${table}" WHERE 1 = 0`));
|
|
283
323
|
return true;
|
|
284
324
|
}
|
|
285
325
|
catch {
|
|
@@ -296,13 +336,39 @@ async function hasTable(db, table) {
|
|
|
296
336
|
* lock timeout, a typo — still throws.
|
|
297
337
|
*/
|
|
298
338
|
async function issue(db, statement, done) {
|
|
299
|
-
|
|
300
|
-
|
|
339
|
+
for (let attempt = 1;; attempt += 1) {
|
|
340
|
+
try {
|
|
341
|
+
await db.rawQuery(statement);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
if (await done())
|
|
346
|
+
return;
|
|
347
|
+
// MySQL settles two sessions building the same index at once by rolling one back as a deadlock
|
|
348
|
+
// victim — and the winner's index may not be in the catalog yet when the loser looks. That
|
|
349
|
+
// statement did nothing and is safe to send again; the next try either lands or finds it done.
|
|
350
|
+
if (attempt >= DDL_ATTEMPTS || !isTransientLockFailure(error))
|
|
351
|
+
throw error;
|
|
352
|
+
await new Promise((resolve) => setTimeout(resolve, 25 * attempt));
|
|
353
|
+
}
|
|
301
354
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
355
|
+
}
|
|
356
|
+
const DDL_ATTEMPTS = 5;
|
|
357
|
+
/** A statement the database rolled back to break a lock conflict: MySQL 1213/1205, Postgres 40P01/40001. */
|
|
358
|
+
function isTransientLockFailure(error) {
|
|
359
|
+
for (let current = error; current !== null && typeof current === 'object';) {
|
|
360
|
+
const { code, errno } = current;
|
|
361
|
+
if (code === 'ER_LOCK_DEADLOCK' ||
|
|
362
|
+
code === 'ER_LOCK_WAIT_TIMEOUT' ||
|
|
363
|
+
errno === 1213 ||
|
|
364
|
+
errno === 1205 ||
|
|
365
|
+
code === '40P01' ||
|
|
366
|
+
code === '40001') {
|
|
367
|
+
return true;
|
|
368
|
+
}
|
|
369
|
+
current = current.cause;
|
|
305
370
|
}
|
|
371
|
+
return false;
|
|
306
372
|
}
|
|
307
373
|
/**
|
|
308
374
|
* Idempotently provision the nine agent tables through Lucid's async raw runner (`CREATE TABLE IF
|
|
@@ -326,6 +392,7 @@ async function issue(db, statement, done) {
|
|
|
326
392
|
*/
|
|
327
393
|
export async function createAgentTables(db) {
|
|
328
394
|
const statements = createTableStatements();
|
|
395
|
+
const mysql = isMySql(db);
|
|
329
396
|
// Order matters, in three phases rather than one pass. Tables first, then the `run_id` repair, then
|
|
330
397
|
// indexes — because `createTableStatements` includes `CREATE INDEX ... ON "agent_message" ("run_id")`,
|
|
331
398
|
// and on a legacy database that index would be issued against a table whose `run_id` the repair has
|
|
@@ -335,13 +402,13 @@ export async function createAgentTables(db) {
|
|
|
335
402
|
if (!stmt.startsWith('CREATE TABLE'))
|
|
336
403
|
continue;
|
|
337
404
|
const table = /^CREATE TABLE IF NOT EXISTS "([^"]+)"/.exec(stmt)?.[1];
|
|
338
|
-
await issue(db, stmt, () => hasTable(db, table));
|
|
405
|
+
await issue(db, forDialect(stmt, mysql), () => hasTable(db, table));
|
|
339
406
|
}
|
|
340
407
|
const repairs = [];
|
|
341
408
|
const addColumn = async (table, column, type) => {
|
|
342
409
|
if (await hasColumn(db, table, column))
|
|
343
410
|
return;
|
|
344
|
-
await issue(db, `ALTER TABLE "${table}" ADD COLUMN "${column}" ${type}`, () => hasColumn(db, table, column));
|
|
411
|
+
await issue(db, forDialect(`ALTER TABLE "${table}" ADD COLUMN "${column}" ${type}`, mysql), () => hasColumn(db, table, column));
|
|
345
412
|
repairs.push(`${table}.${column}`);
|
|
346
413
|
};
|
|
347
414
|
for (const table of RUN_ID_COLUMNS) {
|
|
@@ -357,7 +424,7 @@ export async function createAgentTables(db) {
|
|
|
357
424
|
const index = /^CREATE INDEX IF NOT EXISTS "([^"]+)"/.exec(stmt)?.[1];
|
|
358
425
|
if (indexes?.has(index))
|
|
359
426
|
continue;
|
|
360
|
-
await issue(db, stmt, async () => (await existingIndexes(db))?.has(index) ?? false);
|
|
427
|
+
await issue(db, forDialect(stmt, mysql), async () => (await existingIndexes(db))?.has(index) ?? false);
|
|
361
428
|
}
|
|
362
429
|
return repairs;
|
|
363
430
|
}
|
|
@@ -383,7 +450,7 @@ export function dropTableStatements() {
|
|
|
383
450
|
/** Drop the nine agent tables. Destructive and irreversible — this erases every thread and every ledger row. */
|
|
384
451
|
export async function dropAgentTables(db) {
|
|
385
452
|
for (const stmt of dropTableStatements()) {
|
|
386
|
-
await db.rawQuery(stmt);
|
|
453
|
+
await db.rawQuery(portableSql(db, stmt));
|
|
387
454
|
}
|
|
388
455
|
}
|
|
389
456
|
function isManager(db) {
|
|
@@ -469,6 +536,6 @@ export async function ensureStreamFrameTable(db, table = AGENT_TABLES.streamFram
|
|
|
469
536
|
const runner = schemaRunner(db);
|
|
470
537
|
if (await hasTable(runner, table))
|
|
471
538
|
return;
|
|
472
|
-
await issue(runner, streamFrameTableStatement(table), () => hasTable(runner, table));
|
|
539
|
+
await issue(runner, forDialect(streamFrameTableStatement(table), isMySql(runner)), () => hasTable(runner, table));
|
|
473
540
|
}
|
|
474
541
|
//# sourceMappingURL=lucid-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucid-schema.js","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucid-schema.js","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,qBAAqB;IACnC,IAAI,EAAE,WAAW;IACjB,wFAAwF;IACxF,cAAc,EAAE,sBAAsB;IACtC,qGAAqG;IACrG,aAAa,EAAE,qBAAqB;IACpC,+FAA+F;IAC/F,YAAY,EAAE,oBAAoB;CAC1B,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,KAAc;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;IACnE,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,GAAG,4DAA4D,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAK,GAAW,YAAY,CAAC,YAAY;IACjF,OAAO,+BAA+B,KAAK;;;;;;MAMvC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,OAAO;QACL,+BAA+B,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;MAiBtC;QACF,+BAA+B,CAAC,CAAC,OAAO,2BAA2B,CAAC,CAAC,OAAO,+BAA+B;QAC3G,+BAA+B,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;8CAmBC,CAAC,CAAC,OAAO;MACjD;QACF,+BAA+B,CAAC,CAAC,QAAQ,4BAA4B,CAAC,CAAC,QAAQ,+BAA+B;QAC9G,+BAA+B,CAAC,CAAC,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,cAAc;QAClF,+BAA+B,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;+CAkBC,CAAC,CAAC,QAAQ;MACnD;QACF,+BAA+B,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC,SAAS,cAAc;QACpF,+BAA+B,CAAC,CAAC,SAAS,4BAA4B,CAAC,CAAC,SAAS,4BAA4B;QAC7G,+BAA+B,CAAC,CAAC,UAAU;;;;;;;;;;;;;;8CAcD,CAAC,CAAC,OAAO;MACjD;QACF,+BAA+B,CAAC,CAAC,UAAU,2BAA2B,CAAC,CAAC,UAAU,+BAA+B;QACjH,+BAA+B,CAAC,CAAC,UAAU,iBAAiB,CAAC,CAAC,UAAU,cAAc;QACtF,+BAA+B,CAAC,CAAC,YAAY;;;;;;;;;MAS3C;QACF,+BAA+B,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;8CAgBK,CAAC,CAAC,OAAO;MACjD;QACF,+BAA+B,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,IAAI,kBAAkB;QAClF,+BAA+B,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,IAAI,+BAA+B;QACrG,+BAA+B,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,IAAI,4BAA4B;QACnG,+BAA+B,CAAC,CAAC,cAAc;;;;;;;;;;;;;8CAaL,CAAC,CAAC,OAAO;MACjD;QACF,+BAA+B,CAAC,CAAC,cAAc,6BAA6B,CAAC,CAAC,cAAc,6BAA6B;QACzH,gGAAgG;QAChG,+BAA+B,CAAC,CAAC,aAAa;;;;;;MAM5C;QACF,+BAA+B,CAAC,CAAC,aAAa,qBAAqB,CAAC,CAAC,aAAa,kBAAkB;QACpG,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,cAAc,GAAsB;IACxC,YAAY,CAAC,QAAQ;IACrB,YAAY,CAAC,SAAS;IACtB,YAAY,CAAC,UAAU;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,gBAAgB,GAA+D;IACnF,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAChF,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACxE,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;IAC9E,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;IACjE,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;IACvE,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACjF,iGAAiG;IACjG,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE;IAClF,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC3E,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE;IACzE,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACnF,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAChF,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5E,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3E,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE;CACnF,CAAC;AAEF;;;;;;;;GAQG;AACH,KAAK,UAAU,SAAS,CAAC,EAAkB,EAAE,KAAa,EAAE,MAAc;IACxE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,MAAM,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,MAAM,CAAC,MAAe;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAE,MAAM,CAAC,CAAC,CAA+B;YAC1C,CAAC,CAAE,MAAoC,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAI,MAAoC,EAAE,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,eAAe,CAAC,EAAkB;IAC/C,iGAAiG;IACjG,MAAM,UAAU,GACd,8FAA8F,CAAC;IACjG,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,MAAM,GAAG;QACb,8FAA8F;QAC9F,qFAAqF;QACrF,0FAA0F;QAC1F,qDAAqD;KACtD,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,KAAK,UAAU,QAAQ,CAAC,EAAkB,EAAE,KAAa;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,kBAAkB,KAAK,eAAe,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,KAAK,CAClB,EAAkB,EAClB,SAAiB,EACjB,IAA4B;IAE5B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,IAAI,EAAE;gBAAE,OAAO;YACzB,+FAA+F;YAC/F,2FAA2F;YAC3F,+FAA+F;YAC/F,IAAI,OAAO,IAAI,YAAY,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC3E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,4GAA4G;AAC5G,SAAS,sBAAsB,CAAC,KAAc;IAC5C,KAAK,IAAI,OAAO,GAAG,KAAK,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAI,CAAC;QAC5E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAA8C,CAAC;QACvE,IACE,IAAI,KAAK,kBAAkB;YAC3B,IAAI,KAAK,sBAAsB;YAC/B,KAAK,KAAK,IAAI;YACd,KAAK,KAAK,IAAI;YACd,IAAI,KAAK,OAAO;YAChB,IAAI,KAAK,OAAO,EAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAkB;IACxD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE1B,oGAAoG;IACpG,uGAAuG;IACvG,oGAAoG;IACpG,oGAAoG;IACpG,0FAA0F;IAC1F,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,SAAS;QAC/C,MAAM,KAAK,GAAG,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAW,CAAC;QAChF,MAAM,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,EAAE,KAAa,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QACtE,IAAI,MAAM,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC;YAAE,OAAO;QAC/C,MAAM,KAAK,CACT,EAAE,EACF,UAAU,CAAC,gBAAgB,KAAK,iBAAiB,MAAM,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,EAC1E,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CACnC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;QACvD,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,SAAS;QAC/C,MAAM,KAAK,GAAG,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAW,CAAC;QAChF,IAAI,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAClC,MAAM,KAAK,CACT,EAAE,EACF,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EACvB,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,OAAO;QACL,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,OAAO;KACV,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,gHAAgH;AAChH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAkB;IACtD,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,EAAE,CAAC;QACzC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAeD,SAAS,SAAS,CAAC,EAAW;IAC5B,MAAM,SAAS,GAAG,EAAkC,CAAC;IACrD,OAAO,CACL,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,CAAC,4BAA4B,YAAY,GAAG;QACrD,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,OAAO,SAAS,CAAC,qBAAqB,KAAK,QAAQ,CACpD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,EAAkB;IAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,CAAC;IACtC,MAAM,WAAW,GAAG,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACtE,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAyB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aACxC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACrB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACL,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAkB,EAClB,KAAK,GAAW,YAAY,CAAC,YAAY;IAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO;IAC1C,MAAM,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CACtF,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -58,6 +58,13 @@ export interface LucidRawRunner {
|
|
|
58
58
|
export interface LucidDatabaseLike extends LucidClientLike, LucidRawRunner {
|
|
59
59
|
transaction<T>(callback: (trx: LucidClientLike) => Promise<T>): Promise<T>;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* `query` in the order its messages were appended: `seq`, which append assigns, then `created_at`
|
|
63
|
+
* and `id` for the rows from before `seq` existed (they all hold 0, and so sort first). `created_at`
|
|
64
|
+
* alone could not order a transcript: two messages of one turn routinely share a millisecond, and
|
|
65
|
+
* the database then returned them in either order.
|
|
66
|
+
*/
|
|
67
|
+
export declare function inAppendOrder<Q extends LucidQueryBuilderLike>(query: Q, direction: 'asc' | 'desc'): Q;
|
|
61
68
|
export interface LucidAgentStoreOptions {
|
|
62
69
|
/**
|
|
63
70
|
* Provision the agent tables (via {@link ensureAgentTables}) — as the app starts when the agent
|
|
@@ -137,6 +144,11 @@ export declare class LucidAgentStore implements AgentStore, ThreadTurnReader, Ch
|
|
|
137
144
|
queuePause(threadId: string): Promise<QueuePause | null>;
|
|
138
145
|
setQueuePause(threadId: string, pause: QueuePause | null): Promise<void>;
|
|
139
146
|
appendMessage(input: AppendMessageInput): Promise<StoredMessage>;
|
|
147
|
+
/**
|
|
148
|
+
* The next `seq` in a thread: one past its highest. Two appends racing on ONE thread can draw the
|
|
149
|
+
* same number — the turn loop never does that, and the tie then falls back to `created_at`, `id`.
|
|
150
|
+
*/
|
|
151
|
+
private nextMessageSeq;
|
|
140
152
|
setMessageUi(messageId: string, ui: AgentUiComponent[]): Promise<void>;
|
|
141
153
|
setMessageToolResults(messageId: string, results: ToolResult[]): Promise<void>;
|
|
142
154
|
truncateFrom(threadId: string, messageId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucid.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lucid.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAGV,eAAe,EAIf,aAAa,EACb,YAAY,EACZ,aAAa,EAIb,UAAU,EACX,MAAM,aAAa,CAAC;AAQrB,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IAC1D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC3C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAkB,SAAQ,eAAe,EAAE,cAAc;IACxE,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,qBAAqB,EAC3D,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,CAAC,CAEH;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmFD;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAgB,YAAW,UAAU,EAAE,gBAAgB,EAAE,cAAc;IAKhF,OAAO,CAAC,QAAQ,CAAC,EAAE;IAJrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAE3C,YACmB,EAAE,EAAE,iBAAiB,EACtC,OAAO,GAAE,sBAA2B,EAGrC;IAED,OAAO,CAAC,IAAI;IAYZ;;;;;OAKG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEK,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2BnE;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAkB9D;IAEK,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmB9E;IAED;;;;OAIG;YACW,cAAc;IActB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAShE;IAEK,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAWxE;IAEK,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnD;IAEK,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkEhF;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7D;IAEK,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5E;IAEK,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIpE;IAEK,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE;IAEK,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;IAIK,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIjE;IAEK,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ3D;IAED;;;;;OAKG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,OAAO,CAAC,CAuBlB;IAEK,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E;IAEK,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwCvE;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ1D;IAEK,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAIhE;IAEK,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAa9F;IAEK,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnE;IAED,2FAA2F;IACrF,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAItD;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlD;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAI7D;IAEK,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E;IAEK,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgDrE;IAED;;;OAGG;YACW,cAAc;IAUtB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;IAEK,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;IAEK,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;IAED;;;;;;;;;;OAUG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCzF;IAEK,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9D;IAEK,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9D;IAED,6FAA6F;YAC/E,aAAa;IAyBrB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAY7D;IAEK,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAYhF;IAEK,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI/D;IAEK,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3F;IAEK,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxD;IAEK,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKjE;IAEK,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAgBxE;IAEK,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;IAEK,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxD;IAEK,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9D;IAEK,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK1D;IAEK,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1D;IAEK,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAelD;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAiB/E;CACF"}
|
package/dist/src/stores/lucid.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { toolCallApprovalFromRow, } from '../spi/approval-policy.js';
|
|
2
2
|
import { AGENT_TABLES, ensureAgentTables } from './lucid-schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* `query` in the order its messages were appended: `seq`, which append assigns, then `created_at`
|
|
5
|
+
* and `id` for the rows from before `seq` existed (they all hold 0, and so sort first). `created_at`
|
|
6
|
+
* alone could not order a transcript: two messages of one turn routinely share a millisecond, and
|
|
7
|
+
* the database then returned them in either order.
|
|
8
|
+
*/
|
|
9
|
+
export function inAppendOrder(query, direction) {
|
|
10
|
+
return query.orderBy('seq', direction).orderBy('created_at', direction).orderBy('id', direction);
|
|
11
|
+
}
|
|
3
12
|
function toInt(value) {
|
|
4
13
|
if (typeof value === 'number')
|
|
5
14
|
return value;
|
|
@@ -164,11 +173,7 @@ export class LucidAgentStore {
|
|
|
164
173
|
.first();
|
|
165
174
|
if (row === null || row === undefined)
|
|
166
175
|
return null;
|
|
167
|
-
const messageRows = await this.db
|
|
168
|
-
.from(AGENT_TABLES.messages)
|
|
169
|
-
.where('thread_id', threadId)
|
|
170
|
-
.orderBy('created_at', 'asc')
|
|
171
|
-
.select('*');
|
|
176
|
+
const messageRows = await inAppendOrder(this.db.from(AGENT_TABLES.messages).where('thread_id', threadId), 'asc').select('*');
|
|
172
177
|
const messages = await this.withApprovals(messageRows.map(rowToMessage));
|
|
173
178
|
const last = messages[messages.length - 1];
|
|
174
179
|
return {
|
|
@@ -205,11 +210,7 @@ export class LucidAgentStore {
|
|
|
205
210
|
async loadTurnWindow(threadId, limit) {
|
|
206
211
|
if (limit !== undefined && limit <= 0)
|
|
207
212
|
return [];
|
|
208
|
-
const query = this.db
|
|
209
|
-
.from(AGENT_TABLES.messages)
|
|
210
|
-
.where('thread_id', threadId)
|
|
211
|
-
.orderBy('created_at', 'desc')
|
|
212
|
-
.orderBy('id', 'desc');
|
|
213
|
+
const query = inAppendOrder(this.db.from(AGENT_TABLES.messages).where('thread_id', threadId), 'desc');
|
|
213
214
|
if (limit !== undefined)
|
|
214
215
|
query.limit(limit);
|
|
215
216
|
const rows = await query.select(...TURN_MESSAGE_COLUMNS);
|
|
@@ -260,11 +261,7 @@ export class LucidAgentStore {
|
|
|
260
261
|
if (source === null || source === undefined) {
|
|
261
262
|
throw new Error(`thread ${threadId} not found`);
|
|
262
263
|
}
|
|
263
|
-
const messageRows = await trx
|
|
264
|
-
.from(AGENT_TABLES.messages)
|
|
265
|
-
.where('thread_id', threadId)
|
|
266
|
-
.orderBy('created_at', 'asc')
|
|
267
|
-
.select('*');
|
|
264
|
+
const messageRows = await inAppendOrder(trx.from(AGENT_TABLES.messages).where('thread_id', threadId), 'asc').select('*');
|
|
268
265
|
const cutoff = messageRows.findIndex((m) => String(m.id) === fromMessageId);
|
|
269
266
|
const kept = cutoff >= 0 ? messageRows.slice(0, cutoff + 1) : messageRows;
|
|
270
267
|
const id = crypto.randomUUID();
|
|
@@ -288,10 +285,12 @@ export class LucidAgentStore {
|
|
|
288
285
|
updated_at: now,
|
|
289
286
|
deleted_at: null,
|
|
290
287
|
});
|
|
291
|
-
for (const m of kept) {
|
|
288
|
+
for (const [index, m] of kept.entries()) {
|
|
292
289
|
// New message id: the message PK is unique, so a fork copies content under fresh ids.
|
|
293
290
|
await trx.table(AGENT_TABLES.messages).insert({
|
|
294
291
|
id: crypto.randomUUID(),
|
|
292
|
+
// Numbered afresh in the order just read, so the copy reads back in the original's order.
|
|
293
|
+
seq: index + 1,
|
|
295
294
|
thread_id: id,
|
|
296
295
|
role: m.role,
|
|
297
296
|
content: m.content,
|
|
@@ -393,7 +392,13 @@ export class LucidAgentStore {
|
|
|
393
392
|
.where('id', threadId)
|
|
394
393
|
.whereIn('active_stream_id', holders)
|
|
395
394
|
.update({ active_stream_id: runId });
|
|
396
|
-
|
|
395
|
+
if (affectedRows(handed) > 0) {
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
// Zero can still be a win: a MySQL connection without FOUND_ROWS reports CHANGED rows, and
|
|
399
|
+
// re-claiming a thread this run already holds changes nothing. The row says who holds it now.
|
|
400
|
+
const held = await this.db.from(AGENT_TABLES.threads).where('id', threadId).first();
|
|
401
|
+
return held !== null && held !== undefined && held.active_stream_id === runId;
|
|
397
402
|
}
|
|
398
403
|
async releaseActiveStream(threadId, runId) {
|
|
399
404
|
await this.init();
|
|
@@ -524,8 +529,10 @@ export class LucidAgentStore {
|
|
|
524
529
|
await this.init();
|
|
525
530
|
const id = crypto.randomUUID();
|
|
526
531
|
const now = Date.now();
|
|
532
|
+
const seq = await this.nextMessageSeq(input.threadId);
|
|
527
533
|
await this.db.table(AGENT_TABLES.messages).insert({
|
|
528
534
|
id,
|
|
535
|
+
seq,
|
|
529
536
|
thread_id: input.threadId,
|
|
530
537
|
role: input.role,
|
|
531
538
|
content: input.content,
|
|
@@ -567,6 +574,19 @@ export class LucidAgentStore {
|
|
|
567
574
|
...(input.ui !== undefined ? { ui: input.ui } : {}),
|
|
568
575
|
};
|
|
569
576
|
}
|
|
577
|
+
/**
|
|
578
|
+
* The next `seq` in a thread: one past its highest. Two appends racing on ONE thread can draw the
|
|
579
|
+
* same number — the turn loop never does that, and the tie then falls back to `created_at`, `id`.
|
|
580
|
+
*/
|
|
581
|
+
async nextMessageSeq(threadId) {
|
|
582
|
+
const [last] = await this.db
|
|
583
|
+
.from(AGENT_TABLES.messages)
|
|
584
|
+
.where('thread_id', threadId)
|
|
585
|
+
.orderBy('seq', 'desc')
|
|
586
|
+
.limit(1)
|
|
587
|
+
.select('seq');
|
|
588
|
+
return toInt(last?.seq) + 1;
|
|
589
|
+
}
|
|
570
590
|
async setMessageUi(messageId, ui) {
|
|
571
591
|
await this.init();
|
|
572
592
|
await this.db
|
|
@@ -584,11 +604,7 @@ export class LucidAgentStore {
|
|
|
584
604
|
async truncateFrom(threadId, messageId) {
|
|
585
605
|
await this.init();
|
|
586
606
|
await this.db.transaction(async (trx) => {
|
|
587
|
-
const rows = await trx
|
|
588
|
-
.from(AGENT_TABLES.messages)
|
|
589
|
-
.where('thread_id', threadId)
|
|
590
|
-
.orderBy('created_at', 'asc')
|
|
591
|
-
.select('id');
|
|
607
|
+
const rows = await inAppendOrder(trx.from(AGENT_TABLES.messages).where('thread_id', threadId), 'asc').select('id');
|
|
592
608
|
const cutoff = rows.findIndex((m) => String(m.id) === messageId);
|
|
593
609
|
if (cutoff < 0)
|
|
594
610
|
return;
|
|
@@ -695,6 +711,7 @@ export class LucidAgentStore {
|
|
|
695
711
|
.from(AGENT_TABLES.toolCalls)
|
|
696
712
|
.whereIn('message_id', messages.map((message) => message.id))
|
|
697
713
|
.orderBy('created_at', 'asc')
|
|
714
|
+
.orderBy('id', 'asc')
|
|
698
715
|
.select('*');
|
|
699
716
|
const byMessage = new Map();
|
|
700
717
|
for (const call of rows) {
|