@qlever-llc/trellis 0.10.17 → 0.19.0-rc.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 (283) hide show
  1. package/esm/auth/mod.d.ts +1 -1
  2. package/esm/auth/mod.d.ts.map +1 -1
  3. package/esm/auth/mod.js +1 -1
  4. package/esm/auth/protocol.d.ts +416 -398
  5. package/esm/auth/protocol.d.ts.map +1 -1
  6. package/esm/auth/protocol.js +35 -33
  7. package/esm/codec.d.ts +1 -0
  8. package/esm/codec.d.ts.map +1 -1
  9. package/esm/codec.js +1 -0
  10. package/esm/contract_support/canonical.d.ts +3 -0
  11. package/esm/contract_support/canonical.d.ts.map +1 -1
  12. package/esm/contract_support/canonical.js +3 -0
  13. package/esm/contract_support/mod.d.ts +28 -4
  14. package/esm/contract_support/mod.d.ts.map +1 -1
  15. package/esm/contract_support/mod.js +85 -4
  16. package/esm/contract_support/protocol.d.ts +92 -7
  17. package/esm/contract_support/protocol.d.ts.map +1 -1
  18. package/esm/contract_support/protocol.js +40 -6
  19. package/esm/errors/index.d.ts +9 -9
  20. package/esm/generated-sdk/auth/api.d.ts +4 -1
  21. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  22. package/esm/generated-sdk/auth/api.js +6 -1
  23. package/esm/generated-sdk/auth/client.d.ts +47 -32
  24. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  25. package/esm/generated-sdk/auth/contract.d.ts +1 -1
  26. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  27. package/esm/generated-sdk/auth/contract.js +1570 -1202
  28. package/esm/generated-sdk/auth/schemas.d.ts +1757 -1759
  29. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  30. package/esm/generated-sdk/auth/schemas.js +963 -768
  31. package/esm/generated-sdk/auth/types.d.ts +292 -302
  32. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  33. package/esm/generated-sdk/auth/types.js +1 -1
  34. package/esm/generated-sdk/health/client.d.ts +4 -4
  35. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  36. package/esm/generated-sdk/health/contract.d.ts +1 -1
  37. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  38. package/esm/generated-sdk/health/contract.js +2 -10
  39. package/esm/generated-sdk/health/schemas.d.ts +1 -14
  40. package/esm/generated-sdk/health/schemas.d.ts.map +1 -1
  41. package/esm/generated-sdk/health/schemas.js +1 -9
  42. package/esm/generated-sdk/health/types.d.ts +3 -5
  43. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  44. package/esm/generated-sdk/health/types.js +1 -2
  45. package/esm/generated-sdk/jobs/api.d.ts +13 -0
  46. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  47. package/esm/generated-sdk/jobs/client.d.ts +6 -4
  48. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  49. package/esm/generated-sdk/jobs/contract.d.ts +14 -1
  50. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  51. package/esm/generated-sdk/jobs/contract.js +268 -1
  52. package/esm/generated-sdk/jobs/owned_api.d.ts +13 -0
  53. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  54. package/esm/generated-sdk/jobs/owned_api.js +20 -1
  55. package/esm/generated-sdk/jobs/schemas.d.ts +437 -0
  56. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  57. package/esm/generated-sdk/jobs/schemas.js +211 -0
  58. package/esm/generated-sdk/jobs/types.d.ts +123 -1
  59. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  60. package/esm/generated-sdk/jobs/types.js +1 -1
  61. package/esm/generated-sdk/state/client.d.ts +4 -4
  62. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  63. package/esm/generated-sdk/trellis-core/api.d.ts +4 -1
  64. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  65. package/esm/generated-sdk/trellis-core/api.js +6 -1
  66. package/esm/generated-sdk/trellis-core/client.d.ts +28 -3
  67. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  68. package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
  69. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  70. package/esm/generated-sdk/trellis-core/contract.js +91 -1
  71. package/esm/generated-sdk/trellis-core/schemas.d.ts +113 -0
  72. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  73. package/esm/generated-sdk/trellis-core/schemas.js +81 -0
  74. package/esm/generated-sdk/trellis-core/types.d.ts +23 -1
  75. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  76. package/esm/generated-sdk/trellis-core/types.js +1 -1
  77. package/esm/health.d.ts +1 -1
  78. package/esm/health.d.ts.map +1 -1
  79. package/esm/health.js +1 -1
  80. package/esm/index.d.ts +2 -2
  81. package/esm/index.d.ts.map +1 -1
  82. package/esm/index.js +1 -1
  83. package/esm/jobs.d.ts +69 -3
  84. package/esm/jobs.d.ts.map +1 -1
  85. package/esm/jobs.js +92 -3
  86. package/esm/server/health.d.ts +2 -6
  87. package/esm/server/health.d.ts.map +1 -1
  88. package/esm/server/health_schemas.d.ts +0 -8
  89. package/esm/server/health_schemas.d.ts.map +1 -1
  90. package/esm/server/health_schemas.js +0 -5
  91. package/esm/server/internal_jobs/bindings.d.ts +11 -0
  92. package/esm/server/internal_jobs/bindings.d.ts.map +1 -1
  93. package/esm/server/internal_jobs/job-manager.d.ts +44 -1
  94. package/esm/server/internal_jobs/job-manager.d.ts.map +1 -1
  95. package/esm/server/internal_jobs/job-manager.js +361 -51
  96. package/esm/server/internal_jobs/key-coordinator.d.ts +260 -0
  97. package/esm/server/internal_jobs/key-coordinator.d.ts.map +1 -0
  98. package/esm/server/internal_jobs/key-coordinator.js +580 -0
  99. package/esm/server/internal_jobs/projection.d.ts.map +1 -1
  100. package/esm/server/internal_jobs/projection.js +2 -0
  101. package/esm/server/internal_jobs/runtime-worker.d.ts +5 -1
  102. package/esm/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  103. package/esm/server/internal_jobs/runtime-worker.js +14 -2
  104. package/esm/server/internal_jobs/types.d.ts +5 -5
  105. package/esm/server/internal_jobs/types.d.ts.map +1 -1
  106. package/esm/server/internal_jobs/types.js +6 -0
  107. package/esm/server/service.d.ts +8 -3
  108. package/esm/server/service.d.ts.map +1 -1
  109. package/esm/server/service.js +127 -6
  110. package/esm/service/drizzle.d.ts +27 -0
  111. package/esm/service/drizzle.d.ts.map +1 -0
  112. package/esm/service/drizzle.js +84 -0
  113. package/esm/service/mod.d.ts +1 -1
  114. package/esm/service/mod.d.ts.map +1 -1
  115. package/esm/service/mod.js +1 -1
  116. package/esm/service/outbox_inbox.d.ts.map +1 -1
  117. package/esm/service/outbox_inbox.js +13 -2
  118. package/esm/trellis.d.ts +24 -8
  119. package/esm/trellis.d.ts.map +1 -1
  120. package/esm/trellis.js +44 -22
  121. package/package.json +14 -2
  122. package/script/auth/mod.d.ts +1 -1
  123. package/script/auth/mod.d.ts.map +1 -1
  124. package/script/auth/mod.js +22 -6
  125. package/script/auth/protocol.d.ts +416 -398
  126. package/script/auth/protocol.d.ts.map +1 -1
  127. package/script/auth/protocol.js +40 -37
  128. package/script/codec.d.ts +1 -0
  129. package/script/codec.d.ts.map +1 -1
  130. package/script/codec.js +1 -0
  131. package/script/contract_support/canonical.d.ts +3 -0
  132. package/script/contract_support/canonical.d.ts.map +1 -1
  133. package/script/contract_support/canonical.js +3 -0
  134. package/script/contract_support/mod.d.ts +28 -4
  135. package/script/contract_support/mod.d.ts.map +1 -1
  136. package/script/contract_support/mod.js +90 -4
  137. package/script/contract_support/protocol.d.ts +92 -7
  138. package/script/contract_support/protocol.d.ts.map +1 -1
  139. package/script/contract_support/protocol.js +41 -7
  140. package/script/errors/index.d.ts +9 -9
  141. package/script/generated-sdk/auth/api.d.ts +4 -1
  142. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  143. package/script/generated-sdk/auth/api.js +6 -1
  144. package/script/generated-sdk/auth/client.d.ts +47 -32
  145. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  146. package/script/generated-sdk/auth/contract.d.ts +1 -1
  147. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  148. package/script/generated-sdk/auth/contract.js +1570 -1202
  149. package/script/generated-sdk/auth/schemas.d.ts +1757 -1759
  150. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  151. package/script/generated-sdk/auth/schemas.js +963 -768
  152. package/script/generated-sdk/auth/types.d.ts +292 -302
  153. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  154. package/script/generated-sdk/auth/types.js +1 -1
  155. package/script/generated-sdk/health/client.d.ts +4 -4
  156. package/script/generated-sdk/health/client.d.ts.map +1 -1
  157. package/script/generated-sdk/health/contract.d.ts +1 -1
  158. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  159. package/script/generated-sdk/health/contract.js +2 -10
  160. package/script/generated-sdk/health/schemas.d.ts +1 -14
  161. package/script/generated-sdk/health/schemas.d.ts.map +1 -1
  162. package/script/generated-sdk/health/schemas.js +1 -9
  163. package/script/generated-sdk/health/types.d.ts +3 -5
  164. package/script/generated-sdk/health/types.d.ts.map +1 -1
  165. package/script/generated-sdk/health/types.js +1 -2
  166. package/script/generated-sdk/jobs/api.d.ts +13 -0
  167. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  168. package/script/generated-sdk/jobs/client.d.ts +6 -4
  169. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  170. package/script/generated-sdk/jobs/contract.d.ts +14 -1
  171. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  172. package/script/generated-sdk/jobs/contract.js +268 -1
  173. package/script/generated-sdk/jobs/owned_api.d.ts +13 -0
  174. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  175. package/script/generated-sdk/jobs/owned_api.js +19 -0
  176. package/script/generated-sdk/jobs/schemas.d.ts +437 -0
  177. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  178. package/script/generated-sdk/jobs/schemas.js +212 -1
  179. package/script/generated-sdk/jobs/types.d.ts +123 -1
  180. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  181. package/script/generated-sdk/jobs/types.js +1 -1
  182. package/script/generated-sdk/state/client.d.ts +4 -4
  183. package/script/generated-sdk/state/client.d.ts.map +1 -1
  184. package/script/generated-sdk/trellis-core/api.d.ts +4 -1
  185. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  186. package/script/generated-sdk/trellis-core/api.js +6 -1
  187. package/script/generated-sdk/trellis-core/client.d.ts +28 -3
  188. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  189. package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
  190. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  191. package/script/generated-sdk/trellis-core/contract.js +91 -1
  192. package/script/generated-sdk/trellis-core/schemas.d.ts +113 -0
  193. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  194. package/script/generated-sdk/trellis-core/schemas.js +81 -0
  195. package/script/generated-sdk/trellis-core/types.d.ts +23 -1
  196. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  197. package/script/generated-sdk/trellis-core/types.js +1 -1
  198. package/script/health.d.ts +1 -1
  199. package/script/health.d.ts.map +1 -1
  200. package/script/health.js +1 -2
  201. package/script/index.d.ts +2 -2
  202. package/script/index.d.ts.map +1 -1
  203. package/script/index.js +2 -3
  204. package/script/jobs.d.ts +69 -3
  205. package/script/jobs.d.ts.map +1 -1
  206. package/script/jobs.js +93 -3
  207. package/script/server/health.d.ts +2 -6
  208. package/script/server/health.d.ts.map +1 -1
  209. package/script/server/health_schemas.d.ts +0 -8
  210. package/script/server/health_schemas.d.ts.map +1 -1
  211. package/script/server/health_schemas.js +1 -6
  212. package/script/server/internal_jobs/bindings.d.ts +11 -0
  213. package/script/server/internal_jobs/bindings.d.ts.map +1 -1
  214. package/script/server/internal_jobs/job-manager.d.ts +44 -1
  215. package/script/server/internal_jobs/job-manager.d.ts.map +1 -1
  216. package/script/server/internal_jobs/job-manager.js +361 -51
  217. package/script/server/internal_jobs/key-coordinator.d.ts +260 -0
  218. package/script/server/internal_jobs/key-coordinator.d.ts.map +1 -0
  219. package/script/server/internal_jobs/key-coordinator.js +593 -0
  220. package/script/server/internal_jobs/projection.d.ts.map +1 -1
  221. package/script/server/internal_jobs/projection.js +2 -0
  222. package/script/server/internal_jobs/runtime-worker.d.ts +5 -1
  223. package/script/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  224. package/script/server/internal_jobs/runtime-worker.js +14 -2
  225. package/script/server/internal_jobs/types.d.ts +5 -5
  226. package/script/server/internal_jobs/types.d.ts.map +1 -1
  227. package/script/server/internal_jobs/types.js +6 -0
  228. package/script/server/service.d.ts +8 -3
  229. package/script/server/service.d.ts.map +1 -1
  230. package/script/server/service.js +126 -5
  231. package/script/service/drizzle.d.ts +27 -0
  232. package/script/service/drizzle.d.ts.map +1 -0
  233. package/script/service/drizzle.js +88 -0
  234. package/script/service/mod.d.ts +1 -1
  235. package/script/service/mod.d.ts.map +1 -1
  236. package/script/service/mod.js +1 -2
  237. package/script/service/outbox_inbox.d.ts.map +1 -1
  238. package/script/service/outbox_inbox.js +13 -2
  239. package/script/trellis.d.ts +24 -8
  240. package/script/trellis.d.ts.map +1 -1
  241. package/script/trellis.js +44 -22
  242. package/src/auth/mod.ts +28 -2
  243. package/src/auth/protocol.ts +72 -37
  244. package/src/codec.ts +1 -0
  245. package/src/contract_support/canonical.ts +3 -0
  246. package/src/contract_support/mod.ts +158 -5
  247. package/src/contract_support/protocol.ts +56 -9
  248. package/src/health.ts +0 -1
  249. package/src/index.ts +2 -1
  250. package/src/jobs.ts +138 -1
  251. package/src/sdk/_generated/auth/api.ts +9 -2
  252. package/src/sdk/_generated/auth/client.ts +85 -78
  253. package/src/sdk/_generated/auth/contract.ts +1803 -1435
  254. package/src/sdk/_generated/auth/schemas.ts +1166 -971
  255. package/src/sdk/_generated/auth/types.ts +330 -314
  256. package/src/sdk/_generated/core/api.ts +9 -2
  257. package/src/sdk/_generated/core/client.ts +41 -2
  258. package/src/sdk/_generated/core/contract.ts +91 -1
  259. package/src/sdk/_generated/core/schemas.ts +81 -0
  260. package/src/sdk/_generated/core/types.ts +23 -1
  261. package/src/sdk/_generated/health/client.ts +6 -6
  262. package/src/sdk/_generated/health/contract.ts +2 -10
  263. package/src/sdk/_generated/health/schemas.ts +1 -9
  264. package/src/sdk/_generated/health/types.ts +6 -2
  265. package/src/sdk/_generated/jobs/client.ts +17 -6
  266. package/src/sdk/_generated/jobs/contract.ts +269 -1
  267. package/src/sdk/_generated/jobs/owned_api.ts +21 -0
  268. package/src/sdk/_generated/jobs/schemas.ts +213 -0
  269. package/src/sdk/_generated/jobs/types.ts +116 -1
  270. package/src/sdk/_generated/state/client.ts +6 -6
  271. package/src/server/health.ts +2 -6
  272. package/src/server/health_schemas.ts +0 -6
  273. package/src/server/internal_jobs/bindings.ts +11 -0
  274. package/src/server/internal_jobs/job-manager.ts +436 -16
  275. package/src/server/internal_jobs/key-coordinator.ts +955 -0
  276. package/src/server/internal_jobs/projection.ts +2 -0
  277. package/src/server/internal_jobs/runtime-worker.ts +17 -1
  278. package/src/server/internal_jobs/types.ts +6 -0
  279. package/src/server/service.ts +168 -9
  280. package/src/service/drizzle.ts +125 -0
  281. package/src/service/mod.ts +0 -1
  282. package/src/service/outbox_inbox.ts +16 -6
  283. package/src/trellis.ts +76 -27
