@cat-factory/node-server 0.6.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/LICENSE +21 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +297 -0
- package/dist/config.js.map +1 -0
- package/dist/container.d.ts +88 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +937 -0
- package/dist/container.js.map +1 -0
- package/dist/db/client.d.ts +13 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +21 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/migrate.d.ts +12 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +40 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +7858 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +928 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/environments.d.ts +11 -0
- package/dist/environments.d.ts.map +1 -0
- package/dist/environments.js +31 -0
- package/dist/environments.js.map +1 -0
- package/dist/execution/bootstrapRunner.d.ts +27 -0
- package/dist/execution/bootstrapRunner.d.ts.map +1 -0
- package/dist/execution/bootstrapRunner.js +79 -0
- package/dist/execution/bootstrapRunner.js.map +1 -0
- package/dist/execution/config.d.ts +37 -0
- package/dist/execution/config.d.ts.map +1 -0
- package/dist/execution/config.js +86 -0
- package/dist/execution/config.js.map +1 -0
- package/dist/execution/drive.d.ts +6 -0
- package/dist/execution/drive.d.ts.map +1 -0
- package/dist/execution/drive.js +13 -0
- package/dist/execution/drive.js.map +1 -0
- package/dist/execution/pgBossRunner.d.ts +82 -0
- package/dist/execution/pgBossRunner.d.ts.map +1 -0
- package/dist/execution/pgBossRunner.js +163 -0
- package/dist/execution/pgBossRunner.js.map +1 -0
- package/dist/gateways.d.ts +4 -0
- package/dist/gateways.d.ts.map +1 -0
- package/dist/gateways.js +91 -0
- package/dist/gateways.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +9 -0
- package/dist/main.js.map +1 -0
- package/dist/modelProvider.d.ts +6 -0
- package/dist/modelProvider.d.ts.map +1 -0
- package/dist/modelProvider.js +72 -0
- package/dist/modelProvider.js.map +1 -0
- package/dist/realtime.d.ts +62 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +171 -0
- package/dist/realtime.js.map +1 -0
- package/dist/recurring.d.ts +11 -0
- package/dist/recurring.d.ts.map +1 -0
- package/dist/recurring.js +33 -0
- package/dist/recurring.js.map +1 -0
- package/dist/repositories/bootstrap.d.ts +25 -0
- package/dist/repositories/bootstrap.d.ts.map +1 -0
- package/dist/repositories/bootstrap.js +280 -0
- package/dist/repositories/bootstrap.js.map +1 -0
- package/dist/repositories/containerExecution.d.ts +33 -0
- package/dist/repositories/containerExecution.d.ts.map +1 -0
- package/dist/repositories/containerExecution.js +199 -0
- package/dist/repositories/containerExecution.js.map +1 -0
- package/dist/repositories/documents.d.ts +31 -0
- package/dist/repositories/documents.d.ts.map +1 -0
- package/dist/repositories/documents.js +176 -0
- package/dist/repositories/documents.js.map +1 -0
- package/dist/repositories/drizzle.d.ts +105 -0
- package/dist/repositories/drizzle.d.ts.map +1 -0
- package/dist/repositories/drizzle.js +1872 -0
- package/dist/repositories/drizzle.js.map +1 -0
- package/dist/repositories/environments.d.ts +23 -0
- package/dist/repositories/environments.d.ts.map +1 -0
- package/dist/repositories/environments.js +162 -0
- package/dist/repositories/environments.js.map +1 -0
- package/dist/repositories/fragments.d.ts +23 -0
- package/dist/repositories/fragments.d.ts.map +1 -0
- package/dist/repositories/fragments.js +190 -0
- package/dist/repositories/fragments.js.map +1 -0
- package/dist/repositories/github.d.ts +53 -0
- package/dist/repositories/github.d.ts.map +1 -0
- package/dist/repositories/github.js +441 -0
- package/dist/repositories/github.js.map +1 -0
- package/dist/repositories/localModelEndpoint.d.ts +12 -0
- package/dist/repositories/localModelEndpoint.d.ts.map +1 -0
- package/dist/repositories/localModelEndpoint.js +75 -0
- package/dist/repositories/localModelEndpoint.js.map +1 -0
- package/dist/repositories/notifications.d.ts +11 -0
- package/dist/repositories/notifications.d.ts.map +1 -0
- package/dist/repositories/notifications.js +88 -0
- package/dist/repositories/notifications.js.map +1 -0
- package/dist/repositories/personalSubscription.d.ts +22 -0
- package/dist/repositories/personalSubscription.d.ts.map +1 -0
- package/dist/repositories/personalSubscription.js +159 -0
- package/dist/repositories/personalSubscription.js.map +1 -0
- package/dist/repositories/providerApiKey.d.ts +18 -0
- package/dist/repositories/providerApiKey.d.ts.map +1 -0
- package/dist/repositories/providerApiKey.js +111 -0
- package/dist/repositories/providerApiKey.js.map +1 -0
- package/dist/repositories/providerSubscription.d.ts +16 -0
- package/dist/repositories/providerSubscription.d.ts.map +1 -0
- package/dist/repositories/providerSubscription.js +88 -0
- package/dist/repositories/providerSubscription.js.map +1 -0
- package/dist/repositories/slack.d.ts +23 -0
- package/dist/repositories/slack.d.ts.map +1 -0
- package/dist/repositories/slack.js +150 -0
- package/dist/repositories/slack.js.map +1 -0
- package/dist/repositories/tasks.d.ts +24 -0
- package/dist/repositories/tasks.d.ts.map +1 -0
- package/dist/repositories/tasks.js +194 -0
- package/dist/repositories/tasks.js.map +1 -0
- package/dist/retention.d.ts +38 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +53 -0
- package/dist/retention.js.map +1 -0
- package/dist/runtime.d.ts +10 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +13 -0
- package/dist/runtime.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +138 -0
- package/dist/server.js.map +1 -0
- package/dist/tasks/JiraProvider.d.ts +27 -0
- package/dist/tasks/JiraProvider.d.ts.map +1 -0
- package/dist/tasks/JiraProvider.js +79 -0
- package/dist/tasks/JiraProvider.js.map +1 -0
- package/drizzle/20260622175812_flashy_maginty/migration.sql +689 -0
- package/drizzle/20260622175812_flashy_maginty/snapshot.json +8318 -0
- package/drizzle/20260623172634_loud_wallop/migration.sql +11 -0
- package/drizzle/20260623172634_loud_wallop/snapshot.json +8439 -0
- package/drizzle/20260623174706_acoustic_zemo/migration.sql +16 -0
- package/drizzle/20260623174706_acoustic_zemo/snapshot.json +8506 -0
- package/drizzle/20260623184400_silent_cardiac/migration.sql +24 -0
- package/drizzle/20260623184400_silent_cardiac/snapshot.json +8639 -0
- package/drizzle/20260623205323_quick_arclight/migration.sql +1 -0
- package/drizzle/20260623205323_quick_arclight/snapshot.json +8963 -0
- package/drizzle/20260623221910_black_zombie/migration.sql +22 -0
- package/drizzle/20260623221910_black_zombie/snapshot.json +9189 -0
- package/drizzle/20260624131343_far_lily_hollister/migration.sql +3 -0
- package/drizzle/20260624131343_far_lily_hollister/snapshot.json +9228 -0
- package/drizzle/20260624135452_tiny_norman_osborn/migration.sql +11 -0
- package/drizzle/20260624135452_tiny_norman_osborn/snapshot.json +9126 -0
- package/drizzle/20260624140138_wandering_avengers/migration.sql +1 -0
- package/drizzle/20260624140138_wandering_avengers/snapshot.json +9045 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Clock } from '@cat-factory/kernel';
|
|
2
|
+
import type { Logger, ServerContainer } from '@cat-factory/server';
|
|
3
|
+
/** How often the Node service tears down expired environments. */
|
|
4
|
+
export declare const ENVIRONMENT_SWEEP_INTERVAL_MS: number;
|
|
5
|
+
/**
|
|
6
|
+
* Start the periodic environment TTL sweep. Runs once immediately then on a timer.
|
|
7
|
+
* Best-effort: a failed sweep is logged and retried next tick, never thrown. Returns a
|
|
8
|
+
* stop function that clears the timer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function startEnvironmentSweeper(container: ServerContainer, clock: Clock, log: Logger): () => void;
|
|
11
|
+
//# sourceMappingURL=environments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAOlE,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,QAAgB,CAAA;AAE1D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GACV,MAAM,IAAI,CAkBZ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Periodic ephemeral-environment TTL teardown for the Node facade — the analogue of
|
|
2
|
+
// the Worker's every-2-min cron call to `sweepExpiredEnvironments`. The Node service
|
|
3
|
+
// has no cron, so a timer destroys environments whose expiry has elapsed. No-op when
|
|
4
|
+
// the environments integration isn't wired (the container has no `environments` module).
|
|
5
|
+
/** How often the Node service tears down expired environments. */
|
|
6
|
+
export const ENVIRONMENT_SWEEP_INTERVAL_MS = 2 * 60 * 1000;
|
|
7
|
+
/**
|
|
8
|
+
* Start the periodic environment TTL sweep. Runs once immediately then on a timer.
|
|
9
|
+
* Best-effort: a failed sweep is logged and retried next tick, never thrown. Returns a
|
|
10
|
+
* stop function that clears the timer.
|
|
11
|
+
*/
|
|
12
|
+
export function startEnvironmentSweeper(container, clock, log) {
|
|
13
|
+
const environments = container.environments;
|
|
14
|
+
if (!environments)
|
|
15
|
+
return () => { };
|
|
16
|
+
const tick = async () => {
|
|
17
|
+
try {
|
|
18
|
+
const torn = await environments.teardownService.sweepExpired(clock.now());
|
|
19
|
+
if (torn > 0)
|
|
20
|
+
log.info({ torn }, 'tore down expired environments');
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
log.error({ err: error instanceof Error ? error.message : String(error) }, 'environment TTL sweep failed');
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
void tick();
|
|
27
|
+
const timer = setInterval(() => void tick(), ENVIRONMENT_SWEEP_INTERVAL_MS);
|
|
28
|
+
timer.unref?.();
|
|
29
|
+
return () => clearInterval(timer);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=environments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,yFAAyF;AAEzF,kEAAkE;AAClE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAE1D;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA0B,EAC1B,KAAY,EACZ,GAAW;IAEX,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;IAC3C,IAAI,CAAC,YAAY;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;YACzE,IAAI,IAAI,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,gCAAgC,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CACP,EAAE,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC/D,8BAA8B,CAC/B,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IACD,KAAK,IAAI,EAAE,CAAA;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,6BAA6B,CAAC,CAAA;IAC3E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;IACf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { BootstrapRunner } from '@cat-factory/kernel';
|
|
2
|
+
import type { Logger, ServerContainer } from '@cat-factory/server';
|
|
3
|
+
import type { PgBoss } from 'pg-boss';
|
|
4
|
+
import type { AdvanceQueueOptions } from './pgBossRunner.js';
|
|
5
|
+
import type { DriveConfig } from './drive.js';
|
|
6
|
+
/**
|
|
7
|
+
* Poll a bootstrap run to a terminal state, sleeping between polls — the Node analogue
|
|
8
|
+
* of the BootstrapWorkflow's `step.sleep` + `pollBootstrapJob` loop, with plain async
|
|
9
|
+
* sleeps instead of durable steps. `pollBootstrapJob` is idempotent and persists every
|
|
10
|
+
* change, so a re-drive (retry/sweeper) safely resumes. Returns when the run is done or
|
|
11
|
+
* failed, or when the poll budget is spent (the sweeper re-drives a still-running run).
|
|
12
|
+
*/
|
|
13
|
+
export declare function driveBootstrap(container: ServerContainer, workspaceId: string, jobId: string, cfg: DriveConfig, log: Logger): Promise<void>;
|
|
14
|
+
export declare class PgBossBootstrapRunner implements BootstrapRunner {
|
|
15
|
+
private readonly boss;
|
|
16
|
+
private readonly queueOptions;
|
|
17
|
+
constructor(boss: PgBoss, queueOptions: AdvanceQueueOptions);
|
|
18
|
+
startRun(workspaceId: string, jobId: string): Promise<void>;
|
|
19
|
+
cancelRun(_workspaceId: string, _jobId: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/** Create the bootstrap drive queue and start the worker that drives bootstrap runs. */
|
|
22
|
+
export declare function startBootstrapWorker(boss: PgBoss, container: ServerContainer, cfg: DriveConfig, log: Logger, options?: {
|
|
23
|
+
concurrency?: number;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
/** Re-enqueue a stale bootstrap run (used by the stale-run sweeper). */
|
|
26
|
+
export declare function reenqueueStaleBootstrap(boss: PgBoss, workspaceId: string, jobId: string, queueOptions: AdvanceQueueOptions): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=bootstrapRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapRunner.d.ts","sourceRoot":"","sources":["../../src/execution/bootstrapRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAO,MAAM,EAAe,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAkC7C;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,qBAAa,qBAAsB,YAAW,eAAe;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAF/B,YACmB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,mBAAmB,EAChD;IAEE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAEK,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;CACF;AAED,wFAAwF;AACxF,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wEAAwE;AACxE,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Durable bootstrap driving on pg-boss: the analogue of the Worker's BootstrapWorkflow
|
|
2
|
+
// (and a sibling of the execution PgBossWorkRunner). `startRun` enqueues a drive job
|
|
3
|
+
// (deduped per job via the `exclusive` queue + singletonKey); a registered worker polls
|
|
4
|
+
// `BootstrapService.pollBootstrapJob` until the run reaches a terminal state. The job
|
|
5
|
+
// record in Postgres is authoritative, so a crash mid-run is recovered by pg-boss's
|
|
6
|
+
// retry of the expired/failed drive job and by the stale-run sweeper (which now re-drives
|
|
7
|
+
// stale `bootstrap` runs too).
|
|
8
|
+
const QUEUE = 'bootstrap.advance';
|
|
9
|
+
// `exclusive` so (queue, singletonKey=jobId) is unique across created/active/retry — at
|
|
10
|
+
// most one drive job per bootstrap run alive, and duplicate sends are no-ops. Mirrors the
|
|
11
|
+
// execution advance queue.
|
|
12
|
+
const QUEUE_POLICY = 'exclusive';
|
|
13
|
+
function sendOptions(jobId, opts) {
|
|
14
|
+
return {
|
|
15
|
+
singletonKey: jobId,
|
|
16
|
+
expireInSeconds: opts.expireInSeconds,
|
|
17
|
+
heartbeatSeconds: opts.heartbeatSeconds,
|
|
18
|
+
retryLimit: opts.retryLimit,
|
|
19
|
+
retryDelay: opts.retryDelaySeconds,
|
|
20
|
+
retryBackoff: true,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
24
|
+
/**
|
|
25
|
+
* Poll a bootstrap run to a terminal state, sleeping between polls — the Node analogue
|
|
26
|
+
* of the BootstrapWorkflow's `step.sleep` + `pollBootstrapJob` loop, with plain async
|
|
27
|
+
* sleeps instead of durable steps. `pollBootstrapJob` is idempotent and persists every
|
|
28
|
+
* change, so a re-drive (retry/sweeper) safely resumes. Returns when the run is done or
|
|
29
|
+
* failed, or when the poll budget is spent (the sweeper re-drives a still-running run).
|
|
30
|
+
*/
|
|
31
|
+
export async function driveBootstrap(container, workspaceId, jobId, cfg, log) {
|
|
32
|
+
const bootstrap = container.bootstrap;
|
|
33
|
+
if (!bootstrap)
|
|
34
|
+
return;
|
|
35
|
+
for (let p = 0; p < cfg.jobMaxPolls; p++) {
|
|
36
|
+
const result = await bootstrap.service.pollBootstrapJob(workspaceId, jobId);
|
|
37
|
+
if (result.state === 'done' || result.state === 'failed')
|
|
38
|
+
return;
|
|
39
|
+
await sleep(cfg.jobPollIntervalMs);
|
|
40
|
+
}
|
|
41
|
+
log.warn({ workspaceId, jobId }, 'bootstrap drive exhausted its poll budget; sweeper will re-drive');
|
|
42
|
+
}
|
|
43
|
+
export class PgBossBootstrapRunner {
|
|
44
|
+
boss;
|
|
45
|
+
queueOptions;
|
|
46
|
+
constructor(boss, queueOptions) {
|
|
47
|
+
this.boss = boss;
|
|
48
|
+
this.queueOptions = queueOptions;
|
|
49
|
+
}
|
|
50
|
+
async startRun(workspaceId, jobId) {
|
|
51
|
+
await this.boss.send(QUEUE, { workspaceId, jobId }, sendOptions(jobId, this.queueOptions));
|
|
52
|
+
}
|
|
53
|
+
async cancelRun(_workspaceId, _jobId) {
|
|
54
|
+
// Best-effort: the job is finalized by BootstrapService; any in-flight drive job is a
|
|
55
|
+
// no-op once the job is terminal (pollBootstrapJob returns done/failed immediately).
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Create the bootstrap drive queue and start the worker that drives bootstrap runs. */
|
|
59
|
+
export async function startBootstrapWorker(boss, container, cfg, log, options = {}) {
|
|
60
|
+
const concurrency = Math.max(1, options.concurrency ?? 10);
|
|
61
|
+
await boss.createQueue(QUEUE, { policy: QUEUE_POLICY });
|
|
62
|
+
await boss.work(QUEUE, { localConcurrency: concurrency }, async (jobs) => {
|
|
63
|
+
for (const job of jobs) {
|
|
64
|
+
const { workspaceId, jobId } = job.data;
|
|
65
|
+
try {
|
|
66
|
+
await driveBootstrap(container, workspaceId, jobId, cfg, log);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
log.error({ workspaceId, jobId, err: error instanceof Error ? error.message : String(error) }, 'bootstrap drive failed');
|
|
70
|
+
throw error; // let pg-boss retry/backoff (the durable backstop)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** Re-enqueue a stale bootstrap run (used by the stale-run sweeper). */
|
|
76
|
+
export async function reenqueueStaleBootstrap(boss, workspaceId, jobId, queueOptions) {
|
|
77
|
+
await boss.send(QUEUE, { workspaceId, jobId }, sendOptions(jobId, queueOptions));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=bootstrapRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapRunner.js","sourceRoot":"","sources":["../../src/execution/bootstrapRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AppConfig } from '@cat-factory/server';
|
|
2
|
+
import type { DriveConfig } from './drive.js';
|
|
3
|
+
import type { AdvanceQueueOptions, SweeperConfig } from './pgBossRunner.js';
|
|
4
|
+
/** Parse a Workflows-style duration ("15 seconds", "5 minutes", "24 hours", "1 day") to ms. */
|
|
5
|
+
export declare function durationMs(value: string, fallback: number): number;
|
|
6
|
+
export interface ExecutionRuntime {
|
|
7
|
+
drive: DriveConfig;
|
|
8
|
+
queue: AdvanceQueueOptions;
|
|
9
|
+
sweeper: SweeperConfig;
|
|
10
|
+
/** How many runs the pg-boss worker drives in parallel on this node. */
|
|
11
|
+
concurrency: number;
|
|
12
|
+
/** After this long parked on a human decision, the run is failed `decision_timeout`. */
|
|
13
|
+
decisionTimeoutSeconds: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Derive the driver/queue/sweeper timings from config + env.
|
|
17
|
+
*
|
|
18
|
+
* Liveness is split across two pg-boss mechanisms so neither has to compromise:
|
|
19
|
+
*
|
|
20
|
+
* - `queue.expireInSeconds` is an ABSOLUTE cap on a single advance job (pg-boss times a
|
|
21
|
+
* job out at `started_on + expireInSeconds` — heartbeats do NOT refresh it). One drive
|
|
22
|
+
* runs the whole pipeline to a standstill, which can chain MANY container-job polls
|
|
23
|
+
* (each agent step, plus up to a task's CI-fixer attempts) and CI polls. We therefore
|
|
24
|
+
* size it to one poll budget (job + CI) times `EXECUTION_MAX_DRIVE_STEPS` (default 16,
|
|
25
|
+
* covering the standard agent steps plus a CI-fixer retry loop), floored at 1h and
|
|
26
|
+
* clamped to pg-boss's hard 24h ceiling, so a HEALTHY drive is realistically never
|
|
27
|
+
* force-failed — which under worker concurrency would let a second worker pick up the
|
|
28
|
+
* retry and double-drive the same run. `EXECUTION_DRIVE_EXPIRE_MINUTES` overrides the
|
|
29
|
+
* computed value outright (still clamped to 24h).
|
|
30
|
+
* - `queue.heartbeatSeconds` gives FAST crash recovery independent of that large cap: a
|
|
31
|
+
* live worker auto-heartbeats its active job, so a crashed/evicted worker stops within
|
|
32
|
+
* `heartbeatSeconds` (default 60), pg-boss fails the job, frees its singletonKey and the
|
|
33
|
+
* retry re-drives — no waiting out the multi-hour expire. The stale-run sweeper remains
|
|
34
|
+
* a last-resort backstop for runs `running` in storage with no live job at all.
|
|
35
|
+
*/
|
|
36
|
+
export declare function executionRuntime(config: AppConfig, env: NodeJS.ProcessEnv): ExecutionRuntime;
|
|
37
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/execution/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAO3E,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,mBAAmB,CAAA;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAA;IACnB,wFAAwF;IACxF,sBAAsB,EAAE,MAAM,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAkD5F"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Translate the runtime-neutral `AppConfig.execution` (durations as strings) into the
|
|
2
|
+
// concrete millisecond/second values the pg-boss driver, queue and sweeper need. Shared
|
|
3
|
+
// by the container (which builds the work runner) and `start()` (which builds the worker
|
|
4
|
+
// + sweeper) so the timing is derived once and stays consistent.
|
|
5
|
+
/** Parse a Workflows-style duration ("15 seconds", "5 minutes", "24 hours", "1 day") to ms. */
|
|
6
|
+
export function durationMs(value, fallback) {
|
|
7
|
+
const m = /^(\d+)\s*(second|minute|hour|day)s?$/.exec(value.trim());
|
|
8
|
+
if (!m)
|
|
9
|
+
return fallback;
|
|
10
|
+
const n = Number(m[1]);
|
|
11
|
+
const scale = m[2] === 'second' ? 1000 : m[2] === 'minute' ? 60_000 : m[2] === 'hour' ? 3_600_000 : 86_400_000;
|
|
12
|
+
return n * scale;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Derive the driver/queue/sweeper timings from config + env.
|
|
16
|
+
*
|
|
17
|
+
* Liveness is split across two pg-boss mechanisms so neither has to compromise:
|
|
18
|
+
*
|
|
19
|
+
* - `queue.expireInSeconds` is an ABSOLUTE cap on a single advance job (pg-boss times a
|
|
20
|
+
* job out at `started_on + expireInSeconds` — heartbeats do NOT refresh it). One drive
|
|
21
|
+
* runs the whole pipeline to a standstill, which can chain MANY container-job polls
|
|
22
|
+
* (each agent step, plus up to a task's CI-fixer attempts) and CI polls. We therefore
|
|
23
|
+
* size it to one poll budget (job + CI) times `EXECUTION_MAX_DRIVE_STEPS` (default 16,
|
|
24
|
+
* covering the standard agent steps plus a CI-fixer retry loop), floored at 1h and
|
|
25
|
+
* clamped to pg-boss's hard 24h ceiling, so a HEALTHY drive is realistically never
|
|
26
|
+
* force-failed — which under worker concurrency would let a second worker pick up the
|
|
27
|
+
* retry and double-drive the same run. `EXECUTION_DRIVE_EXPIRE_MINUTES` overrides the
|
|
28
|
+
* computed value outright (still clamped to 24h).
|
|
29
|
+
* - `queue.heartbeatSeconds` gives FAST crash recovery independent of that large cap: a
|
|
30
|
+
* live worker auto-heartbeats its active job, so a crashed/evicted worker stops within
|
|
31
|
+
* `heartbeatSeconds` (default 60), pg-boss fails the job, frees its singletonKey and the
|
|
32
|
+
* retry re-drives — no waiting out the multi-hour expire. The stale-run sweeper remains
|
|
33
|
+
* a last-resort backstop for runs `running` in storage with no live job at all.
|
|
34
|
+
*/
|
|
35
|
+
export function executionRuntime(config, env) {
|
|
36
|
+
const exec = config.execution;
|
|
37
|
+
const jobPollIntervalMs = durationMs(exec.jobPollInterval, 15_000);
|
|
38
|
+
const ciPollIntervalMs = durationMs(exec.ciPollInterval, 30_000);
|
|
39
|
+
const drive = {
|
|
40
|
+
jobPollIntervalMs,
|
|
41
|
+
jobMaxPolls: exec.jobMaxPolls,
|
|
42
|
+
jobPollFailureTolerance: exec.jobPollFailureTolerance,
|
|
43
|
+
ciPollIntervalMs,
|
|
44
|
+
ciMaxPolls: exec.ciMaxPolls,
|
|
45
|
+
};
|
|
46
|
+
// One step's worst-case poll budget (a container-job poll loop + a CI poll loop)...
|
|
47
|
+
const singleStepBudgetMs = jobPollIntervalMs * exec.jobMaxPolls + ciPollIntervalMs * exec.ciMaxPolls;
|
|
48
|
+
// ...times the most steps a single drive can chain (agent steps + CI-fixer retries).
|
|
49
|
+
const maxDriveSteps = Math.max(1, num(env.EXECUTION_MAX_DRIVE_STEPS) ?? 16);
|
|
50
|
+
const maxDriveMs = singleStepBudgetMs * maxDriveSteps;
|
|
51
|
+
// Treat an unset OR blank override as "not provided" (a blank env var must not collapse
|
|
52
|
+
// to 0 and force the 60-minute floor over the computed budget); only a real number wins.
|
|
53
|
+
const expireRaw = env.EXECUTION_DRIVE_EXPIRE_MINUTES?.trim();
|
|
54
|
+
const expireMinOverride = expireRaw ? Number(expireRaw) : Number.NaN;
|
|
55
|
+
const expireComputed = Number.isFinite(expireMinOverride)
|
|
56
|
+
? Math.max(60, Math.floor(expireMinOverride)) * 60
|
|
57
|
+
: Math.ceil(Math.max(maxDriveMs, 3_600_000) / 1000);
|
|
58
|
+
// pg-boss hard-caps expireInSeconds at just under 24h. With the default poll budgets the
|
|
59
|
+
// theoretical all-steps-time-out worst case exceeds that — which is fine: heartbeat (not
|
|
60
|
+
// expiry) is the crash detector, and a drive that truly overruns the cap is expired then
|
|
61
|
+
// re-driven idempotently (advanceInstance reads current state; container jobs are polled
|
|
62
|
+
// by id). So clamp to the ceiling and treat expiry as a backstop, not the primary lever.
|
|
63
|
+
const PG_BOSS_MAX_EXPIRE_SECONDS = 24 * 60 * 60 - 1;
|
|
64
|
+
const expireInSeconds = Math.min(PG_BOSS_MAX_EXPIRE_SECONDS, expireComputed);
|
|
65
|
+
const queue = {
|
|
66
|
+
expireInSeconds,
|
|
67
|
+
heartbeatSeconds: Math.max(10, Math.floor(num(env.EXECUTION_HEARTBEAT_SECONDS) ?? 60)),
|
|
68
|
+
retryLimit: 5,
|
|
69
|
+
retryDelaySeconds: 30,
|
|
70
|
+
};
|
|
71
|
+
const sweeper = {
|
|
72
|
+
intervalMs: Math.max(1, Number(env.STALE_RUN_SWEEP_MINUTES) || 5) * 60_000,
|
|
73
|
+
leaseMs: Math.max(1, Number(env.STALE_RUN_LEASE_MINUTES) || 10) * 60_000,
|
|
74
|
+
};
|
|
75
|
+
const concurrency = Math.max(1, num(env.EXECUTION_CONCURRENCY) ?? 10);
|
|
76
|
+
const decisionTimeoutSeconds = Math.ceil(durationMs(exec.decisionTimeout, 86_400_000) / 1000);
|
|
77
|
+
return { drive, queue, sweeper, concurrency, decisionTimeoutSeconds };
|
|
78
|
+
}
|
|
79
|
+
/** Parse a positive number from an env value; undefined/blank/non-finite → undefined. */
|
|
80
|
+
function num(value) {
|
|
81
|
+
if (value === undefined || value.trim() === '')
|
|
82
|
+
return undefined;
|
|
83
|
+
const n = Number(value);
|
|
84
|
+
return Number.isFinite(n) ? n : undefined;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/execution/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type DriveConfig, type DriveOptions, type DriveOutcome, driveExecution as driveExecutionCore } from '@cat-factory/orchestration';
|
|
2
|
+
export type { DriveConfig, DriveLogger, DriveOptions, DriveOutcome, } from '@cat-factory/orchestration';
|
|
3
|
+
type ExecutionService = Parameters<typeof driveExecutionCore>[0];
|
|
4
|
+
/** Drive one run to a standstill with real (timer-backed) sleeps between gate polls. */
|
|
5
|
+
export declare function driveExecution(exec: ExecutionService, workspaceId: string, executionId: string, cfg: DriveConfig, opts?: DriveOptions): Promise<DriveOutcome>;
|
|
6
|
+
//# sourceMappingURL=drive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/execution/drive.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,cAAc,IAAI,kBAAkB,EACrC,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,4BAA4B,CAAA;AAEnC,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAA;AAKhE,wFAAwF;AACxF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// The runtime-neutral execution driver loop lives in `@cat-factory/orchestration` so the
|
|
2
|
+
// cross-runtime conformance suite can drive runs through the SAME production loop both
|
|
3
|
+
// facades use (rather than a hand-rolled twin that can silently diverge from it).
|
|
4
|
+
// Orchestration is runtime-neutral and has no timers, so the Node service supplies the
|
|
5
|
+
// real `setTimeout` sleep here. This wrapper keeps the local import paths (`./drive.js`)
|
|
6
|
+
// stable for the runner/config/bootstrap modules.
|
|
7
|
+
import { driveExecution as driveExecutionCore, } from '@cat-factory/orchestration';
|
|
8
|
+
const realSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
|
+
/** Drive one run to a standstill with real (timer-backed) sleeps between gate polls. */
|
|
10
|
+
export function driveExecution(exec, workspaceId, executionId, cfg, opts = {}) {
|
|
11
|
+
return driveExecutionCore(exec, workspaceId, executionId, cfg, { sleep: realSleep, ...opts });
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=drive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/execution/drive.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,uFAAuF;AACvF,kFAAkF;AAClF,uFAAuF;AACvF,yFAAyF;AACzF,kDAAkD;AAClD,OAAO,EAIL,cAAc,IAAI,kBAAkB,GACrC,MAAM,4BAA4B,CAAA;AAWnC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAiB,EAAE,CAC9C,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAEzD,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAC5B,IAAsB,EACtB,WAAmB,EACnB,WAAmB,EACnB,GAAgB,EAChB,IAAI,GAAiB,EAAE;IAEvB,OAAO,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;AAC/F,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { WorkRunner } from '@cat-factory/kernel';
|
|
2
|
+
import type { Logger, ServerContainer } from '@cat-factory/server';
|
|
3
|
+
import type { PgBoss } from 'pg-boss';
|
|
4
|
+
import { type DriveConfig } from './drive.js';
|
|
5
|
+
/**
|
|
6
|
+
* Send options for an advance job. `singletonKey` (the run id) is the linchpin — but only
|
|
7
|
+
* because the queue is created `exclusive` (see {@link QUEUE_POLICY}): while an advance job
|
|
8
|
+
* for a run is active/queued/retrying, pg-boss suppresses any duplicate send — so re-enqueues
|
|
9
|
+
* from `signalDecision` and the stale-run sweeper are safe no-ops for a run that is still being
|
|
10
|
+
* driven, and only take effect once the prior job is gone. That lets the sweeper use a short
|
|
11
|
+
* lease without ever double-driving a healthy run.
|
|
12
|
+
*
|
|
13
|
+
* `expireInSeconds` MUST exceed the longest a single advance can run (a drive can poll
|
|
14
|
+
* a container job for `jobMaxPolls * jobPollInterval`, well past pg-boss's 15s default);
|
|
15
|
+
* otherwise pg-boss would expire a healthy long-running drive, free its singletonKey,
|
|
16
|
+
* and let a second driver start. `heartbeatSeconds` is the separate, fast crash-recovery
|
|
17
|
+
* lever: a live worker auto-heartbeats its active job, so a crashed worker is detected
|
|
18
|
+
* (and its job retried) within `heartbeatSeconds` rather than waiting out the large
|
|
19
|
+
* `expireInSeconds` cap. `retryLimit`/`retryBackoff` make pg-boss itself re-drive a job
|
|
20
|
+
* that throws, expires, or misses its heartbeat (a crashed worker) — the durable backstop.
|
|
21
|
+
* See `executionRuntime` for how both are sized.
|
|
22
|
+
*/
|
|
23
|
+
export interface AdvanceQueueOptions {
|
|
24
|
+
expireInSeconds: number;
|
|
25
|
+
heartbeatSeconds: number;
|
|
26
|
+
retryLimit: number;
|
|
27
|
+
retryDelaySeconds: number;
|
|
28
|
+
}
|
|
29
|
+
export declare class PgBossWorkRunner implements WorkRunner {
|
|
30
|
+
private readonly boss;
|
|
31
|
+
private readonly queueOptions;
|
|
32
|
+
constructor(boss: PgBoss, queueOptions: AdvanceQueueOptions);
|
|
33
|
+
startRun(workspaceId: string, executionId: string): Promise<void>;
|
|
34
|
+
signalDecision(workspaceId: string, executionId: string, _decisionId: string, _choice: string): Promise<void>;
|
|
35
|
+
cancelRun(_workspaceId: string, _executionId: string): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create the execution queue and start the worker that drives runs.
|
|
39
|
+
*
|
|
40
|
+
* `concurrency` (pg-boss `localConcurrency`) spawns that many INDEPENDENT workers for
|
|
41
|
+
* the queue on this node: each polls, fetches one job (`batchSize` stays 1) and acks /
|
|
42
|
+
* retries it on its own, so up to `concurrency` runs drive in parallel. This is the key
|
|
43
|
+
* to throughput — a single drive parks for the whole of a step's poll budget (sleeping
|
|
44
|
+
* between polls), so without parallel workers one slow run would block every other run
|
|
45
|
+
* behind it. We deliberately keep `batchSize: 1` rather than raising it: a batch handler
|
|
46
|
+
* completes/fails all its jobs together, which would couple unrelated runs' retries;
|
|
47
|
+
* independent workers keep per-run retry semantics intact. The `exclusive` queue policy
|
|
48
|
+
* still prevents the SAME run being driven by two workers at once (one live advance job per
|
|
49
|
+
* run id; duplicate sends no-op). Scale `concurrency` with the DB pool
|
|
50
|
+
* (each active drive borrows a connection only for its brief reads/writes between sleeps).
|
|
51
|
+
*/
|
|
52
|
+
export declare function startExecutionWorker(boss: PgBoss, container: ServerContainer, cfg: DriveConfig, log: Logger, options?: {
|
|
53
|
+
concurrency?: number;
|
|
54
|
+
decisionTimeoutSeconds?: number;
|
|
55
|
+
}): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Start the worker that expires overdue decisions. A delayed job (armed by
|
|
58
|
+
* {@link startExecutionWorker} when a run parks on a decision) fires after the
|
|
59
|
+
* `decisionTimeout`; `expireDecision` fails the run as `decision_timeout` ONLY if it is
|
|
60
|
+
* still parked on that exact decision, so a decision resolved meanwhile is a safe no-op
|
|
61
|
+
* (no driving — that stays on the advance queue). This is the Node analogue of the
|
|
62
|
+
* Cloudflare driver's `waitForEvent` timeout. Create the queue before the advance worker
|
|
63
|
+
* so the advance worker's `boss.send` to it always has a target.
|
|
64
|
+
*/
|
|
65
|
+
export declare function startDecisionTimeoutWorker(boss: PgBoss, container: ServerContainer, log: Logger): Promise<void>;
|
|
66
|
+
/** How often the stale-run sweeper runs, and how stale a `running` run must be to re-drive. */
|
|
67
|
+
export interface SweeperConfig {
|
|
68
|
+
intervalMs: number;
|
|
69
|
+
leaseMs: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Backstop for runs that are still `running` in storage but whose advance job is gone
|
|
73
|
+
* (the worker crashed/was evicted before the job retried). Mirrors the Worker's cron
|
|
74
|
+
* `sweepStuckRuns`: on each tick it re-enqueues every stale `running` execution run.
|
|
75
|
+
* The re-enqueue carries the run's `singletonKey` and the queue is `exclusive`, so a run
|
|
76
|
+
* that IS still being driven (its advance job active/retrying) is a silent no-op — only
|
|
77
|
+
* genuinely orphaned runs re-drive.
|
|
78
|
+
* Decision-parked (`blocked`) and spend-paused (`paused`) runs aren't `running`, so the
|
|
79
|
+
* sweeper leaves them alone. Returns a stop function (clears the interval).
|
|
80
|
+
*/
|
|
81
|
+
export declare function startStaleRunSweeper(boss: PgBoss, container: ServerContainer, cfg: SweeperConfig, queueOptions: AdvanceQueueOptions, log: Logger): () => void;
|
|
82
|
+
//# sourceMappingURL=pgBossRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgBossRunner.d.ts","sourceRoot":"","sources":["../../src/execution/pgBossRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAO,MAAM,EAAe,MAAM,SAAS,CAAA;AAEvD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,YAAY,CAAA;AAmC7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAaD,qBAAa,gBAAiB,YAAW,UAAU;IAE/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAF/B,YACmB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,mBAAmB,EAChD;IAEE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;IAEK,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf;IAEK,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,mBAAmB,EACjC,GAAG,EAAE,MAAM,GACV,MAAM,IAAI,CA+BZ"}
|