@beignet/core 0.0.31 → 0.0.33

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 (156) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +346 -21
  3. package/dist/application/index.d.ts.map +1 -1
  4. package/dist/application/index.js +63 -47
  5. package/dist/application/index.js.map +1 -1
  6. package/dist/domain/entity.d.ts +37 -6
  7. package/dist/domain/entity.d.ts.map +1 -1
  8. package/dist/domain/entity.js +9 -7
  9. package/dist/domain/entity.js.map +1 -1
  10. package/dist/domain/index.d.ts +4 -4
  11. package/dist/domain/index.d.ts.map +1 -1
  12. package/dist/domain/index.js +4 -4
  13. package/dist/domain/index.js.map +1 -1
  14. package/dist/events/index.d.ts +6 -0
  15. package/dist/events/index.d.ts.map +1 -1
  16. package/dist/events/index.js +20 -10
  17. package/dist/events/index.js.map +1 -1
  18. package/dist/flags/index.d.ts +5 -4
  19. package/dist/flags/index.d.ts.map +1 -1
  20. package/dist/flags/index.js +10 -9
  21. package/dist/flags/index.js.map +1 -1
  22. package/dist/idempotency/index.d.ts +11 -1
  23. package/dist/idempotency/index.d.ts.map +1 -1
  24. package/dist/idempotency/index.js +4 -3
  25. package/dist/idempotency/index.js.map +1 -1
  26. package/dist/jobs/index.d.ts +449 -9
  27. package/dist/jobs/index.d.ts.map +1 -1
  28. package/dist/jobs/index.js +472 -12
  29. package/dist/jobs/index.js.map +1 -1
  30. package/dist/outbox/index.d.ts +170 -3
  31. package/dist/outbox/index.d.ts.map +1 -1
  32. package/dist/outbox/index.js +192 -8
  33. package/dist/outbox/index.js.map +1 -1
  34. package/dist/ports/events.d.ts +2 -2
  35. package/dist/ports/index.d.ts +6 -1
  36. package/dist/ports/index.d.ts.map +1 -1
  37. package/dist/ports/index.js +1 -0
  38. package/dist/ports/index.js.map +1 -1
  39. package/dist/providers/instrumentation.d.ts +4 -0
  40. package/dist/providers/instrumentation.d.ts.map +1 -1
  41. package/dist/providers/instrumentation.js.map +1 -1
  42. package/dist/providers/provider.d.ts +10 -2
  43. package/dist/providers/provider.d.ts.map +1 -1
  44. package/dist/providers/provider.js.map +1 -1
  45. package/dist/schedules/index.d.ts +8 -7
  46. package/dist/schedules/index.d.ts.map +1 -1
  47. package/dist/schedules/index.js +47 -16
  48. package/dist/schedules/index.js.map +1 -1
  49. package/dist/search/index.d.ts +2 -1
  50. package/dist/search/index.d.ts.map +1 -1
  51. package/dist/search/index.js +1 -0
  52. package/dist/search/index.js.map +1 -1
  53. package/dist/server/hooks/index.d.ts +1 -0
  54. package/dist/server/hooks/index.d.ts.map +1 -1
  55. package/dist/server/hooks/index.js +1 -0
  56. package/dist/server/hooks/index.js.map +1 -1
  57. package/dist/server/hooks/rate-limit.d.ts +26 -13
  58. package/dist/server/hooks/rate-limit.d.ts.map +1 -1
  59. package/dist/server/hooks/rate-limit.js +28 -34
  60. package/dist/server/hooks/rate-limit.js.map +1 -1
  61. package/dist/server/hooks/security.d.ts +179 -0
  62. package/dist/server/hooks/security.d.ts.map +1 -0
  63. package/dist/server/hooks/security.js +225 -0
  64. package/dist/server/hooks/security.js.map +1 -0
  65. package/dist/server/index.d.ts +8 -0
  66. package/dist/server/index.d.ts.map +1 -1
  67. package/dist/server/index.js +8 -0
  68. package/dist/server/index.js.map +1 -1
  69. package/dist/server/instrumentation.d.ts.map +1 -1
  70. package/dist/server/instrumentation.js +22 -6
  71. package/dist/server/instrumentation.js.map +1 -1
  72. package/dist/server/providers/loadProviderConfig.d.ts.map +1 -1
  73. package/dist/server/providers/loadProviderConfig.js +15 -2
  74. package/dist/server/providers/loadProviderConfig.js.map +1 -1
  75. package/dist/server/request-context.d.ts +4 -0
  76. package/dist/server/request-context.d.ts.map +1 -1
  77. package/dist/server/request-context.js +3 -0
  78. package/dist/server/request-context.js.map +1 -1
  79. package/dist/server/runtime-integrity.d.ts +84 -0
  80. package/dist/server/runtime-integrity.d.ts.map +1 -0
  81. package/dist/server/runtime-integrity.js +160 -0
  82. package/dist/server/runtime-integrity.js.map +1 -0
  83. package/dist/server/server.d.ts +10 -0
  84. package/dist/server/server.d.ts.map +1 -1
  85. package/dist/server/server.js +55 -1
  86. package/dist/server/server.js.map +1 -1
  87. package/dist/server/trusted-proxy.d.ts +77 -0
  88. package/dist/server/trusted-proxy.d.ts.map +1 -0
  89. package/dist/server/trusted-proxy.js +129 -0
  90. package/dist/server/trusted-proxy.js.map +1 -0
  91. package/dist/tasks/index.d.ts +6 -7
  92. package/dist/tasks/index.d.ts.map +1 -1
  93. package/dist/tasks/index.js +22 -5
  94. package/dist/tasks/index.js.map +1 -1
  95. package/dist/tenancy/index.d.ts +41 -0
  96. package/dist/tenancy/index.d.ts.map +1 -0
  97. package/dist/tenancy/index.js +34 -0
  98. package/dist/tenancy/index.js.map +1 -0
  99. package/dist/testing/index.d.ts +6 -0
  100. package/dist/testing/index.d.ts.map +1 -1
  101. package/dist/testing/index.js +12 -3
  102. package/dist/testing/index.js.map +1 -1
  103. package/dist/tracing/execution.d.ts +14 -0
  104. package/dist/tracing/execution.d.ts.map +1 -0
  105. package/dist/tracing/execution.js +17 -0
  106. package/dist/tracing/execution.js.map +1 -0
  107. package/dist/tracing/index.d.ts +49 -0
  108. package/dist/tracing/index.d.ts.map +1 -1
  109. package/dist/tracing/index.js +59 -0
  110. package/dist/tracing/index.js.map +1 -1
  111. package/dist/uploads/client.d.ts.map +1 -1
  112. package/dist/uploads/client.js +44 -6
  113. package/dist/uploads/client.js.map +1 -1
  114. package/dist/uploads/index.d.ts +182 -2
  115. package/dist/uploads/index.d.ts.map +1 -1
  116. package/dist/uploads/index.js +468 -76
  117. package/dist/uploads/index.js.map +1 -1
  118. package/dist/webhooks/index.d.ts +56 -4
  119. package/dist/webhooks/index.d.ts.map +1 -1
  120. package/dist/webhooks/index.js +107 -2
  121. package/dist/webhooks/index.js.map +1 -1
  122. package/package.json +5 -1
  123. package/skills/app-architecture/SKILL.md +23 -2
  124. package/src/application/index.ts +88 -56
  125. package/src/domain/entity.ts +61 -13
  126. package/src/domain/index.ts +8 -7
  127. package/src/events/index.ts +27 -14
  128. package/src/flags/index.ts +23 -19
  129. package/src/idempotency/index.ts +17 -3
  130. package/src/jobs/index.ts +1022 -19
  131. package/src/outbox/index.ts +409 -9
  132. package/src/ports/events.ts +2 -2
  133. package/src/ports/index.ts +17 -0
  134. package/src/providers/instrumentation.ts +4 -0
  135. package/src/providers/provider.ts +11 -2
  136. package/src/schedules/index.ts +60 -26
  137. package/src/search/index.ts +3 -1
  138. package/src/server/hooks/index.ts +10 -0
  139. package/src/server/hooks/rate-limit.ts +52 -46
  140. package/src/server/hooks/security.ts +503 -0
  141. package/src/server/index.ts +8 -0
  142. package/src/server/instrumentation.ts +25 -5
  143. package/src/server/providers/loadProviderConfig.ts +19 -2
  144. package/src/server/request-context.ts +7 -0
  145. package/src/server/runtime-integrity.ts +322 -0
  146. package/src/server/server.ts +86 -1
  147. package/src/server/trusted-proxy.ts +249 -0
  148. package/src/tasks/index.ts +29 -12
  149. package/src/tenancy/index.ts +55 -0
  150. package/src/testing/index.ts +19 -3
  151. package/src/tracing/execution.ts +37 -0
  152. package/src/tracing/index.ts +137 -0
  153. package/src/uploads/client.ts +65 -6
  154. package/src/uploads/index.ts +713 -76
  155. package/src/webhooks/index.ts +240 -9
  156. package/src/domain/events.ts +0 -59
