@cadenza.io/core 3.8.0 → 3.9.0

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.
package/dist/index.d.mts CHANGED
@@ -441,11 +441,15 @@ declare class Task extends SignalEmitter implements Graph {
441
441
  * @param context - The GraphContext to validate and execute.
442
442
  * @param emit
443
443
  * @param progressCallback - Callback for progress updates.
444
+ * @param nodeData
444
445
  * @returns TaskResult from the taskFunction or error object on validation failure.
445
446
  * @edge If validateInputContext is true, validates context; on failure, emits 'meta.task.validationFailed' with detailed errors.
446
447
  * @edge If validateOutputContext is true, validates output; on failure, emits 'meta.task.outputValidationFailed' with detailed errors.
447
448
  */
448
- execute(context: GraphContext, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void): TaskResult;
449
+ execute(context: GraphContext, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void, nodeData: {
450
+ nodeId: string;
451
+ routineExecId: string;
452
+ }): TaskResult;
449
453
  doAfter(...tasks: Task[]): this;
450
454
  then(...tasks: Task[]): this;
451
455
  decouple(task: Task): void;
@@ -779,7 +783,10 @@ declare class EphemeralTask extends Task {
779
783
  readonly condition: (context: any) => boolean;
780
784
  readonly isEphemeral: boolean;
781
785
  constructor(name: string, task: TaskFunction, description?: string, once?: boolean, condition?: (context: any) => boolean, concurrency?: number, timeout?: number, register?: boolean, isUnique?: boolean, isMeta?: boolean, isSubMeta?: boolean, isHidden?: boolean, getTagCallback?: ThrottleTagGetter | undefined, inputSchema?: SchemaDefinition | undefined, validateInputContext?: boolean, outputSchema?: SchemaDefinition | undefined, validateOutputContext?: boolean, retryCount?: number, retryDelay?: number, retryDelayMax?: number, retryDelayFactor?: number);
782
- execute(context: any, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void): TaskResult;
786
+ execute(context: any, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void, nodeData: {
787
+ nodeId: string;
788
+ routineExecId: string;
789
+ }): TaskResult;
783
790
  }
784
791
 
785
792
  declare class GraphAsyncRun extends GraphRunStrategy {
package/dist/index.d.ts CHANGED
@@ -441,11 +441,15 @@ declare class Task extends SignalEmitter implements Graph {
441
441
  * @param context - The GraphContext to validate and execute.
442
442
  * @param emit
443
443
  * @param progressCallback - Callback for progress updates.
444
+ * @param nodeData
444
445
  * @returns TaskResult from the taskFunction or error object on validation failure.
445
446
  * @edge If validateInputContext is true, validates context; on failure, emits 'meta.task.validationFailed' with detailed errors.
446
447
  * @edge If validateOutputContext is true, validates output; on failure, emits 'meta.task.outputValidationFailed' with detailed errors.
447
448
  */
448
- execute(context: GraphContext, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void): TaskResult;
449
+ execute(context: GraphContext, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void, nodeData: {
450
+ nodeId: string;
451
+ routineExecId: string;
452
+ }): TaskResult;
449
453
  doAfter(...tasks: Task[]): this;
450
454
  then(...tasks: Task[]): this;
451
455
  decouple(task: Task): void;
@@ -779,7 +783,10 @@ declare class EphemeralTask extends Task {
779
783
  readonly condition: (context: any) => boolean;
780
784
  readonly isEphemeral: boolean;
781
785
  constructor(name: string, task: TaskFunction, description?: string, once?: boolean, condition?: (context: any) => boolean, concurrency?: number, timeout?: number, register?: boolean, isUnique?: boolean, isMeta?: boolean, isSubMeta?: boolean, isHidden?: boolean, getTagCallback?: ThrottleTagGetter | undefined, inputSchema?: SchemaDefinition | undefined, validateInputContext?: boolean, outputSchema?: SchemaDefinition | undefined, validateOutputContext?: boolean, retryCount?: number, retryDelay?: number, retryDelayMax?: number, retryDelayFactor?: number);
782
- execute(context: any, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void): TaskResult;
786
+ execute(context: any, emit: (signal: string, context: AnyObject) => void, progressCallback: (progress: number) => void, nodeData: {
787
+ nodeId: string;
788
+ routineExecId: string;
789
+ }): TaskResult;
783
790
  }
784
791
 
785
792
  declare class GraphAsyncRun extends GraphRunStrategy {
package/dist/index.js CHANGED
@@ -256,10 +256,25 @@ var SignalBroker = class _SignalBroker {
256
256
  }
257
257
  executeListener(signal, context) {
258
258
  const obs = this.signalObservers.get(signal);
259
+ if (!obs || obs.tasks.size === 0) {
260
+ return false;
261
+ }
259
262
  const isMeta = signal.startsWith("meta");
260
- const runner = isMeta ? this.metaRunner : this.runner;
261
- if (obs && obs.tasks.size && runner) {
262
- obs.fn(runner, Array.from(obs.tasks), context);
263
+ if (!isMeta) {
264
+ const tasks = [];
265
+ const metaTasks = [];
266
+ obs.tasks.forEach(
267
+ (task) => task.isMeta ? metaTasks.push(task) : tasks.push(task)
268
+ );
269
+ if (tasks.length && this.runner) {
270
+ obs.fn(this.runner, tasks, context);
271
+ }
272
+ if (metaTasks.length && this.metaRunner) {
273
+ obs.fn(this.metaRunner, metaTasks, context);
274
+ }
275
+ return true;
276
+ } else if (this.metaRunner) {
277
+ obs.fn(this.metaRunner, Array.from(obs.tasks), context);
263
278
  return true;
264
279
  }
265
280
  return false;
@@ -838,6 +853,23 @@ var GraphNode = class _GraphNode extends SignalEmitter {
838
853
  }
839
854
  });
840
855
  });
856
+ if (context.__previousTaskExecutionId) {
857
+ this.emitMetricsWithMetadata(
858
+ "meta.node.detected_previous_task_execution",
859
+ {
860
+ data: {
861
+ taskExecutionId: this.id,
862
+ previousTaskExecutionId: context.__previousTaskExecutionId
863
+ },
864
+ filter: {
865
+ taskName: this.task.name,
866
+ taskVersion: this.task.version
867
+ },
868
+ ...context
869
+ }
870
+ );
871
+ context.__previousTaskExecutionId = null;
872
+ }
841
873
  if (context.__signalEmission?.consumed === false && (!this.isMeta() || this.debug)) {
842
874
  this.emitMetricsWithMetadata("meta.node.consumed_signal", {
843
875
  data: {
@@ -983,7 +1015,8 @@ var GraphNode = class _GraphNode extends SignalEmitter {
983
1015
  const result = this.task.execute(
984
1016
  this.context,
985
1017
  this.emitWithMetadata.bind(this),
986
- this.onProgress.bind(this)
1018
+ this.onProgress.bind(this),
1019
+ { nodeId: this.id, routineExecId: this.routineExecId }
987
1020
  );
988
1021
  if (result?.errored || result?.failed) {
989
1022
  return this.retry(result);
@@ -1839,11 +1872,12 @@ var Task = class extends SignalEmitter {
1839
1872
  * @param context - The GraphContext to validate and execute.
1840
1873
  * @param emit
1841
1874
  * @param progressCallback - Callback for progress updates.
1875
+ * @param nodeData
1842
1876
  * @returns TaskResult from the taskFunction or error object on validation failure.
1843
1877
  * @edge If validateInputContext is true, validates context; on failure, emits 'meta.task.validationFailed' with detailed errors.
1844
1878
  * @edge If validateOutputContext is true, validates output; on failure, emits 'meta.task.outputValidationFailed' with detailed errors.
1845
1879
  */
1846
- execute(context, emit, progressCallback) {
1880
+ execute(context, emit, progressCallback, nodeData) {
1847
1881
  return this.taskFunction(
1848
1882
  this.isMeta ? context.getClonedFullContext() : context.getClonedContext(),
1849
1883
  emit,
@@ -2661,8 +2695,8 @@ var EphemeralTask = class extends Task {
2661
2695
  this.once = once;
2662
2696
  this.condition = condition;
2663
2697
  }
2664
- execute(context, emit, progressCallback) {
2665
- const result = super.execute(context, emit, progressCallback);
2698
+ execute(context, emit, progressCallback, nodeData) {
2699
+ const result = super.execute(context, emit, progressCallback, nodeData);
2666
2700
  if (this.once || this.condition(result)) {
2667
2701
  this.destroy();
2668
2702
  }