@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.
Files changed (162) hide show
  1. package/dist/{job-orchestrator.protocol-CHOEqBDk.d.ts → job-orchestrator.protocol-CARhMLCO.d.ts} +1 -1
  2. package/dist/runtime/subsystems/analytics/analytics.module.js +6 -2
  3. package/dist/runtime/subsystems/analytics/analytics.module.js.map +1 -1
  4. package/dist/runtime/subsystems/analytics/analytics.tokens.d.ts +0 -11
  5. package/dist/runtime/subsystems/analytics/analytics.tokens.js +6 -2
  6. package/dist/runtime/subsystems/analytics/analytics.tokens.js.map +1 -1
  7. package/dist/runtime/subsystems/analytics/cube-backend.js +6 -2
  8. package/dist/runtime/subsystems/analytics/cube-backend.js.map +1 -1
  9. package/dist/runtime/subsystems/analytics/index.js +6 -2
  10. package/dist/runtime/subsystems/analytics/index.js.map +1 -1
  11. package/dist/runtime/subsystems/auth/auth.module.js +12 -6
  12. package/dist/runtime/subsystems/auth/auth.module.js.map +1 -1
  13. package/dist/runtime/subsystems/auth/auth.tokens.d.ts +0 -28
  14. package/dist/runtime/subsystems/auth/auth.tokens.js +12 -8
  15. package/dist/runtime/subsystems/auth/auth.tokens.js.map +1 -1
  16. package/dist/runtime/subsystems/auth/controllers/auth.controller.js +12 -5
  17. package/dist/runtime/subsystems/auth/controllers/auth.controller.js.map +1 -1
  18. package/dist/runtime/subsystems/auth/index.js +12 -8
  19. package/dist/runtime/subsystems/auth/index.js.map +1 -1
  20. package/dist/runtime/subsystems/auth/middleware/requester-context.js +12 -1
  21. package/dist/runtime/subsystems/auth/middleware/requester-context.js.map +1 -1
  22. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.d.ts +1 -1
  23. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +10 -2
  24. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js.map +1 -1
  25. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.d.ts +1 -1
  26. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js +2 -2
  27. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js.map +1 -1
  28. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +10 -2
  29. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js.map +1 -1
  30. package/dist/runtime/subsystems/bridge/bridge.module.d.ts +1 -1
  31. package/dist/runtime/subsystems/bridge/bridge.module.js +186 -168
  32. package/dist/runtime/subsystems/bridge/bridge.module.js.map +1 -1
  33. package/dist/runtime/subsystems/bridge/bridge.protocol.d.ts +1 -1
  34. package/dist/runtime/subsystems/bridge/event-flow.service.d.ts +1 -1
  35. package/dist/runtime/subsystems/bridge/event-flow.service.js +9 -1
  36. package/dist/runtime/subsystems/bridge/event-flow.service.js.map +1 -1
  37. package/dist/runtime/subsystems/bridge/index.d.ts +1 -1
  38. package/dist/runtime/subsystems/bridge/index.js +168 -150
  39. package/dist/runtime/subsystems/bridge/index.js.map +1 -1
  40. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js +6 -1
  41. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js.map +1 -1
  42. package/dist/runtime/subsystems/cache/cache.memory-backend.js +6 -1
  43. package/dist/runtime/subsystems/cache/cache.memory-backend.js.map +1 -1
  44. package/dist/runtime/subsystems/cache/cache.module.js +6 -2
  45. package/dist/runtime/subsystems/cache/cache.module.js.map +1 -1
  46. package/dist/runtime/subsystems/cache/cache.tokens.d.ts +0 -10
  47. package/dist/runtime/subsystems/cache/cache.tokens.js +6 -2
  48. package/dist/runtime/subsystems/cache/cache.tokens.js.map +1 -1
  49. package/dist/runtime/subsystems/cache/index.js +6 -2
  50. package/dist/runtime/subsystems/cache/index.js.map +1 -1
  51. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +5 -0
  52. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js.map +1 -1
  53. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +5 -0
  54. package/dist/runtime/subsystems/events/event-bus.memory-backend.js.map +1 -1
  55. package/dist/runtime/subsystems/events/event-bus.redis-backend.js +5 -1
  56. package/dist/runtime/subsystems/events/event-bus.redis-backend.js.map +1 -1
  57. package/dist/runtime/subsystems/events/events.module.js +5 -1
  58. package/dist/runtime/subsystems/events/events.module.js.map +1 -1
  59. package/dist/runtime/subsystems/events/events.tokens.d.ts +5 -11
  60. package/dist/runtime/subsystems/events/events.tokens.js +5 -1
  61. package/dist/runtime/subsystems/events/events.tokens.js.map +1 -1
  62. package/dist/runtime/subsystems/events/generated/bus.js +5 -0
  63. package/dist/runtime/subsystems/events/generated/bus.js.map +1 -1
  64. package/dist/runtime/subsystems/events/generated/index.js +5 -0
  65. package/dist/runtime/subsystems/events/generated/index.js.map +1 -1
  66. package/dist/runtime/subsystems/events/index.js +5 -1
  67. package/dist/runtime/subsystems/events/index.js.map +1 -1
  68. package/dist/runtime/subsystems/index.d.ts +2 -2
  69. package/dist/runtime/subsystems/index.js +186 -168
  70. package/dist/runtime/subsystems/index.js.map +1 -1
  71. package/dist/runtime/subsystems/jobs/bullmq.config.d.ts +0 -9
  72. package/dist/runtime/subsystems/jobs/bullmq.config.js +6 -2
  73. package/dist/runtime/subsystems/jobs/bullmq.config.js.map +1 -1
  74. package/dist/runtime/subsystems/jobs/index.d.ts +1 -1
  75. package/dist/runtime/subsystems/jobs/index.js +141 -124
  76. package/dist/runtime/subsystems/jobs/index.js.map +1 -1
  77. package/dist/runtime/subsystems/jobs/job-handler.base.d.ts +1 -1
  78. package/dist/runtime/subsystems/jobs/job-handler.base.js +5 -1
  79. package/dist/runtime/subsystems/jobs/job-handler.base.js.map +1 -1
  80. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.d.ts +1 -1
  81. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +10 -3
  82. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js.map +1 -1
  83. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.d.ts +1 -1
  84. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +8 -1
  85. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js.map +1 -1
  86. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.d.ts +1 -1
  87. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +137 -7
  88. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js.map +1 -1
  89. package/dist/runtime/subsystems/jobs/job-orchestrator.protocol.d.ts +1 -1
  90. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.d.ts +1 -1
  91. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.d.ts +1 -1
  92. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +8 -2
  93. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js.map +1 -1
  94. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.d.ts +1 -1
  95. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +25 -2
  96. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js.map +1 -1
  97. package/dist/runtime/subsystems/jobs/job-run-service.protocol.d.ts +1 -1
  98. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js +25 -2
  99. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js.map +1 -1
  100. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.d.ts +1 -1
  101. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +5 -0
  102. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js.map +1 -1
  103. package/dist/runtime/subsystems/jobs/job-worker.d.ts +1 -1
  104. package/dist/runtime/subsystems/jobs/job-worker.js +10 -4
  105. package/dist/runtime/subsystems/jobs/job-worker.js.map +1 -1
  106. package/dist/runtime/subsystems/jobs/job-worker.module.d.ts +31 -3
  107. package/dist/runtime/subsystems/jobs/job-worker.module.js +163 -145
  108. package/dist/runtime/subsystems/jobs/job-worker.module.js.map +1 -1
  109. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +144 -130
  110. package/dist/runtime/subsystems/jobs/jobs-domain.module.js.map +1 -1
  111. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.d.ts +0 -11
  112. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js +8 -4
  113. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js.map +1 -1
  114. package/dist/runtime/subsystems/jobs/jobs-errors.d.ts +1 -1
  115. package/dist/runtime/subsystems/observability/index.d.ts +1 -1
  116. package/dist/runtime/subsystems/observability/index.js +9 -1
  117. package/dist/runtime/subsystems/observability/index.js.map +1 -1
  118. package/dist/runtime/subsystems/observability/observability.module.js +9 -1
  119. package/dist/runtime/subsystems/observability/observability.module.js.map +1 -1
  120. package/dist/runtime/subsystems/observability/observability.protocol.d.ts +1 -1
  121. package/dist/runtime/subsystems/observability/observability.service.d.ts +1 -1
  122. package/dist/runtime/subsystems/observability/observability.service.js +9 -1
  123. package/dist/runtime/subsystems/observability/observability.service.js.map +1 -1
  124. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.d.ts +1 -1
  125. package/dist/runtime/subsystems/observability/reporters/index.d.ts +1 -1
  126. package/dist/runtime/subsystems/storage/index.js +5 -1
  127. package/dist/runtime/subsystems/storage/index.js.map +1 -1
  128. package/dist/runtime/subsystems/storage/storage.module.js +5 -1
  129. package/dist/runtime/subsystems/storage/storage.module.js.map +1 -1
  130. package/dist/runtime/subsystems/storage/storage.tokens.d.ts +0 -8
  131. package/dist/runtime/subsystems/storage/storage.tokens.js +5 -1
  132. package/dist/runtime/subsystems/storage/storage.tokens.js.map +1 -1
  133. package/dist/runtime/subsystems/token-key.d.ts +7 -0
  134. package/dist/runtime/subsystems/token-key.js +8 -0
  135. package/dist/runtime/subsystems/token-key.js.map +1 -0
  136. package/dist/src/cli/index.js +1160 -694
  137. package/dist/src/cli/index.js.map +1 -1
  138. package/package.json +5 -1
  139. package/runtime/subsystems/analytics/analytics.tokens.ts +6 -2
  140. package/runtime/subsystems/auth/auth.tokens.ts +15 -8
  141. package/runtime/subsystems/bridge/bridge-delivery.memory-backend.ts +8 -1
  142. package/runtime/subsystems/cache/cache.tokens.ts +7 -2
  143. package/runtime/subsystems/events/events.tokens.ts +8 -1
  144. package/runtime/subsystems/index.ts +5 -1
  145. package/runtime/subsystems/jobs/bullmq.config.ts +5 -2
  146. package/runtime/subsystems/jobs/job-handler.base.ts +6 -1
  147. package/runtime/subsystems/jobs/job-orchestrator.memory-backend.ts +8 -3
  148. package/runtime/subsystems/jobs/job-run-service.memory-backend.ts +4 -1
  149. package/runtime/subsystems/jobs/job-step-service.memory-backend.ts +7 -2
  150. package/runtime/subsystems/jobs/job-worker.module.ts +18 -2
  151. package/runtime/subsystems/jobs/job-worker.ts +4 -1
  152. package/runtime/subsystems/jobs/jobs-domain.tokens.ts +10 -7
  153. package/runtime/subsystems/storage/storage.tokens.ts +6 -1
  154. package/runtime/subsystems/token-key.ts +7 -0
  155. package/src/config/runtime-mode.mjs +82 -0
  156. package/templates/entity/new/backend/modules/core/integration-source.ejs.t +3 -2
  157. package/templates/entity/new/clean-lite-ps/controller.ejs.t +1 -1
  158. package/templates/entity/new/clean-lite-ps/module.ejs.t +1 -1
  159. package/templates/entity/new/clean-lite-ps/prompt-extension.js +8 -2
  160. package/templates/entity/new/clean-lite-ps/repository.ejs.t +4 -4
  161. package/templates/entity/new/clean-lite-ps/service.ejs.t +4 -4
  162. package/templates/entity/new/prompt.js +49 -10