@@ -1,4 +1,6 @@
1
1
  import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ import type { LeaseMetadata, LocksPort } from "../locks/index.js";
3
+ import type { TracingPort } from "../tracing/index.js";
2
4
  /**
3
5
  * Any Standard Schema compatible validator.
4
6
  */
@@ -7,14 +9,27 @@ export type StandardSchema = StandardSchemaV1<unknown, unknown>;
7
9
  * Value or promise of that value.
8
10
  */
9
11
  export type MaybePromise<T> = T | Promise<T>;
12
+ type NoInferJob<T> = [T][T extends unknown ? 0 : never];
10
13
  /**
11
14
  * Infer the parsed output type from a Standard Schema.
12
15
  */
13
16
  export type InferSchemaOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
17
+ /**
18
+ * Duration accepted by job helpers. Numbers are milliseconds.
19
+ */
20
+ export type JobDuration = number | `${number}ms` | `${number}s` | `${number}m` | `${number}h`;
14
21
  /**
15
22
  * Duration accepted by retry helpers. Numbers are milliseconds.
16
23
  */
17
- export type JobRetryDuration = number | `${number}ms` | `${number}s` | `${number}m` | `${number}h`;
24
+ export type JobRetryDuration = JobDuration;
25
+ /**
26
+ * Duration accepted by job timeout helpers. Numbers are milliseconds.
27
+ */
28
+ export type JobTimeoutDuration = JobDuration;
29
+ /**
30
+ * Duration accepted by job execution lease helpers. Numbers are milliseconds.
31
+ */
32
+ export type JobExecutionLeaseDuration = JobDuration;
18
33
  /**
19
34
  * Retry strategy understood by Beignet job adapters.
20
35
  */
