@cat-factory/node-server 0.92.13 → 0.92.14

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.
@@ -0,0 +1,35 @@
1
+ export interface ReadinessCheck {
2
+ ok: boolean;
3
+ /**
4
+ * The failure detail when `ok` is false. `/ready` is PUBLIC (unauthenticated, like `/health`), so
5
+ * this string is readable by any client — keep it to a short diagnostic (`pg-boss not running`,
6
+ * `timed out after 2000ms`) and NEVER put a connection string, host, or credential in it.
7
+ */
8
+ error?: string;
9
+ }
10
+ export interface ReadinessReport {
11
+ ready: boolean;
12
+ /** Per-dependency results, keyed by name (`database`, `pgBoss`, or `shutdown` while draining). */
13
+ checks: Record<string, ReadinessCheck>;
14
+ }
15
+ export type ReadinessProbe = () => Promise<ReadinessReport>;
16
+ export interface ReadinessProbeDeps {
17
+ /** Round-trips the app's Postgres pool (a bare `SELECT 1`) — resolves on success, throws on failure. */
18
+ ping: () => Promise<void>;
19
+ /** Whether pg-boss is started and has not emitted `stopped` (a flag the boot sequence owns). */
20
+ pgBossHealthy: () => boolean;
21
+ /** True once graceful shutdown has begun, so the probe drains immediately. Optional (default: not draining). */
22
+ isDraining?: () => boolean;
23
+ /** Bounds the DB probe so a wedged pool can't hang the health check. Default 2000ms. */
24
+ timeoutMs?: number;
25
+ }
26
+ /**
27
+ * Compute the readiness verdict. Draining short-circuits (a SIGTERM'd node reports not-ready
28
+ * immediately so the LB stops routing new traffic while in-flight requests finish — the
29
+ * downstream probes are irrelevant to that decision). Otherwise both the Postgres pool and
30
+ * pg-boss must be healthy for `ready: true`.
31
+ */
32
+ export declare function checkReadiness(deps: ReadinessProbeDeps): Promise<ReadinessReport>;
33
+ /** Bind {@link checkReadiness} to a fixed set of probes — the shape `createApp` mounts on `/ready`. */
34
+ export declare function makeReadinessProbe(deps: ReadinessProbeDeps): ReadinessProbe;
35
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAA;IACX;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAA;IACd,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACvC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,wGAAwG;IACxG,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,gGAAgG;IAChG,aAAa,EAAE,MAAM,OAAO,CAAA;IAC5B,gHAAgH;IAChH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAA;IAC1B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0BD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAavF;AAED,uGAAuG;AACvG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAE3E"}
@@ -0,0 +1,66 @@
1
+ // Readiness probing for the Node facade's `/ready` endpoint.
2
+ //
3
+ // `/health` (in server.ts) is a cheap LIVENESS signal — the process is up and the event loop
4
+ // turns. It answers 200 regardless of downstream health, exactly as a liveness probe should:
5
+ // a liveness failure means "restart me", and a dead Postgres pool is not fixed by a restart.
6
+ //
7
+ // `/ready` is the READINESS signal a load balancer / orchestrator drains on: it round-trips the
8
+ // app's Postgres pool and confirms pg-boss is running, so a replica whose pool has died or whose
9
+ // durable-execution worker has stopped reports NOT ready and is taken out of rotation without
10
+ // killing it. It also flips to not-ready the instant graceful shutdown begins, so new traffic
11
+ // stops arriving while in-flight requests drain.
12
+ //
13
+ // This is legitimately Node-facade-specific: the Worker has no long-lived process to probe (each
14
+ // request is a fresh isolate), so it has no readiness concept. Local mothership mode has no local
15
+ // Postgres/pg-boss either (org state is served remotely), so it wires no probe and `/ready` simply
16
+ // mirrors `/health`.
17
+ function message(err) {
18
+ return err instanceof Error ? err.message : String(err);
19
+ }
20
+ /** Reject if `promise` hasn't settled within `ms` — a wedged pool must not hang `/ready`. */
21
+ async function withTimeout(promise, ms) {
22
+ let timer;
23
+ const timeout = new Promise((_resolve, reject) => {
24
+ timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms`)), ms);
25
+ // The probe fires every few seconds; its timeout must never keep the process alive on its own.
26
+ timer.unref?.();
27
+ });
28
+ // When the timeout wins the race, `promise` (a wedged `SELECT 1`) is still pending and may reject
29
+ // LATER — exactly the degraded-pool path this probe exists to detect. Nothing awaits it by then,
30
+ // so attach a no-op handler to swallow that late rejection and avoid an unhandledRejection. This
31
+ // does not hide a pre-timeout failure: the race still observes `promise` rejecting and rejects.
32
+ promise.catch(() => { });
33
+ try {
34
+ await Promise.race([promise, timeout]);
35
+ }
36
+ finally {
37
+ if (timer)
38
+ clearTimeout(timer);
39
+ }
40
+ }
41
+ /**
42
+ * Compute the readiness verdict. Draining short-circuits (a SIGTERM'd node reports not-ready
43
+ * immediately so the LB stops routing new traffic while in-flight requests finish — the
44
+ * downstream probes are irrelevant to that decision). Otherwise both the Postgres pool and
45
+ * pg-boss must be healthy for `ready: true`.
46
+ */
47
+ export async function checkReadiness(deps) {
48
+ if (deps.isDraining?.()) {
49
+ return { ready: false, checks: { shutdown: { ok: false, error: 'draining' } } };
50
+ }
51
+ const checks = {};
52
+ try {
53
+ await withTimeout(deps.ping(), deps.timeoutMs ?? 2_000);
54
+ checks.database = { ok: true };
55
+ }
56
+ catch (err) {
57
+ checks.database = { ok: false, error: message(err) };
58
+ }
59
+ checks.pgBoss = deps.pgBossHealthy() ? { ok: true } : { ok: false, error: 'pg-boss not running' };
60
+ return { ready: checks.database.ok && checks.pgBoss.ok, checks };
61
+ }
62
+ /** Bind {@link checkReadiness} to a fixed set of probes — the shape `createApp` mounts on `/ready`. */
63
+ export function makeReadinessProbe(deps) {
64
+ return () => checkReadiness(deps);
65
+ }
66
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,EAAE;AACF,gGAAgG;AAChG,iGAAiG;AACjG,8FAA8F;AAC9F,8FAA8F;AAC9F,iDAAiD;AACjD,EAAE;AACF,iGAAiG;AACjG,kGAAkG;AAClG,mGAAmG;AACnG,qBAAqB;AA+BrB,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzD,CAAC;AAED,6FAA6F;AAC7F,KAAK,UAAU,WAAW,CAAC,OAAsB,EAAE,EAAU;IAC3D,IAAI,KAAgD,CAAA;IACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QACrD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1E,+FAA+F;QAC/F,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,kGAAkG;IAClG,iGAAiG;IACjG,iGAAiG;IACjG,gGAAgG;IAChG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACxC,CAAC;YAAS,CAAC;QACT,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAwB;IAC3D,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IACjF,CAAC;IACD,MAAM,MAAM,GAAmC,EAAE,CAAA;IACjD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAA;QACvD,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACtD,CAAC;IACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;IACjG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAA;AAClE,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IACzD,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC"}
package/dist/server.d.ts CHANGED
@@ -3,11 +3,21 @@ import { type AppEnv, type ConfigProblem, type ServerContainer } from '@cat-fact
3
3
  import { Hono } from 'hono';
4
4
  import { type AppCachesProfile } from '@cat-factory/caching';
5
5
  import { type NodeContainerOptions } from './container.js';
6
+ import { type ReadinessProbe } from './readiness.js';
6
7
  import { NodeRealtimeHub, attachRealtime } from './realtime.js';
7
8
  export interface CreateServerOptions extends NodeContainerOptions {
8
9
  }
10
+ export interface CreateAppOptions {
11
+ /**
12
+ * A readiness probe mounted on the public `GET /ready`. Wired by {@link start} from the live
13
+ * Postgres pool + pg-boss so a broken replica drains out of rotation. Omitted (embedded
14
+ * `createServer`, local mothership mode) ⇒ `/ready` mirrors `/health` — there is no local
15
+ * durable-execution substrate to probe. See {@link ./readiness.js}.
16
+ */
17
+ readiness?: ReadinessProbe;
18
+ }
9
19
  /** Build the Hono app around a ready container (shared by `createServer` + `start`). */
10
- export declare function createApp(container: ServerContainer, env?: NodeJS.ProcessEnv): Hono<AppEnv>;
20
+ export declare function createApp(container: ServerContainer, env?: NodeJS.ProcessEnv, opts?: CreateAppOptions): Hono<AppEnv>;
11
21
  /**
12
22
  * Build the app from container options (convenience, e.g. embedding / tests).
13
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,eAAe,EAWrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,sBAAsB,CAAA;AAE7E,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,gBAAgB,CAAA;AAc9E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAiB/D,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,wFAAwF;AACxF,wBAAgB,SAAS,CACvB,SAAS,EAAE,eAAe,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAAC,MAAM,CAAC,CA4Bd;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,CAEvE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,WAAW,EAAE,eAAe,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;CAAE,CASxF;AAcD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAAC,OAAO,KAAK,CAAC,CAU1B;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,eAAe,CAAA;IACnE;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;IAC7D;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;IAC3E;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,CAAA;CAClE,GACL,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAenC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,eAAe,EAWrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,sBAAsB,CAAA;AAE7E,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,gBAAgB,CAAA;AAc9E,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAiB/D,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CACvB,SAAS,EAAE,eAAe,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,gBAAqB,GAC1B,IAAI,CAAC,MAAM,CAAC,CAyCd;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,CAEvE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,WAAW,EAAE,eAAe,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;CAAE,CASxF;AAcD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAAC,OAAO,KAAK,CAAC,CAU1B;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,eAAe,CAAA;IACnE;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;IAC7D;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;IAC3E;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,CAAA;CAClE,GACL,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAenC"}
package/dist/server.js CHANGED
@@ -21,6 +21,7 @@ import { resolveSweepInterval, startInitiativeLoopSweeper } from './initiativeLo
21
21
  import { startKaizenSweeper } from './kaizen.js';
22
22
  import { startNotificationEscalationSweeper } from './notifications.js';
23
23
  import { buildRealtimePropagator } from './propagator.js';
24
+ import { makeReadinessProbe } from './readiness.js';
24
25
  import { NodeRealtimeHub, attachRealtime } from './realtime.js';
25
26
  import { DrizzleGitHubInstallationRepository } from './repositories/containerExecution.js';
26
27
  import { createDrizzleRepositories } from './repositories/drizzle.js';
@@ -31,7 +32,7 @@ import { DrizzleNotificationRepository } from './repositories/notifications.js';
31
32
  import { startArtifactRetentionSweeper, startRetentionSweeper } from './retention.js';
32
33
  import { SystemClock } from './runtime.js';
33
34
  /** Build the Hono app around a ready container (shared by `createServer` + `start`). */
34
- export function createApp(container, env = process.env) {
35
+ export function createApp(container, env = process.env, opts = {}) {
35
36
  const app = new Hono();
36
37
  app.use('*', cors({
37
38
  origin: (origin) => resolveCorsOrigin(origin, env.CORS_ALLOWED_ORIGINS, corsReflectsWhenUnset(env.ENVIRONMENT)),
@@ -44,7 +45,18 @@ export function createApp(container, env = process.env) {
44
45
  c.set('container', container);
45
46
  await next();
46
47
  });
48
+ // Liveness: the process is up. Always 200 — a restart can't fix a dead downstream, and this is
49
+ // what the orchestrator restarts on. Readiness (pool + pg-boss) is `/ready` below.
47
50
  app.get('/health', (c) => c.json({ status: 'ok' }));
51
+ // Readiness: drained on when the pool dies, pg-boss stops, or shutdown begins. Public (before the
52
+ // auth gate) so a load balancer can probe it unauthenticated, like `/health`. With no probe wired
53
+ // (embedded/mothership) it reports ready — there is no local substrate to drain on.
54
+ app.get('/ready', async (c) => {
55
+ if (!opts.readiness)
56
+ return c.json({ status: 'ready', checks: {} });
57
+ const report = await opts.readiness();
58
+ return c.json({ status: report.ready ? 'ready' : 'not_ready', checks: report.checks }, report.ready ? 200 : 503);
59
+ });
48
60
  // Default-deny session gate + per-workspace authz, shared verbatim with the Worker
49
61
  // (one implementation in @cat-factory/server so the runtimes can't drift).
50
62
  mountAuthGate(app);
@@ -165,6 +177,18 @@ async function bootServer(options, env) {
165
177
  // a recovery hint when the DB is wedged.
166
178
  await migrate(db, pool, { schema: dbSchema, migrationsSchema });
167
179
  await boss.start();
180
+ // pg-boss lifecycle flags for the `/ready` probe: it's running once `start()` resolves and stops
181
+ // being ready when it emits `stopped` (graceful shutdown) or `draining` flips at SIGTERM. The
182
+ // pool's own health is probed live per request (a `SELECT 1`), so it needs no flag.
183
+ // NOTE: this tracks the GRACEFUL `stopped` transition only — a boss that crashes/wedges without
184
+ // emitting `stopped` still reads healthy here. That's an accepted residual gap: such an outage is
185
+ // almost always a shared-database failure the live `SELECT 1` probe catches, and flipping the
186
+ // flag off every transient `error` event would drain the replica on recoverable blips.
187
+ let bossRunning = true;
188
+ boss.on('stopped', () => {
189
+ bossRunning = false;
190
+ });
191
+ let draining = false;
168
192
  // Build the repositories once and share them with both the container and the
169
193
  // retention sweeper (so the sweeper prunes the very stores the app writes to).
170
194
  const clock = new SystemClock();
@@ -236,7 +260,16 @@ async function bootServer(options, env) {
236
260
  await startGitHubSyncWorker(boss, container, logger, {
237
261
  concurrency: runtime.concurrency,
238
262
  });
239
- const app = createApp(container, env);
263
+ // Readiness probe for `/ready`: a live Postgres round-trip + the pg-boss flag, draining the
264
+ // instant shutdown begins so a load balancer stops routing here while in-flight requests finish.
265
+ const readiness = makeReadinessProbe({
266
+ ping: async () => {
267
+ await pool.query('SELECT 1');
268
+ },
269
+ pgBossHealthy: () => bossRunning,
270
+ isDraining: () => draining,
271
+ });
272
+ const app = createApp(container, env, { readiness });
240
273
  const { server, stopRealtime } = serveAppWithRealtime({
241
274
  app,
242
275
  realtimeHub,
@@ -306,6 +339,9 @@ async function bootServer(options, env) {
306
339
  if (shuttingDown)
307
340
  return;
308
341
  shuttingDown = true;
342
+ // Flip `/ready` to not-ready FIRST so a load balancer drains this replica out of rotation
343
+ // before we start tearing down — new requests go elsewhere while in-flight ones finish.
344
+ draining = true;
309
345
  logger.info({ signal }, 'shutting down cat-factory node server');
310
346
  stopSweeper();
311
347
  stopRetention();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/node-server",
3
- "version": "0.92.13",
3
+ "version": "0.92.14",
4
4
  "description": "Node.js runtime facade for the Agent Architecture Board: serves the shared @cat-factory/server Hono app via @hono/node-server, wiring Node implementations of the runtime ports (persistence, gateways, model provisioning).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,23 +33,23 @@
33
33
  "pg-boss": "^12.25.1",
34
34
  "toad-scheduler": "^4.1.0",
35
35
  "ws": "^8.21.0",
36
- "@cat-factory/agents": "0.54.1",
37
- "@cat-factory/caching": "0.6.36",
38
- "@cat-factory/consensus": "0.10.37",
36
+ "@cat-factory/agents": "0.54.2",
37
+ "@cat-factory/caching": "0.6.37",
38
+ "@cat-factory/consensus": "0.10.38",
39
39
  "@cat-factory/contracts": "0.127.0",
40
- "@cat-factory/eks": "0.1.60",
41
- "@cat-factory/gates": "0.5.21",
42
- "@cat-factory/gitlab": "0.7.59",
43
- "@cat-factory/integrations": "0.81.8",
44
- "@cat-factory/kernel": "0.121.3",
45
- "@cat-factory/observability-langfuse": "0.7.191",
46
- "@cat-factory/orchestration": "0.106.2",
47
- "@cat-factory/prompt-fragments": "0.13.13",
48
- "@cat-factory/provider-bedrock": "0.7.207",
49
- "@cat-factory/provider-cloudflare": "0.7.208",
50
- "@cat-factory/provider-s3": "0.2.141",
51
- "@cat-factory/server": "0.112.3",
52
- "@cat-factory/spend": "0.12.17"
40
+ "@cat-factory/eks": "0.1.61",
41
+ "@cat-factory/gates": "0.5.22",
42
+ "@cat-factory/gitlab": "0.7.60",
43
+ "@cat-factory/integrations": "0.81.9",
44
+ "@cat-factory/kernel": "0.121.4",
45
+ "@cat-factory/observability-langfuse": "0.7.192",
46
+ "@cat-factory/orchestration": "0.106.3",
47
+ "@cat-factory/provider-bedrock": "0.7.208",
48
+ "@cat-factory/provider-cloudflare": "0.7.209",
49
+ "@cat-factory/provider-s3": "0.2.142",
50
+ "@cat-factory/server": "0.112.4",
51
+ "@cat-factory/spend": "0.12.18",
52
+ "@cat-factory/prompt-fragments": "0.13.13"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "^26.1.0",
@@ -58,7 +58,7 @@
58
58
  "drizzle-kit": "1.0.0-rc.4",
59
59
  "typescript": "7.0.1-rc",
60
60
  "vitest": "^4.1.9",
61
- "@cat-factory/conformance": "0.10.102"
61
+ "@cat-factory/conformance": "0.10.103"
62
62
  },
63
63
  "optionalDependencies": {
64
64
  "ioredis": "^5.11.1"