duron 0.3.0-beta.14 → 0.3.0-beta.17

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 (36) hide show
  1. package/dist/action.d.ts +53 -4
  2. package/dist/action.d.ts.map +1 -1
  3. package/dist/action.js +5 -0
  4. package/dist/adapters/postgres/base.d.ts +1 -1
  5. package/dist/adapters/postgres/base.d.ts.map +1 -1
  6. package/dist/adapters/postgres/base.js +17 -6
  7. package/dist/adapters/postgres/schema.d.ts +19 -4
  8. package/dist/adapters/postgres/schema.d.ts.map +1 -1
  9. package/dist/adapters/postgres/schema.default.d.ts +19 -4
  10. package/dist/adapters/postgres/schema.default.d.ts.map +1 -1
  11. package/dist/adapters/postgres/schema.js +4 -2
  12. package/dist/adapters/schemas.d.ts +13 -0
  13. package/dist/adapters/schemas.d.ts.map +1 -1
  14. package/dist/adapters/schemas.js +5 -0
  15. package/dist/client.d.ts +3 -0
  16. package/dist/client.d.ts.map +1 -1
  17. package/dist/client.js +8 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/server.d.ts +5 -0
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +3 -0
  23. package/dist/step-manager.js +9 -1
  24. package/migrations/postgres/{20260120154151_mean_magdalene → 20260121160012_normal_bloodstrike}/migration.sql +5 -1
  25. package/migrations/postgres/{20260121134451_thankful_manta → 20260121160012_normal_bloodstrike}/snapshot.json +38 -4
  26. package/package.json +1 -1
  27. package/src/action.ts +59 -2
  28. package/src/adapters/postgres/base.ts +17 -3
  29. package/src/adapters/postgres/schema.ts +4 -2
  30. package/src/adapters/schemas.ts +5 -0
  31. package/src/client.ts +11 -0
  32. package/src/index.ts +1 -0
  33. package/src/server.ts +2 -0
  34. package/src/step-manager.ts +10 -1
  35. package/migrations/postgres/20260120154151_mean_magdalene/snapshot.json +0 -1469
  36. package/migrations/postgres/20260121134451_thankful_manta/migration.sql +0 -2
