duron 0.3.0-beta.1 → 0.3.0-beta.10

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 (51) hide show
  1. package/dist/action-job.d.ts.map +1 -1
  2. package/dist/action-job.js +9 -7
  3. package/dist/action.d.ts +1 -0
  4. package/dist/action.d.ts.map +1 -1
  5. package/dist/action.js +2 -2
  6. package/dist/adapters/postgres/base.d.ts.map +1 -1
  7. package/dist/adapters/postgres/base.js +5 -2
  8. package/dist/adapters/postgres/schema.d.ts.map +1 -1
  9. package/dist/adapters/postgres/schema.js +3 -1
  10. package/dist/client.d.ts +25 -1
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +102 -2
  13. package/dist/errors.d.ts +47 -9
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +78 -19
  16. package/dist/step-manager.d.ts +1 -0
  17. package/dist/step-manager.d.ts.map +1 -1
  18. package/dist/step-manager.js +117 -9
  19. package/dist/telemetry/adapter.d.ts +22 -0
  20. package/dist/telemetry/adapter.d.ts.map +1 -1
  21. package/dist/telemetry/adapter.js +6 -0
  22. package/dist/telemetry/index.d.ts +1 -1
  23. package/dist/telemetry/index.d.ts.map +1 -1
  24. package/dist/telemetry/local.d.ts +2 -1
  25. package/dist/telemetry/local.d.ts.map +1 -1
  26. package/dist/telemetry/local.js +63 -0
  27. package/dist/telemetry/noop.d.ts +2 -1
  28. package/dist/telemetry/noop.d.ts.map +1 -1
  29. package/dist/telemetry/noop.js +27 -0
  30. package/dist/telemetry/opentelemetry.d.ts +2 -1
  31. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  32. package/dist/telemetry/opentelemetry.js +110 -0
  33. package/migrations/postgres/{20251203223656_conscious_johnny_blaze → 20260119153838_flimsy_thor_girl}/migration.sql +29 -2
  34. package/migrations/postgres/{20260118202533_wealthy_mysterio → 20260119153838_flimsy_thor_girl}/snapshot.json +5 -5
  35. package/package.json +1 -1
  36. package/src/action-job.ts +14 -7
  37. package/src/action.ts +23 -13
  38. package/src/adapters/postgres/base.ts +5 -2
  39. package/src/adapters/postgres/schema.ts +5 -2
  40. package/src/client.ts +187 -8
  41. package/src/errors.ts +141 -30
  42. package/src/step-manager.ts +171 -10
  43. package/src/telemetry/adapter.ts +174 -0
  44. package/src/telemetry/index.ts +3 -0
  45. package/src/telemetry/local.ts +93 -0
  46. package/src/telemetry/noop.ts +46 -0
  47. package/src/telemetry/opentelemetry.ts +145 -2
  48. package/migrations/postgres/20251203223656_conscious_johnny_blaze/snapshot.json +0 -941
  49. package/migrations/postgres/20260117231749_clumsy_penance/migration.sql +0 -3
  50. package/migrations/postgres/20260117231749_clumsy_penance/snapshot.json +0 -988
  51. package/migrations/postgres/20260118202533_wealthy_mysterio/migration.sql +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"action-job.d.ts","sourceRoot":"","sources":["../src/action-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGpE,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACrE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IACxF,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;gBAuB9C,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAsCxC,OAAO;IA2Hb,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,MAAM;CAmBP"}
