@valon-technologies/gestalt 0.0.1-alpha.18 → 0.0.1-alpha.20

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.
@@ -1,4 +1,3 @@
1
- import type { MessageInitShape } from "@bufbuild/protobuf";
2
1
  import {
3
2
  createClient,
4
3
  type Client,
@@ -7,25 +6,34 @@ import {
7
6
  import { createGrpcTransport } from "@connectrpc/connect-node";
8
7
 
9
8
  import {
10
- WorkflowManagerCreateScheduleRequestSchema,
11
- WorkflowManagerCreateEventTriggerRequestSchema,
12
- WorkflowManagerDeleteScheduleRequestSchema,
13
- WorkflowManagerDeleteEventTriggerRequestSchema,
14
- WorkflowManagerGetScheduleRequestSchema,
15
- WorkflowManagerGetEventTriggerRequestSchema,
16
9
  WorkflowManagerHost as WorkflowManagerHostService,
17
- WorkflowManagerPauseScheduleRequestSchema,
18
- WorkflowManagerPauseEventTriggerRequestSchema,
19
- WorkflowManagerPublishEventRequestSchema,
20
- WorkflowManagerResumeScheduleRequestSchema,
21
- WorkflowManagerResumeEventTriggerRequestSchema,
22
- WorkflowManagerUpdateScheduleRequestSchema,
23
- WorkflowManagerUpdateEventTriggerRequestSchema,
24
- type ManagedWorkflowSchedule,
25
- type ManagedWorkflowEventTrigger,
26
- type WorkflowEvent,
27
10
  } from "./internal/gen/v1/workflow_pb.ts";
28
11
  import type { Request } from "./api.ts";
12
+ import {
13
+ boundWorkflowTargetToProto,
14
+ managedWorkflowDefinitionFromProto,
15
+ managedWorkflowEventTriggerFromProto,
16
+ managedWorkflowRunFromProto,
17
+ managedWorkflowRunSignalFromProto,
18
+ managedWorkflowScheduleFromProto,
19
+ workflowEventFromProto,
20
+ workflowEventMatchToProto,
21
+ workflowEventToProto,
22
+ workflowSignalToProto,
23
+ type BoundWorkflowTarget,
24
+ type BoundWorkflowTargetInput,
25
+ type ManagedWorkflowDefinition,
26
+ type ManagedWorkflowEventTrigger,
27
+ type ManagedWorkflowRun,
28
+ type ManagedWorkflowRunSignal,
29
+ type ManagedWorkflowSchedule,
30
+ type WorkflowEvent,
31
+ type WorkflowEventInput,
32
+ type WorkflowEventMatch,
33
+ type WorkflowEventMatchInput,
34
+ type WorkflowSignal,
35
+ type WorkflowSignalInput,
36
+ } from "./workflow.ts";
29
37
 
30
38
  /** Environment variable containing the workflow-manager host-service target. */
31
39
  export const ENV_WORKFLOW_MANAGER_SOCKET = "GESTALT_WORKFLOW_MANAGER_SOCKET";
@@ -35,64 +43,142 @@ export const ENV_WORKFLOW_MANAGER_SOCKET_TOKEN =
35
43
  const WORKFLOW_MANAGER_RELAY_TOKEN_HEADER =
36
44
  "x-gestalt-host-service-relay-token";
37
45
 
38
- /** Managed workflow schedule message returned by the host manager. */
39
- export type ManagedWorkflowScheduleMessage = ManagedWorkflowSchedule;
40
- /** Managed workflow event-trigger message returned by the host manager. */
41
- export type ManagedWorkflowEventTriggerMessage = ManagedWorkflowEventTrigger;
42
- /** Workflow event message returned after publishing an event. */
43
- export type WorkflowEventMessage = WorkflowEvent;
46
+ /** Shape accepted when starting a workflow run. */
47
+ export interface WorkflowManagerStartRunInput {
48
+ providerName: string;
49
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
50
+ idempotencyKey?: string | undefined;
51
+ workflowKey?: string | undefined;
52
+ definitionId?: string | undefined;
53
+ }
54
+
55
+ /** Shape accepted when signaling an existing workflow run. */
56
+ export interface WorkflowManagerSignalRunInput {
57
+ runId: string;
58
+ signal?: WorkflowSignal | WorkflowSignalInput | undefined;
59
+ }
60
+
61
+ /** Shape accepted when signaling a run or starting it if missing. */
62
+ export interface WorkflowManagerSignalOrStartRunInput {
63
+ providerName: string;
64
+ workflowKey: string;
65
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
66
+ idempotencyKey?: string | undefined;
67
+ signal?: WorkflowSignal | WorkflowSignalInput | undefined;
68
+ definitionId?: string | undefined;
69
+ }
70
+
71
+ /** Shape accepted when creating a workflow definition. */
72
+ export interface WorkflowManagerCreateDefinitionInput {
73
+ providerName: string;
74
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
75
+ idempotencyKey?: string | undefined;
76
+ }
77
+
78
+ /** Shape accepted when fetching a workflow definition. */
79
+ export interface WorkflowManagerGetDefinitionInput {
80
+ definitionId: string;
81
+ }
82
+
83
+ /** Shape accepted when updating a workflow definition. */
84
+ export interface WorkflowManagerUpdateDefinitionInput {
85
+ definitionId: string;
86
+ providerName?: string | undefined;
87
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
88
+ }
89
+
90
+ /** Shape accepted when deleting a workflow definition. */
91
+ export interface WorkflowManagerDeleteDefinitionInput {
92
+ definitionId: string;
93
+ }
94
+
44
95
  /** Shape accepted when creating a workflow schedule. */
45
- export type WorkflowManagerCreateScheduleInput = MessageInitShape<
46
- typeof WorkflowManagerCreateScheduleRequestSchema
47
- >;
96
+ export interface WorkflowManagerCreateScheduleInput {
97
+ providerName: string;
98
+ cron: string;
99
+ timezone?: string | undefined;
100
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
101
+ paused?: boolean | undefined;
102
+ idempotencyKey?: string | undefined;
103
+ definitionId?: string | undefined;
104
+ }
105
+
48
106
  /** Shape accepted when creating an event trigger. */
49
- export type WorkflowManagerCreateTriggerInput = MessageInitShape<
50
- typeof WorkflowManagerCreateEventTriggerRequestSchema
51
- >;
107
+ export interface WorkflowManagerCreateTriggerInput {
108
+ providerName: string;
109
+ match?: WorkflowEventMatch | WorkflowEventMatchInput | undefined;
110
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
111
+ paused?: boolean | undefined;
112
+ idempotencyKey?: string | undefined;
113
+ definitionId?: string | undefined;
114
+ }
115
+
52
116
  /** Shape accepted when fetching a workflow schedule. */
53
- export type WorkflowManagerGetScheduleInput = MessageInitShape<
54
- typeof WorkflowManagerGetScheduleRequestSchema
55
- >;
117
+ export interface WorkflowManagerGetScheduleInput {
118
+ scheduleId: string;
119
+ }
120
+
56
121
  /** Shape accepted when fetching an event trigger. */
57
- export type WorkflowManagerGetTriggerInput = MessageInitShape<
58
- typeof WorkflowManagerGetEventTriggerRequestSchema
59
- >;
122
+ export interface WorkflowManagerGetTriggerInput {
123
+ triggerId: string;
124
+ }
125
+
60
126
  /** Shape accepted when updating a workflow schedule. */
61
- export type WorkflowManagerUpdateScheduleInput = MessageInitShape<
62
- typeof WorkflowManagerUpdateScheduleRequestSchema
63
- >;
127
+ export interface WorkflowManagerUpdateScheduleInput {
128
+ scheduleId: string;
129
+ providerName?: string | undefined;
130
+ cron?: string | undefined;
131
+ timezone?: string | undefined;
132
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
133
+ paused?: boolean | undefined;
134
+ definitionId?: string | undefined;
135
+ }
136
+
64
137
  /** Shape accepted when updating an event trigger. */
65
- export type WorkflowManagerUpdateTriggerInput = MessageInitShape<
66
- typeof WorkflowManagerUpdateEventTriggerRequestSchema
67
- >;
138
+ export interface WorkflowManagerUpdateTriggerInput {
139
+ triggerId: string;
140
+ providerName?: string | undefined;
141
+ match?: WorkflowEventMatch | WorkflowEventMatchInput | undefined;
142
+ target?: BoundWorkflowTarget | BoundWorkflowTargetInput | undefined;
143
+ paused?: boolean | undefined;
144
+ definitionId?: string | undefined;
145
+ }
146
+
68
147
  /** Shape accepted when deleting a workflow schedule. */
69
- export type WorkflowManagerDeleteScheduleInput = MessageInitShape<
70
- typeof WorkflowManagerDeleteScheduleRequestSchema
71
- >;
148
+ export interface WorkflowManagerDeleteScheduleInput {
149
+ scheduleId: string;
150
+ }
151
+
72
152
  /** Shape accepted when deleting an event trigger. */
73
- export type WorkflowManagerDeleteTriggerInput = MessageInitShape<
74
- typeof WorkflowManagerDeleteEventTriggerRequestSchema
75
- >;
153
+ export interface WorkflowManagerDeleteTriggerInput {
154
+ triggerId: string;
155
+ }
156
+
76
157
  /** Shape accepted when pausing a workflow schedule. */
77
- export type WorkflowManagerPauseScheduleInput = MessageInitShape<
78
- typeof WorkflowManagerPauseScheduleRequestSchema
79
- >;
158
+ export interface WorkflowManagerPauseScheduleInput {
159
+ scheduleId: string;
160
+ }
161
+
80
162
  /** Shape accepted when pausing an event trigger. */
81
- export type WorkflowManagerPauseTriggerInput = MessageInitShape<
82
- typeof WorkflowManagerPauseEventTriggerRequestSchema
83
- >;
163
+ export interface WorkflowManagerPauseTriggerInput {
164
+ triggerId: string;
165
+ }
166
+
84
167
  /** Shape accepted when resuming a workflow schedule. */
85
- export type WorkflowManagerResumeScheduleInput = MessageInitShape<
86
- typeof WorkflowManagerResumeScheduleRequestSchema
87
- >;
168
+ export interface WorkflowManagerResumeScheduleInput {
169
+ scheduleId: string;
170
+ }
171
+
88
172
  /** Shape accepted when resuming an event trigger. */
89
- export type WorkflowManagerResumeTriggerInput = MessageInitShape<
90
- typeof WorkflowManagerResumeEventTriggerRequestSchema
91
- >;
173
+ export interface WorkflowManagerResumeTriggerInput {
174
+ triggerId: string;
175
+ }
176
+
92
177
  /** Shape accepted when publishing a workflow event. */
93
- export type WorkflowManagerPublishEventInput = MessageInitShape<
94
- typeof WorkflowManagerPublishEventRequestSchema
95
- >;
178
+ export interface WorkflowManagerPublishEventInput {
179
+ event?: WorkflowEvent | WorkflowEventInput | undefined;
180
+ providerName?: string | undefined;
181
+ }
96
182
 
97
183
  /**
98
184
  * Client for creating and controlling workflow schedules and event triggers.
@@ -131,35 +217,148 @@ export class WorkflowManager {
131
217
  this.client = createClient(WorkflowManagerHostService, transport);
132
218
  }
133
219
 
220
+ /** Starts a workflow run immediately. */
221
+ async startRun(
222
+ request: WorkflowManagerStartRunInput,
223
+ ): Promise<ManagedWorkflowRun> {
224
+ return managedWorkflowRunFromProto(
225
+ await this.client.startRun({
226
+ providerName: request.providerName,
227
+ target: boundWorkflowTargetToProto(request.target),
228
+ idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
229
+ workflowKey: request.workflowKey ?? "",
230
+ invocationToken: this.invocationToken,
231
+ definitionId: request.definitionId ?? "",
232
+ }),
233
+ );
234
+ }
235
+
236
+ /** Signals an existing workflow run. */
237
+ async signalRun(
238
+ request: WorkflowManagerSignalRunInput,
239
+ ): Promise<ManagedWorkflowRunSignal> {
240
+ return managedWorkflowRunSignalFromProto(
241
+ await this.client.signalRun({
242
+ runId: request.runId,
243
+ signal: workflowSignalToProto(request.signal),
244
+ invocationToken: this.invocationToken,
245
+ }),
246
+ );
247
+ }
248
+
249
+ /** Signals a workflow run, or starts it when no run exists for the key. */
250
+ async signalOrStartRun(
251
+ request: WorkflowManagerSignalOrStartRunInput,
252
+ ): Promise<ManagedWorkflowRunSignal> {
253
+ return managedWorkflowRunSignalFromProto(
254
+ await this.client.signalOrStartRun({
255
+ providerName: request.providerName,
256
+ workflowKey: request.workflowKey,
257
+ target: boundWorkflowTargetToProto(request.target),
258
+ idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
259
+ signal: workflowSignalToProto(request.signal),
260
+ invocationToken: this.invocationToken,
261
+ definitionId: request.definitionId ?? "",
262
+ }),
263
+ );
264
+ }
265
+
266
+ /** Creates a reusable workflow definition. */
267
+ async createDefinition(
268
+ request: WorkflowManagerCreateDefinitionInput,
269
+ ): Promise<ManagedWorkflowDefinition> {
270
+ return managedWorkflowDefinitionFromProto(
271
+ await this.client.createDefinition({
272
+ providerName: request.providerName,
273
+ target: boundWorkflowTargetToProto(request.target),
274
+ invocationToken: this.invocationToken,
275
+ idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
276
+ }),
277
+ );
278
+ }
279
+
280
+ /** Fetches one workflow definition. */
281
+ async getDefinition(
282
+ request: WorkflowManagerGetDefinitionInput,
283
+ ): Promise<ManagedWorkflowDefinition> {
284
+ return managedWorkflowDefinitionFromProto(
285
+ await this.client.getDefinition({
286
+ definitionId: request.definitionId,
287
+ invocationToken: this.invocationToken,
288
+ }),
289
+ );
290
+ }
291
+
292
+ /** Updates a workflow definition. */
293
+ async updateDefinition(
294
+ request: WorkflowManagerUpdateDefinitionInput,
295
+ ): Promise<ManagedWorkflowDefinition> {
296
+ return managedWorkflowDefinitionFromProto(
297
+ await this.client.updateDefinition({
298
+ definitionId: request.definitionId,
299
+ providerName: request.providerName ?? "",
300
+ target: boundWorkflowTargetToProto(request.target),
301
+ invocationToken: this.invocationToken,
302
+ }),
303
+ );
304
+ }
305
+
306
+ /** Deletes a workflow definition. */
307
+ async deleteDefinition(
308
+ request: WorkflowManagerDeleteDefinitionInput,
309
+ ): Promise<void> {
310
+ await this.client.deleteDefinition({
311
+ definitionId: request.definitionId,
312
+ invocationToken: this.invocationToken,
313
+ });
314
+ }
315
+
134
316
  /** Creates a workflow schedule. */
135
317
  async createSchedule(
136
318
  request: WorkflowManagerCreateScheduleInput,
137
- ): Promise<ManagedWorkflowScheduleMessage> {
138
- return await this.client.createSchedule({
139
- ...request,
140
- idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
141
- invocationToken: this.invocationToken,
142
- });
319
+ ): Promise<ManagedWorkflowSchedule> {
320
+ return managedWorkflowScheduleFromProto(
321
+ await this.client.createSchedule({
322
+ providerName: request.providerName,
323
+ cron: request.cron,
324
+ timezone: request.timezone ?? "",
325
+ target: boundWorkflowTargetToProto(request.target),
326
+ paused: request.paused ?? false,
327
+ invocationToken: this.invocationToken,
328
+ idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
329
+ definitionId: request.definitionId ?? "",
330
+ }),
331
+ );
143
332
  }
144
333
 
145
334
  /** Fetches one workflow schedule. */
146
335
  async getSchedule(
147
336
  request: WorkflowManagerGetScheduleInput,
148
- ): Promise<ManagedWorkflowScheduleMessage> {
149
- return await this.client.getSchedule({
150
- ...request,
151
- invocationToken: this.invocationToken,
152
- });
337
+ ): Promise<ManagedWorkflowSchedule> {
338
+ return managedWorkflowScheduleFromProto(
339
+ await this.client.getSchedule({
340
+ scheduleId: request.scheduleId,
341
+ invocationToken: this.invocationToken,
342
+ }),
343
+ );
153
344
  }
154
345
 
155
346
  /** Updates a workflow schedule. */
156
347
  async updateSchedule(
157
348
  request: WorkflowManagerUpdateScheduleInput,
158
- ): Promise<ManagedWorkflowScheduleMessage> {
159
- return await this.client.updateSchedule({
160
- ...request,
161
- invocationToken: this.invocationToken,
162
- });
349
+ ): Promise<ManagedWorkflowSchedule> {
350
+ return managedWorkflowScheduleFromProto(
351
+ await this.client.updateSchedule({
352
+ scheduleId: request.scheduleId,
353
+ providerName: request.providerName ?? "",
354
+ cron: request.cron ?? "",
355
+ timezone: request.timezone ?? "",
356
+ target: boundWorkflowTargetToProto(request.target),
357
+ paused: request.paused ?? false,
358
+ invocationToken: this.invocationToken,
359
+ definitionId: request.definitionId ?? "",
360
+ }),
361
+ );
163
362
  }
164
363
 
165
364
  /** Deletes a workflow schedule. */
@@ -167,7 +366,7 @@ export class WorkflowManager {
167
366
  request: WorkflowManagerDeleteScheduleInput,
168
367
  ): Promise<void> {
169
368
  await this.client.deleteSchedule({
170
- ...request,
369
+ scheduleId: request.scheduleId,
171
370
  invocationToken: this.invocationToken,
172
371
  });
173
372
  }
@@ -175,52 +374,71 @@ export class WorkflowManager {
175
374
  /** Pauses a workflow schedule. */
176
375
  async pauseSchedule(
177
376
  request: WorkflowManagerPauseScheduleInput,
178
- ): Promise<ManagedWorkflowScheduleMessage> {
179
- return await this.client.pauseSchedule({
180
- ...request,
181
- invocationToken: this.invocationToken,
182
- });
377
+ ): Promise<ManagedWorkflowSchedule> {
378
+ return managedWorkflowScheduleFromProto(
379
+ await this.client.pauseSchedule({
380
+ scheduleId: request.scheduleId,
381
+ invocationToken: this.invocationToken,
382
+ }),
383
+ );
183
384
  }
184
385
 
185
386
  /** Resumes a workflow schedule. */
186
387
  async resumeSchedule(
187
388
  request: WorkflowManagerResumeScheduleInput,
188
- ): Promise<ManagedWorkflowScheduleMessage> {
189
- return await this.client.resumeSchedule({
190
- ...request,
191
- invocationToken: this.invocationToken,
192
- });
389
+ ): Promise<ManagedWorkflowSchedule> {
390
+ return managedWorkflowScheduleFromProto(
391
+ await this.client.resumeSchedule({
392
+ scheduleId: request.scheduleId,
393
+ invocationToken: this.invocationToken,
394
+ }),
395
+ );
193
396
  }
194
397
 
195
398
  /** Creates an event trigger. */
196
399
  async createTrigger(
197
400
  request: WorkflowManagerCreateTriggerInput,
198
- ): Promise<ManagedWorkflowEventTriggerMessage> {
199
- return await this.client.createEventTrigger({
200
- ...request,
201
- idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
202
- invocationToken: this.invocationToken,
203
- });
401
+ ): Promise<ManagedWorkflowEventTrigger> {
402
+ return managedWorkflowEventTriggerFromProto(
403
+ await this.client.createEventTrigger({
404
+ providerName: request.providerName,
405
+ match: workflowEventMatchToProto(request.match),
406
+ target: boundWorkflowTargetToProto(request.target),
407
+ paused: request.paused ?? false,
408
+ invocationToken: this.invocationToken,
409
+ idempotencyKey: request.idempotencyKey?.trim() || this.idempotencyKey,
410
+ definitionId: request.definitionId ?? "",
411
+ }),
412
+ );
204
413
  }
205
414
 
206
415
  /** Fetches one event trigger. */
207
416
  async getTrigger(
208
417
  request: WorkflowManagerGetTriggerInput,
209
- ): Promise<ManagedWorkflowEventTriggerMessage> {
210
- return await this.client.getEventTrigger({
211
- ...request,
212
- invocationToken: this.invocationToken,
213
- });
418
+ ): Promise<ManagedWorkflowEventTrigger> {
419
+ return managedWorkflowEventTriggerFromProto(
420
+ await this.client.getEventTrigger({
421
+ triggerId: request.triggerId,
422
+ invocationToken: this.invocationToken,
423
+ }),
424
+ );
214
425
  }
215
426
 
216
427
  /** Updates an event trigger. */
217
428
  async updateTrigger(
218
429
  request: WorkflowManagerUpdateTriggerInput,
219
- ): Promise<ManagedWorkflowEventTriggerMessage> {
220
- return await this.client.updateEventTrigger({
221
- ...request,
222
- invocationToken: this.invocationToken,
223
- });
430
+ ): Promise<ManagedWorkflowEventTrigger> {
431
+ return managedWorkflowEventTriggerFromProto(
432
+ await this.client.updateEventTrigger({
433
+ triggerId: request.triggerId,
434
+ providerName: request.providerName ?? "",
435
+ match: workflowEventMatchToProto(request.match),
436
+ target: boundWorkflowTargetToProto(request.target),
437
+ paused: request.paused ?? false,
438
+ invocationToken: this.invocationToken,
439
+ definitionId: request.definitionId ?? "",
440
+ }),
441
+ );
224
442
  }
225
443
 
226
444
  /** Deletes an event trigger. */
@@ -228,7 +446,7 @@ export class WorkflowManager {
228
446
  request: WorkflowManagerDeleteTriggerInput,
229
447
  ): Promise<void> {
230
448
  await this.client.deleteEventTrigger({
231
- ...request,
449
+ triggerId: request.triggerId,
232
450
  invocationToken: this.invocationToken,
233
451
  });
234
452
  }
@@ -236,31 +454,42 @@ export class WorkflowManager {
236
454
  /** Pauses an event trigger. */
237
455
  async pauseTrigger(
238
456
  request: WorkflowManagerPauseTriggerInput,
239
- ): Promise<ManagedWorkflowEventTriggerMessage> {
240
- return await this.client.pauseEventTrigger({
241
- ...request,
242
- invocationToken: this.invocationToken,
243
- });
457
+ ): Promise<ManagedWorkflowEventTrigger> {
458
+ return managedWorkflowEventTriggerFromProto(
459
+ await this.client.pauseEventTrigger({
460
+ triggerId: request.triggerId,
461
+ invocationToken: this.invocationToken,
462
+ }),
463
+ );
244
464
  }
245
465
 
246
466
  /** Resumes an event trigger. */
247
467
  async resumeTrigger(
248
468
  request: WorkflowManagerResumeTriggerInput,
249
- ): Promise<ManagedWorkflowEventTriggerMessage> {
250
- return await this.client.resumeEventTrigger({
251
- ...request,
252
- invocationToken: this.invocationToken,
253
- });
469
+ ): Promise<ManagedWorkflowEventTrigger> {
470
+ return managedWorkflowEventTriggerFromProto(
471
+ await this.client.resumeEventTrigger({
472
+ triggerId: request.triggerId,
473
+ invocationToken: this.invocationToken,
474
+ }),
475
+ );
254
476
  }
255
477
 
256
478
  /** Publishes an event into the workflow manager. */
257
479
  async publishEvent(
258
480
  request: WorkflowManagerPublishEventInput,
259
- ): Promise<WorkflowEventMessage> {
260
- return await this.client.publishEvent({
261
- ...request,
262
- invocationToken: this.invocationToken,
263
- });
481
+ ): Promise<WorkflowEvent> {
482
+ const event = workflowEventFromProto(
483
+ await this.client.publishEvent({
484
+ event: workflowEventToProto(request.event),
485
+ invocationToken: this.invocationToken,
486
+ providerName: request.providerName ?? "",
487
+ }),
488
+ );
489
+ if (event === undefined) {
490
+ throw new Error("WorkflowManager.publishEvent returned no event");
491
+ }
492
+ return event;
264
493
  }
265
494
  }
266
495