@@ -12,12 +12,16 @@ var __decorateClass = (decorators, target, key, kind) => {
12
12
  var __decorateParam = (index4, decorator) => (target, key) => decorator(target, key, index4);
13
13
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
14
14
 
15
+ // runtime/subsystems/token-key.ts
16
+ var PKG = "@pattern-stack/codegen";
17
+ var tokenKey = (area, name) => `${PKG}.${area}.${name}`;
18
+
15
19
  // runtime/subsystems/events/events.tokens.ts
16
20
  var EVENT_BUS = "EVENT_BUS";
17
21
  var EVENT_READ_PORT = "EVENT_READ_PORT";
18
22
  var TYPED_EVENT_BUS = "TYPED_EVENT_BUS";
19
23
  var EVENTS_MULTI_TENANT = "EVENTS_MULTI_TENANT";
20
- var REDIS_URL = /* @__PURE__ */ Symbol("REDIS_URL");
24
+ var REDIS_URL = Symbol.for(tokenKey("events", "redis-url"));
21
25
  var EVENTS_MODULE_OPTIONS = "EVENTS_MODULE_OPTIONS";
22
26
 
23
27
  // runtime/subsystems/events/generated/bus.ts
@@ -1102,13 +1106,14 @@ var jobSteps = pgTable2(
1102
1106
  );
1103
1107
 
1104
1108
  // runtime/subsystems/jobs/jobs-domain.tokens.ts
1105
- var JOB_ORCHESTRATOR = /* @__PURE__ */ Symbol("JOB_ORCHESTRATOR");
1106
- var JOB_RUN_SERVICE = /* @__PURE__ */ Symbol("JOB_RUN_SERVICE");
1107
- var JOB_STEP_SERVICE = /* @__PURE__ */ Symbol("JOB_STEP_SERVICE");
1108
- var JOBS_MULTI_TENANT = /* @__PURE__ */ Symbol("JOBS_MULTI_TENANT");
1109
+ var JOB_ORCHESTRATOR = Symbol.for(tokenKey("jobs", "orchestrator"));
1110
+ var JOB_RUN_SERVICE = Symbol.for(tokenKey("jobs", "run-service"));
1111
+ var JOB_STEP_SERVICE = Symbol.for(tokenKey("jobs", "step-service"));
1112
+ var JOBS_MULTI_TENANT = Symbol.for(tokenKey("jobs", "multi-tenant"));
1109
1113
 
1110
1114
  // runtime/subsystems/jobs/job-handler.base.ts
1111
1115
  var JOB_HANDLER_REGISTRY = /* @__PURE__ */ new Map();
1116
+ var JOB_HANDLER_METADATA_KEY = Symbol.for(tokenKey("jobs", "handler-metadata"));
1112
1117
  var HandlerRegistry;
1113
1118
  ((HandlerRegistry2) => {
1114
1119
  function getAll() {
@@ -1923,8 +1928,8 @@ function extractUserPools(raw) {
1923
1928
  }
1924
1929
 
1925
1930
  // runtime/subsystems/jobs/bullmq.config.ts
1926
- var BULLMQ_CONNECTION = /* @__PURE__ */ Symbol("BULLMQ_CONNECTION");
1927
- var BULLMQ_RESOLVED_CONFIG = /* @__PURE__ */ Symbol("BULLMQ_RESOLVED_CONFIG");
1931
+ var BULLMQ_CONNECTION = Symbol.for(tokenKey("jobs", "bullmq-connection"));
1932
+ var BULLMQ_RESOLVED_CONFIG = Symbol.for(tokenKey("jobs", "bullmq-resolved-config"));
1928
1933
  var DEFAULT_REDIS_URL = "redis://localhost:6379";
1929
1934
  var DEFAULT_BULL_BOARD_MOUNT = "/admin/queues";
1930
1935
  function resolveBullMqConfig(ext) {
@@ -1950,7 +1955,7 @@ function resolvePoolQueueName(pool, config, poolConfig = loadPoolConfig()) {
1950
1955
  // runtime/subsystems/jobs/job-worker.ts
1951
1956
  import { Inject as Inject7, Injectable as Injectable7, Logger as Logger4 } from "@nestjs/common";
1952
1957
  import { and as and5, asc as asc3, desc as desc4, eq as eq5, inArray as inArray4, lt as lt3, lte, sql as sql6 } from "drizzle-orm";
1953
- var JOB_WORKER_OPTIONS = /* @__PURE__ */ Symbol("JOB_WORKER_OPTIONS");
1958
+ var JOB_WORKER_OPTIONS = Symbol.for(tokenKey("jobs", "worker-options"));
1954
1959
  var DEFAULT_POLL_INTERVAL_MS = 1e3;
1955
1960
  var DEFAULT_STALE_SWEEPER_INTERVAL_MS = 6e4;
1956
1961
  var DEFAULT_STALE_THRESHOLD_MS = 5 * 6e4;
@@ -2359,8 +2364,113 @@ var MemoryJobStore = class {
2359
2364
  };
2360
2365
 
2361
2366
  // runtime/subsystems/jobs/job-orchestrator.memory-backend.ts
2367
+ import { randomUUID as randomUUID4 } from "crypto";
2368
+ import { Inject as Inject9, Injectable as Injectable9, Logger as Logger5, Optional as Optional3 } from "@nestjs/common";
2369
+ import { ModuleRef } from "@nestjs/core";
2370
+
2371
+ // runtime/subsystems/jobs/job-step-service.memory-backend.ts
2362
2372
  import { randomUUID as randomUUID3 } from "crypto";
2363
- import { Inject as Inject8, Injectable as Injectable8, Logger as Logger5, Optional as Optional3 } from "@nestjs/common";
2373
+ import { Inject as Inject8, Injectable as Injectable8 } from "@nestjs/common";
2374
+ var MemoryJobStepService = class {
2375
+ // ADR-037 (package-mode DI): explicit `@Inject(MemoryJobStore)` — the
2376
+ // published bundle carries no `design:paramtypes`, so a by-type inject
2377
+ // would resolve to `undefined` in package mode.
2378
+ constructor(store) {
2379
+ this.store = store;
2380
+ }
2381
+ store;
2382
+ async findStep(runId, stepId) {
2383
+ const rows = this.store.steps.get(runId);
2384
+ if (!rows) return null;
2385
+ const match = rows.find(
2386
+ (r) => r.stepId === stepId && r.status === "completed"
2387
+ );
2388
+ return match ?? null;
2389
+ }
2390
+ async recordStep(input) {
2391
+ const rows = this.getOrCreateRows(input.jobRunId);
2392
+ const existingIdx = rows.findIndex((r) => r.stepId === input.stepId);
2393
+ const normalisedInput = input.input ?? null;
2394
+ const normalisedOutput = input.output ?? null;
2395
+ if (existingIdx >= 0) {
2396
+ const prev = rows[existingIdx];
2397
+ const next = {
2398
+ ...prev,
2399
+ status: input.status,
2400
+ input: normalisedInput ?? prev.input,
2401
+ output: normalisedOutput ?? prev.output,
2402
+ error: input.error ?? prev.error,
2403
+ attempts: input.attempts ?? prev.attempts,
2404
+ startedAt: input.startedAt ?? prev.startedAt,
2405
+ finishedAt: input.finishedAt ?? prev.finishedAt
2406
+ };
2407
+ rows[existingIdx] = next;
2408
+ return next;
2409
+ }
2410
+ const seq = input.seq ?? this.nextSeq(rows);
2411
+ const row = {
2412
+ id: randomUUID3(),
2413
+ jobRunId: input.jobRunId,
2414
+ stepId: input.stepId,
2415
+ kind: input.kind,
2416
+ seq,
2417
+ status: input.status,
2418
+ input: normalisedInput,
2419
+ output: normalisedOutput,
2420
+ error: input.error ?? null,
2421
+ attempts: input.attempts ?? 0,
2422
+ startedAt: input.startedAt ?? null,
2423
+ finishedAt: input.finishedAt ?? null
2424
+ };
2425
+ rows.push(row);
2426
+ return row;
2427
+ }
2428
+ /**
2429
+ * Replay helper — wipe every step row for a run. Mirrors the `scratch`
2430
+ * replay mode of the Drizzle backend (`DELETE FROM job_step WHERE job_run_id = …`).
2431
+ */
2432
+ clearStepsForRun(runId) {
2433
+ this.store.steps.delete(runId);
2434
+ }
2435
+ /**
2436
+ * Remove every non-`completed` row for the run. Memoized (`completed`)
2437
+ * rows are preserved — this is the `last_checkpoint` / `last_step`
2438
+ * semantics the Drizzle backend implements via
2439
+ * `DELETE … WHERE status != 'completed'`. Both replay modes route here
2440
+ * (Phase 1 collapses `last_step` onto this behaviour; see JOB-3 notes).
2441
+ */
2442
+ clearIncompleteSteps(runId) {
2443
+ const rows = this.store.steps.get(runId);
2444
+ if (!rows) return;
2445
+ const kept = rows.filter((r) => r.status === "completed");
2446
+ if (kept.length === 0) {
2447
+ this.store.steps.delete(runId);
2448
+ } else {
2449
+ this.store.steps.set(runId, kept);
2450
+ }
2451
+ }
2452
+ getOrCreateRows(runId) {
2453
+ let rows = this.store.steps.get(runId);
2454
+ if (!rows) {
2455
+ rows = [];
2456
+ this.store.steps.set(runId, rows);
2457
+ }
2458
+ return rows;
2459
+ }
2460
+ nextSeq(rows) {
2461
+ let max = 0;
2462
+ for (const r of rows) {
2463
+ if (r.seq > max) max = r.seq;
2464
+ }
2465
+ return max + 1;
2466
+ }
2467
+ };
2468
+ MemoryJobStepService = __decorateClass([
2469
+ Injectable8(),
2470
+ __decorateParam(0, Inject8(MemoryJobStore))
2471
+ ], MemoryJobStepService);
2472
+
2473
+ // runtime/subsystems/jobs/job-orchestrator.memory-backend.ts
2364
2474
  var QUEUED_RUN_AT = /* @__PURE__ */ new Date(864e13);
2365
2475
  var TERMINAL_STATUSES2 = [
2366
2476
  "completed",
@@ -2531,7 +2641,7 @@ var MemoryJobOrchestrator = class {
2531
2641
  }
2532
2642
  }
2533
2643
  }
2534
- const newId = randomUUID3();
2644
+ const newId = randomUUID4();
2535
2645
  let rootRunId = newId;
2536
2646
  if (opts.parentRunId) {
2537
2647
  const parent = this.store.runs.get(opts.parentRunId);
@@ -2929,9 +3039,12 @@ var MemoryJobOrchestrator = class {
2929
3039
  }
2930
3040
  };
2931
3041
  MemoryJobOrchestrator = __decorateClass([
2932
- Injectable8(),
2933
- __decorateParam(2, Inject8(JOBS_MULTI_TENANT)),
2934
- __decorateParam(3, Optional3())
3042
+ Injectable9(),
3043
+ __decorateParam(0, Inject9(MemoryJobStore)),
3044
+ __decorateParam(1, Inject9(MemoryJobStepService)),
3045
+ __decorateParam(2, Inject9(JOBS_MULTI_TENANT)),
3046
+ __decorateParam(3, Optional3()),
3047
+ __decorateParam(3, Inject9(ModuleRef))
2935
3048
  ], MemoryJobOrchestrator);
2936
3049
  function classifyError2(err, policy, currentAttempts) {
2937
3050
  if (!policy) return "fail";
@@ -2965,7 +3078,7 @@ function serialiseError2(err, attempt, retryable) {
2965
3078
  }
2966
3079
 
2967
3080
  // runtime/subsystems/jobs/job-run-service.memory-backend.ts
2968
- import { Inject as Inject9, Injectable as Injectable9 } from "@nestjs/common";
3081
+ import { Inject as Inject10, Injectable as Injectable10 } from "@nestjs/common";
2969
3082
  var NON_TERMINAL_STATUSES2 = [
2970
3083
  "pending",
2971
3084
  "running",
@@ -3132,9 +3245,10 @@ var MemoryJobRunService = class {
3132
3245
  }
3133
3246
  };
3134
3247
  MemoryJobRunService = __decorateClass([
3135
- Injectable9(),
3136
- __decorateParam(1, Inject9(JOB_ORCHESTRATOR)),
3137
- __decorateParam(2, Inject9(JOBS_MULTI_TENANT))
3248
+ Injectable10(),
3249
+ __decorateParam(0, Inject10(MemoryJobStore)),
3250
+ __decorateParam(1, Inject10(JOB_ORCHESTRATOR)),
3251
+ __decorateParam(2, Inject10(JOBS_MULTI_TENANT))
3138
3252
  ], MemoryJobRunService);
3139
3253
  function compareBy(a, b, order) {
3140
3254
  switch (order) {
@@ -3150,104 +3264,6 @@ function compareBy(a, b, order) {
3150
3264
  }
3151
3265
  }
3152
3266
 
3153
- // runtime/subsystems/jobs/job-step-service.memory-backend.ts
3154
- import { randomUUID as randomUUID4 } from "crypto";
3155
- import { Injectable as Injectable10 } from "@nestjs/common";
3156
- var MemoryJobStepService = class {
3157
- constructor(store) {
3158
- this.store = store;
3159
- }
3160
- store;
3161
- async findStep(runId, stepId) {
3162
- const rows = this.store.steps.get(runId);
3163
- if (!rows) return null;
3164
- const match = rows.find(
3165
- (r) => r.stepId === stepId && r.status === "completed"
3166
- );
3167
- return match ?? null;
3168
- }
3169
- async recordStep(input) {
3170
- const rows = this.getOrCreateRows(input.jobRunId);
3171
- const existingIdx = rows.findIndex((r) => r.stepId === input.stepId);
3172
- const normalisedInput = input.input ?? null;
3173
- const normalisedOutput = input.output ?? null;
3174
- if (existingIdx >= 0) {
3175
- const prev = rows[existingIdx];
3176
- const next = {
3177
- ...prev,
3178
- status: input.status,
3179
- input: normalisedInput ?? prev.input,
3180
- output: normalisedOutput ?? prev.output,
3181
- error: input.error ?? prev.error,
3182
- attempts: input.attempts ?? prev.attempts,
3183
- startedAt: input.startedAt ?? prev.startedAt,
3184
- finishedAt: input.finishedAt ?? prev.finishedAt
3185
- };
3186
- rows[existingIdx] = next;
3187
- return next;
3188
- }
3189
- const seq = input.seq ?? this.nextSeq(rows);
3190
- const row = {
3191
- id: randomUUID4(),
3192
- jobRunId: input.jobRunId,
3193
- stepId: input.stepId,
3194
- kind: input.kind,
3195
- seq,
3196
- status: input.status,
3197
- input: normalisedInput,
3198
- output: normalisedOutput,
3199
- error: input.error ?? null,
3200
- attempts: input.attempts ?? 0,
3201
- startedAt: input.startedAt ?? null,
3202
- finishedAt: input.finishedAt ?? null
3203
- };
3204
- rows.push(row);
3205
- return row;
3206
- }
3207
- /**
3208
- * Replay helper — wipe every step row for a run. Mirrors the `scratch`
3209
- * replay mode of the Drizzle backend (`DELETE FROM job_step WHERE job_run_id = …`).
3210
- */
3211
- clearStepsForRun(runId) {
3212
- this.store.steps.delete(runId);
3213
- }
3214
- /**
3215
- * Remove every non-`completed` row for the run. Memoized (`completed`)
3216
- * rows are preserved — this is the `last_checkpoint` / `last_step`
3217
- * semantics the Drizzle backend implements via
3218
- * `DELETE … WHERE status != 'completed'`. Both replay modes route here
3219
- * (Phase 1 collapses `last_step` onto this behaviour; see JOB-3 notes).
3220
- */
3221
- clearIncompleteSteps(runId) {
3222
- const rows = this.store.steps.get(runId);
3223
- if (!rows) return;
3224
- const kept = rows.filter((r) => r.status === "completed");
3225
- if (kept.length === 0) {
3226
- this.store.steps.delete(runId);
3227
- } else {
3228
- this.store.steps.set(runId, kept);
3229
- }
3230
- }
3231
- getOrCreateRows(runId) {
3232
- let rows = this.store.steps.get(runId);
3233
- if (!rows) {
3234
- rows = [];
3235
- this.store.steps.set(runId, rows);
3236
- }
3237
- return rows;
3238
- }
3239
- nextSeq(rows) {
3240
- let max = 0;
3241
- for (const r of rows) {
3242
- if (r.seq > max) max = r.seq;
3243
- }
3244
- return max + 1;
3245
- }
3246
- };
3247
- MemoryJobStepService = __decorateClass([
3248
- Injectable10()
3249
- ], MemoryJobStepService);
3250
-
3251
3267
  // runtime/subsystems/jobs/jobs-domain.module.ts
3252
3268
  import { Module as Module2 } from "@nestjs/common";
3253
3269
  var JobsDomainModule = class {
@@ -3318,14 +3334,15 @@ JobsDomainModule = __decorateClass([
3318
3334
 
3319
3335
  // runtime/subsystems/jobs/job-worker.module.ts
3320
3336
  import {
3321
- Inject as Inject10,
3337
+ Inject as Inject11,
3322
3338
  Injectable as Injectable11,
3323
3339
  Logger as Logger6,
3324
3340
  Module as Module3,
3325
3341
  Optional as Optional4
3326
3342
  } from "@nestjs/common";
3343
+ import { ModuleRef as ModuleRef2 } from "@nestjs/core";
3327
3344
  var DEFAULT_SHUTDOWN_TIMEOUT_MS2 = 3e4;
3328
- var JOB_WORKER_MODULE_OPTIONS = /* @__PURE__ */ Symbol("JOB_WORKER_MODULE_OPTIONS");
3345
+ var JOB_WORKER_MODULE_OPTIONS = Symbol.for(tokenKey("jobs", "worker-module-options"));
3329
3346
  var JobWorkerOrchestrator = class {
3330
3347
  constructor(orchestrator, runService, stepService, options, db = null, moduleRef, bullConnection = null, bullConfig = null) {
3331
3348
  this.orchestrator = orchestrator;
@@ -3518,16 +3535,17 @@ var JobWorkerOrchestrator = class {
3518
3535
  };
3519
3536
  JobWorkerOrchestrator = __decorateClass([
3520
3537
  Injectable11(),
3521
- __decorateParam(0, Inject10(JOB_ORCHESTRATOR)),
3522
- __decorateParam(1, Inject10(JOB_RUN_SERVICE)),
3523
- __decorateParam(2, Inject10(JOB_STEP_SERVICE)),
3524
- __decorateParam(3, Inject10(JOB_WORKER_MODULE_OPTIONS)),
3538
+ __decorateParam(0, Inject11(JOB_ORCHESTRATOR)),
3539
+ __decorateParam(1, Inject11(JOB_RUN_SERVICE)),
3540
+ __decorateParam(2, Inject11(JOB_STEP_SERVICE)),
3541
+ __decorateParam(3, Inject11(JOB_WORKER_MODULE_OPTIONS)),
3525
3542
  __decorateParam(4, Optional4()),
3526
- __decorateParam(4, Inject10(DRIZZLE)),
3543
+ __decorateParam(4, Inject11(DRIZZLE)),
3544
+ __decorateParam(5, Inject11(ModuleRef2)),
3527
3545
  __decorateParam(6, Optional4()),
3528
- __decorateParam(6, Inject10(BULLMQ_CONNECTION)),
3546
+ __decorateParam(6, Inject11(BULLMQ_CONNECTION)),
3529
3547
  __decorateParam(7, Optional4()),
3530
- __decorateParam(7, Inject10(BULLMQ_RESOLVED_CONFIG))
3548
+ __decorateParam(7, Inject11(BULLMQ_RESOLVED_CONFIG))
3531
3549
  ], JobWorkerOrchestrator);
3532
3550
  var JobWorkerModule = class {
3533
3551
  static forRoot(opts) {
@@ -3560,14 +3578,14 @@ JobWorkerModule = __decorateClass([
3560
3578
  ], JobWorkerModule);
3561
3579
 
3562
3580
  // runtime/subsystems/cache/cache.tokens.ts
3563
- var CACHE = /* @__PURE__ */ Symbol("CACHE");
3564
- var CACHE_DEFAULT_TTL = /* @__PURE__ */ Symbol("CACHE_DEFAULT_TTL");
3581
+ var CACHE = Symbol.for(tokenKey("cache", "cache"));
3582
+ var CACHE_DEFAULT_TTL = Symbol.for(tokenKey("cache", "default-ttl"));
3565
3583
 
3566
3584
  // runtime/subsystems/cache/cache.module.ts
3567
3585
  import { Module as Module4 } from "@nestjs/common";
3568
3586
 
3569
3587
  // runtime/subsystems/cache/cache.drizzle-backend.ts
3570
- import { Injectable as Injectable12, Inject as Inject11, Optional as Optional5 } from "@nestjs/common";
3588
+ import { Injectable as Injectable12, Inject as Inject12, Optional as Optional5 } from "@nestjs/common";
3571
3589
  import { gt as gt2, or as or3, like, sql as sql7, eq as eq6 } from "drizzle-orm";
3572
3590
 
3573
3591
  // runtime/subsystems/cache/cache.schema.ts
@@ -3672,13 +3690,13 @@ var DrizzleCacheService = class {
3672
3690
  };
3673
3691
  DrizzleCacheService = __decorateClass([
3674
3692
  Injectable12(),
3675
- __decorateParam(0, Inject11(DRIZZLE)),
3693
+ __decorateParam(0, Inject12(DRIZZLE)),
3676
3694
  __decorateParam(1, Optional5()),
3677
- __decorateParam(1, Inject11(CACHE_DEFAULT_TTL))
3695
+ __decorateParam(1, Inject12(CACHE_DEFAULT_TTL))
3678
3696
  ], DrizzleCacheService);
3679
3697
 
3680
3698
  // runtime/subsystems/cache/cache.memory-backend.ts
3681
- import { Injectable as Injectable13, Inject as Inject12, Optional as Optional6 } from "@nestjs/common";
3699
+ import { Injectable as Injectable13, Inject as Inject13, Optional as Optional6 } from "@nestjs/common";
3682
3700
  var MemoryCacheService = class {
3683
3701
  constructor(defaultTtl = null) {
3684
3702
  this.defaultTtl = defaultTtl;
@@ -3754,7 +3772,7 @@ var MemoryCacheService = class {
3754
3772
  MemoryCacheService = __decorateClass([
3755
3773
  Injectable13(),
3756
3774
  __decorateParam(0, Optional6()),
3757
- __decorateParam(0, Inject12(CACHE_DEFAULT_TTL))
3775
+ __decorateParam(0, Inject13(CACHE_DEFAULT_TTL))
3758
3776
  ], MemoryCacheService);
3759
3777
 
3760
3778
  // runtime/subsystems/cache/cache.module.ts
@@ -3982,7 +4000,7 @@ var MemoryStorageBackend = class {
3982
4000
  import { Module as Module5 } from "@nestjs/common";
3983
4001
 
3984
4002
  // runtime/subsystems/storage/storage.tokens.ts
3985
- var STORAGE = /* @__PURE__ */ Symbol("STORAGE");
4003
+ var STORAGE = Symbol.for(tokenKey("storage", "storage"));
3986
4004
 
3987
4005
  // runtime/subsystems/storage/storage.module.ts
3988
4006
  var StorageModule = class {
@@ -4014,7 +4032,7 @@ var OBSERVABILITY_MODULE_OPTIONS = "OBSERVABILITY_MODULE_OPTIONS";
4014
4032
  import { Module as Module6 } from "@nestjs/common";
4015
4033
 
4016
4034
  // runtime/subsystems/observability/observability.service.ts
4017
- import { Inject as Inject13, Injectable as Injectable14, Optional as Optional7 } from "@nestjs/common";
4035
+ import { Inject as Inject14, Injectable as Injectable14, Optional as Optional7 } from "@nestjs/common";
4018
4036
 
4019
4037
  // runtime/subsystems/integration/integration.tokens.ts
4020
4038
  var INTEGRATION_CHANGE_SOURCE = "INTEGRATION_CHANGE_SOURCE";
@@ -4175,20 +4193,20 @@ __publicField(ObservabilityService, "EMPTY_EVENT_PAGE", {
4175
4193
  ObservabilityService = __decorateClass([
4176
4194
  Injectable14(),
4177
4195
  __decorateParam(0, Optional7()),
4178
- __decorateParam(0, Inject13(JOB_RUN_SERVICE)),
4196
+ __decorateParam(0, Inject14(JOB_RUN_SERVICE)),
4179
4197
  __decorateParam(1, Optional7()),
4180
- __decorateParam(1, Inject13(BRIDGE_DELIVERY_REPO)),
4198
+ __decorateParam(1, Inject14(BRIDGE_DELIVERY_REPO)),
4181
4199
  __decorateParam(2, Optional7()),
4182
- __decorateParam(2, Inject13(INTEGRATION_RUN_RECORDER)),
4200
+ __decorateParam(2, Inject14(INTEGRATION_RUN_RECORDER)),
4183
4201
  __decorateParam(3, Optional7()),
4184
- __decorateParam(3, Inject13(INTEGRATION_CURSOR_STORE)),
4202
+ __decorateParam(3, Inject14(INTEGRATION_CURSOR_STORE)),
4185
4203
  __decorateParam(4, Optional7()),
4186
- __decorateParam(4, Inject13(EVENT_READ_PORT))
4204
+ __decorateParam(4, Inject14(EVENT_READ_PORT))
4187
4205
  ], ObservabilityService);
4188
4206
 
4189
4207
  // runtime/subsystems/observability/reporters/bridge-metrics.reporter.ts
4190
4208
  import {
4191
- Inject as Inject14,
4209
+ Inject as Inject15,
4192
4210
  Injectable as Injectable15,
4193
4211
  Logger as Logger7
4194
4212
  } from "@nestjs/common";
@@ -4250,8 +4268,8 @@ var BridgeMetricsReporter = class {
4250
4268
  };
4251
4269
  BridgeMetricsReporter = __decorateClass([
4252
4270
  Injectable15(),
4253
- __decorateParam(0, Inject14(OBSERVABILITY)),
4254
- __decorateParam(1, Inject14(OBSERVABILITY_MODULE_OPTIONS))
4271
+ __decorateParam(0, Inject15(OBSERVABILITY)),
4272
+ __decorateParam(1, Inject15(OBSERVABILITY_MODULE_OPTIONS))
4255
4273
  ], BridgeMetricsReporter);
4256
4274
 
4257
4275
  // runtime/subsystems/observability/observability.module.ts
@@ -4989,7 +5007,7 @@ function deepEqualObject(a, b) {
4989
5007
  }
4990
5008
 
4991
5009
  // runtime/subsystems/integration/execute-integration.use-case.ts
4992
- import { Inject as Inject15, Injectable as Injectable19, Logger as Logger8, Optional as Optional8 } from "@nestjs/common";
5010
+ import { Inject as Inject16, Injectable as Injectable19, Logger as Logger8, Optional as Optional8 } from "@nestjs/common";
4993
5011
  var ExecuteIntegrationUseCase = class {
4994
5012
  constructor(source, cursors, differ, sink, recorder, multiTenant = false) {
4995
5013
  this.source = source;
@@ -5181,17 +5199,17 @@ var ExecuteIntegrationUseCase = class {
5181
5199
  };
5182
5200
  ExecuteIntegrationUseCase = __decorateClass([
5183
5201
  Injectable19(),
5184
- __decorateParam(0, Inject15(INTEGRATION_CHANGE_SOURCE)),
5185
- __decorateParam(1, Inject15(INTEGRATION_CURSOR_STORE)),
5186
- __decorateParam(2, Inject15(INTEGRATION_FIELD_DIFFER)),
5187
- __decorateParam(3, Inject15(INTEGRATION_SINK)),
5188
- __decorateParam(4, Inject15(INTEGRATION_RUN_RECORDER)),
5202
+ __decorateParam(0, Inject16(INTEGRATION_CHANGE_SOURCE)),
5203
+ __decorateParam(1, Inject16(INTEGRATION_CURSOR_STORE)),
5204
+ __decorateParam(2, Inject16(INTEGRATION_FIELD_DIFFER)),
5205
+ __decorateParam(3, Inject16(INTEGRATION_SINK)),
5206
+ __decorateParam(4, Inject16(INTEGRATION_RUN_RECORDER)),
5189
5207
  __decorateParam(5, Optional8()),
5190
- __decorateParam(5, Inject15(INTEGRATION_MULTI_TENANT))
5208
+ __decorateParam(5, Inject16(INTEGRATION_MULTI_TENANT))
5191
5209
  ], ExecuteIntegrationUseCase);
5192
5210
 
5193
5211
  // runtime/subsystems/integration/integration-cursor-store.drizzle-backend.ts
5194
- import { Inject as Inject16, Injectable as Injectable20, Optional as Optional9 } from "@nestjs/common";
5212
+ import { Inject as Inject17, Injectable as Injectable20, Optional as Optional9 } from "@nestjs/common";
5195
5213
  import { and as and6, desc as desc5, eq as eq7 } from "drizzle-orm";
5196
5214
  var PostgresCursorStore = class {
5197
5215
  constructor(db, multiTenant) {
@@ -5264,13 +5282,13 @@ var PostgresCursorStore = class {
5264
5282
  };
5265
5283
  PostgresCursorStore = __decorateClass([
5266
5284
  Injectable20(),
5267
- __decorateParam(0, Inject16(DRIZZLE)),
5285
+ __decorateParam(0, Inject17(DRIZZLE)),
5268
5286
  __decorateParam(1, Optional9()),
5269
- __decorateParam(1, Inject16(INTEGRATION_MULTI_TENANT))
5287
+ __decorateParam(1, Inject17(INTEGRATION_MULTI_TENANT))
5270
5288
  ], PostgresCursorStore);
5271
5289
 
5272
5290
  // runtime/subsystems/integration/integration-run-recorder.drizzle-backend.ts
5273
- import { Inject as Inject17, Injectable as Injectable21, Optional as Optional10 } from "@nestjs/common";
5291
+ import { Inject as Inject18, Injectable as Injectable21, Optional as Optional10 } from "@nestjs/common";
5274
5292
  import { and as and7, desc as desc6, eq as eq8 } from "drizzle-orm";
5275
5293
  var DrizzleIntegrationRunRecorder = class {
5276
5294
  constructor(db, multiTenant) {
@@ -5368,9 +5386,9 @@ var DrizzleIntegrationRunRecorder = class {
5368
5386
  };
5369
5387
  DrizzleIntegrationRunRecorder = __decorateClass([
5370
5388
  Injectable21(),
5371
- __decorateParam(0, Inject17(DRIZZLE)),
5389
+ __decorateParam(0, Inject18(DRIZZLE)),
5372
5390
  __decorateParam(1, Optional10()),
5373
- __decorateParam(1, Inject17(INTEGRATION_MULTI_TENANT))
5391
+ __decorateParam(1, Inject18(INTEGRATION_MULTI_TENANT))
5374
5392
  ], DrizzleIntegrationRunRecorder);
5375
5393
 
5376
5394
  // runtime/subsystems/integration/integration.module.ts
@@ -5435,14 +5453,14 @@ var OAuthStateError = class extends Error {
5435
5453
  };
5436
5454
 
5437
5455
  // runtime/subsystems/auth/auth.tokens.ts
5438
- var ENCRYPTION_KEY = /* @__PURE__ */ Symbol("ENCRYPTION_KEY");
5439
- var OAUTH_STATE_STORE = /* @__PURE__ */ Symbol("OAUTH_STATE_STORE");
5440
- var AUTH_CONNECTION_READER = /* @__PURE__ */ Symbol("AUTH_CONNECTION_READER");
5441
- var AUTH_CONNECTION_TOKEN_WRITER = /* @__PURE__ */ Symbol("AUTH_CONNECTION_TOKEN_WRITER");
5442
- var AUTH_CONNECTION_GRANT_SINK = /* @__PURE__ */ Symbol("AUTH_CONNECTION_GRANT_SINK");
5443
- var AUTH_USER_CONTEXT = /* @__PURE__ */ Symbol("AUTH_USER_CONTEXT");
5444
- var STRATEGY_REGISTRY = /* @__PURE__ */ Symbol("STRATEGY_REGISTRY");
5445
- var AUTH_OPTIONS = /* @__PURE__ */ Symbol("AUTH_OPTIONS");
5456
+ var ENCRYPTION_KEY = Symbol.for(tokenKey("auth", "encryption-key"));
5457
+ var OAUTH_STATE_STORE = Symbol.for(tokenKey("auth", "oauth-state-store"));
5458
+ var AUTH_CONNECTION_READER = Symbol.for(tokenKey("auth", "connection-reader"));
5459
+ var AUTH_CONNECTION_TOKEN_WRITER = Symbol.for(tokenKey("auth", "connection-token-writer"));
5460
+ var AUTH_CONNECTION_GRANT_SINK = Symbol.for(tokenKey("auth", "connection-grant-sink"));
5461
+ var AUTH_USER_CONTEXT = Symbol.for(tokenKey("auth", "user-context"));
5462
+ var STRATEGY_REGISTRY = Symbol.for(tokenKey("auth", "strategy-registry"));
5463
+ var AUTH_OPTIONS = Symbol.for(tokenKey("auth", "options"));
5446
5464
 
5447
5465
  // runtime/subsystems/auth/runtime/connection-broken.error.ts
5448
5466
  var ConnectionBrokenError = class extends Error {
@@ -5722,7 +5740,7 @@ var DrizzleOAuthStateStore = class {
5722
5740
  import {
5723
5741
  Controller,
5724
5742
  Get,
5725
- Inject as Inject18,
5743
+ Inject as Inject19,
5726
5744
  Param,
5727
5745
  Query,
5728
5746
  Req,
@@ -5824,11 +5842,11 @@ __decorateClass([
5824
5842
  ], AuthController.prototype, "callback", 1);
5825
5843
  AuthController = __decorateClass([
5826
5844
  Controller("auth"),
5827
- __decorateParam(0, Inject18(STRATEGY_REGISTRY)),
5828
- __decorateParam(1, Inject18(AUTH_USER_CONTEXT)),
5829
- __decorateParam(2, Inject18(OAUTH_STATE_STORE)),
5830
- __decorateParam(3, Inject18(AUTH_CONNECTION_GRANT_SINK)),
5831
- __decorateParam(4, Inject18(AUTH_OPTIONS))
5845
+ __decorateParam(0, Inject19(STRATEGY_REGISTRY)),
5846
+ __decorateParam(1, Inject19(AUTH_USER_CONTEXT)),
5847
+ __decorateParam(2, Inject19(OAUTH_STATE_STORE)),
5848
+ __decorateParam(3, Inject19(AUTH_CONNECTION_GRANT_SINK)),
5849
+ __decorateParam(4, Inject19(AUTH_OPTIONS))
5832
5850
  ], AuthController);
5833
5851
 
5834
5852
  // runtime/base-classes/tenant-context.ts