1
+ {"version":3,"file":"action-job.d.ts","sourceRoot":"","sources":["../src/action-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGpE,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACrE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IACxF,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;gBAuB9C,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAsCxC,OAAO;IAkIb,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,MAAM;CAmBP"}
@@ -1,4 +1,4 @@
1
- import { ActionCancelError, ActionTimeoutError, isCancelError, StepTimeoutError, serializeError } from './errors.js';
1
+ import { ActionCancelError, ActionTimeoutError, isCancelError, isTimeoutError, serializeError } from './errors.js';
2
2
  import { StepManager } from './step-manager.js';
3
3
  import waitForAbort from './utils/wait-for-abort.js';
4
4
  export class ActionJob {
@@ -28,7 +28,7 @@ export class ActionJob {
28
28
  adapter: options.database,
29
29
  telemetry: options.telemetry,
30
30
  logger: options.logger,
31
- concurrencyLimit: options.action.concurrency,
31
+ concurrencyLimit: options.action.steps.concurrency,
32
32
  });
33
33
  this.#done = new Promise((resolve) => {
34
34
  this.#resolve = resolve;
@@ -50,7 +50,7 @@ export class ActionJob {
50
50
  const observeContext = this.#telemetry.createObserveContext(this.#job.id, null, this.#jobSpan);
51
51
  const ctx = this.#stepManager.createActionContext(this.#job, this.#action, this.#variables, this.#abortController.signal, jobLogger, observeContext);
52
52
  this.#timeoutId = setTimeout(() => {
53
- const timeoutError = new ActionTimeoutError(this.#action.name, this.#job.timeoutMs);
53
+ const timeoutError = new ActionTimeoutError(this.#action.name, this.#job.id, this.#job.timeoutMs);
54
54
  this.#abortController.abort(timeoutError);
55
55
  }, this.#job.timeoutMs);
56
56
  this.#timeoutId?.unref?.();
@@ -84,6 +84,10 @@ export class ActionJob {
84
84
  return result;
85
85
  }
86
86
  catch (error) {
87
+ if (!this.#abortController.signal.aborted) {
88
+ this.#abortController.abort(error);
89
+ }
90
+ await this.#stepManager.drain();
87
91
  if (isCancelError(error) ||
88
92
  (error instanceof Error && error.name === 'AbortError' && isCancelError(error.cause))) {
89
93
  this.#logger.warn({ jobId: this.#job.id, actionName: this.#action.name }, '[ActionJob] Job cancelled');
@@ -93,11 +97,9 @@ export class ActionJob {
93
97
  }
94
98
  return;
95
99
  }
96
- const message = error instanceof ActionTimeoutError
100
+ const message = isTimeoutError(error)
97
101
  ? '[ActionJob] Job timed out'
98
- : error instanceof StepTimeoutError
99
- ? '[ActionJob] Step timed out'
100
- : '[ActionJob] Job failed';
102
+ : '[ActionJob] Job failed';
101
103
  this.#logger.error({ jobId: this.#job.id, actionName: this.#action.name }, message);
102
104
  await this.#database.failJob({ jobId: this.#job.id, error: serializeError(error) });
103
105
  if (this.#jobSpan) {
package/dist/action.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface StepHandlerContext {
19
19
  parentStepId: string | null;
20
20
  observe: ObserveContext;
21
21
  step: <TResult>(name: string, cb: (ctx: StepHandlerContext) => Promise<TResult>, options?: z.input<typeof StepOptionsSchema>) => Promise<TResult>;
22
+ run: <TStepInput extends z.ZodObject, TResult>(stepDef: StepDefinition<TStepInput, TResult, any>, input: z.input<TStepInput>, options?: Partial<z.input<typeof StepOptionsSchema>>) => Promise<TResult>;
22
23
  }
23
24
  export interface StepDefinitionHandlerContext<TInput extends z.ZodObject, TVariables = Record<string, unknown>> extends StepHandlerContext {
24
25
  input: z.infer<TInput>;
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
package/dist/action.js CHANGED
@@ -48,7 +48,7 @@ export function createActionDefinitionSchema() {
48
48
  .optional(),
49
49
  steps: z
50
50
  .object({
51
- concurrency: z.number().default(10).describe('How many steps can run concurrently for this action'),
51
+ concurrency: z.number().default(100).describe('How many steps can run concurrently for this action'),
52
52
  retry: RetryOptionsSchema.describe('How to retry on failure for the steps of this action'),
53
53
  expire: z
54
54
  .number()
@@ -56,7 +56,7 @@ export function createActionDefinitionSchema() {
56
56
  .describe('How long a step can run for (milliseconds)'),
57
57
  })
58
58
  .default({
59
- concurrency: 10,
59
+ concurrency: 100,
60
60
  retry: { limit: 4, factor: 2, minTimeout: 1000, maxTimeout: 30000 },
61
61
  expire: 5 * 60 * 1000,
62
62
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"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"}
@@ -539,7 +539,9 @@ export class PostgresBaseAdapter extends Adapter {
539
539
  step_existed AS (
540
540
  SELECT EXISTS(
541
541
  SELECT 1 FROM ${this.tables.jobStepsTable} s
542
- WHERE s.job_id = ${jobId} AND s.name = ${name}
542
+ WHERE s.job_id = ${jobId}
543
+ AND s.name = ${name}
544
+ AND s.parent_step_id IS NOT DISTINCT FROM ${parentStepId}
543
545
  ) AS existed
544
546
  ),
545
547
  upserted_step AS (
@@ -569,7 +571,7 @@ export class PostgresBaseAdapter extends Adapter {
569
571
  0,
570
572
  NULL
571
573
  WHERE EXISTS (SELECT 1 FROM job_check)
572
- ON CONFLICT (job_id, name) DO UPDATE
574
+ ON CONFLICT (job_id, name, parent_step_id) DO UPDATE
573
575
  SET
574
576
  timeout_ms = ${timeoutMs},
575
577
  expires_at = now() + interval '${sql.raw(timeoutMs.toString())} milliseconds',
@@ -609,6 +611,7 @@ export class PostgresBaseAdapter extends Adapter {
609
611
  INNER JOIN job_check jc ON s.job_id = jc.id
610
612
  WHERE s.job_id = ${jobId}
611
613
  AND s.name = ${name}
614
+ AND s.parent_step_id IS NOT DISTINCT FROM ${parentStepId}
612
615
  AND NOT EXISTS (SELECT 1 FROM final_upserted)
613
616
  )
614
617
  SELECT * FROM final_upserted
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/schema.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA4Eb,IAAI;uBAAS,iBAAiB;2BAAa,MAAM;;;;;;8BAAjD,IAAI;2BAAS,iBAAiB;+BAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwE1F"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/schema.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA4Eb,IAAI;uBAAS,iBAAiB;2BAAa,MAAM;;;;;;8BAAjD,IAAI;2BAAS,iBAAiB;+BAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2E1F"}
@@ -79,7 +79,9 @@ export default function createSchema(schemaName) {
79
79
  index('idx_job_steps_job_status').on(table.job_id, table.status),
80
80
  index('idx_job_steps_job_name').on(table.job_id, table.name),
81
81
  index('idx_job_steps_output_fts').using('gin', sql `to_tsvector('english', ${table.output}::text)`),
82
- unique('unique_job_step_name').on(table.job_id, table.name),
82
+ unique('unique_job_step_name_parent')
83
+ .on(table.job_id, table.name, table.parent_step_id)
84
+ .nullsNotDistinct(),
83
85
  check('job_steps_status_check', sql `${table.status} IN ${sql.raw(`(${STEP_STATUSES.map((s) => `'${s}'`).join(',')})`)}`),
84
86
  ]);
85
87
  const metricsTable = schema.table('metrics', {
package/dist/client.d.ts CHANGED
@@ -3,7 +3,27 @@ import * as z from 'zod';
3
3
  import type { Action } from './action.js';
4
4
  import type { Adapter, GetActionsResult, GetJobStepsOptions, GetJobStepsResult, GetJobsOptions, GetJobsResult, GetMetricsOptions, GetMetricsResult, Job, JobStep } from './adapters/adapter.js';
5
5
  import type { JobStatusResult, JobStepStatusResult } from './adapters/schemas.js';
6
+ import { type JobStatus } from './constants.js';
6
7
  import { type TelemetryAdapter } from './telemetry/index.js';
8
+ type InferActionSchema<T> = T extends z.ZodTypeAny ? z.infer<T> : Record<string, unknown>;
9
+ export interface JobResult {
10
+ jobId: string;
11
+ actionName: string;
12
+ status: JobStatus;
13
+ groupKey: string;
14
+ input: unknown;
15
+ output: unknown;
16
+ error: Job['error'];
17
+ }
18
+ export interface TypedJobResult<TAction extends Action<any, any, any>> {
19
+ jobId: string;
20
+ actionName: string;
21
+ status: JobStatus;
22
+ groupKey: string;
23
+ input: InferActionSchema<NonNullable<TAction['input']>>;
24
+ output: InferActionSchema<NonNullable<TAction['output']>>;
25
+ error: Job['error'];
26
+ }
7
27
  declare const BaseOptionsSchema: z.ZodObject<{
8
28
  id: z.ZodOptional<z.ZodString>;
9
29
  syncPattern: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"pull">, z.ZodLiteral<"push">, z.ZodLiteral<"hybrid">, z.ZodLiteral<false>]>>;
@@ -48,6 +68,10 @@ export declare class Client<TActions extends Record<string, Action<any, any, TVa
48
68
  id?: string | undefined;
49
69
  };
50
70
  runAction<TActionName extends keyof TActions>(actionName: TActionName, input?: NonNullable<TActions[TActionName]['input']> extends z.ZodObject ? z.input<NonNullable<TActions[TActionName]['input']>> : never): Promise<string>;
71
+ runActionAndWait<TActionName extends keyof TActions>(actionName: TActionName, input?: NonNullable<TActions[TActionName]['input']> extends z.ZodObject ? z.input<NonNullable<TActions[TActionName]['input']>> : never, options?: {
72
+ signal?: AbortSignal;
73
+ timeout?: number;
74
+ }): Promise<TypedJobResult<TActions[TActionName]>>;
51
75
  fetch(options: FetchOptions): Promise<{
52
76
  id: string;
53
77
  actionName: string;
@@ -79,7 +103,7 @@ export declare class Client<TActions extends Record<string, Action<any, any, TVa
79
103
  waitForJob(jobId: string, options?: {
80
104
  timeout?: number;
81
105
  signal?: AbortSignal;
82
- }): Promise<Job | null>;
106
+ }): Promise<JobResult | null>;
83
107
  getActions(): Promise<GetActionsResult>;
84
108
  getMetrics(options: GetMetricsOptions): Promise<GetMetricsResult>;
85
109
  getActionsMetadata(): Promise<Array<{
@@ -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
@@ -117,6 +117,87 @@ export class Client {
117
117
  this.#logger.debug({ jobId, actionName: String(actionName), groupKey }, '[Duron] Action sent/created');
118
118
  return jobId;
119
119
  }
120
+ async runActionAndWait(actionName, input, options) {
121
+ if (options?.signal?.aborted) {
122
+ throw new Error('Operation was aborted');
123
+ }
124
+ const jobId = await this.runAction(actionName, input);
125
+ let abortHandler;
126
+ if (options?.signal) {
127
+ abortHandler = () => {
128
+ this.cancelJob(jobId).catch((err) => {
129
+ this.#logger.error({ err, jobId }, '[Duron] Error cancelling job on abort');
130
+ });
131
+ };
132
+ options.signal.addEventListener('abort', abortHandler, { once: true });
133
+ }
134
+ let timeoutId;
135
+ let timeoutAbortController;
136
+ if (options?.timeout) {
137
+ timeoutAbortController = new AbortController();
138
+ timeoutId = setTimeout(() => {
139
+ timeoutAbortController.abort();
140
+ this.cancelJob(jobId).catch((err) => {
141
+ this.#logger.error({ err, jobId }, '[Duron] Error cancelling job on timeout');
142
+ });
143
+ }, options.timeout);
144
+ }
145
+ try {
146
+ let waitSignal;
147
+ if (options?.signal && timeoutAbortController) {
148
+ waitSignal = AbortSignal.any([options.signal, timeoutAbortController.signal]);
149
+ }
150
+ else if (options?.signal) {
151
+ waitSignal = options.signal;
152
+ }
153
+ else if (timeoutAbortController) {
154
+ waitSignal = timeoutAbortController.signal;
155
+ }
156
+ const job = await this.waitForJob(jobId, { signal: waitSignal });
157
+ if (timeoutId) {
158
+ clearTimeout(timeoutId);
159
+ }
160
+ if (options?.signal && abortHandler) {
161
+ options.signal.removeEventListener('abort', abortHandler);
162
+ }
163
+ if (!job) {
164
+ if (options?.signal?.aborted) {
165
+ throw new Error('Operation was aborted');
166
+ }
167
+ if (timeoutAbortController?.signal.aborted) {
168
+ throw new Error('Operation timed out');
169
+ }
170
+ throw new Error('Job not found');
171
+ }
172
+ if (job.status === JOB_STATUS_CANCELLED) {
173
+ if (options?.signal?.aborted) {
174
+ throw new Error('Operation was aborted');
175
+ }
176
+ if (timeoutAbortController?.signal.aborted) {
177
+ throw new Error('Operation timed out');
178
+ }
179
+ throw new Error('Job was cancelled');
180
+ }
181
+ if (job.status === JOB_STATUS_FAILED) {
182
+ const errorMessage = job.error?.message ?? 'Job failed';
183
+ const error = new Error(errorMessage);
184
+ if (job.error?.stack) {
185
+ error.stack = job.error.stack;
186
+ }
187
+ throw error;
188
+ }
189
+ return job;
190
+ }
191
+ catch (err) {
192
+ if (timeoutId) {
193
+ clearTimeout(timeoutId);
194
+ }
195
+ if (options?.signal && abortHandler) {
196
+ options.signal.removeEventListener('abort', abortHandler);
197
+ }
198
+ throw err;
199
+ }
200
+ }
120
201
  async fetch(options) {
121
202
  await this.start();
122
203
  if (!this.#actions) {
@@ -194,7 +275,15 @@ export class Client {
194
275
  if (!job) {
195
276
  return null;
196
277
  }
197
- return job;
278
+ return {
279
+ jobId: job.id,
280
+ actionName: job.actionName,
281
+ status: job.status,
282
+ groupKey: job.groupKey,
283
+ input: job.input,
284
+ output: job.output,
285
+ error: job.error,
286
+ };
198
287
  }
199
288
  }
200
289
  this.#setupJobStatusListener();
@@ -347,6 +436,17 @@ export class Client {
347
436
  return;
348
437
  }
349
438
  const job = await this.getJobById(event.jobId);
439
+ const result = job
440
+ ? {
441
+ jobId: job.id,
442
+ actionName: job.actionName,
443
+ status: job.status,
444
+ groupKey: job.groupKey,
445
+ input: job.input,
446
+ output: job.output,
447
+ error: job.error,
448
+ }
449
+ : null;
350
450
  const waitsToResolve = Array.from(pendingWaits);
351
451
  this.#pendingJobWaits.delete(event.jobId);
352
452
  for (const wait of waitsToResolve) {
@@ -356,7 +456,7 @@ export class Client {
356
456
  if (wait.signal && wait.abortHandler) {
357
457
  wait.signal.removeEventListener('abort', wait.abortHandler);
358
458
  }
359
- wait.resolve(job);
459
+ wait.resolve(result);
360
460
  }
361
461
  });
362
462
  }
package/dist/errors.d.ts CHANGED
@@ -1,33 +1,73 @@
1
+ export declare const ERROR_CODES: {
2
+ readonly DURON_ERROR: "DURON_ERROR";
3
+ readonly STEP_ALREADY_EXECUTED: "STEP_ALREADY_EXECUTED";
4
+ readonly NON_RETRIABLE: "NON_RETRIABLE";
5
+ readonly ACTION_TIMEOUT: "ACTION_TIMEOUT";
6
+ readonly STEP_TIMEOUT: "STEP_TIMEOUT";
7
+ readonly ACTION_CANCEL: "ACTION_CANCEL";
8
+ readonly UNHANDLED_CHILD_STEPS: "UNHANDLED_CHILD_STEPS";
9
+ };
10
+ export type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];
11
+ export interface ErrorMetadata {
12
+ jobId?: string;
13
+ stepId?: string;
14
+ parentStepId?: string | null;
15
+ actionName?: string;
16
+ stepName?: string;
17
+ }
1
18
  export declare abstract class DuronError extends Error {
19
+ readonly code: ErrorCode;
20
+ readonly nonRetriable: boolean;
2
21
  readonly cause?: unknown;
22
+ metadata: ErrorMetadata;
3
23
  constructor(message: string, options?: {
4
24
  cause?: unknown;
25
+ metadata?: ErrorMetadata;
5
26
  });
27
+ setMetadata(metadata: ErrorMetadata): this;
6
28
  }
7
29
  export declare class StepAlreadyExecutedError extends DuronError {
30
+ readonly code: "STEP_ALREADY_EXECUTED";
31
+ readonly nonRetriable = true;
8
32
  constructor(stepName: string, jobId: string, actionName: string);
9
33
  }
10
34
  export declare class NonRetriableError extends DuronError {
35
+ readonly code: ErrorCode;
36
+ readonly nonRetriable = true;
11
37
  }
12
38
  export declare class ActionTimeoutError extends DuronError {
13
- constructor(actionName: string, timeoutMs: number, options?: {
39
+ readonly code: "ACTION_TIMEOUT";
40
+ readonly nonRetriable = true;
41
+ constructor(actionName: string, jobId: string, timeoutMs: number, options?: {
14
42
  cause?: unknown;
15
43
  });
16
44
  }
17
45
  export declare class StepTimeoutError extends DuronError {
46
+ readonly code: "STEP_TIMEOUT";
47
+ readonly nonRetriable = false;
18
48
  constructor(stepName: string, jobId: string, timeoutMs: number, options?: {
19
49
  cause?: unknown;
50
+ stepId?: string;
51
+ parentStepId?: string | null;
52
+ actionName?: string;
20
53
  });
21
54
  }
22
55
  export declare class ActionCancelError extends DuronError {
56
+ readonly code: "ACTION_CANCEL";
57
+ readonly nonRetriable = true;
23
58
  constructor(actionName: string, jobId: string, options?: {
24
59
  cause?: unknown;
25
60
  });
26
61
  }
27
62
  export declare class UnhandledChildStepsError extends NonRetriableError {
28
- readonly stepName: string;
63
+ readonly code: "UNHANDLED_CHILD_STEPS";
29
64
  readonly pendingCount: number;
30
- constructor(stepName: string, pendingCount: number);
65
+ constructor(stepName: string, pendingCount: number, options?: {
66
+ stepId?: string;
67
+ parentStepId?: string | null;
68
+ jobId?: string;
69
+ actionName?: string;
70
+ });
31
71
  }
32
72
  export declare function isDuronError(error: unknown): error is DuronError;
33
73
  export declare function isNonRetriableError(error: unknown): error is NonRetriableError;
@@ -37,13 +77,11 @@ export declare function isCancelError(error: unknown): error is ActionCancelErro
37
77
  export type SerializableError = {
38
78
  name: string;
39
79
  message: string;
80
+ code?: ErrorCode;
81
+ nonRetriable?: boolean;
82
+ metadata?: ErrorMetadata;
40
83
  cause?: unknown;
41
84
  stack?: string;
42
85
  };
43
- export declare function serializeError(error: unknown): {
44
- name: string;
45
- message: string;
46
- cause?: unknown;
47
- stack?: string;
48
- };
86
+ export declare function serializeError(error: unknown): SerializableError;
49
87
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,8BAAsB,UAAW,SAAQ,KAAK;IAM5C,SAAyB,KAAK,CAAC,EAAE,OAAO,CAAA;gBAGtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAMR,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB;CAWJ;AAKD,qBAAa,wBAAyB,SAAQ,UAAU;gBAQ1C,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAGhE;AAQD,qBAAa,iBAAkB,SAAQ,UAAU;CAEhD;AAKD,qBAAa,kBAAmB,SAAQ,UAAU;gBAS9C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB;CAIJ;AAKD,qBAAa,gBAAiB,SAAQ,UAAU;gBAU5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB;CAIJ;AAKD,qBAAa,iBAAkB,SAAQ,UAAU;gBAS7C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB;CAIJ;AAQD,qBAAa,wBAAyB,SAAQ,iBAAiB;IAI7D,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAKhC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAQxB,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAOnD;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAO9E;AAKD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAE5F;AAKD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,GAAG,gBAAgB,CAE7F;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAExE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAgCA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.js CHANGED
@@ -1,76 +1,135 @@
1
+ export const ERROR_CODES = {
2
+ DURON_ERROR: 'DURON_ERROR',
3
+ STEP_ALREADY_EXECUTED: 'STEP_ALREADY_EXECUTED',
4
+ NON_RETRIABLE: 'NON_RETRIABLE',
5
+ ACTION_TIMEOUT: 'ACTION_TIMEOUT',
6
+ STEP_TIMEOUT: 'STEP_TIMEOUT',
7
+ ACTION_CANCEL: 'ACTION_CANCEL',
8
+ UNHANDLED_CHILD_STEPS: 'UNHANDLED_CHILD_STEPS',
9
+ };
1
10
  export class DuronError extends Error {
11
+ code = ERROR_CODES.DURON_ERROR;
12
+ nonRetriable = false;
2
13
  cause;
14
+ metadata;
3
15
  constructor(message, options) {
4
16
  super(message);
5
17
  this.cause = options?.cause;
18
+ this.metadata = options?.metadata ?? {};
6
19
  this.name = this.constructor.name;
7
20
  if (Error.captureStackTrace) {
8
21
  Error.captureStackTrace(this, this.constructor);
9
22
  }
10
23
  }
24
+ setMetadata(metadata) {
25
+ this.metadata = { ...this.metadata, ...metadata };
26
+ return this;
27
+ }
11
28
  }
12
29
  export class StepAlreadyExecutedError extends DuronError {
30
+ code = ERROR_CODES.STEP_ALREADY_EXECUTED;
31
+ nonRetriable = true;
13
32
  constructor(stepName, jobId, actionName) {
14
- super(`Step "${stepName}" has already been executed for job "${jobId}" and action "${actionName}"`);
33
+ super(`Step "${stepName}" has already been executed for job "${jobId}" and action "${actionName}"`, {
34
+ metadata: { stepName, jobId, actionName },
35
+ });
15
36
  }
16
37
  }
17
38
  export class NonRetriableError extends DuronError {
39
+ code = ERROR_CODES.NON_RETRIABLE;
40
+ nonRetriable = true;
18
41
  }
19
42
  export class ActionTimeoutError extends DuronError {
20
- constructor(actionName, timeoutMs, options) {
21
- super(`Action "${actionName}" timed out after ${timeoutMs}ms`, options);
43
+ code = ERROR_CODES.ACTION_TIMEOUT;
44
+ nonRetriable = true;
45
+ constructor(actionName, jobId, timeoutMs, options) {
46
+ super(`Action "${actionName}" in job "${jobId}" timed out after ${timeoutMs}ms`, {
47
+ cause: options?.cause,
48
+ metadata: { actionName, jobId },
49
+ });
22
50
  }
23
51
  }
24
52
  export class StepTimeoutError extends DuronError {
53
+ code = ERROR_CODES.STEP_TIMEOUT;
54
+ nonRetriable = false;
25
55
  constructor(stepName, jobId, timeoutMs, options) {
26
- super(`Step "${stepName}" in job "${jobId}" timed out after ${timeoutMs}ms`, options);
56
+ super(`Step "${stepName}" in job "${jobId}" timed out after ${timeoutMs}ms`, {
57
+ cause: options?.cause,
58
+ metadata: {
59
+ stepName,
60
+ jobId,
61
+ stepId: options?.stepId,
62
+ parentStepId: options?.parentStepId,
63
+ actionName: options?.actionName,
64
+ },
65
+ });
27
66
  }
28
67
  }
29
68
  export class ActionCancelError extends DuronError {
69
+ code = ERROR_CODES.ACTION_CANCEL;
70
+ nonRetriable = true;
30
71
  constructor(actionName, jobId, options) {
31
- super(`Action "${actionName}" in job "${jobId}" was cancelled`, options);
72
+ super(`Action "${actionName}" in job "${jobId}" was cancelled`, {
73
+ cause: options?.cause,
74
+ metadata: { actionName, jobId },
75
+ });
32
76
  }
33
77
  }
34
78
  export class UnhandledChildStepsError extends NonRetriableError {
35
- stepName;
79
+ code = ERROR_CODES.UNHANDLED_CHILD_STEPS;
36
80
  pendingCount;
37
- constructor(stepName, pendingCount) {
38
- super(`Parent step "${stepName}" completed with ${pendingCount} unhandled child step(s). All child steps must be awaited before the parent returns.`);
39
- this.stepName = stepName;
81
+ constructor(stepName, pendingCount, options) {
82
+ super(`Parent step "${stepName}" completed with ${pendingCount} unhandled child step(s). All child steps must be awaited before the parent returns.`, {
83
+ metadata: {
84
+ stepName,
85
+ stepId: options?.stepId,
86
+ parentStepId: options?.parentStepId,
87
+ jobId: options?.jobId,
88
+ actionName: options?.actionName,
89
+ },
90
+ });
40
91
  this.pendingCount = pendingCount;
41
92
  }
42
93
  }
43
94
  export function isDuronError(error) {
44
- return error instanceof DuronError;
95
+ const code = error?.code;
96
+ return code !== undefined && Object.values(ERROR_CODES).includes(code);
45
97
  }
46
98
  export function isNonRetriableError(error) {
47
- return (error instanceof NonRetriableError ||
48
- error instanceof ActionCancelError ||
49
- error instanceof ActionTimeoutError ||
50
- error instanceof UnhandledChildStepsError);
99
+ return error?.nonRetriable === true;
51
100
  }
52
101
  export function isUnhandledChildStepsError(error) {
53
- return error instanceof UnhandledChildStepsError;
102
+ return error?.code === ERROR_CODES.UNHANDLED_CHILD_STEPS;
54
103
  }
55
104
  export function isTimeoutError(error) {
56
- return error instanceof ActionTimeoutError || error instanceof StepTimeoutError;
105
+ const code = error?.code;
106
+ return code === ERROR_CODES.ACTION_TIMEOUT || code === ERROR_CODES.STEP_TIMEOUT;
57
107
  }
58
108
  export function isCancelError(error) {
59
- return error instanceof ActionCancelError;
109
+ return error?.code === ERROR_CODES.ACTION_CANCEL;
60
110
  }
61
111
  export function serializeError(error) {
62
- if (error instanceof StepTimeoutError || error instanceof ActionTimeoutError) {
112
+ const code = error?.code;
113
+ const nonRetriable = error?.nonRetriable;
114
+ const metadata = error?.metadata;
115
+ if (isTimeoutError(error)) {
63
116
  return {
64
117
  name: error.name,
65
118
  message: error.message,
119
+ code,
120
+ nonRetriable,
121
+ metadata,
66
122
  cause: error.cause,
67
123
  stack: undefined,
68
124
  };
69
125
  }
70
- if (error instanceof DuronError) {
126
+ if (isDuronError(error)) {
71
127
  return {
72
128
  name: error.name,
73
129
  message: error.message,
130
+ code,
131
+ nonRetriable,
132
+ metadata,
74
133
  cause: error.cause,
75
134
  stack: error.stack,
76
135
  };
@@ -40,6 +40,7 @@ export declare class StepManager {
40
40
  #private;
41
41
  constructor(options: StepManagerOptions);
42
42
  setJobSpan(span: Span): void;
43
+ setRunFnFactory(factory: (parentStepId: string | null, abortSignal: AbortSignal) => StepHandlerContext['run']): void;
43
44
  createActionContext<TInput extends z.ZodObject, TOutput extends z.ZodObject, TVariables = Record<string, unknown>>(job: {
44
45
  id: string;
45
46
  input: z.infer<TInput>;