@pattern-stack/codegen 0.13.1 → 0.14.1
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/{job-orchestrator.protocol-CHOEqBDk.d.ts → job-orchestrator.protocol-CARhMLCO.d.ts} +1 -1
- package/dist/runtime/subsystems/analytics/analytics.module.js +6 -2
- package/dist/runtime/subsystems/analytics/analytics.module.js.map +1 -1
- package/dist/runtime/subsystems/analytics/analytics.tokens.d.ts +0 -11
- package/dist/runtime/subsystems/analytics/analytics.tokens.js +6 -2
- package/dist/runtime/subsystems/analytics/analytics.tokens.js.map +1 -1
- package/dist/runtime/subsystems/analytics/cube-backend.js +6 -2
- package/dist/runtime/subsystems/analytics/cube-backend.js.map +1 -1
- package/dist/runtime/subsystems/analytics/index.js +6 -2
- package/dist/runtime/subsystems/analytics/index.js.map +1 -1
- package/dist/runtime/subsystems/auth/auth.module.js +12 -6
- package/dist/runtime/subsystems/auth/auth.module.js.map +1 -1
- package/dist/runtime/subsystems/auth/auth.tokens.d.ts +0 -28
- package/dist/runtime/subsystems/auth/auth.tokens.js +12 -8
- package/dist/runtime/subsystems/auth/auth.tokens.js.map +1 -1
- package/dist/runtime/subsystems/auth/controllers/auth.controller.js +12 -5
- package/dist/runtime/subsystems/auth/controllers/auth.controller.js.map +1 -1
- package/dist/runtime/subsystems/auth/index.js +12 -8
- package/dist/runtime/subsystems/auth/index.js.map +1 -1
- package/dist/runtime/subsystems/auth/middleware/requester-context.js +12 -1
- package/dist/runtime/subsystems/auth/middleware/requester-context.js.map +1 -1
- package/dist/runtime/subsystems/bridge/bridge-delivery-handler.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +10 -2
- package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js.map +1 -1
- package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js +2 -2
- package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +10 -2
- package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js.map +1 -1
- package/dist/runtime/subsystems/bridge/bridge.module.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/bridge.module.js +186 -168
- package/dist/runtime/subsystems/bridge/bridge.module.js.map +1 -1
- package/dist/runtime/subsystems/bridge/bridge.protocol.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/event-flow.service.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/event-flow.service.js +9 -1
- package/dist/runtime/subsystems/bridge/event-flow.service.js.map +1 -1
- package/dist/runtime/subsystems/bridge/index.d.ts +1 -1
- package/dist/runtime/subsystems/bridge/index.js +168 -150
- package/dist/runtime/subsystems/bridge/index.js.map +1 -1
- package/dist/runtime/subsystems/cache/cache.drizzle-backend.js +6 -1
- package/dist/runtime/subsystems/cache/cache.drizzle-backend.js.map +1 -1
- package/dist/runtime/subsystems/cache/cache.memory-backend.js +6 -1
- package/dist/runtime/subsystems/cache/cache.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/cache/cache.module.js +6 -2
- package/dist/runtime/subsystems/cache/cache.module.js.map +1 -1
- package/dist/runtime/subsystems/cache/cache.tokens.d.ts +0 -10
- package/dist/runtime/subsystems/cache/cache.tokens.js +6 -2
- package/dist/runtime/subsystems/cache/cache.tokens.js.map +1 -1
- package/dist/runtime/subsystems/cache/index.js +6 -2
- package/dist/runtime/subsystems/cache/index.js.map +1 -1
- package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +5 -0
- package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js.map +1 -1
- package/dist/runtime/subsystems/events/event-bus.memory-backend.js +5 -0
- package/dist/runtime/subsystems/events/event-bus.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/events/event-bus.redis-backend.js +5 -1
- package/dist/runtime/subsystems/events/event-bus.redis-backend.js.map +1 -1
- package/dist/runtime/subsystems/events/events.module.js +5 -1
- package/dist/runtime/subsystems/events/events.module.js.map +1 -1
- package/dist/runtime/subsystems/events/events.tokens.d.ts +5 -11
- package/dist/runtime/subsystems/events/events.tokens.js +5 -1
- package/dist/runtime/subsystems/events/events.tokens.js.map +1 -1
- package/dist/runtime/subsystems/events/generated/bus.js +5 -0
- package/dist/runtime/subsystems/events/generated/bus.js.map +1 -1
- package/dist/runtime/subsystems/events/generated/index.js +5 -0
- package/dist/runtime/subsystems/events/generated/index.js.map +1 -1
- package/dist/runtime/subsystems/events/index.js +5 -1
- package/dist/runtime/subsystems/events/index.js.map +1 -1
- package/dist/runtime/subsystems/index.d.ts +2 -2
- package/dist/runtime/subsystems/index.js +186 -168
- package/dist/runtime/subsystems/index.js.map +1 -1
- package/dist/runtime/subsystems/jobs/bullmq.config.d.ts +0 -9
- package/dist/runtime/subsystems/jobs/bullmq.config.js +6 -2
- package/dist/runtime/subsystems/jobs/bullmq.config.js.map +1 -1
- package/dist/runtime/subsystems/jobs/index.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/index.js +141 -124
- package/dist/runtime/subsystems/jobs/index.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-handler.base.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-handler.base.js +5 -1
- package/dist/runtime/subsystems/jobs/job-handler.base.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +10 -3
- package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +8 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +137 -7
- package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-orchestrator.protocol.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +8 -2
- package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +25 -2
- package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-run-service.protocol.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js +25 -2
- package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +5 -0
- package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-worker.d.ts +1 -1
- package/dist/runtime/subsystems/jobs/job-worker.js +10 -4
- package/dist/runtime/subsystems/jobs/job-worker.js.map +1 -1
- package/dist/runtime/subsystems/jobs/job-worker.module.d.ts +31 -3
- package/dist/runtime/subsystems/jobs/job-worker.module.js +163 -145
- package/dist/runtime/subsystems/jobs/job-worker.module.js.map +1 -1
- package/dist/runtime/subsystems/jobs/jobs-domain.module.js +144 -130
- package/dist/runtime/subsystems/jobs/jobs-domain.module.js.map +1 -1
- package/dist/runtime/subsystems/jobs/jobs-domain.tokens.d.ts +0 -11
- package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js +8 -4
- package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js.map +1 -1
- package/dist/runtime/subsystems/jobs/jobs-errors.d.ts +1 -1
- package/dist/runtime/subsystems/observability/index.d.ts +1 -1
- package/dist/runtime/subsystems/observability/index.js +9 -1
- package/dist/runtime/subsystems/observability/index.js.map +1 -1
- package/dist/runtime/subsystems/observability/observability.module.js +9 -1
- package/dist/runtime/subsystems/observability/observability.module.js.map +1 -1
- package/dist/runtime/subsystems/observability/observability.protocol.d.ts +1 -1
- package/dist/runtime/subsystems/observability/observability.service.d.ts +1 -1
- package/dist/runtime/subsystems/observability/observability.service.js +9 -1
- package/dist/runtime/subsystems/observability/observability.service.js.map +1 -1
- package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.d.ts +1 -1
- package/dist/runtime/subsystems/observability/reporters/index.d.ts +1 -1
- package/dist/runtime/subsystems/storage/index.js +5 -1
- package/dist/runtime/subsystems/storage/index.js.map +1 -1
- package/dist/runtime/subsystems/storage/storage.module.js +5 -1
- package/dist/runtime/subsystems/storage/storage.module.js.map +1 -1
- package/dist/runtime/subsystems/storage/storage.tokens.d.ts +0 -8
- package/dist/runtime/subsystems/storage/storage.tokens.js +5 -1
- package/dist/runtime/subsystems/storage/storage.tokens.js.map +1 -1
- package/dist/runtime/subsystems/token-key.d.ts +7 -0
- package/dist/runtime/subsystems/token-key.js +8 -0
- package/dist/runtime/subsystems/token-key.js.map +1 -0
- package/dist/src/cli/index.js +1160 -694
- package/dist/src/cli/index.js.map +1 -1
- package/package.json +5 -1
- package/runtime/subsystems/analytics/analytics.tokens.ts +6 -2
- package/runtime/subsystems/auth/auth.tokens.ts +15 -8
- package/runtime/subsystems/bridge/bridge-delivery.memory-backend.ts +8 -1
- package/runtime/subsystems/cache/cache.tokens.ts +7 -2
- package/runtime/subsystems/events/events.tokens.ts +8 -1
- package/runtime/subsystems/index.ts +5 -1
- package/runtime/subsystems/jobs/bullmq.config.ts +5 -2
- package/runtime/subsystems/jobs/job-handler.base.ts +6 -1
- package/runtime/subsystems/jobs/job-orchestrator.memory-backend.ts +8 -3
- package/runtime/subsystems/jobs/job-run-service.memory-backend.ts +4 -1
- package/runtime/subsystems/jobs/job-step-service.memory-backend.ts +7 -2
- package/runtime/subsystems/jobs/job-worker.module.ts +18 -2
- package/runtime/subsystems/jobs/job-worker.ts +4 -1
- package/runtime/subsystems/jobs/jobs-domain.tokens.ts +10 -7
- package/runtime/subsystems/storage/storage.tokens.ts +6 -1
- package/runtime/subsystems/token-key.ts +7 -0
- package/src/config/runtime-mode.mjs +82 -0
- package/templates/entity/new/backend/modules/core/integration-source.ejs.t +3 -2
- package/templates/entity/new/clean-lite-ps/controller.ejs.t +1 -1
- package/templates/entity/new/clean-lite-ps/module.ejs.t +1 -1
- package/templates/entity/new/clean-lite-ps/prompt-extension.js +8 -2
- package/templates/entity/new/clean-lite-ps/repository.ejs.t +4 -4
- package/templates/entity/new/clean-lite-ps/service.ejs.t +4 -4
- package/templates/entity/new/prompt.js +49 -10
|
@@ -12,19 +12,24 @@ var __decorateParam = (index4, decorator) => (target, key2) => decorator(target,
|
|
|
12
12
|
|
|
13
13
|
// runtime/subsystems/bridge/bridge.module.ts
|
|
14
14
|
import {
|
|
15
|
-
Inject as
|
|
15
|
+
Inject as Inject13,
|
|
16
16
|
Module as Module3,
|
|
17
17
|
Optional as Optional7
|
|
18
18
|
} from "@nestjs/common";
|
|
19
19
|
|
|
20
20
|
// runtime/subsystems/jobs/job-worker.module.ts
|
|
21
21
|
import {
|
|
22
|
-
Inject as
|
|
22
|
+
Inject as Inject8,
|
|
23
23
|
Injectable as Injectable8,
|
|
24
24
|
Logger as Logger4,
|
|
25
25
|
Module as Module2,
|
|
26
26
|
Optional as Optional2
|
|
27
27
|
} from "@nestjs/common";
|
|
28
|
+
import { ModuleRef as ModuleRef2 } from "@nestjs/core";
|
|
29
|
+
|
|
30
|
+
// runtime/subsystems/token-key.ts
|
|
31
|
+
var PKG = "@pattern-stack/codegen";
|
|
32
|
+
var tokenKey = (area, name) => `${PKG}.${area}.${name}`;
|
|
28
33
|
|
|
29
34
|
// runtime/constants/tokens.ts
|
|
30
35
|
var DRIZZLE = "DRIZZLE";
|
|
@@ -33,7 +38,7 @@ var DRIZZLE = "DRIZZLE";
|
|
|
33
38
|
var JobHandlerBase = class {
|
|
34
39
|
};
|
|
35
40
|
var JOB_HANDLER_REGISTRY = /* @__PURE__ */ new Map();
|
|
36
|
-
var JOB_HANDLER_METADATA_KEY =
|
|
41
|
+
var JOB_HANDLER_METADATA_KEY = Symbol.for(tokenKey("jobs", "handler-metadata"));
|
|
37
42
|
function JobHandler(type, meta) {
|
|
38
43
|
return (target) => {
|
|
39
44
|
if (JOB_HANDLER_REGISTRY.has(type)) {
|
|
@@ -73,10 +78,10 @@ var HandlerRegistry;
|
|
|
73
78
|
import { Module } from "@nestjs/common";
|
|
74
79
|
|
|
75
80
|
// runtime/subsystems/jobs/jobs-domain.tokens.ts
|
|
76
|
-
var JOB_ORCHESTRATOR =
|
|
77
|
-
var JOB_RUN_SERVICE =
|
|
78
|
-
var JOB_STEP_SERVICE =
|
|
79
|
-
var JOBS_MULTI_TENANT =
|
|
81
|
+
var JOB_ORCHESTRATOR = Symbol.for(tokenKey("jobs", "orchestrator"));
|
|
82
|
+
var JOB_RUN_SERVICE = Symbol.for(tokenKey("jobs", "run-service"));
|
|
83
|
+
var JOB_STEP_SERVICE = Symbol.for(tokenKey("jobs", "step-service"));
|
|
84
|
+
var JOBS_MULTI_TENANT = Symbol.for(tokenKey("jobs", "multi-tenant"));
|
|
80
85
|
|
|
81
86
|
// runtime/subsystems/jobs/job-orchestrator.drizzle-backend.ts
|
|
82
87
|
import { randomUUID } from "crypto";
|
|
@@ -912,8 +917,129 @@ DrizzleJobStepService = __decorateClass([
|
|
|
912
917
|
], DrizzleJobStepService);
|
|
913
918
|
|
|
914
919
|
// runtime/subsystems/jobs/job-orchestrator.memory-backend.ts
|
|
920
|
+
import { randomUUID as randomUUID3 } from "crypto";
|
|
921
|
+
import { Inject as Inject5, Injectable as Injectable5, Logger as Logger2, Optional } from "@nestjs/common";
|
|
922
|
+
import { ModuleRef } from "@nestjs/core";
|
|
923
|
+
|
|
924
|
+
// runtime/subsystems/jobs/memory-job-store.ts
|
|
925
|
+
var MemoryJobStore = class {
|
|
926
|
+
/** Runs keyed by `id` (single source of truth for status/scope/lineage). */
|
|
927
|
+
runs = /* @__PURE__ */ new Map();
|
|
928
|
+
/** Steps keyed by `job_run_id`; array order matches insertion order. */
|
|
929
|
+
steps = /* @__PURE__ */ new Map();
|
|
930
|
+
/** Job definitions keyed by `type` — memory mirror of the `job` table. */
|
|
931
|
+
jobs = /* @__PURE__ */ new Map();
|
|
932
|
+
/** Reset everything. Tests call this in `beforeEach`. */
|
|
933
|
+
clear() {
|
|
934
|
+
this.runs.clear();
|
|
935
|
+
this.steps.clear();
|
|
936
|
+
this.jobs.clear();
|
|
937
|
+
}
|
|
938
|
+
};
|
|
939
|
+
|
|
940
|
+
// runtime/subsystems/jobs/job-step-service.memory-backend.ts
|
|
915
941
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
916
|
-
import { Inject as Inject4, Injectable as Injectable4
|
|
942
|
+
import { Inject as Inject4, Injectable as Injectable4 } from "@nestjs/common";
|
|
943
|
+
var MemoryJobStepService = class {
|
|
944
|
+
// ADR-037 (package-mode DI): explicit `@Inject(MemoryJobStore)` — the
|
|
945
|
+
// published bundle carries no `design:paramtypes`, so a by-type inject
|
|
946
|
+
// would resolve to `undefined` in package mode.
|
|
947
|
+
constructor(store) {
|
|
948
|
+
this.store = store;
|
|
949
|
+
}
|
|
950
|
+
store;
|
|
951
|
+
async findStep(runId, stepId) {
|
|
952
|
+
const rows = this.store.steps.get(runId);
|
|
953
|
+
if (!rows) return null;
|
|
954
|
+
const match = rows.find(
|
|
955
|
+
(r) => r.stepId === stepId && r.status === "completed"
|
|
956
|
+
);
|
|
957
|
+
return match ?? null;
|
|
958
|
+
}
|
|
959
|
+
async recordStep(input) {
|
|
960
|
+
const rows = this.getOrCreateRows(input.jobRunId);
|
|
961
|
+
const existingIdx = rows.findIndex((r) => r.stepId === input.stepId);
|
|
962
|
+
const normalisedInput = input.input ?? null;
|
|
963
|
+
const normalisedOutput = input.output ?? null;
|
|
964
|
+
if (existingIdx >= 0) {
|
|
965
|
+
const prev = rows[existingIdx];
|
|
966
|
+
const next = {
|
|
967
|
+
...prev,
|
|
968
|
+
status: input.status,
|
|
969
|
+
input: normalisedInput ?? prev.input,
|
|
970
|
+
output: normalisedOutput ?? prev.output,
|
|
971
|
+
error: input.error ?? prev.error,
|
|
972
|
+
attempts: input.attempts ?? prev.attempts,
|
|
973
|
+
startedAt: input.startedAt ?? prev.startedAt,
|
|
974
|
+
finishedAt: input.finishedAt ?? prev.finishedAt
|
|
975
|
+
};
|
|
976
|
+
rows[existingIdx] = next;
|
|
977
|
+
return next;
|
|
978
|
+
}
|
|
979
|
+
const seq = input.seq ?? this.nextSeq(rows);
|
|
980
|
+
const row = {
|
|
981
|
+
id: randomUUID2(),
|
|
982
|
+
jobRunId: input.jobRunId,
|
|
983
|
+
stepId: input.stepId,
|
|
984
|
+
kind: input.kind,
|
|
985
|
+
seq,
|
|
986
|
+
status: input.status,
|
|
987
|
+
input: normalisedInput,
|
|
988
|
+
output: normalisedOutput,
|
|
989
|
+
error: input.error ?? null,
|
|
990
|
+
attempts: input.attempts ?? 0,
|
|
991
|
+
startedAt: input.startedAt ?? null,
|
|
992
|
+
finishedAt: input.finishedAt ?? null
|
|
993
|
+
};
|
|
994
|
+
rows.push(row);
|
|
995
|
+
return row;
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Replay helper — wipe every step row for a run. Mirrors the `scratch`
|
|
999
|
+
* replay mode of the Drizzle backend (`DELETE FROM job_step WHERE job_run_id = …`).
|
|
1000
|
+
*/
|
|
1001
|
+
clearStepsForRun(runId) {
|
|
1002
|
+
this.store.steps.delete(runId);
|
|
1003
|
+
}
|
|
1004
|
+
/**
|
|
1005
|
+
* Remove every non-`completed` row for the run. Memoized (`completed`)
|
|
1006
|
+
* rows are preserved — this is the `last_checkpoint` / `last_step`
|
|
1007
|
+
* semantics the Drizzle backend implements via
|
|
1008
|
+
* `DELETE … WHERE status != 'completed'`. Both replay modes route here
|
|
1009
|
+
* (Phase 1 collapses `last_step` onto this behaviour; see JOB-3 notes).
|
|
1010
|
+
*/
|
|
1011
|
+
clearIncompleteSteps(runId) {
|
|
1012
|
+
const rows = this.store.steps.get(runId);
|
|
1013
|
+
if (!rows) return;
|
|
1014
|
+
const kept = rows.filter((r) => r.status === "completed");
|
|
1015
|
+
if (kept.length === 0) {
|
|
1016
|
+
this.store.steps.delete(runId);
|
|
1017
|
+
} else {
|
|
1018
|
+
this.store.steps.set(runId, kept);
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
getOrCreateRows(runId) {
|
|
1022
|
+
let rows = this.store.steps.get(runId);
|
|
1023
|
+
if (!rows) {
|
|
1024
|
+
rows = [];
|
|
1025
|
+
this.store.steps.set(runId, rows);
|
|
1026
|
+
}
|
|
1027
|
+
return rows;
|
|
1028
|
+
}
|
|
1029
|
+
nextSeq(rows) {
|
|
1030
|
+
let max = 0;
|
|
1031
|
+
for (const r of rows) {
|
|
1032
|
+
if (r.seq > max) max = r.seq;
|
|
1033
|
+
}
|
|
1034
|
+
return max + 1;
|
|
1035
|
+
}
|
|
1036
|
+
};
|
|
1037
|
+
MemoryJobStepService = __decorateClass([
|
|
1038
|
+
Injectable4(),
|
|
1039
|
+
__decorateParam(0, Inject4(MemoryJobStore))
|
|
1040
|
+
], MemoryJobStepService);
|
|
1041
|
+
|
|
1042
|
+
// runtime/subsystems/jobs/job-orchestrator.memory-backend.ts
|
|
917
1043
|
var QUEUED_RUN_AT = /* @__PURE__ */ new Date(864e13);
|
|
918
1044
|
var TERMINAL_STATUSES2 = [
|
|
919
1045
|
"completed",
|
|
@@ -1084,7 +1210,7 @@ var MemoryJobOrchestrator = class {
|
|
|
1084
1210
|
}
|
|
1085
1211
|
}
|
|
1086
1212
|
}
|
|
1087
|
-
const newId =
|
|
1213
|
+
const newId = randomUUID3();
|
|
1088
1214
|
let rootRunId = newId;
|
|
1089
1215
|
if (opts.parentRunId) {
|
|
1090
1216
|
const parent = this.store.runs.get(opts.parentRunId);
|
|
@@ -1482,9 +1608,12 @@ var MemoryJobOrchestrator = class {
|
|
|
1482
1608
|
}
|
|
1483
1609
|
};
|
|
1484
1610
|
MemoryJobOrchestrator = __decorateClass([
|
|
1485
|
-
|
|
1486
|
-
__decorateParam(
|
|
1487
|
-
__decorateParam(
|
|
1611
|
+
Injectable5(),
|
|
1612
|
+
__decorateParam(0, Inject5(MemoryJobStore)),
|
|
1613
|
+
__decorateParam(1, Inject5(MemoryJobStepService)),
|
|
1614
|
+
__decorateParam(2, Inject5(JOBS_MULTI_TENANT)),
|
|
1615
|
+
__decorateParam(3, Optional()),
|
|
1616
|
+
__decorateParam(3, Inject5(ModuleRef))
|
|
1488
1617
|
], MemoryJobOrchestrator);
|
|
1489
1618
|
function classifyError(err, policy, currentAttempts) {
|
|
1490
1619
|
if (!policy) return "fail";
|
|
@@ -1518,7 +1647,7 @@ function serialiseError(err, attempt, retryable) {
|
|
|
1518
1647
|
}
|
|
1519
1648
|
|
|
1520
1649
|
// runtime/subsystems/jobs/job-run-service.memory-backend.ts
|
|
1521
|
-
import { Inject as
|
|
1650
|
+
import { Inject as Inject6, Injectable as Injectable6 } from "@nestjs/common";
|
|
1522
1651
|
var NON_TERMINAL_STATUSES2 = [
|
|
1523
1652
|
"pending",
|
|
1524
1653
|
"running",
|
|
@@ -1685,9 +1814,10 @@ var MemoryJobRunService = class {
|
|
|
1685
1814
|
}
|
|
1686
1815
|
};
|
|
1687
1816
|
MemoryJobRunService = __decorateClass([
|
|
1688
|
-
|
|
1689
|
-
__decorateParam(
|
|
1690
|
-
__decorateParam(
|
|
1817
|
+
Injectable6(),
|
|
1818
|
+
__decorateParam(0, Inject6(MemoryJobStore)),
|
|
1819
|
+
__decorateParam(1, Inject6(JOB_ORCHESTRATOR)),
|
|
1820
|
+
__decorateParam(2, Inject6(JOBS_MULTI_TENANT))
|
|
1691
1821
|
], MemoryJobRunService);
|
|
1692
1822
|
function compareBy(a, b, order) {
|
|
1693
1823
|
switch (order) {
|
|
@@ -1703,120 +1833,6 @@ function compareBy(a, b, order) {
|
|
|
1703
1833
|
}
|
|
1704
1834
|
}
|
|
1705
1835
|
|
|
1706
|
-
// runtime/subsystems/jobs/job-step-service.memory-backend.ts
|
|
1707
|
-
import { randomUUID as randomUUID3 } from "crypto";
|
|
1708
|
-
import { Injectable as Injectable6 } from "@nestjs/common";
|
|
1709
|
-
var MemoryJobStepService = class {
|
|
1710
|
-
constructor(store) {
|
|
1711
|
-
this.store = store;
|
|
1712
|
-
}
|
|
1713
|
-
store;
|
|
1714
|
-
async findStep(runId, stepId) {
|
|
1715
|
-
const rows = this.store.steps.get(runId);
|
|
1716
|
-
if (!rows) return null;
|
|
1717
|
-
const match = rows.find(
|
|
1718
|
-
(r) => r.stepId === stepId && r.status === "completed"
|
|
1719
|
-
);
|
|
1720
|
-
return match ?? null;
|
|
1721
|
-
}
|
|
1722
|
-
async recordStep(input) {
|
|
1723
|
-
const rows = this.getOrCreateRows(input.jobRunId);
|
|
1724
|
-
const existingIdx = rows.findIndex((r) => r.stepId === input.stepId);
|
|
1725
|
-
const normalisedInput = input.input ?? null;
|
|
1726
|
-
const normalisedOutput = input.output ?? null;
|
|
1727
|
-
if (existingIdx >= 0) {
|
|
1728
|
-
const prev = rows[existingIdx];
|
|
1729
|
-
const next = {
|
|
1730
|
-
...prev,
|
|
1731
|
-
status: input.status,
|
|
1732
|
-
input: normalisedInput ?? prev.input,
|
|
1733
|
-
output: normalisedOutput ?? prev.output,
|
|
1734
|
-
error: input.error ?? prev.error,
|
|
1735
|
-
attempts: input.attempts ?? prev.attempts,
|
|
1736
|
-
startedAt: input.startedAt ?? prev.startedAt,
|
|
1737
|
-
finishedAt: input.finishedAt ?? prev.finishedAt
|
|
1738
|
-
};
|
|
1739
|
-
rows[existingIdx] = next;
|
|
1740
|
-
return next;
|
|
1741
|
-
}
|
|
1742
|
-
const seq = input.seq ?? this.nextSeq(rows);
|
|
1743
|
-
const row = {
|
|
1744
|
-
id: randomUUID3(),
|
|
1745
|
-
jobRunId: input.jobRunId,
|
|
1746
|
-
stepId: input.stepId,
|
|
1747
|
-
kind: input.kind,
|
|
1748
|
-
seq,
|
|
1749
|
-
status: input.status,
|
|
1750
|
-
input: normalisedInput,
|
|
1751
|
-
output: normalisedOutput,
|
|
1752
|
-
error: input.error ?? null,
|
|
1753
|
-
attempts: input.attempts ?? 0,
|
|
1754
|
-
startedAt: input.startedAt ?? null,
|
|
1755
|
-
finishedAt: input.finishedAt ?? null
|
|
1756
|
-
};
|
|
1757
|
-
rows.push(row);
|
|
1758
|
-
return row;
|
|
1759
|
-
}
|
|
1760
|
-
/**
|
|
1761
|
-
* Replay helper — wipe every step row for a run. Mirrors the `scratch`
|
|
1762
|
-
* replay mode of the Drizzle backend (`DELETE FROM job_step WHERE job_run_id = …`).
|
|
1763
|
-
*/
|
|
1764
|
-
clearStepsForRun(runId) {
|
|
1765
|
-
this.store.steps.delete(runId);
|
|
1766
|
-
}
|
|
1767
|
-
/**
|
|
1768
|
-
* Remove every non-`completed` row for the run. Memoized (`completed`)
|
|
1769
|
-
* rows are preserved — this is the `last_checkpoint` / `last_step`
|
|
1770
|
-
* semantics the Drizzle backend implements via
|
|
1771
|
-
* `DELETE … WHERE status != 'completed'`. Both replay modes route here
|
|
1772
|
-
* (Phase 1 collapses `last_step` onto this behaviour; see JOB-3 notes).
|
|
1773
|
-
*/
|
|
1774
|
-
clearIncompleteSteps(runId) {
|
|
1775
|
-
const rows = this.store.steps.get(runId);
|
|
1776
|
-
if (!rows) return;
|
|
1777
|
-
const kept = rows.filter((r) => r.status === "completed");
|
|
1778
|
-
if (kept.length === 0) {
|
|
1779
|
-
this.store.steps.delete(runId);
|
|
1780
|
-
} else {
|
|
1781
|
-
this.store.steps.set(runId, kept);
|
|
1782
|
-
}
|
|
1783
|
-
}
|
|
1784
|
-
getOrCreateRows(runId) {
|
|
1785
|
-
let rows = this.store.steps.get(runId);
|
|
1786
|
-
if (!rows) {
|
|
1787
|
-
rows = [];
|
|
1788
|
-
this.store.steps.set(runId, rows);
|
|
1789
|
-
}
|
|
1790
|
-
return rows;
|
|
1791
|
-
}
|
|
1792
|
-
nextSeq(rows) {
|
|
1793
|
-
let max = 0;
|
|
1794
|
-
for (const r of rows) {
|
|
1795
|
-
if (r.seq > max) max = r.seq;
|
|
1796
|
-
}
|
|
1797
|
-
return max + 1;
|
|
1798
|
-
}
|
|
1799
|
-
};
|
|
1800
|
-
MemoryJobStepService = __decorateClass([
|
|
1801
|
-
Injectable6()
|
|
1802
|
-
], MemoryJobStepService);
|
|
1803
|
-
|
|
1804
|
-
// runtime/subsystems/jobs/memory-job-store.ts
|
|
1805
|
-
var MemoryJobStore = class {
|
|
1806
|
-
/** Runs keyed by `id` (single source of truth for status/scope/lineage). */
|
|
1807
|
-
runs = /* @__PURE__ */ new Map();
|
|
1808
|
-
/** Steps keyed by `job_run_id`; array order matches insertion order. */
|
|
1809
|
-
steps = /* @__PURE__ */ new Map();
|
|
1810
|
-
/** Job definitions keyed by `type` — memory mirror of the `job` table. */
|
|
1811
|
-
jobs = /* @__PURE__ */ new Map();
|
|
1812
|
-
/** Reset everything. Tests call this in `beforeEach`. */
|
|
1813
|
-
clear() {
|
|
1814
|
-
this.runs.clear();
|
|
1815
|
-
this.steps.clear();
|
|
1816
|
-
this.jobs.clear();
|
|
1817
|
-
}
|
|
1818
|
-
};
|
|
1819
|
-
|
|
1820
1836
|
// runtime/subsystems/jobs/pool-config.loader.ts
|
|
1821
1837
|
import { existsSync, readFileSync } from "fs";
|
|
1822
1838
|
import { resolve } from "path";
|
|
@@ -1940,8 +1956,8 @@ function extractUserPools(raw) {
|
|
|
1940
1956
|
}
|
|
1941
1957
|
|
|
1942
1958
|
// runtime/subsystems/jobs/bullmq.config.ts
|
|
1943
|
-
var BULLMQ_CONNECTION =
|
|
1944
|
-
var BULLMQ_RESOLVED_CONFIG =
|
|
1959
|
+
var BULLMQ_CONNECTION = Symbol.for(tokenKey("jobs", "bullmq-connection"));
|
|
1960
|
+
var BULLMQ_RESOLVED_CONFIG = Symbol.for(tokenKey("jobs", "bullmq-resolved-config"));
|
|
1945
1961
|
var DEFAULT_REDIS_URL = "redis://localhost:6379";
|
|
1946
1962
|
var DEFAULT_BULL_BOARD_MOUNT = "/admin/queues";
|
|
1947
1963
|
function resolveBullMqConfig(ext) {
|
|
@@ -2032,9 +2048,9 @@ JobsDomainModule = __decorateClass([
|
|
|
2032
2048
|
], JobsDomainModule);
|
|
2033
2049
|
|
|
2034
2050
|
// runtime/subsystems/jobs/job-worker.ts
|
|
2035
|
-
import { Inject as
|
|
2051
|
+
import { Inject as Inject7, Injectable as Injectable7, Logger as Logger3 } from "@nestjs/common";
|
|
2036
2052
|
import { and as and4, asc as asc2, desc as desc3, eq as eq4, inArray as inArray3, lt as lt2, lte, sql as sql4 } from "drizzle-orm";
|
|
2037
|
-
var JOB_WORKER_OPTIONS =
|
|
2053
|
+
var JOB_WORKER_OPTIONS = Symbol.for(tokenKey("jobs", "worker-options"));
|
|
2038
2054
|
var DEFAULT_POLL_INTERVAL_MS = 1e3;
|
|
2039
2055
|
var DEFAULT_STALE_SWEEPER_INTERVAL_MS = 6e4;
|
|
2040
2056
|
var DEFAULT_STALE_THRESHOLD_MS = 5 * 6e4;
|
|
@@ -2419,16 +2435,16 @@ var JobWorker = class {
|
|
|
2419
2435
|
};
|
|
2420
2436
|
JobWorker = __decorateClass([
|
|
2421
2437
|
Injectable7(),
|
|
2422
|
-
__decorateParam(0,
|
|
2423
|
-
__decorateParam(1,
|
|
2424
|
-
__decorateParam(2,
|
|
2425
|
-
__decorateParam(3,
|
|
2426
|
-
__decorateParam(4,
|
|
2438
|
+
__decorateParam(0, Inject7(DRIZZLE)),
|
|
2439
|
+
__decorateParam(1, Inject7(JOB_ORCHESTRATOR)),
|
|
2440
|
+
__decorateParam(2, Inject7(JOB_RUN_SERVICE)),
|
|
2441
|
+
__decorateParam(3, Inject7(JOB_STEP_SERVICE)),
|
|
2442
|
+
__decorateParam(4, Inject7(JOB_WORKER_OPTIONS))
|
|
2427
2443
|
], JobWorker);
|
|
2428
2444
|
|
|
2429
2445
|
// runtime/subsystems/jobs/job-worker.module.ts
|
|
2430
2446
|
var DEFAULT_SHUTDOWN_TIMEOUT_MS2 = 3e4;
|
|
2431
|
-
var JOB_WORKER_MODULE_OPTIONS =
|
|
2447
|
+
var JOB_WORKER_MODULE_OPTIONS = Symbol.for(tokenKey("jobs", "worker-module-options"));
|
|
2432
2448
|
var JobWorkerOrchestrator = class {
|
|
2433
2449
|
constructor(orchestrator, runService, stepService, options, db = null, moduleRef, bullConnection = null, bullConfig = null) {
|
|
2434
2450
|
this.orchestrator = orchestrator;
|
|
@@ -2621,16 +2637,17 @@ var JobWorkerOrchestrator = class {
|
|
|
2621
2637
|
};
|
|
2622
2638
|
JobWorkerOrchestrator = __decorateClass([
|
|
2623
2639
|
Injectable8(),
|
|
2624
|
-
__decorateParam(0,
|
|
2625
|
-
__decorateParam(1,
|
|
2626
|
-
__decorateParam(2,
|
|
2627
|
-
__decorateParam(3,
|
|
2640
|
+
__decorateParam(0, Inject8(JOB_ORCHESTRATOR)),
|
|
2641
|
+
__decorateParam(1, Inject8(JOB_RUN_SERVICE)),
|
|
2642
|
+
__decorateParam(2, Inject8(JOB_STEP_SERVICE)),
|
|
2643
|
+
__decorateParam(3, Inject8(JOB_WORKER_MODULE_OPTIONS)),
|
|
2628
2644
|
__decorateParam(4, Optional2()),
|
|
2629
|
-
__decorateParam(4,
|
|
2645
|
+
__decorateParam(4, Inject8(DRIZZLE)),
|
|
2646
|
+
__decorateParam(5, Inject8(ModuleRef2)),
|
|
2630
2647
|
__decorateParam(6, Optional2()),
|
|
2631
|
-
__decorateParam(6,
|
|
2648
|
+
__decorateParam(6, Inject8(BULLMQ_CONNECTION)),
|
|
2632
2649
|
__decorateParam(7, Optional2()),
|
|
2633
|
-
__decorateParam(7,
|
|
2650
|
+
__decorateParam(7, Inject8(BULLMQ_RESOLVED_CONFIG))
|
|
2634
2651
|
], JobWorkerOrchestrator);
|
|
2635
2652
|
var JobWorkerModule = class {
|
|
2636
2653
|
static forRoot(opts) {
|
|
@@ -2770,11 +2787,11 @@ var MemoryBridgeDeliveryRepo = class {
|
|
|
2770
2787
|
* Unlike `insertDelivery`, this read does NOT call `assertTenantId`:
|
|
2771
2788
|
* `tenantId === undefined` is the supported cross-tenant admin view.
|
|
2772
2789
|
*/
|
|
2773
|
-
async getStatusHistogram(windowHours, tenantId) {
|
|
2790
|
+
async getStatusHistogram(windowHours, tenantId, nowMs = Date.now()) {
|
|
2774
2791
|
if (!Number.isFinite(windowHours) || windowHours <= 0) {
|
|
2775
2792
|
throw new RangeError("windowHours must be positive");
|
|
2776
2793
|
}
|
|
2777
|
-
const cutoffMs =
|
|
2794
|
+
const cutoffMs = nowMs - windowHours * 36e5;
|
|
2778
2795
|
const histogram = {
|
|
2779
2796
|
pending: 0,
|
|
2780
2797
|
delivered: 0,
|
|
@@ -2816,7 +2833,7 @@ var MemoryBridgeDeliveryRepo = class {
|
|
|
2816
2833
|
};
|
|
2817
2834
|
|
|
2818
2835
|
// runtime/subsystems/bridge/bridge-delivery.drizzle-backend.ts
|
|
2819
|
-
import { Inject as
|
|
2836
|
+
import { Inject as Inject9, Injectable as Injectable9, Optional as Optional3 } from "@nestjs/common";
|
|
2820
2837
|
import { eq as eq5, and as and5, gte as gte2, isNull as isNull2, sql as sql7 } from "drizzle-orm";
|
|
2821
2838
|
|
|
2822
2839
|
// runtime/subsystems/bridge/bridge-delivery.schema.ts
|
|
@@ -3076,20 +3093,21 @@ var DrizzleBridgeDeliveryRepo = class {
|
|
|
3076
3093
|
};
|
|
3077
3094
|
DrizzleBridgeDeliveryRepo = __decorateClass([
|
|
3078
3095
|
Injectable9(),
|
|
3079
|
-
__decorateParam(0,
|
|
3096
|
+
__decorateParam(0, Inject9(DRIZZLE)),
|
|
3080
3097
|
__decorateParam(1, Optional3()),
|
|
3081
|
-
__decorateParam(1,
|
|
3098
|
+
__decorateParam(1, Inject9(BRIDGE_MULTI_TENANT))
|
|
3082
3099
|
], DrizzleBridgeDeliveryRepo);
|
|
3083
3100
|
|
|
3084
3101
|
// runtime/subsystems/bridge/bridge-outbox-drain-hook.ts
|
|
3085
|
-
import { Inject as
|
|
3102
|
+
import { Inject as Inject11, Injectable as Injectable11, Logger as Logger6, Optional as Optional5 } from "@nestjs/common";
|
|
3086
3103
|
import { randomUUID as randomUUID5 } from "crypto";
|
|
3087
3104
|
|
|
3088
3105
|
// runtime/subsystems/bridge/bridge-delivery-handler.ts
|
|
3089
|
-
import { Inject as
|
|
3106
|
+
import { Inject as Inject10, Injectable as Injectable10, Logger as Logger5, Optional as Optional4 } from "@nestjs/common";
|
|
3090
3107
|
|
|
3091
3108
|
// runtime/subsystems/events/events.tokens.ts
|
|
3092
3109
|
var EVENT_BUS = "EVENT_BUS";
|
|
3110
|
+
var REDIS_URL = Symbol.for(tokenKey("events", "redis-url"));
|
|
3093
3111
|
|
|
3094
3112
|
// runtime/subsystems/bridge/bridge-delivery-handler.ts
|
|
3095
3113
|
var BRIDGE_DELIVERY_JOB_TYPE = "@framework/bridge_delivery";
|
|
@@ -3175,12 +3193,12 @@ BridgeDeliveryHandler = __decorateClass([
|
|
|
3175
3193
|
retry: { attempts: 3, backoff: "exponential", baseMs: 250 },
|
|
3176
3194
|
replayFrom: "last_step"
|
|
3177
3195
|
}),
|
|
3178
|
-
__decorateParam(0,
|
|
3179
|
-
__decorateParam(1,
|
|
3180
|
-
__decorateParam(2,
|
|
3181
|
-
__decorateParam(3,
|
|
3196
|
+
__decorateParam(0, Inject10(BRIDGE_DELIVERY_REPO)),
|
|
3197
|
+
__decorateParam(1, Inject10(JOB_ORCHESTRATOR)),
|
|
3198
|
+
__decorateParam(2, Inject10(EVENT_BUS)),
|
|
3199
|
+
__decorateParam(3, Inject10(BRIDGE_REGISTRY)),
|
|
3182
3200
|
__decorateParam(4, Optional4()),
|
|
3183
|
-
__decorateParam(4,
|
|
3201
|
+
__decorateParam(4, Inject10(BRIDGE_MULTI_TENANT))
|
|
3184
3202
|
], BridgeDeliveryHandler);
|
|
3185
3203
|
|
|
3186
3204
|
// runtime/subsystems/bridge/bridge-outbox-drain-hook.ts
|
|
@@ -3289,11 +3307,11 @@ var BridgeOutboxDrainHook = class {
|
|
|
3289
3307
|
BridgeOutboxDrainHook = __decorateClass([
|
|
3290
3308
|
Injectable11(),
|
|
3291
3309
|
__decorateParam(0, Optional5()),
|
|
3292
|
-
__decorateParam(0,
|
|
3310
|
+
__decorateParam(0, Inject11(BRIDGE_REGISTRY))
|
|
3293
3311
|
], BridgeOutboxDrainHook);
|
|
3294
3312
|
|
|
3295
3313
|
// runtime/subsystems/bridge/event-flow.service.ts
|
|
3296
|
-
import { Inject as
|
|
3314
|
+
import { Inject as Inject12, Injectable as Injectable12, Optional as Optional6 } from "@nestjs/common";
|
|
3297
3315
|
var EventFlowService = class {
|
|
3298
3316
|
constructor(db, eventBus, orchestrator, bridgeRepo, registry = {}, multiTenant = false) {
|
|
3299
3317
|
this.db = db;
|
|
@@ -3365,14 +3383,14 @@ var EventFlowService = class {
|
|
|
3365
3383
|
};
|
|
3366
3384
|
EventFlowService = __decorateClass([
|
|
3367
3385
|
Injectable12(),
|
|
3368
|
-
__decorateParam(0,
|
|
3369
|
-
__decorateParam(1,
|
|
3370
|
-
__decorateParam(2,
|
|
3371
|
-
__decorateParam(3,
|
|
3386
|
+
__decorateParam(0, Inject12(DRIZZLE)),
|
|
3387
|
+
__decorateParam(1, Inject12(EVENT_BUS)),
|
|
3388
|
+
__decorateParam(2, Inject12(JOB_ORCHESTRATOR)),
|
|
3389
|
+
__decorateParam(3, Inject12(BRIDGE_DELIVERY_REPO)),
|
|
3372
3390
|
__decorateParam(4, Optional6()),
|
|
3373
|
-
__decorateParam(4,
|
|
3391
|
+
__decorateParam(4, Inject12(BRIDGE_REGISTRY)),
|
|
3374
3392
|
__decorateParam(5, Optional6()),
|
|
3375
|
-
__decorateParam(5,
|
|
3393
|
+
__decorateParam(5, Inject12(BRIDGE_MULTI_TENANT))
|
|
3376
3394
|
], EventFlowService);
|
|
3377
3395
|
|
|
3378
3396
|
// runtime/subsystems/bridge/generated/registry.ts
|
|
@@ -3451,7 +3469,7 @@ var BridgeModule = class {
|
|
|
3451
3469
|
BridgeModule = __decorateClass([
|
|
3452
3470
|
Module3({}),
|
|
3453
3471
|
__decorateParam(0, Optional7()),
|
|
3454
|
-
__decorateParam(0,
|
|
3472
|
+
__decorateParam(0, Inject13(JOB_WORKER_MODULE_OPTIONS))
|
|
3455
3473
|
], BridgeModule);
|
|
3456
3474
|
export {
|
|
3457
3475
|
BridgeModule
|