@@ -44,6 +59,62 @@ export interface JobRetryPredicateArgs {
44
59
  * Return whether a failed attempt should be retried.
45
60
  */
46
61
  export type JobRetryPredicate = (args: JobRetryPredicateArgs) => boolean;
62
+ /**
63
+ * Dispatch-time uniqueness metadata for a job.
64
+ *
65
+ * Unique jobs are suppressed while the resolved key's lease is active.
66
+ * The lease is intentionally left to expire after a successful dispatch.
67
+ */
68
+ export interface JobUniqueOptions {
69
+ /**
70
+ * Logical uniqueness key within this job name.
71
+ */
72
+ key: string;
73
+ /**
74
+ * How long duplicate dispatches should be suppressed.
75
+ */
76
+ ttl: JobDuration;
77
+ }
78
+ /**
79
+ * Arguments passed to a per-payload unique job resolver.
80
+ */
81
+ export interface JobUniqueResolverArgs<Payload extends StandardSchema> {
82
+ /**
83
+ * Stable job name.
84
+ */
85
+ jobName: string;
86
+ /**
87
+ * Parsed job payload.
88
+ */
89
+ payload: StandardSchemaV1.InferOutput<Payload>;
90
+ }
91
+ /**
92
+ * Per-payload resolver for dispatch-time uniqueness.
93
+ */
94
+ export type JobUniqueResolver<Payload extends StandardSchema> = {
95
+ bivarianceHack(args: JobUniqueResolverArgs<Payload>): MaybePromise<JobUniqueOptions | null | undefined>;
96
+ }["bivarianceHack"];
97
+ /**
98
+ * Unique job declaration value.
99
+ */
100
+ export type JobUniqueConfig<Payload extends StandardSchema = StandardSchema> = JobUniqueOptions | JobUniqueResolver<Payload>;
101
+ /**
102
+ * Resolved uniqueness metadata used by dispatchers.
103
+ */
104
+ export interface ResolvedJobUniqueOptions {
105
+ /**
106
+ * Logical uniqueness key returned by the job declaration.
107
+ */
108
+ key: string;
109
+ /**
110
+ * Concrete lock key used by `LocksPort`.
111
+ */
112
+ lockKey: string;
113
+ /**
114
+ * Lease TTL in milliseconds.
115
+ */
116
+ ttlMs: number;
117
+ }
47
118
  /**
48
119
  * Job definition created by `defineJob(...)`.
49
120
  */
@@ -68,6 +139,18 @@ export interface JobDef<Name extends string = string, Payload extends StandardSc
68
139
  * Retry metadata for durable job providers.
69
140
  */
70
141
  readonly retry?: JobRetryOptions;
142
+ /**
143
+ * Optional dispatch-time uniqueness guard.
144
+ */
145
+ readonly unique?: JobUniqueConfig<Payload>;
146
+ /**
147
+ * Optional maximum execution time for each job handler attempt.
148
+ */
149
+ readonly timeout?: JobTimeoutDuration;
150
+ /**
151
+ * Optional hooks that wrap each handler attempt for this job.
152
+ */
153
+ readonly hooks?: readonly JobHook<JobDef<Name, Payload, Ctx>, Ctx>[];
71
154
  /**
72
155
  * Handle a parsed job payload.
73
156
  */
@@ -89,10 +172,139 @@ export interface JobHandleArgs<J extends JobDef, Ctx> {
89
172
  * Parsed job payload.
90
173
  */
91
174
  payload: InferJobPayload<J>;
175
+ /** Handler context. */
176
+ ctx: Ctx;
92
177
  /**
93
- * Handler context.
178
+ * Abort signal that fires when the job's declared timeout expires.
179
+ *
180
+ * Beignet dispatchers and worker helpers provide this signal. It is optional
181
+ * in the type so direct handler tests can stay lightweight.
182
+ *
183
+ * JavaScript cannot forcibly stop arbitrary async work, so handlers that
184
+ * call cancellable APIs should pass this signal through.
94
185
  */
95
- ctx: Ctx;
186
+ signal?: AbortSignal;
187
+ }
188
+ /**
189
+ * Arguments passed to job execution hooks.
190
+ */
191
+ export interface JobHookArgs<J extends JobDef, Ctx> extends JobHandleArgs<J, Ctx> {
192
+ /**
193
+ * Abort signal provided by the Beignet execution runner.
194
+ */
195
+ signal: AbortSignal;
196
+ /**
197
+ * One-based execution attempt when the runner can report it.
198
+ */
199
+ attempt?: number;
200
+ /**
201
+ * Maximum execution attempts when the runner can report it.
202
+ */
203
+ maxAttempts?: number;
204
+ }
205
+ /**
206
+ * Hook that wraps one job handler attempt.
207
+ *
208
+ * Hooks run only through Beignet dispatchers and worker helpers. Direct calls
209
+ * to `job.handle(...)` bypass hooks, which keeps lightweight unit tests
210
+ * possible.
211
+ */
212
+ export type JobHook<J extends JobDef = JobDef, Ctx = unknown> = {
213
+ bivarianceHack(args: JobHookArgs<J, Ctx>, next: () => Promise<void>): MaybePromise<void>;
214
+ }["bivarianceHack"];
215
+ /**
216
+ * Arguments passed to an execution lease key resolver.
217
+ */
218
+ export type JobExecutionLeaseResolverArgs<J extends JobDef, Ctx> = JobHookArgs<J, Ctx>;
219
+ /**
220
+ * Resolver for the logical execution lease key within a job name.
221
+ */
222
+ export type JobExecutionLeaseKeyResolver<J extends JobDef, Ctx> = {
223
+ bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<string>;
224
+ }["bivarianceHack"];
225
+ /**
226
+ * Resolver for the locks port used by an execution lease hook.
227
+ */
228
+ export type JobExecutionLeaseLocksResolver<J extends JobDef, Ctx> = LocksPort | {
229
+ bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<LocksPort>;
230
+ }["bivarianceHack"];
231
+ /**
232
+ * Resolver for optional diagnostics metadata attached to lease acquisition.
233
+ */
234
+ export type JobExecutionLeaseMetadataResolver<J extends JobDef, Ctx> = LeaseMetadata | {
235
+ bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<LeaseMetadata | undefined>;
236
+ }["bivarianceHack"];
237
+ /**
238
+ * Arguments passed when an execution lease cannot be acquired.
239
+ */
240
+ export interface JobExecutionLeaseUnavailableArgs<J extends JobDef, Ctx> extends JobHookArgs<J, Ctx> {
241
+ /**
242
+ * Logical lease key returned by the hook configuration.
243
+ */
244
+ key: string;
245
+ /**
246
+ * Concrete lock key passed to `LocksPort`.
247
+ */
248
+ lockKey: string;
249
+ /**
250
+ * Acquisition failure reason returned by `LocksPort`.
251
+ */
252
+ reason: "unavailable" | "timeout";
253
+ }
254
+ /**
255
+ * Behavior when an execution lease cannot be acquired.
256
+ *
257
+ * `"skip"` treats the attempt as successful without running the handler.
258
+ * `"throw"` fails the attempt with `JobExecutionLeaseUnavailableError` so the
259
+ * job retry policy can classify it. A function can log or throw custom errors;
260
+ * returning from it skips the handler.
261
+ */
262
+ export type JobExecutionLeaseUnavailableBehavior<J extends JobDef, Ctx> = "skip" | "throw" | {
263
+ bivarianceHack(args: JobExecutionLeaseUnavailableArgs<J, Ctx>): MaybePromise<void>;
264
+ }["bivarianceHack"];
265
+ /**
266
+ * Options for `createJobExecutionLeaseHook(...)`.
267
+ */
268
+ export interface JobExecutionLeaseHookOptions<J extends JobDef = JobDef, Ctx = unknown> {
269
+ /**
270
+ * Locks port or resolver used to acquire the execution lease.
271
+ */
272
+ locks: JobExecutionLeaseLocksResolver<J, Ctx>;
273
+ /**
274
+ * Logical lease key within this job name.
275
+ */
276
+ key: string | JobExecutionLeaseKeyResolver<J, Ctx>;
277
+ /**
278
+ * Lease time-to-live. This is the real safety boundary in serverless runtimes
279
+ * where an invocation may terminate before `finally` runs.
280
+ */
281
+ ttl: JobExecutionLeaseDuration;
282
+ /**
283
+ * How long to wait for an existing lease before applying `onUnavailable`.
284
+ *
285
+ * Defaults to no wait.
286
+ */
287
+ wait?: JobExecutionLeaseDuration;
288
+ /**
289
+ * Delay between acquisition attempts while waiting.
290
+ */
291
+ retryDelay?: JobExecutionLeaseDuration;
292
+ /**
293
+ * Prefix used to build the concrete lock key.
294
+ *
295
+ * Defaults to `"jobs:lease"`.
296
+ */
297
+ keyPrefix?: string;
298
+ /**
299
+ * Optional diagnostics metadata attached to the lease acquire call.
300
+ */
301
+ metadata?: JobExecutionLeaseMetadataResolver<J, Ctx>;
302
+ /**
303
+ * Behavior when the lease cannot be acquired.
304
+ *
305
+ * Defaults to `"skip"` so overlapping executions do not create retry storms.
306
+ */
307
+ onUnavailable?: JobExecutionLeaseUnavailableBehavior<J, Ctx>;
96
308
  }
97
309
  /**
98
310
  * Retry metadata that durable job providers can map to their own retry model.
@@ -148,6 +360,18 @@ export interface DefineJobOptions<Name extends string, Payload extends StandardS
148
360
  * Retry metadata for durable job providers.
149
361
  */
150
362
  retry?: JobRetryOptions;
363
+ /**
364
+ * Optional dispatch-time uniqueness guard.
365
+ */
366
+ unique?: JobUniqueConfig<Payload>;
367
+ /**
368
+ * Optional maximum execution time for each job handler attempt.
369
+ */
370
+ timeout?: JobTimeoutDuration;
371
+ /**
372
+ * Optional hooks that wrap each handler attempt for this job.
373
+ */
374
+ hooks?: readonly JobHook<JobDef<NoInferJob<Name>, NoInferJob<Payload>, Ctx>, Ctx>[];
151
375
  /**
152
376
  * Handle a parsed job payload.
153
377
  */
@@ -225,17 +449,119 @@ export interface InlineJobDispatcherOptions<Ctx> {
225
449
  */
226
450
  ctx?: Ctx | (() => MaybePromise<Ctx>);
227
451
  /**
228
- * Called when a dispatched inline job fails. When omitted, errors are
229
- * rethrown to the caller.
452
+ * Called when a dispatched inline job fails all attempts allowed by its
453
+ * retry policy. When omitted, the final error is rethrown to the caller.
230
454
  */
231
455
  onError?: (error: unknown, job: JobDef<string, StandardSchema, Ctx>) => void;
456
+ /**
457
+ * Sleep implementation used between retry attempts. Defaults to a real
458
+ * `setTimeout` delay; inject a fake in tests to keep retries instant.
459
+ */
460
+ sleep?: (ms: number) => Promise<void>;
461
+ /**
462
+ * Honor the job's declared retry policy inline. Defaults to `true`. Set
463
+ * `false` when another layer owns execution retries for every dispatch
464
+ * through this dispatcher.
465
+ */
466
+ retry?: boolean;
467
+ /**
468
+ * Hooks that wrap every job attempt executed by this dispatcher. Runner hooks
469
+ * wrap job-local hooks.
470
+ */
471
+ hooks?: readonly JobHook<JobDef<string, StandardSchema, Ctx>, Ctx>[];
472
+ }
473
+ /**
474
+ * Well-known symbol under which the inline dispatcher exposes a
475
+ * single-attempt dispatch. Delivery systems that own execution retries
476
+ * themselves — the outbox drain — call it instead of `dispatch(...)` so a
477
+ * job's retry policy runs in exactly one layer. Registered with `Symbol.for`
478
+ * so multiple core copies in one process agree on the key.
479
+ */
480
+ export declare const SINGLE_ATTEMPT_DISPATCH: unique symbol;
481
+ /**
482
+ * Metadata passed to a single-attempt dispatch when another delivery layer
483
+ * owns retry scheduling.
484
+ */
485
+ export interface SingleAttemptJobDispatchOptions {
486
+ /**
487
+ * One-based delivery attempt.
488
+ */
489
+ attempt?: number;
490
+ /**
491
+ * Maximum delivery attempts.
492
+ */
493
+ maxAttempts?: number;
494
+ }
495
+ /**
496
+ * Shape of the single-attempt dispatch exposed under
497
+ * `SINGLE_ATTEMPT_DISPATCH`.
498
+ */
499
+ export type SingleAttemptJobDispatch = <J extends JobDef>(job: J, payload: InferJobPayload<J>, options?: SingleAttemptJobDispatchOptions) => Promise<void>;
500
+ /**
501
+ * Job dispatcher shape accepted by job wrappers.
502
+ */
503
+ export interface JobDispatcher {
504
+ dispatch<J extends JobDef>(job: J, payload: InferJobPayload<J>): MaybePromise<void>;
505
+ }
506
+ /**
507
+ * Arguments passed when a unique job dispatch is suppressed.
508
+ */
509
+ export interface UniqueJobDuplicateArgs<J extends JobDef = JobDef> {
510
+ /**
511
+ * Job definition whose dispatch was suppressed.
512
+ */
513
+ job: J;
514
+ /**
515
+ * Parsed job payload.
516
+ */
517
+ payload: InferJobPayload<J>;
518
+ /**
519
+ * Logical uniqueness key returned by the job declaration.
520
+ */
521
+ key: string;
522
+ /**
523
+ * Concrete lock key used by `LocksPort`.
524
+ */
525
+ lockKey: string;
526
+ /**
527
+ * Lease TTL in milliseconds.
528
+ */
529
+ ttlMs: number;
530
+ /**
531
+ * Lock acquisition reason returned by `LocksPort`.
532
+ */
533
+ reason: "unavailable" | "timeout";
534
+ }
535
+ /**
536
+ * Options for `createUniqueJobDispatcher(...)`.
537
+ */
538
+ export interface UniqueJobDispatcherOptions {
539
+ /**
540
+ * Dispatcher to call when a job is not unique or the unique lease is acquired.
541
+ */
542
+ jobs: JobDispatcher;
543
+ /**
544
+ * Lease-backed lock port used as the uniqueness guard.
545
+ */
546
+ locks: LocksPort;
547
+ /**
548
+ * Prefix for concrete lock keys.
549
+ *
550
+ * Defaults to `"jobs:unique"`.
551
+ */
552
+ keyPrefix?: string;
553
+ /**
554
+ * Called when a duplicate dispatch is suppressed.
555
+ */
556
+ onDuplicate?: (args: UniqueJobDuplicateArgs) => MaybePromise<void>;
232
557
  }
233
558
  /**
234
559
  * Local/test job dispatcher that executes job handlers inline.
235
560
  */
236
561
  export interface InlineJobDispatcher<Ctx = unknown> {
237
562
  /**
238
- * Validate a payload and run the job handler immediately.
563
+ * Validate a payload and run the job handler inline, honoring the job's
564
+ * declared retry policy before failing.
239
565
  */
240
566
  dispatch<J extends JobDef<string, StandardSchema, Ctx>>(job: J, payload: InferJobPayload<J>): Promise<void>;
241
567
  }
@@ -261,6 +587,51 @@ export declare class JobValidationError extends Error {
261
587
  issues: readonly StandardSchemaV1.Issue[];
262
588
  });
