@openfn/ws-worker 0.6.0 → 0.7.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ws-worker
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 39af8e1: Ensure that we refer to the child of a 'run' (aka attempt) as a 'step'
8
+
3
9
  ## 0.6.0
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -73,7 +73,7 @@ type AttemptOptions = {
73
73
 
74
74
  // Internal server state for each attempt
75
75
  type AttemptState = {
76
- activeRun?: string;
76
+ activeStep?: string;
77
77
  activeJob?: string;
78
78
  plan: ExecutionPlan;
79
79
  options: AttemptOptions;
@@ -142,27 +142,27 @@ declare type AttemptLogPayload = {
142
142
  level?: string;
143
143
  source?: string;
144
144
  job_id?: string;
145
- run_id?: string;
145
+ step_id?: string;
146
146
  };
147
147
  declare type AttemptLogReply = void;
148
- declare const RUN_START = "run:start";
149
- declare type RunStartPayload = {
148
+ declare const STEP_START = "step:start";
149
+ declare type StepStartPayload = {
150
150
  job_id: string;
151
- run_id: string;
151
+ step_id: string;
152
152
  attempt_id?: string;
153
153
  input_dataclip_id?: string;
154
154
  versions: Record<string, string>;
155
155
  };
156
- declare type RunStartReply = void;
157
- declare const RUN_COMPLETE = "run:complete";
158
- declare type RunCompletePayload = ExitReason & {
156
+ declare type StepStartReply = void;
157
+ declare const STEP_COMPLETE = "step:complete";
158
+ declare type StepCompletePayload = ExitReason & {
159
159
  attempt_id?: string;
160
160
  job_id: string;
161
- run_id: string;
161
+ step_id: string;
162
162
  output_dataclip?: string;
163
163
  output_dataclip_id?: string;
164
164
  };
165
- declare type RunCompleteReply = void;
165
+ declare type StepCompleteReply = void;
166
166
  declare const INTERNAL_ATTEMPT_COMPLETE = "server:attempt-complete";
167
167
 
168
168
  declare type Context = {
@@ -200,4 +200,4 @@ interface ServerApp extends Koa {
200
200
  }
201
201
  declare function createServer(engine: RuntimeEngine, options?: ServerOptions): ServerApp;
202
202
 
203
- export { ATTEMPT_COMPLETE, ATTEMPT_LOG, ATTEMPT_START, AttemptCompletePayload, AttemptCompleteReply, AttemptLogPayload, AttemptLogReply, AttemptStartPayload, AttemptStartReply, CLAIM, ClaimAttempt, ClaimPayload, ClaimReply, GET_ATTEMPT, GET_CREDENTIAL, GET_DATACLIP, GetAttemptPayload, GetAttemptReply, GetCredentialPayload, GetCredentialReply, GetDataClipReply, GetDataclipPayload, INTERNAL_ATTEMPT_COMPLETE, RUN_COMPLETE, RUN_START, RunCompletePayload, RunCompleteReply, RunStartPayload, RunStartReply, createServer as default };
203
+ export { ATTEMPT_COMPLETE, ATTEMPT_LOG, ATTEMPT_START, AttemptCompletePayload, AttemptCompleteReply, AttemptLogPayload, AttemptLogReply, AttemptStartPayload, AttemptStartReply, CLAIM, ClaimAttempt, ClaimPayload, ClaimReply, GET_ATTEMPT, GET_CREDENTIAL, GET_DATACLIP, GetAttemptPayload, GetAttemptReply, GetCredentialPayload, GetCredentialReply, GetDataClipReply, GetDataclipPayload, INTERNAL_ATTEMPT_COMPLETE, STEP_COMPLETE, STEP_START, StepCompletePayload, StepCompleteReply, StepStartPayload, StepStartReply, createServer as default };
package/dist/index.js CHANGED
@@ -15,8 +15,8 @@ var GET_DATACLIP = "fetch:dataclip";
15
15
  var ATTEMPT_START = "attempt:start";
16
16
  var ATTEMPT_COMPLETE = "attempt:complete";
17
17
  var ATTEMPT_LOG = "attempt:log";
18
- var RUN_START = "run:start";
19
- var RUN_COMPLETE = "run:complete";
18
+ var STEP_START = "step:start";
19
+ var STEP_COMPLETE = "step:complete";
20
20
  var INTERNAL_ATTEMPT_COMPLETE = "server:attempt-complete";
21
21
 
22
22
  // src/api/destroy.ts
@@ -306,7 +306,7 @@ var create_attempt_state_default = (plan, options = {}) => {
306
306
  return state;
307
307
  };
308
308
 
309
- // src/events/run-complete.ts
309
+ // src/events/step-complete.ts
310
310
  import crypto2 from "node:crypto";
311
311
 
312
312
  // src/api/reasons.ts
@@ -342,17 +342,17 @@ var calculateAttemptExitReason = (state) => {
342
342
  return { reason: "success", error_type: null, error_message: null };
343
343
  };
344
344
 
345
- // src/events/run-complete.ts
346
- function onRunComplete({ channel, state }, event, error) {
345
+ // src/events/step-complete.ts
346
+ function onStepComplete({ channel, state }, event, error) {
347
347
  const dataclipId = crypto2.randomUUID();
348
- const run_id = state.activeRun;
348
+ const step_id = state.activeStep;
349
349
  const job_id = state.activeJob;
350
350
  if (!state.dataclips) {
351
351
  state.dataclips = {};
352
352
  }
353
353
  const outputState = event.state || {};
354
354
  state.dataclips[dataclipId] = event.state;
355
- delete state.activeRun;
355
+ delete state.activeStep;
356
356
  delete state.activeJob;
357
357
  state.lastDataclipId = dataclipId;
358
358
  event.next?.forEach((nextJobId) => {
@@ -365,7 +365,7 @@ function onRunComplete({ channel, state }, event, error) {
365
365
  );
366
366
  state.reasons[job_id] = { reason, error_message, error_type };
367
367
  const evt = {
368
- run_id,
368
+ step_id,
369
369
  job_id,
370
370
  output_dataclip_id: dataclipId,
371
371
  output_dataclip: stringify_default(outputState),
@@ -376,17 +376,17 @@ function onRunComplete({ channel, state }, event, error) {
376
376
  duration: event.duration,
377
377
  thread_id: event.threadId
378
378
  };
379
- return sendEvent(channel, RUN_COMPLETE, evt);
379
+ return sendEvent(channel, STEP_COMPLETE, evt);
380
380
  }
381
381
 
382
- // src/events/run-start.ts
382
+ // src/events/step-start.ts
383
383
  import crypto3 from "node:crypto";
384
384
  import { timestamp } from "@openfn/logger";
385
385
 
386
386
  // package.json
387
387
  var package_default = {
388
388
  name: "@openfn/ws-worker",
389
- version: "0.6.0",
389
+ version: "0.7.0",
390
390
  description: "A Websocket Worker to connect Lightning to a Runtime Engine",
391
391
  main: "dist/index.js",
392
392
  type: "module",
@@ -449,14 +449,14 @@ var package_default = {
449
449
  // src/util/versions.ts
450
450
  import { mainSymbols } from "figures";
451
451
  var { triangleRightSmall: t } = mainSymbols;
452
- var versions_default = (runId, versions, adaptor) => {
452
+ var versions_default = (stepId, versions, adaptor) => {
453
453
  let longest = "compiler".length;
454
454
  for (const v in versions) {
455
455
  longest = Math.max(v.length, longest);
456
456
  }
457
457
  const { node, compiler, engine, worker, runtime, ...adaptors } = versions;
458
458
  const prefix = (str2) => ` ${t} ${str2.padEnd(longest + 4, " ")}`;
459
- let str = `Versions for run ${runId}:
459
+ let str = `Versions for step ${stepId}:
460
460
  ${prefix("node.js")}${versions.node || "unknown"}
461
461
  ${prefix("worker")}${versions.worker || "unknown"}
462
462
  ${prefix("engine")}${versions.engine || "unknown"}`;
@@ -470,11 +470,11 @@ ${prefix("engine")}${versions.engine || "unknown"}`;
470
470
  return str;
471
471
  };
472
472
 
473
- // src/events/run-start.ts
474
- async function onRunStart(context, event) {
473
+ // src/events/step-start.ts
474
+ async function onStepStart(context, event) {
475
475
  const time = (timestamp() - BigInt(1e7)).toString();
476
476
  const { channel, state } = context;
477
- state.activeRun = crypto3.randomUUID();
477
+ state.activeStep = crypto3.randomUUID();
478
478
  state.activeJob = event.jobId;
479
479
  const job = state.plan.jobs.find(({ id }) => id === event.jobId);
480
480
  const input_dataclip_id = state.inputDataclips[event.jobId];
@@ -486,17 +486,17 @@ async function onRunStart(context, event) {
486
486
  ...context,
487
487
  state: {
488
488
  ...state,
489
- activeRun: state.activeRun
489
+ activeStep: state.activeStep
490
490
  }
491
491
  };
492
- await sendEvent(channel, RUN_START, {
493
- run_id: state.activeRun,
492
+ await sendEvent(channel, STEP_START, {
493
+ step_id: state.activeStep,
494
494
  job_id: state.activeJob,
495
495
  input_dataclip_id,
496
496
  versions
497
497
  });
498
498
  const versionMessage = versions_default(
499
- versionLogContext.state.activeRun,
499
+ versionLogContext.state.activeStep,
500
500
  versions,
501
501
  job?.adaptor
502
502
  );
@@ -591,8 +591,8 @@ var throttle_default = createThrottler;
591
591
  var enc = new TextDecoder("utf-8");
592
592
  var eventMap = {
593
593
  "workflow-start": ATTEMPT_START,
594
- "job-start": RUN_START,
595
- "job-complete": RUN_COMPLETE,
594
+ "job-start": STEP_START,
595
+ "job-complete": STEP_COMPLETE,
596
596
  "workflow-log": ATTEMPT_LOG,
597
597
  "workflow-complete": ATTEMPT_COMPLETE
598
598
  };
@@ -622,8 +622,8 @@ function execute(channel, engine, logger, plan, options = {}, onFinish = (_resul
622
622
  const listeners = Object.assign(
623
623
  {},
624
624
  addEvent("workflow-start", throttle(onWorkflowStart)),
625
- addEvent("job-start", throttle(onRunStart)),
626
- addEvent("job-complete", throttle(onRunComplete)),
625
+ addEvent("job-start", throttle(onStepStart)),
626
+ addEvent("job-complete", throttle(onStepComplete)),
627
627
  addEvent("job-error", throttle(onJobError)),
628
628
  addEvent("workflow-log", throttle(onJobLog)),
629
629
  addEvent("workflow-complete", throttle(onWorkflowComplete)),
@@ -663,9 +663,9 @@ var sendEvent = (channel, event, payload) => new Promise((resolve, reject) => {
663
663
  function onJobError(context, event) {
664
664
  const { state, error, jobId } = event;
665
665
  if (state?.errors?.[jobId]?.message === error.message) {
666
- return onRunComplete(context, event);
666
+ return onStepComplete(context, event);
667
667
  } else {
668
- return onRunComplete(context, event, event.error);
668
+ return onStepComplete(context, event, event.error);
669
669
  }
670
670
  }
671
671
  function onWorkflowStart({ channel }, _event) {
@@ -680,8 +680,8 @@ function onJobLog({ channel, state }, event) {
680
680
  level: event.level,
681
681
  timestamp: timeInMicroseconds.toString()
682
682
  };
683
- if (state.activeRun) {
684
- log.run_id = state.activeRun;
683
+ if (state.activeStep) {
684
+ log.step_id = state.activeStep;
685
685
  }
686
686
  return sendEvent(channel, ATTEMPT_LOG, log);
687
687
  }
@@ -935,7 +935,7 @@ export {
935
935
  GET_CREDENTIAL,
936
936
  GET_DATACLIP,
937
937
  INTERNAL_ATTEMPT_COMPLETE,
938
- RUN_COMPLETE,
939
- RUN_START,
938
+ STEP_COMPLETE,
939
+ STEP_START,
940
940
  src_default as default
941
941
  };
package/dist/start.js CHANGED
@@ -5004,8 +5004,8 @@ var GET_DATACLIP = "fetch:dataclip";
5004
5004
  var ATTEMPT_START = "attempt:start";
5005
5005
  var ATTEMPT_COMPLETE = "attempt:complete";
5006
5006
  var ATTEMPT_LOG = "attempt:log";
5007
- var RUN_START = "run:start";
5008
- var RUN_COMPLETE = "run:complete";
5007
+ var STEP_START = "step:start";
5008
+ var STEP_COMPLETE = "step:complete";
5009
5009
  var INTERNAL_ATTEMPT_COMPLETE = "server:attempt-complete";
5010
5010
 
5011
5011
  // src/api/destroy.ts
@@ -5295,7 +5295,7 @@ var create_attempt_state_default = (plan, options = {}) => {
5295
5295
  return state;
5296
5296
  };
5297
5297
 
5298
- // src/events/run-complete.ts
5298
+ // src/events/step-complete.ts
5299
5299
  import crypto3 from "node:crypto";
5300
5300
 
5301
5301
  // src/api/reasons.ts
@@ -5331,17 +5331,17 @@ var calculateAttemptExitReason = (state) => {
5331
5331
  return { reason: "success", error_type: null, error_message: null };
5332
5332
  };
5333
5333
 
5334
- // src/events/run-complete.ts
5335
- function onRunComplete({ channel, state }, event, error) {
5334
+ // src/events/step-complete.ts
5335
+ function onStepComplete({ channel, state }, event, error) {
5336
5336
  const dataclipId = crypto3.randomUUID();
5337
- const run_id = state.activeRun;
5337
+ const step_id = state.activeStep;
5338
5338
  const job_id = state.activeJob;
5339
5339
  if (!state.dataclips) {
5340
5340
  state.dataclips = {};
5341
5341
  }
5342
5342
  const outputState = event.state || {};
5343
5343
  state.dataclips[dataclipId] = event.state;
5344
- delete state.activeRun;
5344
+ delete state.activeStep;
5345
5345
  delete state.activeJob;
5346
5346
  state.lastDataclipId = dataclipId;
5347
5347
  event.next?.forEach((nextJobId) => {
@@ -5354,7 +5354,7 @@ function onRunComplete({ channel, state }, event, error) {
5354
5354
  );
5355
5355
  state.reasons[job_id] = { reason, error_message, error_type };
5356
5356
  const evt = {
5357
- run_id,
5357
+ step_id,
5358
5358
  job_id,
5359
5359
  output_dataclip_id: dataclipId,
5360
5360
  output_dataclip: stringify_default(outputState),
@@ -5365,17 +5365,17 @@ function onRunComplete({ channel, state }, event, error) {
5365
5365
  duration: event.duration,
5366
5366
  thread_id: event.threadId
5367
5367
  };
5368
- return sendEvent(channel, RUN_COMPLETE, evt);
5368
+ return sendEvent(channel, STEP_COMPLETE, evt);
5369
5369
  }
5370
5370
 
5371
- // src/events/run-start.ts
5371
+ // src/events/step-start.ts
5372
5372
  import crypto4 from "node:crypto";
5373
5373
  import { timestamp } from "@openfn/logger";
5374
5374
 
5375
5375
  // package.json
5376
5376
  var package_default = {
5377
5377
  name: "@openfn/ws-worker",
5378
- version: "0.6.0",
5378
+ version: "0.7.0",
5379
5379
  description: "A Websocket Worker to connect Lightning to a Runtime Engine",
5380
5380
  main: "dist/index.js",
5381
5381
  type: "module",
@@ -5438,14 +5438,14 @@ var package_default = {
5438
5438
  // src/util/versions.ts
5439
5439
  import { mainSymbols } from "figures";
5440
5440
  var { triangleRightSmall: t } = mainSymbols;
5441
- var versions_default = (runId, versions, adaptor) => {
5441
+ var versions_default = (stepId, versions, adaptor) => {
5442
5442
  let longest = "compiler".length;
5443
5443
  for (const v in versions) {
5444
5444
  longest = Math.max(v.length, longest);
5445
5445
  }
5446
5446
  const { node, compiler, engine, worker, runtime, ...adaptors } = versions;
5447
5447
  const prefix = (str2) => ` ${t} ${str2.padEnd(longest + 4, " ")}`;
5448
- let str = `Versions for run ${runId}:
5448
+ let str = `Versions for step ${stepId}:
5449
5449
  ${prefix("node.js")}${versions.node || "unknown"}
5450
5450
  ${prefix("worker")}${versions.worker || "unknown"}
5451
5451
  ${prefix("engine")}${versions.engine || "unknown"}`;
@@ -5459,11 +5459,11 @@ ${prefix("engine")}${versions.engine || "unknown"}`;
5459
5459
  return str;
5460
5460
  };
5461
5461
 
5462
- // src/events/run-start.ts
5463
- async function onRunStart(context, event) {
5462
+ // src/events/step-start.ts
5463
+ async function onStepStart(context, event) {
5464
5464
  const time = (timestamp() - BigInt(1e7)).toString();
5465
5465
  const { channel, state } = context;
5466
- state.activeRun = crypto4.randomUUID();
5466
+ state.activeStep = crypto4.randomUUID();
5467
5467
  state.activeJob = event.jobId;
5468
5468
  const job = state.plan.jobs.find(({ id }) => id === event.jobId);
5469
5469
  const input_dataclip_id = state.inputDataclips[event.jobId];
@@ -5475,17 +5475,17 @@ async function onRunStart(context, event) {
5475
5475
  ...context,
5476
5476
  state: {
5477
5477
  ...state,
5478
- activeRun: state.activeRun
5478
+ activeStep: state.activeStep
5479
5479
  }
5480
5480
  };
5481
- await sendEvent(channel, RUN_START, {
5482
- run_id: state.activeRun,
5481
+ await sendEvent(channel, STEP_START, {
5482
+ step_id: state.activeStep,
5483
5483
  job_id: state.activeJob,
5484
5484
  input_dataclip_id,
5485
5485
  versions
5486
5486
  });
5487
5487
  const versionMessage = versions_default(
5488
- versionLogContext.state.activeRun,
5488
+ versionLogContext.state.activeStep,
5489
5489
  versions,
5490
5490
  job?.adaptor
5491
5491
  );
@@ -5580,8 +5580,8 @@ var throttle_default = createThrottler;
5580
5580
  var enc = new TextDecoder("utf-8");
5581
5581
  var eventMap = {
5582
5582
  "workflow-start": ATTEMPT_START,
5583
- "job-start": RUN_START,
5584
- "job-complete": RUN_COMPLETE,
5583
+ "job-start": STEP_START,
5584
+ "job-complete": STEP_COMPLETE,
5585
5585
  "workflow-log": ATTEMPT_LOG,
5586
5586
  "workflow-complete": ATTEMPT_COMPLETE
5587
5587
  };
@@ -5611,8 +5611,8 @@ function execute(channel, engine, logger2, plan, options = {}, onFinish = (_resu
5611
5611
  const listeners = Object.assign(
5612
5612
  {},
5613
5613
  addEvent("workflow-start", throttle(onWorkflowStart)),
5614
- addEvent("job-start", throttle(onRunStart)),
5615
- addEvent("job-complete", throttle(onRunComplete)),
5614
+ addEvent("job-start", throttle(onStepStart)),
5615
+ addEvent("job-complete", throttle(onStepComplete)),
5616
5616
  addEvent("job-error", throttle(onJobError)),
5617
5617
  addEvent("workflow-log", throttle(onJobLog)),
5618
5618
  addEvent("workflow-complete", throttle(onWorkflowComplete)),
@@ -5652,9 +5652,9 @@ var sendEvent = (channel, event, payload) => new Promise((resolve5, reject) => {
5652
5652
  function onJobError(context, event) {
5653
5653
  const { state, error, jobId } = event;
5654
5654
  if (state?.errors?.[jobId]?.message === error.message) {
5655
- return onRunComplete(context, event);
5655
+ return onStepComplete(context, event);
5656
5656
  } else {
5657
- return onRunComplete(context, event, event.error);
5657
+ return onStepComplete(context, event, event.error);
5658
5658
  }
5659
5659
  }
5660
5660
  function onWorkflowStart({ channel }, _event) {
@@ -5669,8 +5669,8 @@ function onJobLog({ channel, state }, event) {
5669
5669
  level: event.level,
5670
5670
  timestamp: timeInMicroseconds.toString()
5671
5671
  };
5672
- if (state.activeRun) {
5673
- log.run_id = state.activeRun;
5672
+ if (state.activeStep) {
5673
+ log.step_id = state.activeStep;
5674
5674
  }
5675
5675
  return sendEvent(channel, ATTEMPT_LOG, log);
5676
5676
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfn/ws-worker",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "A Websocket Worker to connect Lightning to a Runtime Engine",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -41,7 +41,7 @@
41
41
  "tsup": "^6.2.3",
42
42
  "typescript": "^4.6.4",
43
43
  "yargs": "^17.6.2",
44
- "@openfn/lightning-mock": "1.1.10"
44
+ "@openfn/lightning-mock": "1.1.11"
45
45
  },
46
46
  "files": [
47
47
  "dist",