@@ -0,0 +1,580 @@
1
+ import { Kvm } from "@nats-io/kv";
2
+ const JOBS_KEYS_BUCKET = "JOBS_KEYS";
3
+ const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
4
+ const DEFAULT_HEARTBEAT_TTL_MS = 120_000;
5
+ const DEFAULT_MAX_ACTIVE = 1;
6
+ const DEFAULT_MAX_QUEUED_PER_KEY = 0;
7
+ const DEFAULT_QUEUE_WHEN_FULL = "reject";
8
+ const DEFAULT_STALE_POLICY = "fail-stale";
9
+ const MAX_CAS_ATTEMPTS = 8;
10
+ /** Normalizes keyed queue policy defaults when bindings omit normalized values. */
11
+ export function normalizeJobKeyPolicy(args) {
12
+ return {
13
+ key: [...args.keyConcurrency.key],
14
+ maxActive: args.keyConcurrency.maxActive ?? DEFAULT_MAX_ACTIVE,
15
+ heartbeatIntervalMs: args.keyConcurrency.heartbeatIntervalMs ??
16
+ DEFAULT_HEARTBEAT_INTERVAL_MS,
17
+ heartbeatTtlMs: args.keyConcurrency.heartbeatTtlMs ??
18
+ DEFAULT_HEARTBEAT_TTL_MS,
19
+ stalePolicy: args.keyConcurrency.stalePolicy ?? DEFAULT_STALE_POLICY,
20
+ queue: {
21
+ maxQueuedPerKey: args.queue?.maxQueuedPerKey ??
22
+ DEFAULT_MAX_QUEUED_PER_KEY,
23
+ whenFull: args.queue?.whenFull ?? DEFAULT_QUEUE_WHEN_FULL,
24
+ },
25
+ };
26
+ }
27
+ /** Derives the display key and stable hash for a keyed job payload. */
28
+ export async function deriveJobKey(args) {
29
+ const segments = args.template.map((segment) => {
30
+ if (!segment.startsWith("/")) {
31
+ return segment;
32
+ }
33
+ const value = resolveJsonPointer(args.payload, segment);
34
+ if (!isScalarKeySegment(value)) {
35
+ throw new Error(`Job key pointer '${segment}' did not resolve to a string, finite number, or boolean`);
36
+ }
37
+ return value;
38
+ });
39
+ const key = segments.map((segment) => String(segment)).join(":");
40
+ const keyHash = await stableKeyHash(JSON.stringify({ version: 1, segments }));
41
+ return {
42
+ service: args.service,
43
+ jobType: args.jobType,
44
+ key,
45
+ keyHash,
46
+ kvKey: `${args.service}.${args.jobType}.${keyHash}`,
47
+ };
48
+ }
49
+ /** Produces a stable SHA-256 hex hash for a display key. */
50
+ export async function stableKeyHash(value) {
51
+ const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value));
52
+ return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
53
+ }
54
+ /** Applies keyed admission policy to an existing key state. */
55
+ export function reduceAdmission(args) {
56
+ const state = args.state ?? emptyState({
57
+ service: args.request.service,
58
+ jobType: args.request.jobType,
59
+ key: args.derived.key,
60
+ keyHash: args.derived.keyHash,
61
+ now: args.request.createdAt,
62
+ policy: args.policy,
63
+ });
64
+ const active = state.active.length;
65
+ const queued = state.queued.length;
66
+ const queueLimit = args.policy.queue.maxQueuedPerKey +
67
+ Math.max(0, args.policy.maxActive - active);
68
+ if (queued < queueLimit) {
69
+ return {
70
+ kind: "accepted",
71
+ key: state.key,
72
+ keyHash: state.keyHash,
73
+ state: appendQueued(state, args.request, args.policy),
74
+ };
75
+ }
76
+ if (args.request.strictCreate) {
77
+ const reason = active >= args.policy.maxActive
78
+ ? "active-limit"
79
+ : "queue-depth";
80
+ return {
81
+ kind: "rejected",
82
+ key: state.key,
83
+ reason,
84
+ active,
85
+ queued,
86
+ limit: reason === "active-limit" ? args.policy.maxActive : queueLimit,
87
+ };
88
+ }
89
+ if (args.policy.queue.whenFull === "coalesce") {
90
+ const existing = state.queued[0] ?? state.active[0];
91
+ if (existing) {
92
+ return {
93
+ kind: "coalesced",
94
+ key: state.key,
95
+ existing: {
96
+ service: state.service,
97
+ jobType: state.jobType,
98
+ id: existing.jobId,
99
+ },
100
+ reason: state.queued[0] ? "queue-full" : "active-limit",
101
+ };
102
+ }
103
+ }
104
+ if (args.policy.queue.whenFull === "replace-oldest" && state.queued[0]) {
105
+ const [replaced, ...remaining] = state.queued;
106
+ return {
107
+ kind: "replaced",
108
+ key: state.key,
109
+ keyHash: state.keyHash,
110
+ replaced: {
111
+ service: state.service,
112
+ jobType: state.jobType,
113
+ id: replaced.jobId,
114
+ createdAt: replaced.createdAt,
115
+ requestId: replaced.requestId,
116
+ context: replaced.context,
117
+ },
118
+ state: appendQueued({ ...state, queued: remaining }, args.request, args.policy),
119
+ };
120
+ }
121
+ const reason = active >= args.policy.maxActive
122
+ ? "active-limit"
123
+ : "queue-depth";
124
+ return {
125
+ kind: "rejected",
126
+ key: state.key,
127
+ reason,
128
+ active,
129
+ queued,
130
+ limit: reason === "active-limit" ? args.policy.maxActive : queueLimit,
131
+ };
132
+ }
133
+ /** Restores the replaced queued reservation when replacement lifecycle publish fails. */
134
+ export function reduceRestoreReplacedQueuedJob(args) {
135
+ const base = args.state ?? emptyState({
136
+ service: args.replaced.service,
137
+ jobType: args.replaced.jobType,
138
+ key: args.derived.key,
139
+ keyHash: args.derived.keyHash,
140
+ now: args.now,
141
+ policy: args.policy,
142
+ });
143
+ const queuedWithoutReplacement = base.queued.filter((entry) => entry.jobId !== args.replacementJobId);
144
+ const alreadyPresent = queuedWithoutReplacement.some((entry) => entry.jobId === args.replaced.id) || base.active.some((slot) => slot.jobId === args.replaced.id);
145
+ const restoredQueued = alreadyPresent ? queuedWithoutReplacement : [{
146
+ jobId: args.replaced.id,
147
+ createdAt: args.replaced.createdAt,
148
+ requestId: args.replaced.requestId,
149
+ context: args.replaced.context,
150
+ }, ...queuedWithoutReplacement];
151
+ return {
152
+ kind: "restored",
153
+ state: {
154
+ ...base,
155
+ maxActive: args.policy.maxActive,
156
+ maxQueuedPerKey: args.policy.queue.maxQueuedPerKey,
157
+ queued: restoredQueued,
158
+ updatedAt: args.now,
159
+ },
160
+ };
161
+ }
162
+ /** Applies active slot acquisition policy to an existing key state. */
163
+ export function reduceAcquireActiveSlot(args) {
164
+ const base = args.state ?? emptyState({
165
+ service: args.request.service,
166
+ jobType: args.request.jobType,
167
+ key: args.derived.key,
168
+ keyHash: args.derived.keyHash,
169
+ now: args.request.now,
170
+ policy: args.policy,
171
+ });
172
+ const nowMs = Date.parse(args.request.now);
173
+ const expired = base.active.filter((slot) => Date.parse(slot.leaseExpiresAt) <= nowMs);
174
+ if (expired.length > 0 && args.policy.stalePolicy === "block" &&
175
+ base.active.length >= args.policy.maxActive) {
176
+ return {
177
+ kind: "blocked",
178
+ key: base.key,
179
+ reason: "stale-blocked",
180
+ active: base.active.length,
181
+ queued: base.queued.length,
182
+ limit: args.policy.maxActive,
183
+ };
184
+ }
185
+ const active = args.policy.stalePolicy === "fail-stale"
186
+ ? base.active.filter((slot) => Date.parse(slot.leaseExpiresAt) > nowMs)
187
+ : base.active;
188
+ const isQueued = base.queued.some((entry) => entry.jobId === args.request.jobId);
189
+ const isAlreadyActive = base.active.some((slot) => slot.jobId === args.request.jobId);
190
+ const isRetry = args.request.lifecycleState === "retry";
191
+ if (!isQueued && !isAlreadyActive && !isRetry) {
192
+ return {
193
+ kind: "blocked",
194
+ key: base.key,
195
+ reason: "not-queued",
196
+ active: active.length,
197
+ queued: base.queued.length,
198
+ limit: args.policy.queue.maxQueuedPerKey,
199
+ };
200
+ }
201
+ if (active.length >= args.policy.maxActive) {
202
+ return {
203
+ kind: "blocked",
204
+ key: base.key,
205
+ reason: "active-limit",
206
+ active: active.length,
207
+ queued: base.queued.length,
208
+ limit: args.policy.maxActive,
209
+ };
210
+ }
211
+ const leaseExpiresAt = new Date(nowMs + args.policy.heartbeatTtlMs)
212
+ .toISOString();
213
+ const queued = base.queued.filter((entry) => entry.jobId !== args.request.jobId);
214
+ const slot = {
215
+ jobId: args.request.jobId,
216
+ slotToken: args.slotToken,
217
+ instanceId: args.request.instanceId,
218
+ startedAt: args.request.now,
219
+ heartbeatAt: args.request.now,
220
+ leaseExpiresAt,
221
+ tries: args.request.tries,
222
+ context: args.request.context,
223
+ };
224
+ const state = {
225
+ ...base,
226
+ maxActive: args.policy.maxActive,
227
+ maxQueuedPerKey: args.policy.queue.maxQueuedPerKey,
228
+ active: [...active, slot],
229
+ queued,
230
+ staleTakeoverCount: base.staleTakeoverCount + expired.length,
231
+ updatedAt: args.request.now,
232
+ };
233
+ return {
234
+ kind: "acquired",
235
+ key: base.key,
236
+ keyHash: base.keyHash,
237
+ slotToken: args.slotToken,
238
+ stale: args.policy.stalePolicy === "fail-stale" ? expired : [],
239
+ state,
240
+ };
241
+ }
242
+ /** Removes a queued keyed-job reservation when work is terminal before start. */
243
+ export function reduceRemoveQueuedJob(args) {
244
+ if (!args.state) {
245
+ return { kind: "not-found" };
246
+ }
247
+ const queued = args.state.queued.filter((entry) => entry.jobId !== args.jobId);
248
+ if (queued.length === args.state.queued.length) {
249
+ return { kind: "not-found" };
250
+ }
251
+ return {
252
+ kind: "removed",
253
+ state: { ...args.state, queued, updatedAt: args.now },
254
+ };
255
+ }
256
+ /** Renews a matching active slot lease in key state. */
257
+ export function reduceRenewHeartbeat(args) {
258
+ if (!args.state) {
259
+ return { kind: "lost" };
260
+ }
261
+ const nowMs = Date.parse(args.now);
262
+ let renewed = false;
263
+ const active = args.state.active.map((slot) => {
264
+ if (slot.jobId !== args.jobId || slot.slotToken !== args.slotToken) {
265
+ return slot;
266
+ }
267
+ renewed = true;
268
+ return {
269
+ ...slot,
270
+ heartbeatAt: args.now,
271
+ leaseExpiresAt: new Date(nowMs + args.policy.heartbeatTtlMs)
272
+ .toISOString(),
273
+ };
274
+ });
275
+ if (!renewed) {
276
+ return { kind: "lost" };
277
+ }
278
+ return {
279
+ kind: "renewed",
280
+ state: { ...args.state, active, updatedAt: args.now },
281
+ };
282
+ }
283
+ /** Releases a matching active slot or reports a stale completion. */
284
+ export function reduceReleaseActiveSlot(args) {
285
+ if (!args.state) {
286
+ return { kind: "staleCompletion" };
287
+ }
288
+ const nextActive = args.state.active.filter((slot) => slot.jobId !== args.jobId || slot.slotToken !== args.slotToken);
289
+ if (nextActive.length === args.state.active.length) {
290
+ return { kind: "staleCompletion" };
291
+ }
292
+ return {
293
+ kind: "released",
294
+ state: { ...args.state, active: nextActive, updatedAt: args.now },
295
+ };
296
+ }
297
+ /** Creates a NATS KV backed coordinator for the Trellis-owned JOBS_KEYS bucket. */
298
+ export function createNatsJobKeyCoordinator(nats, bucketPrefix = JOBS_KEYS_BUCKET) {
299
+ const kvPromises = new Map();
300
+ const openKv = (service) => {
301
+ const bucket = jobKeysBucketName(bucketPrefix, service);
302
+ const existing = kvPromises.get(bucket);
303
+ if (existing) {
304
+ return existing;
305
+ }
306
+ const opened = new Kvm(nats).open(bucket);
307
+ kvPromises.set(bucket, opened);
308
+ return opened;
309
+ };
310
+ return {
311
+ async admitCreate(request) {
312
+ const derived = await deriveJobKey({
313
+ service: request.service,
314
+ jobType: request.jobType,
315
+ payload: request.payload,
316
+ template: request.policy.key,
317
+ });
318
+ return await updateState(() => openKv(request.service), derived, (state) => reduceAdmission({
319
+ state,
320
+ derived,
321
+ request,
322
+ policy: request.policy,
323
+ }));
324
+ },
325
+ async restoreReplacedQueuedJob(args) {
326
+ const derived = await deriveJobKey({
327
+ service: args.service,
328
+ jobType: args.jobType,
329
+ payload: args.payload,
330
+ template: args.policy.key,
331
+ });
332
+ return await updateState(() => openKv(args.service), derived, (state) => reduceRestoreReplacedQueuedJob({
333
+ state,
334
+ derived,
335
+ replacementJobId: args.replacementJobId,
336
+ replaced: args.replaced,
337
+ now: args.now,
338
+ policy: args.policy,
339
+ }));
340
+ },
341
+ async removeQueuedJob(args) {
342
+ const derived = await deriveJobKey({
343
+ service: args.service,
344
+ jobType: args.jobType,
345
+ payload: args.payload,
346
+ template: args.policy.key,
347
+ });
348
+ return await updateState(() => openKv(args.service), derived, (state) => reduceRemoveQueuedJob({
349
+ state,
350
+ jobId: args.jobId,
351
+ now: args.now,
352
+ }));
353
+ },
354
+ async acquireActiveSlot(request) {
355
+ const derived = await deriveJobKey({
356
+ service: request.service,
357
+ jobType: request.jobType,
358
+ payload: request.payload,
359
+ template: request.policy.key,
360
+ });
361
+ const slotToken = crypto.randomUUID();
362
+ return await updateState(() => openKv(request.service), derived, (state) => reduceAcquireActiveSlot({
363
+ state,
364
+ derived,
365
+ request,
366
+ policy: request.policy,
367
+ slotToken,
368
+ }));
369
+ },
370
+ async renewHeartbeat(args) {
371
+ const derived = {
372
+ service: args.service,
373
+ jobType: args.jobType,
374
+ key: args.lease.key,
375
+ keyHash: args.lease.keyHash,
376
+ kvKey: `${args.service}.${args.jobType}.${args.lease.keyHash}`,
377
+ };
378
+ return await updateState(() => openKv(args.service), derived, (state) => reduceRenewHeartbeat({
379
+ state,
380
+ jobId: args.jobId,
381
+ slotToken: args.lease.slotToken,
382
+ now: args.now,
383
+ policy: args.lease.policy,
384
+ }));
385
+ },
386
+ async releaseActiveSlot(args) {
387
+ const derived = {
388
+ service: args.service,
389
+ jobType: args.jobType,
390
+ key: args.lease.key,
391
+ keyHash: args.lease.keyHash,
392
+ kvKey: `${args.service}.${args.jobType}.${args.lease.keyHash}`,
393
+ };
394
+ return await updateState(() => openKv(args.service), derived, (state) => reduceReleaseActiveSlot({
395
+ state,
396
+ jobId: args.jobId,
397
+ slotToken: args.lease.slotToken,
398
+ now: args.now,
399
+ }));
400
+ },
401
+ };
402
+ }
403
+ function jobKeysBucketName(prefix, service) {
404
+ return `${prefix}_${service}`;
405
+ }
406
+ function appendQueued(state, request, policy) {
407
+ return {
408
+ ...state,
409
+ maxActive: policy.maxActive,
410
+ maxQueuedPerKey: policy.queue.maxQueuedPerKey,
411
+ queued: [
412
+ ...state.queued,
413
+ {
414
+ jobId: request.jobId,
415
+ createdAt: request.createdAt,
416
+ requestId: request.context.requestId,
417
+ context: request.context,
418
+ },
419
+ ],
420
+ updatedAt: request.createdAt,
421
+ };
422
+ }
423
+ function emptyState(args) {
424
+ return {
425
+ version: 1,
426
+ service: args.service,
427
+ jobType: args.jobType,
428
+ key: args.key,
429
+ keyHash: args.keyHash,
430
+ maxActive: args.policy.maxActive,
431
+ maxQueuedPerKey: args.policy.queue.maxQueuedPerKey,
432
+ active: [],
433
+ queued: [],
434
+ staleTakeoverCount: 0,
435
+ updatedAt: args.now,
436
+ };
437
+ }
438
+ function resolveJsonPointer(payload, pointer) {
439
+ const tokens = pointer.slice(1).split("/").map((token) => token.replaceAll("~1", "/").replaceAll("~0", "~"));
440
+ let current = payload;
441
+ for (const token of tokens) {
442
+ if (Array.isArray(current)) {
443
+ if (!/^0$|^[1-9][0-9]*$/.test(token)) {
444
+ return undefined;
445
+ }
446
+ current = current[Number(token)];
447
+ continue;
448
+ }
449
+ if (current !== null && typeof current === "object") {
450
+ current = current[token];
451
+ continue;
452
+ }
453
+ return undefined;
454
+ }
455
+ return current;
456
+ }
457
+ function isScalarKeySegment(value) {
458
+ return typeof value === "string" ||
459
+ (typeof value === "number" && Number.isFinite(value)) ||
460
+ typeof value === "boolean";
461
+ }
462
+ async function updateState(openKv, derived, reducer) {
463
+ const kv = await openKv();
464
+ for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt += 1) {
465
+ const entry = await getStateEntry(kv, derived.kvKey);
466
+ const current = entry ? parseState(entry, derived) : undefined;
467
+ const outcome = reducer(current);
468
+ const next = outcomeState(outcome);
469
+ if (!next) {
470
+ return outcome;
471
+ }
472
+ try {
473
+ if (entry) {
474
+ await kv.update(derived.kvKey, JSON.stringify(next), entry.revision);
475
+ }
476
+ else {
477
+ await kv.create(derived.kvKey, JSON.stringify(next));
478
+ }
479
+ return outcome;
480
+ }
481
+ catch (error) {
482
+ if (!isCasConflict(error)) {
483
+ throw error;
484
+ }
485
+ }
486
+ }
487
+ throw new Error(`Could not update keyed job state '${derived.kvKey}'`);
488
+ }
489
+ async function getStateEntry(kv, key) {
490
+ const entry = await kv.get(key);
491
+ if (!entry || entry.operation === "DEL" || entry.operation === "PURGE") {
492
+ return undefined;
493
+ }
494
+ return entry;
495
+ }
496
+ function parseState(entry, derived) {
497
+ const decoded = entry.json();
498
+ if (!isJobKeyState(decoded)) {
499
+ return undefined;
500
+ }
501
+ assertStateMatchesDerived(decoded, derived);
502
+ return decoded;
503
+ }
504
+ function assertStateMatchesDerived(state, derived) {
505
+ if (state.service !== derived.service || state.jobType !== derived.jobType ||
506
+ state.keyHash !== derived.keyHash) {
507
+ throw new Error(`keyed job state '${derived.kvKey}' does not match derived service, job type, and key hash`);
508
+ }
509
+ }
510
+ /** Returns whether an unknown value is a well-formed keyed job coordination state. */
511
+ export function isJobKeyState(value) {
512
+ if (value === null || typeof value !== "object")
513
+ return false;
514
+ const state = value;
515
+ return state.version === 1 && isNonEmptyString(state.service) &&
516
+ isNonEmptyString(state.jobType) && typeof state.key === "string" &&
517
+ isNonEmptyString(state.keyHash) && isPositiveInteger(state.maxActive) &&
518
+ (state.maxQueuedPerKey === undefined ||
519
+ isNonNegativeInteger(state.maxQueuedPerKey)) &&
520
+ Array.isArray(state.active) && state.active.every(isJobKeyActiveSlot) &&
521
+ Array.isArray(state.queued) && state.queued.every(isJobKeyQueued) &&
522
+ isNonNegativeInteger(state.staleTakeoverCount) &&
523
+ isValidIsoTimestamp(state.updatedAt);
524
+ }
525
+ function isJobKeyQueued(value) {
526
+ if (value === null || typeof value !== "object")
527
+ return false;
528
+ const entry = value;
529
+ return isNonEmptyString(entry.jobId) &&
530
+ isValidIsoTimestamp(entry.createdAt) &&
531
+ isNonEmptyString(entry.requestId) && isJobContext(entry.context);
532
+ }
533
+ function isJobKeyActiveSlot(value) {
534
+ if (value === null || typeof value !== "object")
535
+ return false;
536
+ const slot = value;
537
+ return isNonEmptyString(slot.jobId) && isNonEmptyString(slot.slotToken) &&
538
+ isNonEmptyString(slot.instanceId) && isValidIsoTimestamp(slot.startedAt) &&
539
+ isValidIsoTimestamp(slot.heartbeatAt) &&
540
+ isValidIsoTimestamp(slot.leaseExpiresAt) &&
541
+ isNonNegativeInteger(slot.tries) && isJobContext(slot.context);
542
+ }
543
+ function isJobContext(value) {
544
+ if (value === null || typeof value !== "object")
545
+ return false;
546
+ const context = value;
547
+ return isNonEmptyString(context.requestId) &&
548
+ isNonEmptyString(context.traceId) &&
549
+ isNonEmptyString(context.traceparent) &&
550
+ (context.tracestate === undefined ||
551
+ typeof context.tracestate === "string");
552
+ }
553
+ function isNonEmptyString(value) {
554
+ return typeof value === "string" && value.length > 0;
555
+ }
556
+ function isPositiveInteger(value) {
557
+ return typeof value === "number" && Number.isInteger(value) && value > 0;
558
+ }
559
+ function isNonNegativeInteger(value) {
560
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
561
+ }
562
+ function isValidIsoTimestamp(value) {
563
+ return typeof value === "string" && Number.isFinite(Date.parse(value));
564
+ }
565
+ function outcomeState(outcome) {
566
+ if (outcome === null || typeof outcome !== "object")
567
+ return undefined;
568
+ const candidate = outcome;
569
+ return isJobKeyState(candidate.state) ? candidate.state : undefined;
570
+ }
571
+ function isCasConflict(error) {
572
+ if (!(error instanceof Error))
573
+ return false;
574
+ const message = error.message.toLowerCase();
575
+ return message.includes("wrong last sequence") ||
576
+ message.includes("wrong last_seq") ||
577
+ message.includes("sequence mismatch") ||
578
+ message.includes("entry exists") ||
579
+ message.includes("already exists");
580
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW1D,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACpE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,GACjC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,SAAS,CAQpC"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa1D,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACpE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,GACjC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,SAAS,CAQpC"}
@@ -3,6 +3,8 @@ const TERMINAL_STATES = new Set([
3
3
  "failed",
4
4
  "cancelled",
5
5
  "expired",
6
+ "skipped",
7
+ "stale",
6
8
  "dead",
7
9
  "dismissed",
8
10
  ]);