263
589
  }
590
+ /**
591
+ * Error thrown when a job handler exceeds its declared timeout.
592
+ */
593
+ export declare class JobTimeoutError extends Error {
594
+ /**
595
+ * Stable job name that timed out.
596
+ */
597
+ readonly jobName: string;
598
+ /**
599
+ * Timeout in milliseconds.
600
+ */
601
+ readonly timeoutMs: number;
602
+ constructor(args: {
603
+ jobName: string;
604
+ timeoutMs: number;
605
+ });
606
+ }
607
+ /**
608
+ * Error thrown when an execution lease hook is configured to fail on an
609
+ * unavailable lease.
610
+ */
611
+ export declare class JobExecutionLeaseUnavailableError extends Error {
612
+ /**
613
+ * Stable job name whose execution lease was unavailable.
614
+ */
615
+ readonly jobName: string;
616
+ /**
617
+ * Logical lease key returned by the hook configuration.
618
+ */
619
+ readonly key: string;
620
+ /**
621
+ * Concrete lock key passed to `LocksPort`.
622
+ */
623
+ readonly lockKey: string;
624
+ /**
625
+ * Acquisition failure reason returned by `LocksPort`.
626
+ */
627
+ readonly reason: "unavailable" | "timeout";
628
+ constructor(args: {
629
+ jobName: string;
630
+ key: string;
631
+ lockKey: string;
632
+ reason: "unavailable" | "timeout";
633
+ });
634
+ }
264
635
  /**
265
636
  * Return the maximum total attempts configured by a retry policy.
266
637
  */
