@intentface/latch-drizzle 0.13.3 → 0.15.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.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,EAAE,EAAE,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CAyBnB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,EAAE,EAAE,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CA4BnB"}
package/dist/adapter.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { sql } from "drizzle-orm";
1
2
  import * as schema from "./schema.js";
2
3
  import { makeStorageAdapter } from "./adapter.shared.js";
3
4
  export { isUniqueViolation } from "./adapter.shared.js";
@@ -9,6 +10,9 @@ export { isUniqueViolation } from "./adapter.shared.js";
9
10
  export function createSqliteAdapter(db, opts) {
10
11
  return makeStorageAdapter(db, schema, {
11
12
  owner: opts.owner,
13
+ // Lease times from the database's clock. `julianday` rather than
14
+ // `unixepoch('subsec')` so older SQLite builds work too.
15
+ nowMs: sql `cast(round((julianday('now') - 2440587.5) * 86400000) as integer)`,
12
16
  // No interactive transaction: this adapter also serves synchronous drivers
13
17
  // (better-sqlite3), whose transaction API rejects an async callback — and
14
18
  // libsql opens a transaction on a NEW connection, which for an in-memory
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAkD,EAClD,IAA6B;IAE7B,OAAO,kBAAkB,CAAI,EAAE,EAAE,MAAM,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,4EAA4E;QAC5E,2EAA2E;QAC3E,wEAAwE;QACxE,GAAG,CAAC,OAAQ,EAAqC,CAAC,KAAK,KAAK,UAAU;YACpE,CAAC,CAAC;gBACE,KAAK,EAAE,CAAC,KAAgB,EAAE,EAAE,CACzB,EAA6D,CAAC,KAAK,CAAC,KAAc,CAAC;aACvF;YACH,CAAC,CAAC;gBACE,kEAAkE;gBAClE,iEAAiE;gBACjE,8DAA8D;gBAC9D,MAAM,EAAE,CAAK,EAAsB,EAAE,EAAE,CACpC,EAA+D,CAAC,WAAW,CAAC,EAAE,CAAC;aACnF,CAAC;KACP,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAkD,EAClD,IAA6B;IAE7B,OAAO,kBAAkB,CAAI,EAAE,EAAE,MAAM,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,iEAAiE;QACjE,yDAAyD;QACzD,KAAK,EAAE,GAAG,CAAA,mEAAmE;QAC7E,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,4EAA4E;QAC5E,2EAA2E;QAC3E,wEAAwE;QACxE,GAAG,CAAC,OAAQ,EAAqC,CAAC,KAAK,KAAK,UAAU;YACpE,CAAC,CAAC;gBACE,KAAK,EAAE,CAAC,KAAgB,EAAE,EAAE,CACzB,EAA6D,CAAC,KAAK,CAAC,KAAc,CAAC;aACvF;YACH,CAAC,CAAC;gBACE,kEAAkE;gBAClE,iEAAiE;gBACjE,8DAA8D;gBAC9D,MAAM,EAAE,CAAK,EAAsB,EAAE,EAAE,CACpC,EAA+D,CAAC,WAAW,CAAC,EAAE,CAAC;aACnF,CAAC;KACP,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.pg.d.ts","sourceRoot":"","sources":["../src/adapter.pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CASnB"}
1
+ {"version":3,"file":"adapter.pg.d.ts","sourceRoot":"","sources":["../src/adapter.pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CAanB"}
@@ -1,3 +1,4 @@
1
+ import { sql } from "drizzle-orm";
1
2
  import * as schema from "./schema.pg.js";
2
3
  import { makeStorageAdapter } from "./adapter.shared.js";
3
4
  /**
@@ -8,6 +9,10 @@ import { makeStorageAdapter } from "./adapter.shared.js";
8
9
  export function createPostgresAdapter(db, opts) {
9
10
  return makeStorageAdapter(db, schema, {
10
11
  owner: opts.owner,
12
+ // Lease times from the database's clock: `clock_timestamp()`, not `now()`,
13
+ // which is frozen at transaction start.
14
+ nowMs: sql `(extract(epoch from clock_timestamp()) * 1000)::bigint`,
15
+ lockFencedRun: true,
11
16
  // One transaction per message batch: the max(seq) reads and the inserts
12
17
  // commit (or roll back) together, so a crash mid-batch can't leave a
13
18
  // partial write and a concurrent appender can't interleave into the same
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.pg.js","sourceRoot":"","sources":["../src/adapter.pg.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAA6B,EAC7B,IAA6B;IAE7B,OAAO,kBAAkB,CAAI,EAAE,EAAE,MAAM,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,wEAAwE;QACxE,qEAAqE;QACrE,yEAAyE;QACzE,aAAa;QACb,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;KACnC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"adapter.pg.js","sourceRoot":"","sources":["../src/adapter.pg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAA6B,EAC7B,IAA6B;IAE7B,OAAO,kBAAkB,CAAI,EAAE,EAAE,MAAM,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,2EAA2E;QAC3E,wCAAwC;QACxC,KAAK,EAAE,GAAG,CAAA,wDAAwD;QAClE,aAAa,EAAE,IAAI;QACnB,wEAAwE;QACxE,qEAAqE;QACrE,yEAAyE;QACzE,aAAa;QACb,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;KACnC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type SQL } from "drizzle-orm";
1
2
  import { type StorageAdapter } from "@intentface/latch-core";
2
3
  /**
3
4
  * Dialect-shared `StorageAdapter` implementation. The SQLite and Postgres entry
@@ -37,6 +38,18 @@ export interface SharedAdapterOptions<P> {
37
38
  batch?: (stmts: any[]) => Promise<any[]>;
38
39
  /** A synchronous transaction (sync SQLite drivers): the builders' `.run()`/`.get()` inside it are atomic. */
39
40
  syncTx?: <T>(fn: (tx: any) => T) => T;
41
+ /**
42
+ * The database's current time in epoch ms, as SQL. Every lease time — set,
43
+ * renewed, compared — comes from this one clock, so skew between app servers
44
+ * can't make one node reap a run another is still renewing.
45
+ */
46
+ nowMs: SQL;
47
+ /**
48
+ * Postgres: lock the run row (`for share`) while a fenced write checks it, so
49
+ * a concurrent reclaim waits for the write to commit (and a write that waited
50
+ * on a reclaim re-reads the bumped token). SQLite serializes writers already.
51
+ */
52
+ lockFencedRun?: boolean;
40
53
  }
41
54
  /**
42
55
  * True if a driver error is a primary-key / unique-constraint violation. Walks
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.shared.d.ts","sourceRoot":"","sources":["../src/adapter.shared.ts"],"names":[],"mappings":"AAcA,OAAO,EASL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,6GAA6G;IAC7G,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CACvC;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUzD;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAc,CAAC;AAOxC,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,EAAE,EAAE,GAAG,EACP,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CA2lBnB"}
1
+ {"version":3,"file":"adapter.shared.d.ts","sourceRoot":"","sources":["../src/adapter.shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,GAAG,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAUL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,6GAA6G;IAC7G,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC;;;;OAIG;IACH,KAAK,EAAE,GAAG,CAAC;IACX;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAmBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAc,CAAC;AAOxC,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,EAAE,EAAE,GAAG,EACP,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CA8oBnB"}
@@ -10,13 +10,20 @@ function newId(prefix) {
10
10
  * `23505`), two levels down for libsql.
11
11
  */
12
12
  export function isUniqueViolation(error) {
13
+ return violates(error, /^SQLITE_CONSTRAINT/i, "23505", /unique constraint|primary key|duplicate key|sqlite_constraint/i);
14
+ }
15
+ /** True if a driver error is a NOT NULL violation (libsql `SQLITE_CONSTRAINT_NOTNULL`, pg `23502`). */
16
+ function isNotNullViolation(error) {
17
+ return violates(error, /^SQLITE_CONSTRAINT_NOTNULL/i, "23502", /not null constraint|null value in column/i);
18
+ }
19
+ function violates(error, sqliteCode, pgCode, text) {
13
20
  let e = error;
14
21
  for (let depth = 0; e && depth < 5; depth++) {
15
22
  const code = e.code;
16
- if (typeof code === "string" && (/^SQLITE_CONSTRAINT/i.test(code) || code === "23505"))
23
+ if (typeof code === "string" && (sqliteCode.test(code) || code === pgCode))
17
24
  return true;
18
25
  const message = e instanceof Error ? e.message : typeof e === "string" ? e : "";
19
- if (/unique constraint|primary key|duplicate key|sqlite_constraint/i.test(message))
26
+ if (text.test(message))
20
27
  return true;
21
28
  e = e.cause;
22
29
  }
@@ -34,6 +41,7 @@ function ownerKeyOf(owner, principal) {
34
41
  }
35
42
  export function makeStorageAdapter(db, s, opts) {
36
43
  const ownerKey = (p) => ownerKeyOf(opts.owner, p);
44
+ const nowMs = opts.nowMs;
37
45
  const rowToChat = (r) => ({
38
46
  id: r.id,
39
47
  owner: r.owner,
@@ -111,30 +119,43 @@ export function makeStorageAdapter(db, s, opts) {
111
119
  leaseOwner: null,
112
120
  fencingToken: sql `coalesce(${s.runs.fencingToken}, 0) + 1`,
113
121
  })
114
- .where(and(eq(s.runs.chatId, chatId), eq(s.runs.status, "active"), lt(liveUntil, now)));
122
+ .where(and(eq(s.runs.chatId, chatId), eq(s.runs.status, "active"), lt(liveUntil, nowMs)));
115
123
  async function supersedeStale(exec, chatId, now) {
116
124
  await supersedeStaleQuery(chatId, now, exec);
117
125
  }
118
- /** One message upsert (seq computed in-statement) as a query, for batching. */
119
- const messageInsert = (chatId, m, exec = db) => exec
120
- .insert(s.messages)
121
- .values({
122
- id: m.id,
123
- chatId,
124
- runId: null,
125
- seq: sql `(select coalesce(max(${s.messages.seq}), -1) + 1 from ${s.messages} where ${s.messages.chatId} = ${chatId})`,
126
- role: m.role,
127
- parts: m.parts,
128
- metadata: m.metadata ?? null,
129
- createdAt: m.metadata?.createdAt ?? Date.now(),
130
- })
131
- // Existing message (same chat + id) → update content only; seq is
132
- // preserved. Conflict target is the composite PK — a same-id row in
133
- // ANOTHER chat is a different row, never overwritten from here.
134
- .onConflictDoUpdate({
135
- target: [s.messages.chatId, s.messages.id],
136
- set: { parts: m.parts, metadata: m.metadata ?? null },
137
- });
126
+ /** Whether `fence`'s run still holds its lease — evaluated inside the write it guards. */
127
+ const fenceHolds = (fence) => sql `exists (select 1 from ${s.runs} where ${s.runs.id} = ${fence.runId} and ${s.runs.leaseOwner} = ${fence.owner} and ${s.runs.fencingToken} = ${fence.fencingToken}${opts.lockFencedRun ? sql ` for share` : sql ``})`;
128
+ /**
129
+ * One message upsert (seq computed in-statement) as a query, for batching.
130
+ *
131
+ * With `fence`, the lease check is part of the same statement, so nothing can
132
+ * slip between check and write: a refused insert computes a NULL seq and
133
+ * fails the NOT NULL constraint (rolling back its batch or transaction), and
134
+ * a refused update of an existing message matches no row.
135
+ */
136
+ const messageInsert = (chatId, m, exec = db, fence) => {
137
+ const nextSeq = sql `(select coalesce(max(${s.messages.seq}), -1) + 1 from ${s.messages} where ${s.messages.chatId} = ${chatId})`;
138
+ return exec
139
+ .insert(s.messages)
140
+ .values({
141
+ id: m.id,
142
+ chatId,
143
+ runId: null,
144
+ seq: (fence ? sql `case when ${fenceHolds(fence)} then ${nextSeq} end` : nextSeq),
145
+ role: m.role,
146
+ parts: m.parts,
147
+ metadata: m.metadata ?? null,
148
+ createdAt: m.metadata?.createdAt ?? Date.now(),
149
+ })
150
+ // Existing message (same chat + id) → update content only; seq is
151
+ // preserved. Conflict target is the composite PK — a same-id row in
152
+ // ANOTHER chat is a different row, never overwritten from here.
153
+ .onConflictDoUpdate({
154
+ target: [s.messages.chatId, s.messages.id],
155
+ set: { parts: m.parts, metadata: m.metadata ?? null },
156
+ ...(fence ? { setWhere: fenceHolds(fence) } : {}),
157
+ });
158
+ };
138
159
  /**
139
160
  * Insert a run row. A LIVE active run in the chat trips the partial unique
140
161
  * index → a placeholder `ChatBusyError` (retryAfterMs 0). The caller fills
@@ -153,14 +174,13 @@ export function makeStorageAdapter(db, s, opts) {
153
174
  }
154
175
  }
155
176
  /** The busy refusal with the live run's remaining time, computed on the main connection. */
156
- async function busyError(chatId, now) {
177
+ async function busyError(chatId) {
157
178
  const live = await db
158
- .select({ until: liveUntil })
179
+ .select({ left: sql `${liveUntil} - ${nowMs}` })
159
180
  .from(s.runs)
160
181
  .where(and(eq(s.runs.chatId, chatId), eq(s.runs.status, "active")))
161
182
  .limit(1);
162
- const until = live[0] ? Number(live[0].until) : now;
163
- return new ChatBusyError(chatId, Math.max(1, until - now));
183
+ return new ChatBusyError(chatId, Math.max(1, live[0] ? Number(live[0].left) : 1));
164
184
  }
165
185
  /** `insertRun` for the non-transactional entry points: turn the placeholder into the real refusal. */
166
186
  async function openRunRow(row, chatId, now) {
@@ -170,7 +190,7 @@ export function makeStorageAdapter(db, s, opts) {
170
190
  }
171
191
  catch (error) {
172
192
  if (error instanceof ChatBusyError)
173
- throw await busyError(chatId, now);
193
+ throw await busyError(chatId);
174
194
  throw error;
175
195
  }
176
196
  }
@@ -190,9 +210,9 @@ export function makeStorageAdapter(db, s, opts) {
190
210
  ...(input.lease
191
211
  ? {
192
212
  leaseOwner: input.lease.owner,
193
- leaseExpiresAt: now + input.lease.ttlMs,
213
+ leaseExpiresAt: sql `${nowMs} + ${input.lease.ttlMs}`,
194
214
  fencingToken: 1,
195
- heartbeatAt: now,
215
+ heartbeatAt: nowMs,
196
216
  attempt: 1,
197
217
  }
198
218
  : {}),
@@ -204,6 +224,45 @@ export function makeStorageAdapter(db, s, opts) {
204
224
  // Chat activity: keep `updatedAt` fresh so `listChats` orders by it.
205
225
  await exec.update(s.chats).set({ updatedAt: Date.now() }).where(eq(s.chats.id, chatId));
206
226
  }
227
+ /**
228
+ * The fenced append, all-or-nothing in every driver: each statement checks
229
+ * the fence itself, and they run as one batch / transaction so a refusal
230
+ * part-way leaves nothing behind. Resolves whether every message landed.
231
+ */
232
+ async function appendFenced(chatId, msgs, fence) {
233
+ const touch = (exec) => exec.update(s.chats).set({ updatedAt: Date.now() }).where(and(eq(s.chats.id, chatId), fenceHolds(fence)));
234
+ const upserts = (exec) => msgs.map((m) => messageInsert(chatId, m, exec, fence).returning({ id: s.messages.id }));
235
+ try {
236
+ let landed;
237
+ if (opts.batch) {
238
+ landed = (await opts.batch([...upserts(db), touch(db)])).slice(0, msgs.length);
239
+ }
240
+ else if (opts.syncTx) {
241
+ landed = opts.syncTx((tx) => {
242
+ const rows = upserts(tx).map((q) => q.all());
243
+ touch(tx).run();
244
+ return rows;
245
+ });
246
+ }
247
+ else {
248
+ landed = await opts.withTx(async (tx) => {
249
+ const rows = [];
250
+ for (const q of upserts(tx))
251
+ rows.push(await q);
252
+ await touch(tx);
253
+ return rows;
254
+ });
255
+ }
256
+ // A refused update of an existing message matches no row instead of
257
+ // failing; the fence is read once per transaction, so it refuses all.
258
+ return landed.every((rows) => rows.length > 0);
259
+ }
260
+ catch (error) {
261
+ if (isNotNullViolation(error))
262
+ return false;
263
+ throw error;
264
+ }
265
+ }
207
266
  return {
208
267
  async createChat(principal, input) {
209
268
  const now = Date.now();
@@ -275,7 +334,9 @@ export function makeStorageAdapter(db, s, opts) {
275
334
  metadata: (r.metadata ?? undefined),
276
335
  }));
277
336
  },
278
- async appendMessages(chatId, msgs) {
337
+ async appendMessages(chatId, msgs, fence) {
338
+ if (fence)
339
+ return msgs.length === 0 || appendFenced(chatId, msgs, fence);
279
340
  if (msgs.length === 0)
280
341
  return;
281
342
  // The next seq is computed INSIDE each INSERT (a single statement), so
@@ -330,7 +391,7 @@ export function makeStorageAdapter(db, s, opts) {
330
391
  }
331
392
  catch (error) {
332
393
  if (error instanceof ChatBusyError || isUniqueViolation(error)) {
333
- throw await busyError(input.chatId, now);
394
+ throw await busyError(input.chatId);
334
395
  }
335
396
  throw error;
336
397
  }
@@ -351,10 +412,9 @@ export function makeStorageAdapter(db, s, opts) {
351
412
  return rowToRun(await openRunRow(row, input.chatId, now));
352
413
  },
353
414
  async heartbeatRun(id, owner, ttlMs, fencingToken) {
354
- const now = Date.now();
355
415
  const updated = await db
356
416
  .update(s.runs)
357
- .set({ leaseExpiresAt: now + ttlMs, heartbeatAt: now })
417
+ .set({ leaseExpiresAt: sql `${nowMs} + ${ttlMs}`, heartbeatAt: nowMs })
358
418
  .where(and(eq(s.runs.id, id), eq(s.runs.leaseOwner, owner),
359
419
  // Fenced: a stale holder whose run was reaped + re-claimed (owner
360
420
  // may match again, token was bumped) can't resurrect the lease.
@@ -363,7 +423,6 @@ export function makeStorageAdapter(db, s, opts) {
363
423
  return updated.length > 0;
364
424
  },
365
425
  async reclaimRun(id, owner, ttlMs) {
366
- const now = Date.now();
367
426
  let updated;
368
427
  try {
369
428
  updated = await db
@@ -371,8 +430,8 @@ export function makeStorageAdapter(db, s, opts) {
371
430
  .set({
372
431
  status: "active",
373
432
  leaseOwner: owner,
374
- leaseExpiresAt: now + ttlMs,
375
- heartbeatAt: now,
433
+ leaseExpiresAt: sql `${nowMs} + ${ttlMs}`,
434
+ heartbeatAt: nowMs,
376
435
  error: null,
377
436
  endedAt: null,
378
437
  fencingToken: sql `coalesce(${s.runs.fencingToken}, 0) + 1`,
@@ -383,7 +442,7 @@ export function makeStorageAdapter(db, s, opts) {
383
442
  // never-leased live (T1) run has leaseExpiresAt NULL and must not
384
443
  // be seizable; a reaped run keeps its (expired) leaseExpiresAt
385
444
  // even though the reaper cleared leaseOwner, so it still matches.
386
- isNotNull(s.runs.leaseExpiresAt), lt(s.runs.leaseExpiresAt, now)))
445
+ isNotNull(s.runs.leaseExpiresAt), lt(s.runs.leaseExpiresAt, nowMs)))
387
446
  .returning();
388
447
  }
389
448
  catch (error) {
@@ -411,16 +470,18 @@ export function makeStorageAdapter(db, s, opts) {
411
470
  return updated.length > 0;
412
471
  },
413
472
  async reapExpiredRuns(now, opts) {
473
+ // `now` only to simulate time (tests); otherwise the database's clock.
474
+ const at = now ?? nowMs;
414
475
  const reaped = await db
415
476
  .update(s.runs)
416
477
  .set({
417
478
  status: "errored",
418
479
  error: opts?.error ?? "lease expired",
419
- endedAt: now,
480
+ endedAt: at,
420
481
  leaseOwner: null,
421
482
  fencingToken: sql `${s.runs.fencingToken} + 1`,
422
483
  })
423
- .where(and(eq(s.runs.status, "active"), lt(s.runs.leaseExpiresAt, now)))
484
+ .where(and(eq(s.runs.status, "active"), lt(s.runs.leaseExpiresAt, at)))
424
485
  .returning();
425
486
  return reaped.map(rowToRun);
426
487
  },
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.shared.js","sourceRoot":"","sources":["../src/adapter.shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.shared.js","sourceRoot":"","sources":["../src/adapter.shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentface/latch-drizzle",
3
- "version": "0.13.3",
3
+ "version": "0.15.0",
4
4
  "description": "Latch StorageAdapter on Drizzle (SQLite/libsql first, Postgres next).",
5
5
  "keywords": [
6
6
  "ai",
@@ -34,9 +34,9 @@
34
34
  "dependencies": {
35
35
  "@libsql/client": "^0.15.0",
36
36
  "drizzle-orm": "^0.45.0",
37
- "@intentface/latch-agent-builder": "^0.13.3",
38
- "@intentface/latch-core": "^0.13.3",
39
- "@intentface/latch-memory": "^0.13.3"
37
+ "@intentface/latch-agent-builder": "^0.15.0",
38
+ "@intentface/latch-core": "^0.15.0",
39
+ "@intentface/latch-memory": "^0.15.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "ai": ">=7.0.0"
@@ -45,7 +45,8 @@
45
45
  "@electric-sql/pglite": "^0.2.0",
46
46
  "ai": "^7.0.106",
47
47
  "tsx": "^4.19.0",
48
- "typescript": "^5.7.0"
48
+ "typescript": "^5.7.0",
49
+ "vitest": "^4"
49
50
  },
50
51
  "repository": {
51
52
  "type": "git",
@@ -54,11 +55,12 @@
54
55
  },
55
56
  "scripts": {
56
57
  "build": "tsc -p tsconfig.json",
57
- "typecheck": "tsc -p tsconfig.json --noEmit",
58
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
58
59
  "smoke": "tsx src/smoke.ts",
59
60
  "smoke:pg": "tsx src/smoke.pg.ts",
60
61
  "smoke:agents": "tsx src/agent-store.smoke.ts",
61
62
  "smoke:agent-versions": "tsx src/agent-versions.smoke.ts",
62
- "smoke:agent-versions:pg": "tsx src/agent-versions.smoke.pg.ts"
63
+ "smoke:agent-versions:pg": "tsx src/agent-versions.smoke.pg.ts",
64
+ "test": "vitest run"
63
65
  }
64
66
  }