@cat-factory/node-server 0.125.1 → 0.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootPersistence.d.ts +31 -0
- package/dist/bootPersistence.d.ts.map +1 -0
- package/dist/bootPersistence.js +91 -0
- package/dist/bootPersistence.js.map +1 -0
- package/dist/cacheNotifications.d.ts +2 -2
- package/dist/cacheNotifications.d.ts.map +1 -1
- package/dist/cacheNotifications.js +5 -2
- package/dist/cacheNotifications.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/container-core-deps.d.ts.map +1 -1
- package/dist/container-core-deps.js +8 -2
- package/dist/container-core-deps.js.map +1 -1
- package/dist/container-executor-deps.js +6 -6
- package/dist/container-executor-deps.js.map +1 -1
- package/dist/container-realtime-deps.js +8 -2
- package/dist/container-realtime-deps.js.map +1 -1
- package/dist/db/client.js +1 -1
- package/dist/db/client.js.map +1 -1
- package/dist/environments.js +1 -1
- package/dist/environments.js.map +1 -1
- package/dist/execution/bootstrapRunner.d.ts.map +1 -1
- package/dist/execution/bootstrapRunner.js +9 -2
- package/dist/execution/bootstrapRunner.js.map +1 -1
- package/dist/execution/envConfigRepairRunner.d.ts.map +1 -1
- package/dist/execution/envConfigRepairRunner.js +9 -2
- package/dist/execution/envConfigRepairRunner.js.map +1 -1
- package/dist/execution/envTestRunner.d.ts.map +1 -1
- package/dist/execution/envTestRunner.js +14 -4
- package/dist/execution/envTestRunner.js.map +1 -1
- package/dist/execution/githubSyncRunner.js +4 -1
- package/dist/execution/githubSyncRunner.js.map +1 -1
- package/dist/execution/pgBossRunner.d.ts.map +1 -1
- package/dist/execution/pgBossRunner.js +28 -11
- package/dist/execution/pgBossRunner.js.map +1 -1
- package/dist/execution/trackerSyncRunner.d.ts.map +1 -1
- package/dist/execution/trackerSyncRunner.js +2 -2
- package/dist/execution/trackerSyncRunner.js.map +1 -1
- package/dist/githubReconcile.js +1 -1
- package/dist/githubReconcile.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/initiativeLoop.js +1 -1
- package/dist/initiativeLoop.js.map +1 -1
- package/dist/kaizen.js +1 -1
- package/dist/kaizen.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/notifications.js +1 -1
- package/dist/notifications.js.map +1 -1
- package/dist/platformHealth.js +1 -1
- package/dist/platformHealth.js.map +1 -1
- package/dist/platformMetrics.js +1 -1
- package/dist/platformMetrics.js.map +1 -1
- package/dist/processGuards.d.ts +27 -0
- package/dist/processGuards.d.ts.map +1 -0
- package/dist/processGuards.js +61 -0
- package/dist/processGuards.js.map +1 -0
- package/dist/propagator.d.ts +3 -7
- package/dist/propagator.d.ts.map +1 -1
- package/dist/propagator.js +4 -2
- package/dist/propagator.js.map +1 -1
- package/dist/realtime.d.ts +7 -7
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js +14 -5
- package/dist/realtime.js.map +1 -1
- package/dist/recurring.js +1 -1
- package/dist/recurring.js.map +1 -1
- package/dist/redisProbe.d.ts +3 -3
- package/dist/redisProbe.d.ts.map +1 -1
- package/dist/redisProbe.js +3 -1
- package/dist/redisProbe.js.map +1 -1
- package/dist/redisPropagator.d.ts +3 -2
- package/dist/redisPropagator.d.ts.map +1 -1
- package/dist/redisPropagator.js +5 -2
- package/dist/redisPropagator.js.map +1 -1
- package/dist/retention.js +2 -2
- package/dist/retention.js.map +1 -1
- package/dist/server.d.ts +2 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +27 -77
- package/dist/server.js.map +1 -1
- package/dist/sweeper.d.ts +1 -1
- package/dist/sweeper.d.ts.map +1 -1
- package/dist/sweeper.js +2 -1
- package/dist/sweeper.js.map +1 -1
- package/package.json +20 -20
- package/dist/keyFingerprint.d.ts +0 -7
- package/dist/keyFingerprint.d.ts.map +0 -1
- package/dist/keyFingerprint.js +0 -9
- package/dist/keyFingerprint.js.map +0 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Logger } from '@cat-factory/kernel';
|
|
2
|
+
/**
|
|
3
|
+
* Register the process-level failure guards. Idempotent per process — a second call is a
|
|
4
|
+
* no-op — because `startLocal` boots on top of the same runtime as `start`.
|
|
5
|
+
*
|
|
6
|
+
* **These guards add the log line and nothing else: both dispositions match what Node already
|
|
7
|
+
* did.** That is deliberate. Node's default for BOTH conditions is to terminate with a non-zero
|
|
8
|
+
* exit — `uncaughtException` has always done so, and since Node 15 an unhandled rejection is
|
|
9
|
+
* raised as an uncaught exception too (`--unhandled-rejections=throw`; this repo requires
|
|
10
|
+
* `node >= 20`). Registering a listener is what takes that decision away from Node, so each
|
|
11
|
+
* handler hands it straight back by exiting. A logging change must not quietly become a change
|
|
12
|
+
* to when the orchestrator stays up.
|
|
13
|
+
*
|
|
14
|
+
* Continuing past an unhandled rejection was considered and rejected. Deliberate fire-and-forget
|
|
15
|
+
* work already has a convention that logs and swallows at the call site (`runBestEffort`), so a
|
|
16
|
+
* rejection that escapes all the way to the process is by definition an OVERSIGHT — an `await`
|
|
17
|
+
* whose continuation never ran, leaving a lease unreleased or a structure half-updated. That is
|
|
18
|
+
* precisely the case Node's default is right about, and a supervisor restart beats serving
|
|
19
|
+
* traffic on invariants nobody can vouch for. Revisit it as its own change, with its own
|
|
20
|
+
* rationale, if a real incident argues otherwise.
|
|
21
|
+
*
|
|
22
|
+
* `exitProcess` is injectable so a test can assert the decision without killing the runner.
|
|
23
|
+
*/
|
|
24
|
+
export declare function installProcessFailureGuards(logger: Logger, exitProcess?: (code: number) => void): void;
|
|
25
|
+
/** Reset the once-per-process latch, removing only the listeners we added. Test-only. */
|
|
26
|
+
export declare function resetProcessFailureGuardsForTest(): void;
|
|
27
|
+
//# sourceMappingURL=processGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processGuards.d.ts","sourceRoot":"","sources":["../src/processGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA4BhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAmC,GACjE,IAAI,CAsBN;AAED,yFAAyF;AACzF,wBAAgB,gCAAgC,IAAI,IAAI,CAGvD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describeError } from '@cat-factory/kernel';
|
|
2
|
+
/**
|
|
3
|
+
* The guards this module registered, or `undefined` before the once-per-process install. Held as
|
|
4
|
+
* the listener list rather than a boolean because `process.removeAllListeners(...)` would also
|
|
5
|
+
* strip the test runner's own handlers — which is how a later failing spec in the same vitest
|
|
6
|
+
* worker ends up misreported.
|
|
7
|
+
*/
|
|
8
|
+
let installed;
|
|
9
|
+
/**
|
|
10
|
+
* Register the process-level failure guards. Idempotent per process — a second call is a
|
|
11
|
+
* no-op — because `startLocal` boots on top of the same runtime as `start`.
|
|
12
|
+
*
|
|
13
|
+
* **These guards add the log line and nothing else: both dispositions match what Node already
|
|
14
|
+
* did.** That is deliberate. Node's default for BOTH conditions is to terminate with a non-zero
|
|
15
|
+
* exit — `uncaughtException` has always done so, and since Node 15 an unhandled rejection is
|
|
16
|
+
* raised as an uncaught exception too (`--unhandled-rejections=throw`; this repo requires
|
|
17
|
+
* `node >= 20`). Registering a listener is what takes that decision away from Node, so each
|
|
18
|
+
* handler hands it straight back by exiting. A logging change must not quietly become a change
|
|
19
|
+
* to when the orchestrator stays up.
|
|
20
|
+
*
|
|
21
|
+
* Continuing past an unhandled rejection was considered and rejected. Deliberate fire-and-forget
|
|
22
|
+
* work already has a convention that logs and swallows at the call site (`runBestEffort`), so a
|
|
23
|
+
* rejection that escapes all the way to the process is by definition an OVERSIGHT — an `await`
|
|
24
|
+
* whose continuation never ran, leaving a lease unreleased or a structure half-updated. That is
|
|
25
|
+
* precisely the case Node's default is right about, and a supervisor restart beats serving
|
|
26
|
+
* traffic on invariants nobody can vouch for. Revisit it as its own change, with its own
|
|
27
|
+
* rationale, if a real incident argues otherwise.
|
|
28
|
+
*
|
|
29
|
+
* `exitProcess` is injectable so a test can assert the decision without killing the runner.
|
|
30
|
+
*/
|
|
31
|
+
export function installProcessFailureGuards(logger, exitProcess = (code) => process.exit(code)) {
|
|
32
|
+
if (installed)
|
|
33
|
+
return;
|
|
34
|
+
const guards = [];
|
|
35
|
+
installed = guards;
|
|
36
|
+
const on = (event, handler) => {
|
|
37
|
+
guards.push({ event, handler });
|
|
38
|
+
process.on(event, handler);
|
|
39
|
+
};
|
|
40
|
+
on('unhandledRejection', (reason) => {
|
|
41
|
+
logger.error('unhandled promise rejection; exiting', {
|
|
42
|
+
guard: 'unhandledRejection',
|
|
43
|
+
...describeError(reason),
|
|
44
|
+
});
|
|
45
|
+
exitProcess(1);
|
|
46
|
+
});
|
|
47
|
+
on('uncaughtException', (error) => {
|
|
48
|
+
logger.error('uncaught exception; exiting', {
|
|
49
|
+
guard: 'uncaughtException',
|
|
50
|
+
...describeError(error),
|
|
51
|
+
});
|
|
52
|
+
exitProcess(1);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/** Reset the once-per-process latch, removing only the listeners we added. Test-only. */
|
|
56
|
+
export function resetProcessFailureGuardsForTest() {
|
|
57
|
+
for (const { event, handler } of installed ?? [])
|
|
58
|
+
process.off(event, handler);
|
|
59
|
+
installed = undefined;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=processGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processGuards.js","sourceRoot":"","sources":["../src/processGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,qBAAqB,CAAA;AAoBhE;;;;;GAKG;AACH,IAAI,SAAuC,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,WAAW,GAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,SAAS;QAAE,OAAM;IACrB,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,SAAS,GAAG,MAAM,CAAA;IAClB,MAAM,EAAE,GAAG,CAAC,KAAmB,EAAE,OAAiC,EAAQ,EAAE;QAC1E,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAA;IACD,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;QAC3C,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;YACnD,KAAK,EAAE,oBAAoB;YAC3B,GAAG,aAAa,CAAC,MAAM,CAAC;SACzB,CAAC,CAAA;QACF,WAAW,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAc,EAAE,EAAE;QACzC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,KAAK,EAAE,mBAAmB;YAC1B,GAAG,aAAa,CAAC,KAAK,CAAC;SACxB,CAAC,CAAA;QACF,WAAW,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,gCAAgC;IAC9C,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC7E,SAAS,GAAG,SAAS,CAAA;AACvB,CAAC"}
|
package/dist/propagator.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import type { LocalEventSink, NodeRealtimeHub } from './realtime.js';
|
|
2
|
-
|
|
3
|
-
export interface PropagatorLogger {
|
|
4
|
-
info(obj: object, msg?: string): void;
|
|
5
|
-
warn(obj: object, msg?: string): void;
|
|
6
|
-
}
|
|
2
|
+
import type { Logger } from '@cat-factory/kernel';
|
|
7
3
|
/**
|
|
8
4
|
* A pre-serialised workspace event queued for cross-node delivery. `payload` is the exact
|
|
9
5
|
* JSON text frame the SPA receives (produced by {@link NodeEventPublisher}); `originConnectionId`
|
|
@@ -57,7 +53,7 @@ export declare class LayeredEventPropagator implements LocalEventSink {
|
|
|
57
53
|
* {@link broadcast}), so it is never re-published to the bus — that both prevents an infinite
|
|
58
54
|
* loop and avoids double delivery.
|
|
59
55
|
*/
|
|
60
|
-
start(log:
|
|
56
|
+
start(log: Logger): Promise<void>;
|
|
61
57
|
stop(): Promise<void>;
|
|
62
58
|
}
|
|
63
59
|
/**
|
|
@@ -69,5 +65,5 @@ export declare class LayeredEventPropagator implements LocalEventSink {
|
|
|
69
65
|
* echo-suppression id — a per-process random suffix is always appended, so it is safe to set the
|
|
70
66
|
* same value on every replica).
|
|
71
67
|
*/
|
|
72
|
-
export declare function buildRealtimePropagator(hub: NodeRealtimeHub, env: NodeJS.ProcessEnv, log:
|
|
68
|
+
export declare function buildRealtimePropagator(hub: NodeRealtimeHub, env: NodeJS.ProcessEnv, log: Logger): LayeredEventPropagator;
|
|
73
69
|
//# sourceMappingURL=propagator.d.ts.map
|
package/dist/propagator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propagator.d.ts","sourceRoot":"","sources":["../src/propagator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"propagator.d.ts","sourceRoot":"","sources":["../src/propagator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAyBjD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;IACvC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,uCAAuC;IACvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAMzD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,YAKmB,GAAG,EAAE,cAAc,EACnB,QAAQ,GAAE,SAAS,mBAAmB,EAAO,EAC5D;IAEJ,yFAAyF;IACzF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQxF;IAED;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtC;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,GACV,sBAAsB,CAkBxB"}
|
package/dist/propagator.js
CHANGED
|
@@ -38,7 +38,7 @@ export class LayeredEventPropagator {
|
|
|
38
38
|
async start(log) {
|
|
39
39
|
for (const adapter of this.adapters) {
|
|
40
40
|
await adapter.start((message) => this.hub.broadcast(message.workspaceId, message.payload, message.originConnectionId));
|
|
41
|
-
log.info(
|
|
41
|
+
log.info('real-time cross-node propagation adapter started', { adapter: adapter.name });
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
async stop() {
|
|
@@ -67,7 +67,9 @@ export function buildRealtimePropagator(hub, env, log) {
|
|
|
67
67
|
nodeId: env.REALTIME_NODE_ID?.trim() || undefined,
|
|
68
68
|
log,
|
|
69
69
|
}));
|
|
70
|
-
log.info(
|
|
70
|
+
log.info('real-time: cross-node WebSocket propagation enabled (redis)', {
|
|
71
|
+
channel: channel ?? 'cat-factory:realtime',
|
|
72
|
+
});
|
|
71
73
|
}
|
|
72
74
|
return new LayeredEventPropagator(hub, adapters);
|
|
73
75
|
}
|
package/dist/propagator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propagator.js","sourceRoot":"","sources":["../src/propagator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"propagator.js","sourceRoot":"","sources":["../src/propagator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AA+D/D;;;;;GAKG;AACH,MAAM,OAAO,sBAAsB;IAMd,GAAG;IACH,QAAQ;IAN3B;IACE,qGAAqG;IACrG,oGAAoG;IACpG,sGAAsG;IACtG,wDAAwD;IACvC,GAAmB,EACnB,QAAQ,GAAmC,EAAE;mBAD7C,GAAG;wBACH,QAAQ;IACxB,CAAC;IAEJ,yFAAyF;IACzF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,SAAS,CAAC,WAAmB,EAAE,OAAe,EAAE,kBAAkC;QAChF,uFAAuF;QACvF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAA;QAC5D,0FAA0F;QAC1F,4CAA4C;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CACrF,CAAA;YACD,GAAG,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAoB,EACpB,GAAsB,EACtB,GAAW;IAEX,MAAM,QAAQ,GAA0B,EAAE,CAAA;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAA;QAC/D,QAAQ,CAAC,IAAI,CACX,IAAI,wBAAwB,CAAC;YAC3B,GAAG,EAAE,QAAQ;YACb,OAAO;YACP,MAAM,EAAE,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS;YACjD,GAAG;SACJ,CAAC,CACH,CAAA;QACD,GAAG,CAAC,IAAI,CAAC,6DAA6D,EAAE;YACtE,OAAO,EAAE,OAAO,IAAI,sBAAsB;SAC3C,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,IAAI,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAClD,CAAC"}
|
package/dist/realtime.d.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import type { IncomingMessage } from 'node:http';
|
|
2
2
|
import type { Duplex } from 'node:stream';
|
|
3
3
|
import type { Block, BootstrapJob, BrainstormSession, ConsensusSession, ClarityReview, DocInterviewSession, EnvConfigRepairJob, EnvironmentTestRun, ExecutionInstance, Initiative, KaizenGrading, LlmCallActivity, Notification, RequirementReview } from '@cat-factory/contracts';
|
|
4
|
-
import type
|
|
4
|
+
import { type ExecutionEventPublisher, type Logger } from '@cat-factory/kernel';
|
|
5
5
|
import { type AccountOfWorkspace, type AuthConfig } from '@cat-factory/server';
|
|
6
6
|
import { WebSocket } from 'ws';
|
|
7
|
-
/** The minimal logger shape this module needs (a pino logger satisfies it). */
|
|
8
|
-
interface RealtimeLogger {
|
|
9
|
-
info(obj: object, msg?: string): void;
|
|
10
|
-
warn(obj: object, msg?: string): void;
|
|
11
|
-
}
|
|
12
7
|
/** The subset of a Node HTTP/HTTP2 server we attach the upgrade listener to. */
|
|
13
8
|
interface UpgradableServer {
|
|
14
9
|
on(event: 'upgrade', listener: (request: IncomingMessage, socket: Duplex, head: Buffer) => void): void;
|
|
@@ -94,6 +89,11 @@ export declare class NodeRealtimeHub implements LocalEventSink, RealtimeRoomWatc
|
|
|
94
89
|
export declare class NodeEventPublisher implements ExecutionEventPublisher {
|
|
95
90
|
private readonly sink;
|
|
96
91
|
constructor(sink: LocalEventSink);
|
|
92
|
+
/**
|
|
93
|
+
* Publishes stay best-effort, but no longer SILENT — see the Worker twin
|
|
94
|
+
* (`DurableObjectEventPublisher`) for the reasoning and the identical `warn` level.
|
|
95
|
+
*/
|
|
96
|
+
private readonly log;
|
|
97
97
|
executionChanged(workspaceId: string, instance: ExecutionInstance, block?: Block | null): Promise<void>;
|
|
98
98
|
boardChanged(workspaceId: string, reason: string, _blockId?: string | null, originConnectionId?: string | null): Promise<void>;
|
|
99
99
|
bootstrapChanged(workspaceId: string, job: BootstrapJob, block?: Block | null): Promise<void>;
|
|
@@ -145,6 +145,6 @@ export interface MachineSubscribeDeps {
|
|
|
145
145
|
* browser stream is: `@hono/node-server` cannot upgrade from a Hono `Response`, so the request
|
|
146
146
|
* never reaches the controller on this runtime.
|
|
147
147
|
*/
|
|
148
|
-
export declare function attachRealtime(server: UpgradableServer, hub: NodeRealtimeHub, auth: AuthConfig, log:
|
|
148
|
+
export declare function attachRealtime(server: UpgradableServer, hub: NodeRealtimeHub, auth: AuthConfig, log: Logger, machineSubscribe?: MachineSubscribeDeps): () => void;
|
|
149
149
|
export {};
|
|
150
150
|
//# sourceMappingURL=realtime.d.ts.map
|
package/dist/realtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/realtime.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describeError } from '@cat-factory/kernel';
|
|
2
|
+
import { MACHINE_EVENTS_SUBSCRIBE_PATTERN, authorizeMachineSubscribe, authorizeWsUpgrade, logger, } from '@cat-factory/server';
|
|
2
3
|
import { WebSocket, WebSocketServer } from 'ws';
|
|
3
4
|
const WS_EVENTS_PATH = /^\/workspaces\/([^/]+)\/events$/;
|
|
4
5
|
/**
|
|
@@ -114,6 +115,11 @@ export class NodeEventPublisher {
|
|
|
114
115
|
constructor(sink) {
|
|
115
116
|
this.sink = sink;
|
|
116
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Publishes stay best-effort, but no longer SILENT — see the Worker twin
|
|
120
|
+
* (`DurableObjectEventPublisher`) for the reasoning and the identical `warn` level.
|
|
121
|
+
*/
|
|
122
|
+
log = logger.child({ publisher: 'node-hub' });
|
|
117
123
|
async executionChanged(workspaceId, instance, block) {
|
|
118
124
|
this.publish(workspaceId, {
|
|
119
125
|
type: 'execution',
|
|
@@ -167,9 +173,12 @@ export class NodeEventPublisher {
|
|
|
167
173
|
try {
|
|
168
174
|
this.sink.broadcast(workspaceId, JSON.stringify(event), originConnectionId);
|
|
169
175
|
}
|
|
170
|
-
catch {
|
|
171
|
-
|
|
172
|
-
|
|
176
|
+
catch (error) {
|
|
177
|
+
this.log.warn('realtime publish failed; browsers may be stale until they resync', {
|
|
178
|
+
workspaceId,
|
|
179
|
+
eventType: event.type,
|
|
180
|
+
...describeError(error),
|
|
181
|
+
});
|
|
173
182
|
}
|
|
174
183
|
}
|
|
175
184
|
}
|
|
@@ -285,7 +294,7 @@ export function attachRealtime(server, hub, auth, log, machineSubscribe) {
|
|
|
285
294
|
}, HEARTBEAT_INTERVAL_MS);
|
|
286
295
|
// Don't let the heartbeat timer keep the process alive on shutdown.
|
|
287
296
|
heartbeat.unref?.();
|
|
288
|
-
log.info(
|
|
297
|
+
log.info('real-time WebSocket transport attached (/workspaces/:ws/events)', {});
|
|
289
298
|
return () => {
|
|
290
299
|
clearInterval(heartbeat);
|
|
291
300
|
for (const ws of wss.clients)
|
package/dist/realtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/recurring.js
CHANGED
|
@@ -23,7 +23,7 @@ export function startScheduleSweeper(container, clock, log) {
|
|
|
23
23
|
tick: async () => {
|
|
24
24
|
const { fired, skipped } = await recurring.service.runDue(clock.now());
|
|
25
25
|
if (fired > 0 || skipped > 0) {
|
|
26
|
-
log.info({ fired, skipped }
|
|
26
|
+
log.info('fired recurring pipelines', { fired, skipped });
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
});
|
package/dist/recurring.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurring.js","sourceRoot":"","sources":["../src/recurring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,8EAA8E;AAC9E,iFAAiF;AACjF,oFAAoF;AACpF,mFAAmF;AACnF,eAAe;AAEf,2DAA2D;AAC3D,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAA;AAE5C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA0B,EAC1B,KAAY,EACZ,GAAW;IAEX,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IAC/B,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,0BAA0B;QACtC,GAAG;QACH,cAAc,EAAE,iCAAiC;QACjD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;YACtE,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"recurring.js","sourceRoot":"","sources":["../src/recurring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,8EAA8E;AAC9E,iFAAiF;AACjF,oFAAoF;AACpF,mFAAmF;AACnF,eAAe;AAEf,2DAA2D;AAC3D,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAA;AAE5C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA0B,EAC1B,KAAY,EACZ,GAAW;IAEX,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IAC/B,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,0BAA0B;QACtC,GAAG;QACH,cAAc,EAAE,iCAAiC;QACjD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;YACtE,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/redisProbe.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Logger } from '@cat-factory/kernel';
|
|
2
2
|
/** How long the boot probe waits for the bus to answer before warning. */
|
|
3
3
|
export declare const DEFAULT_REDIS_PROBE_TIMEOUT_MS = 3000;
|
|
4
4
|
/**
|
|
@@ -33,7 +33,7 @@ export declare function probeRedisReachable(url: string, opts?: {
|
|
|
33
33
|
* naming the host + how to verify. A no-op when `REDIS_URL` is unset (single-node / local) or when
|
|
34
34
|
* the probe couldn't run (ioredis absent — the fatal {@link missingIoredisProblem} covers that).
|
|
35
35
|
*/
|
|
36
|
-
export declare function warnIfRedisUnreachable(env: NodeJS.ProcessEnv, log:
|
|
36
|
+
export declare function warnIfRedisUnreachable(env: NodeJS.ProcessEnv, log: Logger, opts?: {
|
|
37
37
|
connectProbe?: RedisConnectProbe;
|
|
38
38
|
timeoutMs?: number;
|
|
39
39
|
}): Promise<void>;
|
|
@@ -45,7 +45,7 @@ export declare function warnIfRedisUnreachable(env: NodeJS.ProcessEnv, log: Prop
|
|
|
45
45
|
* `preflightHarnessImage` fire-and-forget shape (`void probe().catch(() => {})`); never throws
|
|
46
46
|
* (`warnIfRedisUnreachable` already swallows probe failures, the `.catch` is belt-and-suspenders).
|
|
47
47
|
*/
|
|
48
|
-
export declare function warnIfRedisUnreachableInBackground(env: NodeJS.ProcessEnv, log:
|
|
48
|
+
export declare function warnIfRedisUnreachableInBackground(env: NodeJS.ProcessEnv, log: Logger, opts?: {
|
|
49
49
|
connectProbe?: RedisConnectProbe;
|
|
50
50
|
timeoutMs?: number;
|
|
51
51
|
}): void;
|
package/dist/redisProbe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisProbe.d.ts","sourceRoot":"","sources":["../src/redisProbe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"redisProbe.d.ts","sourceRoot":"","sources":["../src/redisProbe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAmBjD,0EAA0E;AAC1E,eAAO,MAAM,8BAA8B,OAAO,CAAA;AAWlD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAA;AAElD,8FAA8F;AAC9F,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE7F;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY/E;AAsCD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,OAAO,CAAC,gBAAgB,CAAC,CAmB3B;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,IAAI,CAEN"}
|
package/dist/redisProbe.js
CHANGED
|
@@ -118,7 +118,9 @@ export async function warnIfRedisUnreachable(env, log, opts = {}) {
|
|
|
118
118
|
return;
|
|
119
119
|
const reachable = await probeRedisReachable(url, opts);
|
|
120
120
|
if (reachable === false) {
|
|
121
|
-
log.warn(
|
|
121
|
+
log.warn(describeRedisUnreachable(url, opts.timeoutMs ?? DEFAULT_REDIS_PROBE_TIMEOUT_MS), {
|
|
122
|
+
target: redisTargetLabel(url),
|
|
123
|
+
});
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
/**
|
package/dist/redisProbe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisProbe.js","sourceRoot":"","sources":["../src/redisProbe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"redisProbe.js","sourceRoot":"","sources":["../src/redisProbe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Logger } from '@cat-factory/kernel';
|
|
2
|
+
import type { RealtimeMessage, WebSocketPropagator } from './propagator.js';
|
|
2
3
|
/** The tiny slice of the ioredis client surface this adapter uses. */
|
|
3
4
|
export interface RedisClient {
|
|
4
5
|
publish(channel: string, message: string): Promise<number>;
|
|
@@ -22,7 +23,7 @@ export interface RedisWebSocketPropagatorOptions {
|
|
|
22
23
|
* even when every replica is given the same value — see the constructor.
|
|
23
24
|
*/
|
|
24
25
|
nodeId?: string;
|
|
25
|
-
log:
|
|
26
|
+
log: Logger;
|
|
26
27
|
/**
|
|
27
28
|
* Connect a fresh Redis client for the given role. Defaults to constructing an `ioredis`
|
|
28
29
|
* client from `url` (dynamically imported) with role-specific resilience options and an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisPropagator.d.ts","sourceRoot":"","sources":["../src/redisPropagator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"redisPropagator.d.ts","sourceRoot":"","sources":["../src/redisPropagator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAY3E,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5C,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;IAC1D,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,UAAU,IAAI,IAAI,CAAA;CACnB;AAED,0FAA0F;AAC1F,KAAK,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;AA+B3C,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB,yBAAyB,CAAA;AAW9D,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;CACjE;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAClE,QAAQ,CAAC,IAAI,WAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAChF,OAAO,CAAC,GAAG,CAAC,CAAa;IACzB,OAAO,CAAC,GAAG,CAAC,CAAa;IAEzB,YAAY,OAAO,EAAE,+BAA+B,EAYnD;YAEa,cAAc;IAW5B,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAmBtC;IAEK,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BtE;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1B;YAEa,aAAa;IAS3B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,KAAK;CAWd"}
|
package/dist/redisPropagator.js
CHANGED
|
@@ -78,7 +78,7 @@ export class RedisWebSocketPropagator {
|
|
|
78
78
|
// reconnect if this drops. The publisher's offline queue is disabled (see CLIENT_OPTIONS),
|
|
79
79
|
// so a publish while the bus is down rejects here rather than buffering without bound.
|
|
80
80
|
void this.pub.publish(this.channel, JSON.stringify(envelope)).catch((err) => {
|
|
81
|
-
this.log.warn(
|
|
81
|
+
this.log.warn('real-time redis publish failed (event delivered locally; peers reconcile on reconnect)', { err: err instanceof Error ? err.message : String(err) });
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
async start(deliver) {
|
|
@@ -129,7 +129,10 @@ export class RedisWebSocketPropagator {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
onConnectionError(role, err) {
|
|
132
|
-
this.log.warn(
|
|
132
|
+
this.log.warn('real-time redis connection error (ioredis will retry)', {
|
|
133
|
+
role,
|
|
134
|
+
err: err instanceof Error ? err.message : String(err),
|
|
135
|
+
});
|
|
133
136
|
}
|
|
134
137
|
parse(raw) {
|
|
135
138
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisPropagator.js","sourceRoot":"","sources":["../src/redisPropagator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"redisPropagator.js","sourceRoot":"","sources":["../src/redisPropagator.ts"],"names":[],"mappings":"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"}
|
package/dist/retention.js
CHANGED
|
@@ -64,7 +64,7 @@ export function startRetentionSweeper(repos, retention, clock, log) {
|
|
|
64
64
|
tick: async () => {
|
|
65
65
|
const reclaimed = await sweepRetention(repos, retention, clock.now());
|
|
66
66
|
if (Object.values(reclaimed).some((n) => n > 0)) {
|
|
67
|
-
log.info(
|
|
67
|
+
log.info('retention sweep reclaimed rows', { ...reclaimed });
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
});
|
|
@@ -92,7 +92,7 @@ export function startArtifactRetentionSweeper(resolveStore, workspaceRepository,
|
|
|
92
92
|
now: clock.now(),
|
|
93
93
|
});
|
|
94
94
|
if (removed > 0)
|
|
95
|
-
log.info(
|
|
95
|
+
log.info('artifact retention sweep reclaimed rows', { binaryArtifacts: removed });
|
|
96
96
|
},
|
|
97
97
|
});
|
|
98
98
|
}
|
package/dist/retention.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../src/retention.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../src/retention.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { type AppCachesProfile } from '@cat-factory/caching';
|
|
|
5
5
|
import { type NodeContainerOptions } from './container.js';
|
|
6
6
|
import { type ReadinessProbe } from './readiness.js';
|
|
7
7
|
import { type MachineSubscribeDeps, NodeRealtimeHub, attachRealtime } from './realtime.js';
|
|
8
|
+
import type { Logger } from '@cat-factory/kernel';
|
|
8
9
|
export interface CreateServerOptions extends NodeContainerOptions {
|
|
9
10
|
}
|
|
10
11
|
export interface CreateAppOptions {
|
|
@@ -155,7 +156,5 @@ export declare function start(options?: {
|
|
|
155
156
|
* exposes `workspaceService`, not a bare `workspaceRepository`; `list` delegates to
|
|
156
157
|
* `listVisible(null)`.)
|
|
157
158
|
*/
|
|
158
|
-
export declare function backfillEnvironmentHandlerSeeds(container: Pick<ServerContainer, 'environmentHandlerSeeder' | 'workspaceService'>, log:
|
|
159
|
-
warn(obj: object, msg?: string): void;
|
|
160
|
-
}): Promise<void>;
|
|
159
|
+
export declare function backfillEnvironmentHandlerSeeds(container: Pick<ServerContainer, 'environmentHandlerSeeder' | 'workspaceService'>, log: Logger): Promise<void>;
|
|
161
160
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -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,EAcrB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|