@@ -273,14 +644,82 @@ export declare function shouldRetryJob(options: JobRetryOptions | undefined, arg
273
644
  * Compute the next retry delay in milliseconds for a failed job attempt.
274
645
  */
275
646
  export declare function getJobRetryDelayMs(options: JobRetryOptions | undefined, args: Pick<JobRetryPredicateArgs, "attempt" | "error" | "jobName">): number;
647
+ /**
648
+ * Return the execution timeout in milliseconds configured by a job.
649
+ */
650
+ export declare function getJobTimeoutMs(job: Pick<JobDef, "timeout">): number | undefined;
651
+ /**
652
+ * Create a job hook that prevents overlapping handler attempts for the same
653
+ * logical execution key.
654
+ *
655
+ * The hook uses one bounded `LocksPort.acquire(...)` call and never starts
656
+ * renewal loops, so it can run in serverless entrypoints as long as `locks`
657
+ * points at shared storage. `ttl` is the real safety boundary when a runtime
658
+ * terminates before best-effort release runs.
659
+ */
660
+ export declare function createJobExecutionLeaseHook<J extends JobDef = JobDef, Ctx = unknown>(options: JobExecutionLeaseHookOptions<J, Ctx>): JobHook<J, Ctx>;
276
661
  /**
277
662
  * Validate and parse a job payload with the job's Standard Schema.
278
663
  */
279
664
  export declare function parseJobPayload<J extends JobDef>(job: J, payload: unknown): Promise<InferJobPayload<J>>;
665
+ /**
666
+ * Options for running one parsed job handler attempt.
667
+ */
668
+ export interface RunJobHandlerOptions<J extends JobDef<string, StandardSchema, Ctx>, Ctx> {
669
+ /**
670
+ * Job definition to execute.
671
+ */
672
+ job: J;
673
+ /**
674
+ * Parsed job payload.
675
+ */
676
+ payload: InferJobPayload<J>;
677
+ /** Handler context or factory resolved inside the job span. */
678
+ ctx: Ctx | (() => MaybePromise<Ctx>);
679
+ /** Runtime tracing port used before a lazy context factory runs. */
680
+ tracing?: TracingPort;
681
+ /**
682
+ * Runner-level hooks. These wrap job-local hooks.
683
+ */
684
+ hooks?: readonly JobHook<JobDef<string, StandardSchema, Ctx>, Ctx>[];
685
+ /**
686
+ * One-based execution attempt when the runner can report it.
687
+ */
688
+ attempt?: number;
689
+ /**
690
+ * Maximum execution attempts when the runner can report it.
691
+ */
692
+ maxAttempts?: number;
693
+ }
694
+ /**
695
+ * Run a parsed job handler once, enforcing hooks and the job's declared
696
+ * timeout.
697
+ */
698
+ export declare function runJobHandler<J extends JobDef<string, StandardSchema, Ctx>, Ctx>(args: RunJobHandlerOptions<J, Ctx>): Promise<void>;
699
+ /**
700
+ * Resolve a job's dispatch-time uniqueness metadata for a parsed payload.
701
+ */
702
+ export declare function resolveJobUnique<J extends JobDef>(job: J, payload: InferJobPayload<J>, options?: {
703
+ keyPrefix?: string;
704
+ }): Promise<ResolvedJobUniqueOptions | undefined>;
280
705
  /**
281
706
  * Create a local/test dispatcher that runs job handlers inline.
707
+ *
708
+ * Dispatch honors the job's declared retry policy: failed attempts retry with
709
+ * the policy's delays until the policy is exhausted. Payload validation
710
+ * failures never retry. Jobs without a retry policy run exactly once.
282
711
  */
283
712
  export declare function createInlineJobDispatcher<Ctx>(options?: InlineJobDispatcherOptions<Ctx>): InlineJobDispatcher<Ctx>;
713
+ /**
714
+ * Wrap any job dispatcher with dispatch-time unique job suppression.
715
+ *
716
+ * When a job has no `unique` declaration, dispatch passes through unchanged.
717
+ * When it does, the wrapper validates the payload, resolves the unique key,
718
+ * acquires the matching lease, and calls the underlying dispatcher only when
719
+ * the lease is acquired. Successful dispatches intentionally keep the lease
720
+ * until its TTL expires; failed dispatches release it so callers can retry.
721
+ */
722
+ export declare function createUniqueJobDispatcher(options: UniqueJobDispatcherOptions): JobDispatcher;
284
723
  /**
285
724
  * Create job helper methods bound to an application context type.
286
725
  *
@@ -290,9 +729,10 @@ export declare function createInlineJobDispatcher<Ctx>(options?: InlineJobDispat
290
729
  * export const { defineJob } = createJobs<AppContext>();
291
730
  * ```
292
731
  *
293
- * Retry options are provider hints. Inline dispatchers validate payloads and
294
- * call `handle(...)` immediately; durable providers may enqueue or schedule the
295
- * job according to their own runtime.
732
+ * Retry options describe the job's retry policy. Inline dispatchers run the
733
+ * policy in-process with real delays; durable providers map the policy onto
734
+ * their own runtime and reject options they cannot honor.
296
735
  */
297
736
  export declare function createJobs<Ctx>(): Jobs<Ctx>;
737
+ export {};
298
738
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}