@cat-factory/node-server 0.43.12 → 0.44.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":"notifications.js","sourceRoot":"","sources":["../../src/repositories/notifications.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAU/C,SAAS,iBAAiB,CAAC,GAAoB;IAC7C,IAAI,OAAO,GAA+B,IAAI,CAAA;IAC9C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAwB,CAAA;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAwB;QAClC,MAAM,EAAE,GAAG,CAAC,MAAgC;QAC5C,QAAQ,EAAG,GAAG,CAAC,QAAwC,IAAI,QAAQ;QACnE,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,OAAO,6BAA6B;IACX,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aACjF,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACzF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,WAAmB,EACnB,OAAe,EACf,IAAsB;QAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAC3C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAC5B,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CACjC,CACF;aACA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aACvC,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,YAA0B;QAC1D,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,YAAY,CAAC,EAAE;YACnB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,YAAY,CAAC,OAAO;YAC9B,YAAY,EAAE,YAAY,CAAC,WAAW;YACtC,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3E,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,QAAQ;YAC3C,UAAU,EAAE,YAAY,CAAC,SAAS;YAClC,WAAW,EAAE,YAAY,CAAC,UAAU;SACrC,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,aAAa,CAAC;aACrB,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;YACtD,GAAG,EAAE;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC,CAAA;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/repositories/notifications.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class DrizzleProviderApiKeyRepository implements ProviderApiKeyRe
9
9
  getById(scope: ApiKeyScope, scopeId: string, id: string): Promise<ProviderApiKeyRecord | null>;
10
10
  add(record: ProviderApiKeyRecord): Promise<void>;
11
11
  markLeased(id: string, at: number): Promise<void>;
12
+ leaseLeastUsed(scopes: ApiKeyScopeRef[], provider: ApiKeyProvider, now: number, windowMs: number): Promise<ProviderApiKeyRecord | null>;
12
13
  recordUsage(id: string, usage: {
13
14
  inputTokens: number;
14
15
  outputTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"providerApiKey.d.ts","sourceRoot":"","sources":["../../src/repositories/providerApiKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAmChD,qBAAa,+BAAgC,YAAW,wBAAwB;IAClE,OAAO,CAAC,QAAQ,CAAC,EAAE;IAA/B,YAA6B,EAAE,EAAE,SAAS,EAAI;IAExC,WAAW,CACf,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;IAEK,WAAW,CACf,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;IAEK,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAOjF;IAEK,OAAO,CACX,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAetC;IAEK,GAAG,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrD;IAEK,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtD;IAEK,WAAW,CACf,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EACpD,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAef;IAEK,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3F;CACF"}
1
+ {"version":3,"file":"providerApiKey.d.ts","sourceRoot":"","sources":["../../src/repositories/providerApiKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAmChD,qBAAa,+BAAgC,YAAW,wBAAwB;IAClE,OAAO,CAAC,QAAQ,CAAC,EAAE;IAA/B,YAA6B,EAAE,EAAE,SAAS,EAAI;IAExC,WAAW,CACf,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;IAEK,WAAW,CACf,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;IAEK,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAOjF;IAEK,OAAO,CACX,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAetC;IAEK,GAAG,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrD;IAEK,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtD;IAEK,cAAc,CAClB,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsCtC;IAEK,WAAW,CACf,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EACpD,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAef;IAEK,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3F;CACF"}
@@ -85,6 +85,37 @@ export class DrizzleProviderApiKeyRepository {
85
85
  .set({ last_used_at: at })
86
86
  .where(eq(providerApiKeys.id, id));
87
87
  }
88
+ async leaseLeastUsed(scopes, provider, now, windowMs) {
89
+ if (scopes.length === 0)
90
+ return null;
91
+ // Pick-and-mark atomically inside one transaction: the winner is selected by the same
92
+ // policy as `chooseToken` (least rolling-window usage, then least-recently-leased —
93
+ // NULL last_used_at first — then oldest) under `FOR UPDATE SKIP LOCKED`, so two
94
+ // concurrent leases never select the same row (the second skips the locked winner and
95
+ // rotates to the next key) — the fix for the non-transactional read→choose→mark race.
96
+ const usage = sql `CASE WHEN ${providerApiKeys.window_started_at} IS NULL
97
+ OR ${now} - ${providerApiKeys.window_started_at} >= ${windowMs}
98
+ THEN 0
99
+ ELSE ${providerApiKeys.input_tokens} + ${providerApiKeys.output_tokens} END`;
100
+ return this.db.transaction(async (tx) => {
101
+ const picked = await tx
102
+ .select({ id: providerApiKeys.id })
103
+ .from(providerApiKeys)
104
+ .where(and(scopeMatch(scopes), eq(providerApiKeys.provider, provider), isNull(providerApiKeys.deleted_at)))
105
+ .orderBy(sql `${usage} ASC`, sql `${providerApiKeys.last_used_at} ASC NULLS FIRST`, asc(providerApiKeys.created_at))
106
+ .limit(1)
107
+ .for('update', { skipLocked: true });
108
+ const id = picked[0]?.id;
109
+ if (!id)
110
+ return null;
111
+ const rows = await tx
112
+ .update(providerApiKeys)
113
+ .set({ last_used_at: now })
114
+ .where(eq(providerApiKeys.id, id))
115
+ .returning();
116
+ return rows[0] ? rowToRecord(rows[0]) : null;
117
+ });
118
+ }
88
119
  async recordUsage(id, usage, at, windowMs) {
89
120
  // A single atomic statement (no read-modify-write) — mirrors the D1 repo and
90
121
  // the subscription pool. Keyed by row id alone (the leased key may belong to
@@ -1 +1 @@
1
- {"version":3,"file":"providerApiKey.js","sourceRoot":"","sources":["../../src/repositories/providerApiKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providerApiKey.js","sourceRoot":"","sources":["../../src/repositories/providerApiKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ ALTER TABLE "agent_runs" ADD COLUMN "rev" integer DEFAULT 0 NOT NULL;