@@ -117,6 +117,8 @@ type StartQueueWorkerLoopOptions<TResult> = {
117
117
  resultSchema?: SchemaRef;
118
118
  validateResult?: (args: ResultValidationArgs<TResult>) => Promise<void> | void;
119
119
  handler: (job: ActiveJob<unknown, TResult>) => Promise<TResult>;
120
+ instanceId?: string;
121
+ deferralBackoffMs?: number;
120
122
  };
121
123
  type StartNatsQueueWorkerOptions<TResult> = StartNatsRuntimeDeps & {
122
124
  manager: JobManager<unknown, TResult>;
@@ -128,6 +130,7 @@ type StartNatsQueueWorkerOptions<TResult> = StartNatsRuntimeDeps & {
128
130
  validatePayload?: (args: PayloadValidationArgs<TResult>) => Promise<void> | void;
129
131
  validateResult?: (args: ResultValidationArgs<TResult>) => Promise<void> | void;
130
132
  handler: (job: ActiveJob<unknown, TResult>) => Promise<TResult>;
133
+ instanceId?: string;
131
134
  };
132
135
  export declare function processWorkPayloadWithContextAndHeartbeat<TResult>(manager: JobManager<unknown, TResult>, payload: Uint8Array, cancellation: JobCancellationToken, heartbeat: () => Promise<void>, handler: (job: ActiveJob<unknown, TResult>) => Promise<TResult>, validation?: {
133
136
  payloadSchema?: SchemaRef;
@@ -135,8 +138,9 @@ export declare function processWorkPayloadWithContextAndHeartbeat<TResult>(manag
135
138
  resultSchema?: SchemaRef;
136
139
  validateResult?: (args: ResultValidationArgs<TResult>) => Promise<void> | void;
137
140
  }, runtime?: {
141
+ latestState?: Job["state"];
138
142
  redeliveryCount?: number;
139
- }): Promise<JobProcessOutcome<TResult> | undefined>;
143
+ }, instanceId?: string): Promise<JobProcessOutcome<TResult> | undefined>;
140
144
  export declare function projectedWorkDecision(projected: Job | undefined, _work: Job): ProjectedWorkDecision;
141
145
  export declare function lifecycleWorkDecision(latest: JobEvent | undefined): ProjectedWorkDecision;
142
146
  export declare function ackActionForOutcome(outcome: JobProcessOutcome<unknown> | undefined): WorkerAckAction;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-worker.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/runtime-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-worker.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/runtime-worker.ts"],"names":[],"mappings":"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"}