package/dist/client.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface JobResult {
19
19
  actionName: string;
20
20
  status: JobStatus;
21
21
  groupKey: string;
22
+ description: string | null;
22
23
  input: unknown;
23
24
  output: unknown;
24
25
  error: Job['error'];
@@ -31,6 +32,7 @@ export interface TypedJobResult<TAction extends Action<any, any, any>> {
31
32
  actionName: string;
32
33
  status: JobStatus;
33
34
  groupKey: string;
35
+ description: string | null;
34
36
  input: InferActionSchema<NonNullable<TAction['input']>>;
35
37
  output: InferActionSchema<NonNullable<TAction['output']>>;
36
38
  error: Job['error'];
@@ -352,6 +354,7 @@ export declare class Client<TActions extends Record<string, Action<any, any, TVa
352
354
  id: string;
353
355
  actionName: string;
354
356
  groupKey: string;
357
+ description: string | null;
355
358
  input: any;
356
359
  output: any;
357
360
  error: any;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -207,6 +207,11 @@ export class Client {
207
207
  if (action.groups?.concurrency) {
208
208
  concurrencyLimit = await action.groups.concurrency(concurrencyCtx);
209
209
  }
210
+ // Calculate description if provided
211
+ let description = null;
212
+ if (action.description) {
213
+ description = await action.description(concurrencyCtx);
214
+ }
210
215
  // Create job in database
211
216
  const jobId = await this.#database.createJob({
212
217
  queue: action.name,
@@ -216,6 +221,7 @@ export class Client {
216
221
  checksum: action.checksum,
217
222
  concurrencyLimit,
218
223
  concurrencyStepLimit: action.steps.concurrency,
224
+ description,
219
225
  });
220
226
  if (!jobId) {
221
227
  throw new Error(`Failed to create job for action ${String(actionName)}`);
@@ -508,6 +514,7 @@ export class Client {
508
514
  actionName: job.actionName,
509
515
  status: job.status,
510
516
  groupKey: job.groupKey,
517
+ description: job.description,
511
518
  input: job.input,
512
519
  output: job.output,
513
520
  error: job.error,
@@ -724,6 +731,7 @@ export class Client {
724
731
  actionName: job.actionName,
725
732
  status: job.status,
726
733
  groupKey: job.groupKey,
734
+ description: job.description,
727
735
  input: job.input,
728
736
  output: job.output,
729
737
  error: job.error,
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Action } from './action.js';
2
2
  import { Client, type ClientOptions } from './client.js';
3
- export { createStep, defineAction, type StepDefinition, type StepDefinitionHandlerContext, type StepDefinitionInput, } from './action.js';
3
+ export { createStep, defineAction, type StepDefinition, type StepDefinitionHandlerContext, type StepDefinitionInput, type StepNameContext, } from './action.js';
4
4
  export * from './client.js';
5
5
  export * from './constants.js';
6
6
  export { NonRetriableError, UnhandledChildStepsError } from './errors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AACpB,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACzE,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,cAAc,sBAAsB,CAAA;AAEpC,eAAO,MAAM,KAAK,GAChB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAC7D,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEpC,SAAS,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,iCACA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAA;AACpB,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACzE,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,cAAc,sBAAsB,CAAA;AAEpC,eAAO,MAAM,KAAK,GAChB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAC7D,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEpC,SAAS,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,iCACA,CAAA"}
package/dist/server.d.ts CHANGED
@@ -89,6 +89,7 @@ export declare const GetJobsQuerySchema: z.ZodPipe<z.ZodObject<{
89
89
  fActionName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
90
90
  fGroupKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
91
91
  fClientId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
92
+ fDescription: z.ZodOptional<z.ZodString>;
92
93
  fCreatedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
93
94
  fStartedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
94
95
  fFinishedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
@@ -112,6 +113,7 @@ export declare const GetJobsQuerySchema: z.ZodPipe<z.ZodObject<{
112
113
  fActionName?: string | string[] | undefined;
113
114
  fGroupKey?: string | string[] | undefined;
114
115
  fClientId?: string | string[] | undefined;
116
+ fDescription?: string | undefined;
115
117
  fCreatedAt?: Date | Date[] | undefined;
116
118
  fStartedAt?: Date | Date[] | undefined;
117
119
  fFinishedAt?: Date | Date[] | undefined;
@@ -126,6 +128,7 @@ export declare const GetJobsResponseSchema: z.ZodObject<{
126
128
  id: z.ZodString;
127
129
  actionName: z.ZodString;
128
130
  groupKey: z.ZodString;
131
+ description: z.ZodDefault<z.ZodNullable<z.ZodString>>;
129
132
  input: z.ZodAny;
130
133
  output: z.ZodNullable<z.ZodAny>;
131
134
  error: z.ZodNullable<z.ZodAny>;
@@ -585,6 +588,7 @@ export declare function createServer<P extends string>({ client, prefix, login,
585
588
  id: string;
586
589
  actionName: string;
587
590
  groupKey: string;
591
+ description: string | null;
588
592
  input: any;
589
593
  output: any;
590
594
  error: any;
@@ -713,6 +717,7 @@ export declare function createServer<P extends string>({ client, prefix, login,
713
717
  id: string;
714
718
  actionName: string;
715
719
  groupKey: string;
720
+ description: string | null;
716
721
  input: any;
717
722
  output: any;
718
723
  error: any;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -60,6 +60,7 @@ export const GetJobsQuerySchema = z
60
60
  fActionName: z.union([z.string(), z.array(z.string())]).optional(),
61
61
  fGroupKey: z.union([z.string(), z.array(z.string())]).optional(),
62
62
  fClientId: z.union([z.string(), z.array(z.string())]).optional(),
63
+ fDescription: z.string().optional(),
63
64
  // Date filters: can be a single ISO string or JSON array [start, end] - both coerced to Date objects
64
65
  fCreatedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
65
66
  fStartedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
@@ -82,6 +83,8 @@ export const GetJobsQuerySchema = z
82
83
  filters.groupKey = data.fGroupKey;
83
84
  if (data.fClientId)
84
85
  filters.clientId = data.fClientId;
86
+ if (data.fDescription)
87
+ filters.description = data.fDescription;
85
88
  if (data.fCreatedAt)
86
89
  filters.createdAt = data.fCreatedAt;
87
90
  if (data.fStartedAt)
@@ -722,7 +722,15 @@ class ActionContext {
722
722
  })
723
723
  : input;
724
724
  // Resolve step name (static or dynamic)
725
- const stepName = typeof stepDef.name === 'function' ? stepDef.name({ input: validatedInput }) : stepDef.name;
725
+ // If it's a function, pass the full context including input, variables, jobId, and parentStepId
726
+ const stepName = typeof stepDef.name === 'function'
727
+ ? stepDef.name({
728
+ input: validatedInput,
729
+ var: this.#variables,
730
+ jobId: this.#jobId,
731
+ parentStepId,
732
+ })
733
+ : stepDef.name;
726
734
  // Merge options: action defaults -> step definition -> call-time overrides
727
735
  const mergedOptions = {
728
736
  ...this.#action.steps,
@@ -27,6 +27,7 @@ CREATE TABLE "duron"."jobs" (
27
27
  "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
28
28
  "action_name" text NOT NULL,
29
29
  "group_key" text NOT NULL,
30
+ "description" text,
30
31
  "status" text DEFAULT 'created' NOT NULL,
31
32
  "checksum" text NOT NULL,
32
33
  "input" jsonb DEFAULT '{}' NOT NULL,
@@ -37,7 +38,8 @@ CREATE TABLE "duron"."jobs" (
37
38
  "started_at" timestamp with time zone,
38
39
  "finished_at" timestamp with time zone,
39
40
  "client_id" text,
40
- "concurrency_limit" integer DEFAULT 10 NOT NULL,
41
+ "concurrency_limit" integer NOT NULL,
42
+ "concurrency_step_limit" integer NOT NULL,
41
43
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
42
44
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
43
45
  CONSTRAINT "jobs_status_check" CHECK ("status" IN ('created','active','completed','failed','cancelled'))
@@ -73,12 +75,14 @@ CREATE INDEX "idx_job_steps_output_fts" ON "duron"."job_steps" USING gin (to_tsv
73
75
  CREATE INDEX "idx_jobs_action_name" ON "duron"."jobs" ("action_name");--> statement-breakpoint
74
76
  CREATE INDEX "idx_jobs_status" ON "duron"."jobs" ("status");--> statement-breakpoint
75
77
  CREATE INDEX "idx_jobs_group_key" ON "duron"."jobs" ("group_key");--> statement-breakpoint
78
+ CREATE INDEX "idx_jobs_description" ON "duron"."jobs" ("description");--> statement-breakpoint
76
79
  CREATE INDEX "idx_jobs_started_at" ON "duron"."jobs" ("started_at");--> statement-breakpoint
77
80
  CREATE INDEX "idx_jobs_finished_at" ON "duron"."jobs" ("finished_at");--> statement-breakpoint
78
81
  CREATE INDEX "idx_jobs_expires_at" ON "duron"."jobs" ("expires_at");--> statement-breakpoint
79
82
  CREATE INDEX "idx_jobs_client_id" ON "duron"."jobs" ("client_id");--> statement-breakpoint
80
83
  CREATE INDEX "idx_jobs_checksum" ON "duron"."jobs" ("checksum");--> statement-breakpoint
81
84
  CREATE INDEX "idx_jobs_concurrency_limit" ON "duron"."jobs" ("concurrency_limit");--> statement-breakpoint
85
+ CREATE INDEX "idx_jobs_concurrency_step_limit" ON "duron"."jobs" ("concurrency_step_limit");--> statement-breakpoint
82
86
  CREATE INDEX "idx_jobs_action_status" ON "duron"."jobs" ("action_name","status");--> statement-breakpoint
83
87
  CREATE INDEX "idx_jobs_action_group" ON "duron"."jobs" ("action_name","group_key");--> statement-breakpoint
84
88
  CREATE INDEX "idx_jobs_input_fts" ON "duron"."jobs" USING gin (to_tsvector('english', "input"::text));--> statement-breakpoint
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "8",
3
3
  "dialect": "postgres",
4
- "id": "00176361-fdf6-4447-a143-7bdbf5696b38",
5
- "prevIds": ["9ff8be1d-ba8f-4014-bed4-e7428b9368c2"],
4
+ "id": "47ec47b1-f323-4e7e-a4bc-605f703aa384",
5
+ "prevIds": ["00000000-0000-0000-0000-000000000000"],
6
6
  "ddl": [
7
7
  {
8
8
  "name": "duron",
@@ -299,6 +299,19 @@
299
299
  "schema": "duron",
300
300
  "table": "jobs"
301
301
  },
302
+ {
303
+ "type": "text",
304
+ "typeSchema": null,
305
+ "notNull": false,
306
+ "dimensions": 0,
307
+ "default": null,
308
+ "generated": null,
309
+ "identity": null,
310
+ "name": "description",
311
+ "entityType": "columns",
312
+ "schema": "duron",
313
+ "table": "jobs"
314
+ },
302
315
  {
303
316
  "type": "text",
304
317
  "typeSchema": null,
@@ -434,7 +447,7 @@
434
447
  "typeSchema": null,
435
448
  "notNull": true,
436
449
  "dimensions": 0,
437
- "default": "10",
450
+ "default": null,
438
451
  "generated": null,
439
452
  "identity": null,
440
453
  "name": "concurrency_limit",
@@ -447,7 +460,7 @@
447
460
  "typeSchema": null,
448
461
  "notNull": true,
449
462
  "dimensions": 0,
450
- "default": "10",
463
+ "default": null,
451
464
  "generated": null,
452
465
  "identity": null,
453
466
  "name": "concurrency_step_limit",
@@ -908,6 +921,27 @@
908
921
  "schema": "duron",
909
922
  "table": "jobs"
910
923
  },
924
+ {
925
+ "nameExplicit": true,
926
+ "columns": [
927
+ {
928
+ "value": "description",
929
+ "isExpression": false,
930
+ "asc": true,
931
+ "nullsFirst": false,
932
+ "opclass": null
933
+ }
934
+ ],
935
+ "isUnique": false,
936
+ "where": null,
937
+ "with": "",
938
+ "method": "btree",
939
+ "concurrently": false,
940
+ "name": "idx_jobs_description",
941
+ "entityType": "indexes",
942
+ "schema": "duron",
943
+ "table": "jobs"
944
+ },
911
945
  {
912
946
  "nameExplicit": true,
913
947
  "columns": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "duron",
3
- "version": "0.3.0-beta.14",
3
+ "version": "0.3.0-beta.17",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
package/src/action.ts CHANGED
@@ -142,9 +142,20 @@ export interface StepDefinitionHandlerContext<TInput extends z.ZodObject, TVaria
142
142
  export interface StepDefinition<TInput extends z.ZodObject, TResult, TVariables = Record<string, unknown>> {
143
143
  /**
144
144
  * The name of the step.
145
- * Can be a static string or a function that generates the name from the input.
145
+ * Can be a static string or a function that generates the name from the context.
146
+ * The function receives a context object with input, variables, jobId, and parentStepId.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * name: (ctx) => `process-user-${ctx.input.userId}`
151
+ * ```
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * name: (ctx) => `step-${ctx.var.environment}-${ctx.jobId.slice(0, 8)}`
156
+ * ```
146
157
  */
147
- name: string | ((ctx: { input: z.infer<TInput> }) => string)
158
+ name: string | ((ctx: StepNameContext<TInput, TVariables>) => string)
148
159
 
149
160
  /**
150
161
  * Zod schema for validating the step input.
@@ -183,6 +194,32 @@ export interface ConcurrencyHandlerContext<TInput extends z.ZodObject, TVariable
183
194
  var: TVariables
184
195
  }
185
196
 
197
+ /**
198
+ * Context available when generating dynamic step names.
199
+ * Provides access to input, variables, job ID, and parent step ID.
200
+ */
201
+ export interface StepNameContext<TInput extends z.ZodObject, TVariables = Record<string, unknown>> {
202
+ /**
203
+ * The validated input for this step.
204
+ */
205
+ input: z.infer<TInput>
206
+
207
+ /**
208
+ * Variables shared across the action.
209
+ */
210
+ var: TVariables
211
+
212
+ /**
213
+ * The job ID this step belongs to.
214
+ */
215
+ jobId: string
216
+
217
+ /**
218
+ * The ID of the parent step, or null if this is a root step.
219
+ */
220
+ parentStepId: string | null
221
+ }
222
+
186
223
  /**
187
224
  * Retry configuration options for actions and steps.
188
225
  * Controls how failed operations are retried with exponential backoff.
@@ -387,6 +424,21 @@ export interface ActionDefinitionInput<
387
424
  */
388
425
  expire?: number
389
426
 
427
+ /**
428
+ * Function to generate a dynamic description for the job.
429
+ * The description is calculated at job creation time and stored in the database.
430
+ * Use this to provide context about what the specific job instance is doing.
431
+ *
432
+ * @param ctx - Context containing the validated input and variables
433
+ * @returns Promise resolving to the description string
434
+ *
435
+ * @example
436
+ * ```typescript
437
+ * description: async (ctx) => `Send email to ${ctx.input.email}`
438
+ * ```
439
+ */
440
+ description?: (ctx: ConcurrencyHandlerContext<TInput, TVariables>) => Promise<string>
441
+
390
442
  /**
391
443
  * The handler function that executes the action logic.
392
444
  * Receives a context object with validated input, variables, logger, and step functions.
@@ -497,6 +549,11 @@ export function createActionDefinitionSchema<
497
549
  }),
498
550
  concurrency: z.number().default(100),
499
551
  expire: z.number().default(15 * 60 * 1000),
552
+ description: z
553
+ .custom<(ctx: ConcurrencyHandlerContext<TInput, TVariables>) => Promise<string>>((val) => {
554
+ return !val || val instanceof Function
555
+ })
556
+ .optional(),
500
557
  handler: z.custom<(ctx: ActionHandlerContext<TInput, TVariables>) => Promise<z.infer<TOutput>>>((val) => {
501
558
  return val instanceof Function
502
559
  }),
@@ -149,12 +149,14 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
149
149
  checksum,
150
150
  concurrencyLimit,
151
151
  concurrencyStepLimit,
152
+ description,
152
153
  }: CreateJobOptions) {
153
154
  const [result] = await this.db
154
155
  .insert(this.tables.jobsTable)
155
156
  .values({
156
157
  action_name: queue,
157
158
  group_key: groupKey,
159
+ description: description ?? null,
158
160
  checksum,
159
161
  input,
160
162
  status: JOB_STATUS_CREATED,
@@ -263,11 +265,13 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
263
265
  SELECT
264
266
  j.action_name,
265
267
  j.group_key,
268
+ j.description,
266
269
  j.checksum,
267
270
  j.input,
268
271
  j.timeout_ms,
269
272
  j.created_at,
270
- j.concurrency_limit
273
+ j.concurrency_limit,
274
+ j.concurrency_step_limit
271
275
  FROM ${this.tables.jobsTable} j
272
276
  WHERE j.id = ${jobId}
273
277
  AND j.status IN (${JOB_STATUS_COMPLETED}, ${JOB_STATUS_CANCELLED}, ${JOB_STATUS_FAILED})
@@ -292,15 +296,18 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
292
296
  INSERT INTO ${this.tables.jobsTable} (
293
297
  action_name,
294
298
  group_key,
299
+ description,
295
300
  checksum,
296
301
  input,
297
302
  status,
298
303
  timeout_ms,
299
- concurrency_limit
304
+ concurrency_limit,
305
+ concurrency_step_limit
300
306
  )
301
307
  SELECT
302
308
  ls.action_name,
303
309
  ls.group_key,
310
+ ls.description,
304
311
  ls.checksum,
305
312
  ls.input,
306
313
  ${JOB_STATUS_CREATED},
@@ -316,7 +323,8 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
316
323
  LIMIT 1
317
324
  ),
318
325
  ls.concurrency_limit
319
- )
326
+ ),
327
+ ls.concurrency_step_limit
320
328
  FROM locked_source ls
321
329
  WHERE NOT EXISTS (SELECT 1 FROM existing_retry)
322
330
  RETURNING id
@@ -666,6 +674,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
666
674
  j.id,
667
675
  j.action_name as "actionName",
668
676
  j.group_key as "groupKey",
677
+ j.description,
669
678
  j.input,
670
679
  j.output,
671
680
  j.error,
@@ -1037,6 +1046,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
1037
1046
  id: jobsTable.id,
1038
1047
  actionName: jobsTable.action_name,
1039
1048
  groupKey: jobsTable.group_key,
1049
+ description: jobsTable.description,
1040
1050
  input: jobsTable.input,
1041
1051
  output: jobsTable.output,
1042
1052
  error: jobsTable.error,
@@ -1140,6 +1150,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
1140
1150
  filters.clientId
1141
1151
  ? inArray(jobsTable.client_id, Array.isArray(filters.clientId) ? filters.clientId : [filters.clientId])
1142
1152
  : undefined,
1153
+ filters.description ? ilike(jobsTable.description, `%${filters.description}%`) : undefined,
1143
1154
  filters.createdAt && Array.isArray(filters.createdAt)
1144
1155
  ? between(
1145
1156
  sql`date_trunc('second', ${jobsTable.created_at})`,
@@ -1177,6 +1188,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
1177
1188
  ? or(
1178
1189
  ilike(jobsTable.action_name, `%${fuzzySearch}%`),
1179
1190
  ilike(jobsTable.group_key, `%${fuzzySearch}%`),
1191
+ ilike(jobsTable.description, `%${fuzzySearch}%`),
1180
1192
  ilike(jobsTable.client_id, `%${fuzzySearch}%`),
1181
1193
  sql`${jobsTable.id}::text ilike ${`%${fuzzySearch}%`}`,
1182
1194
  sql`to_tsvector('english', ${jobsTable.input}::text) @@ plainto_tsquery('english', ${fuzzySearch})`,
@@ -1234,6 +1246,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
1234
1246
  actionName: jobsTable.action_name,
1235
1247
  expiresAt: jobsTable.expires_at,
1236
1248
  duration: durationMs,
1249
+ description: jobsTable.description,
1237
1250
  }
1238
1251
 
1239
1252
  const jobs = await this.db
@@ -1241,6 +1254,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
1241
1254
  id: jobsTable.id,
1242
1255
  actionName: jobsTable.action_name,
1243
1256
  groupKey: jobsTable.group_key,
1257
+ description: jobsTable.description,
1244
1258
  input: jobsTable.input,
1245
1259
  output: jobsTable.output,
1246
1260
  error: jobsTable.error,
@@ -26,6 +26,7 @@ export default function createSchema(schemaName: string) {
26
26
  id: uuid('id').primaryKey().defaultRandom(),
27
27
  action_name: text('action_name').notNull(),
28
28
  group_key: text('group_key').notNull(),
29
+ description: text('description'),
29
30
  status: text('status').$type<JobStatus>().notNull().default('created'),
30
31
  checksum: text('checksum').notNull(),
31
32
  input: jsonb('input').notNull().default({}),
@@ -36,8 +37,8 @@ export default function createSchema(schemaName: string) {
36
37
  started_at: timestamp('started_at', { withTimezone: true }),
37
38
  finished_at: timestamp('finished_at', { withTimezone: true }),
38
39
  client_id: text('client_id'),
39
- concurrency_limit: integer('concurrency_limit').notNull().default(10),
40
- concurrency_step_limit: integer('concurrency_step_limit').notNull().default(100),
40
+ concurrency_limit: integer('concurrency_limit').notNull(),
41
+ concurrency_step_limit: integer('concurrency_step_limit').notNull(),
41
42
  created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
42
43
  updated_at: timestamp('updated_at', { withTimezone: true })
43
44
  .notNull()
@@ -54,6 +55,7 @@ export default function createSchema(schemaName: string) {
54
55
  index('idx_jobs_action_name').on(table.action_name),
55
56
  index('idx_jobs_status').on(table.status),
56
57
  index('idx_jobs_group_key').on(table.group_key),
58
+ index('idx_jobs_description').on(table.description),
57
59
  index('idx_jobs_started_at').on(table.started_at),
58
60
  index('idx_jobs_finished_at').on(table.finished_at),
59
61
  index('idx_jobs_expires_at').on(table.expires_at),
@@ -34,6 +34,7 @@ export const JobSchema = z.object({
34
34
  id: z.string(),
35
35
  actionName: z.string(),
36
36
  groupKey: z.string(),
37
+ description: z.string().nullable().default(null),
37
38
  input: z.any(),
38
39
  output: z.any().nullable(),
39
40
  error: z.any().nullable(),
@@ -96,6 +97,7 @@ export const JobSortFieldSchema = z.enum([
96
97
  'actionName',
97
98
  'expiresAt',
98
99
  'duration',
100
+ 'description',
99
101
  ])
100
102
 
101
103
  export const JobSortSchema = z.object({
@@ -108,6 +110,7 @@ export const JobFiltersSchema = z.object({
108
110
  actionName: z.union([z.string(), z.array(z.string())]).optional(),
109
111
  groupKey: z.union([z.string(), z.array(z.string())]).optional(),
110
112
  clientId: z.union([z.string(), z.array(z.string())]).optional(),
113
+ description: z.string().optional(),
111
114
  createdAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
112
115
  startedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
113
116
  finishedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
@@ -149,6 +152,8 @@ export const CreateJobOptionsSchema = z.object({
149
152
  concurrencyLimit: z.number(),
150
153
  /** The concurrency limit for steps within this job */
151
154
  concurrencyStepLimit: z.number(),
155
+ /** Optional description for the job */
156
+ description: z.string().nullable().optional(),
152
157
  })
153
158
 
154
159
  export const RecoverJobsOptionsSchema = z.object({
package/src/client.ts CHANGED
@@ -39,6 +39,7 @@ export interface JobResult {
39
39
  actionName: string
40
40
  status: JobStatus
41
41
  groupKey: string
42
+ description: string | null
42
43
  input: unknown
43
44
  output: unknown
44
45
  error: Job['error']
@@ -52,6 +53,7 @@ export interface TypedJobResult<TAction extends Action<any, any, any>> {
52
53
  actionName: string
53
54
  status: JobStatus
54
55
  groupKey: string
56
+ description: string | null
55
57
  input: InferActionSchema<NonNullable<TAction['input']>>
56
58
  output: InferActionSchema<NonNullable<TAction['output']>>
57
59
  error: Job['error']
@@ -554,6 +556,12 @@ export class Client<
554
556
  concurrencyLimit = await action.groups.concurrency(concurrencyCtx)
555
557
  }
556
558
 
559
+ // Calculate description if provided
560
+ let description: string | null = null
561
+ if (action.description) {
562
+ description = await action.description(concurrencyCtx)
563
+ }
564
+
557
565
  // Create job in database
558
566
  const jobId = await this.#database.createJob({
559
567
  queue: action.name,
@@ -563,6 +571,7 @@ export class Client<
563
571
  checksum: action.checksum,
564
572
  concurrencyLimit,
565
573
  concurrencyStepLimit: action.steps.concurrency,
574
+ description,
566
575
  })
567
576
 
568
577
  if (!jobId) {
@@ -916,6 +925,7 @@ export class Client<
916
925
  actionName: job.actionName,
917
926
  status: job.status,
918
927
  groupKey: job.groupKey,
928
+ description: job.description,
919
929
  input: job.input,
920
930
  output: job.output,
921
931
  error: job.error,
@@ -1175,6 +1185,7 @@ export class Client<
1175
1185
  actionName: job.actionName,
1176
1186
  status: job.status,
1177
1187
  groupKey: job.groupKey,
1188
+ description: job.description,
1178
1189
  input: job.input,
1179
1190
  output: job.output,
1180
1191
  error: job.error,
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ export {
7
7
  type StepDefinition,
8
8
  type StepDefinitionHandlerContext,
9
9
  type StepDefinitionInput,
10
+ type StepNameContext,
10
11
  } from './action.js'
11
12
  export * from './client.js'
12
13
  export * from './constants.js'
package/src/server.ts CHANGED
@@ -86,6 +86,7 @@ export const GetJobsQuerySchema = z
86
86
  fActionName: z.union([z.string(), z.array(z.string())]).optional(),
87
87
  fGroupKey: z.union([z.string(), z.array(z.string())]).optional(),
88
88
  fClientId: z.union([z.string(), z.array(z.string())]).optional(),
89
+ fDescription: z.string().optional(),
89
90
  // Date filters: can be a single ISO string or JSON array [start, end] - both coerced to Date objects
90
91
  fCreatedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
91
92
  fStartedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
@@ -107,6 +108,7 @@ export const GetJobsQuerySchema = z
107
108
  if (data.fActionName) filters.actionName = data.fActionName
108
109
  if (data.fGroupKey) filters.groupKey = data.fGroupKey
109
110
  if (data.fClientId) filters.clientId = data.fClientId
111
+ if (data.fDescription) filters.description = data.fDescription
110
112
  if (data.fCreatedAt) filters.createdAt = data.fCreatedAt
111
113
  if (data.fStartedAt) filters.startedAt = data.fStartedAt
112
114
  if (data.fFinishedAt) filters.finishedAt = data.fFinishedAt