@valon-technologies/gestalt 0.0.1-alpha.1 → 0.0.1-alpha.9
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/README.md +8 -26
- package/gen/v1/{auth_pb.ts → authentication_pb.ts} +51 -17
- package/gen/v1/authorization_pb.ts +857 -0
- package/gen/v1/cache_pb.ts +32 -0
- package/gen/v1/datastore_pb.ts +62 -0
- package/gen/v1/plugin_pb.ts +216 -18
- package/gen/v1/runtime_pb.ts +27 -3
- package/gen/v1/s3_pb.ts +39 -0
- package/gen/v1/secrets_pb.ts +6 -0
- package/gen/v1/workflow_pb.ts +1372 -0
- package/package.json +12 -10
- package/src/api.ts +56 -0
- package/src/auth.ts +67 -16
- package/src/build.ts +37 -21
- package/src/cache.ts +32 -0
- package/src/catalog.ts +27 -0
- package/src/index.ts +87 -18
- package/src/indexeddb.ts +166 -0
- package/src/invoker.ts +124 -0
- package/src/plugin.ts +93 -38
- package/src/provider-kind.ts +107 -0
- package/src/provider.ts +32 -1
- package/src/runtime.ts +233 -218
- package/src/s3.ts +135 -20
- package/src/schema.ts +46 -0
- package/src/secrets.ts +12 -0
- package/src/target.ts +58 -60
- package/src/workflow-manager.ts +131 -0
- package/src/workflow.ts +479 -0
- package/tsconfig.json +1 -0
package/src/workflow.ts
ADDED
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
import { connect } from "node:net";
|
|
2
|
+
|
|
3
|
+
import { create, type MessageInitShape } from "@bufbuild/protobuf";
|
|
4
|
+
import { EmptySchema } from "@bufbuild/protobuf/wkt";
|
|
5
|
+
import {
|
|
6
|
+
Code,
|
|
7
|
+
ConnectError,
|
|
8
|
+
createClient,
|
|
9
|
+
type Client,
|
|
10
|
+
type ServiceImpl,
|
|
11
|
+
} from "@connectrpc/connect";
|
|
12
|
+
import { createGrpcTransport } from "@connectrpc/connect-node";
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
BoundWorkflowEventTriggerSchema,
|
|
16
|
+
BoundWorkflowRunSchema,
|
|
17
|
+
BoundWorkflowScheduleSchema,
|
|
18
|
+
ListWorkflowProviderEventTriggersResponseSchema,
|
|
19
|
+
ListWorkflowProviderRunsResponseSchema,
|
|
20
|
+
ListWorkflowProviderSchedulesResponseSchema,
|
|
21
|
+
WorkflowHost as WorkflowHostService,
|
|
22
|
+
WorkflowProvider as WorkflowProviderService,
|
|
23
|
+
type BoundWorkflowEventTrigger,
|
|
24
|
+
type BoundWorkflowRun,
|
|
25
|
+
type BoundWorkflowSchedule,
|
|
26
|
+
type CancelWorkflowProviderRunRequest,
|
|
27
|
+
type DeleteWorkflowProviderEventTriggerRequest,
|
|
28
|
+
type DeleteWorkflowProviderScheduleRequest,
|
|
29
|
+
type GetWorkflowProviderEventTriggerRequest,
|
|
30
|
+
type GetWorkflowProviderRunRequest,
|
|
31
|
+
type GetWorkflowProviderScheduleRequest,
|
|
32
|
+
type InvokeWorkflowOperationRequest,
|
|
33
|
+
type InvokeWorkflowOperationResponse,
|
|
34
|
+
type ListWorkflowProviderEventTriggersRequest,
|
|
35
|
+
type ListWorkflowProviderRunsRequest,
|
|
36
|
+
type ListWorkflowProviderSchedulesRequest,
|
|
37
|
+
type PauseWorkflowProviderEventTriggerRequest,
|
|
38
|
+
type PauseWorkflowProviderScheduleRequest,
|
|
39
|
+
type PublishWorkflowProviderEventRequest,
|
|
40
|
+
type ResumeWorkflowProviderEventTriggerRequest,
|
|
41
|
+
type ResumeWorkflowProviderScheduleRequest,
|
|
42
|
+
type StartWorkflowProviderRunRequest,
|
|
43
|
+
type UpsertWorkflowProviderEventTriggerRequest,
|
|
44
|
+
type UpsertWorkflowProviderScheduleRequest,
|
|
45
|
+
type WorkflowEvent,
|
|
46
|
+
WorkflowRunStatus,
|
|
47
|
+
} from "../gen/v1/workflow_pb.ts";
|
|
48
|
+
import { errorMessage, type MaybePromise } from "./api.ts";
|
|
49
|
+
import { RuntimeProvider, type RuntimeProviderOptions } from "./provider.ts";
|
|
50
|
+
|
|
51
|
+
export const ENV_WORKFLOW_HOST_SOCKET = "GESTALT_WORKFLOW_HOST_SOCKET";
|
|
52
|
+
|
|
53
|
+
export type {
|
|
54
|
+
BoundWorkflowEventTrigger,
|
|
55
|
+
BoundWorkflowRun,
|
|
56
|
+
BoundWorkflowSchedule,
|
|
57
|
+
CancelWorkflowProviderRunRequest,
|
|
58
|
+
DeleteWorkflowProviderEventTriggerRequest,
|
|
59
|
+
DeleteWorkflowProviderScheduleRequest,
|
|
60
|
+
GetWorkflowProviderEventTriggerRequest,
|
|
61
|
+
GetWorkflowProviderRunRequest,
|
|
62
|
+
GetWorkflowProviderScheduleRequest,
|
|
63
|
+
InvokeWorkflowOperationRequest,
|
|
64
|
+
InvokeWorkflowOperationResponse,
|
|
65
|
+
ListWorkflowProviderEventTriggersRequest,
|
|
66
|
+
ListWorkflowProviderRunsRequest,
|
|
67
|
+
ListWorkflowProviderSchedulesRequest,
|
|
68
|
+
PauseWorkflowProviderEventTriggerRequest,
|
|
69
|
+
PauseWorkflowProviderScheduleRequest,
|
|
70
|
+
PublishWorkflowProviderEventRequest,
|
|
71
|
+
ResumeWorkflowProviderEventTriggerRequest,
|
|
72
|
+
ResumeWorkflowProviderScheduleRequest,
|
|
73
|
+
StartWorkflowProviderRunRequest,
|
|
74
|
+
UpsertWorkflowProviderEventTriggerRequest,
|
|
75
|
+
UpsertWorkflowProviderScheduleRequest,
|
|
76
|
+
WorkflowEvent,
|
|
77
|
+
};
|
|
78
|
+
export { WorkflowRunStatus };
|
|
79
|
+
|
|
80
|
+
export interface WorkflowProviderOptions extends RuntimeProviderOptions {
|
|
81
|
+
startRun: (
|
|
82
|
+
request: StartWorkflowProviderRunRequest,
|
|
83
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowRunSchema>>;
|
|
84
|
+
getRun: (
|
|
85
|
+
request: GetWorkflowProviderRunRequest,
|
|
86
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowRunSchema>>;
|
|
87
|
+
listRuns: (
|
|
88
|
+
request: ListWorkflowProviderRunsRequest,
|
|
89
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowRunSchema>[]>;
|
|
90
|
+
cancelRun: (
|
|
91
|
+
request: CancelWorkflowProviderRunRequest,
|
|
92
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowRunSchema>>;
|
|
93
|
+
upsertSchedule: (
|
|
94
|
+
request: UpsertWorkflowProviderScheduleRequest,
|
|
95
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowScheduleSchema>>;
|
|
96
|
+
getSchedule: (
|
|
97
|
+
request: GetWorkflowProviderScheduleRequest,
|
|
98
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowScheduleSchema>>;
|
|
99
|
+
listSchedules: (
|
|
100
|
+
request: ListWorkflowProviderSchedulesRequest,
|
|
101
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowScheduleSchema>[]>;
|
|
102
|
+
deleteSchedule: (
|
|
103
|
+
request: DeleteWorkflowProviderScheduleRequest,
|
|
104
|
+
) => MaybePromise<void>;
|
|
105
|
+
pauseSchedule: (
|
|
106
|
+
request: PauseWorkflowProviderScheduleRequest,
|
|
107
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowScheduleSchema>>;
|
|
108
|
+
resumeSchedule: (
|
|
109
|
+
request: ResumeWorkflowProviderScheduleRequest,
|
|
110
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowScheduleSchema>>;
|
|
111
|
+
upsertEventTrigger: (
|
|
112
|
+
request: UpsertWorkflowProviderEventTriggerRequest,
|
|
113
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>>;
|
|
114
|
+
getEventTrigger: (
|
|
115
|
+
request: GetWorkflowProviderEventTriggerRequest,
|
|
116
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>>;
|
|
117
|
+
listEventTriggers: (
|
|
118
|
+
request: ListWorkflowProviderEventTriggersRequest,
|
|
119
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>[]>;
|
|
120
|
+
deleteEventTrigger: (
|
|
121
|
+
request: DeleteWorkflowProviderEventTriggerRequest,
|
|
122
|
+
) => MaybePromise<void>;
|
|
123
|
+
pauseEventTrigger: (
|
|
124
|
+
request: PauseWorkflowProviderEventTriggerRequest,
|
|
125
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>>;
|
|
126
|
+
resumeEventTrigger: (
|
|
127
|
+
request: ResumeWorkflowProviderEventTriggerRequest,
|
|
128
|
+
) => MaybePromise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>>;
|
|
129
|
+
publishEvent: (
|
|
130
|
+
request: PublishWorkflowProviderEventRequest,
|
|
131
|
+
) => MaybePromise<void>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export class WorkflowProvider extends RuntimeProvider {
|
|
135
|
+
readonly kind = "workflow" as const;
|
|
136
|
+
|
|
137
|
+
private readonly startRunHandler: WorkflowProviderOptions["startRun"];
|
|
138
|
+
private readonly getRunHandler: WorkflowProviderOptions["getRun"];
|
|
139
|
+
private readonly listRunsHandler: WorkflowProviderOptions["listRuns"];
|
|
140
|
+
private readonly cancelRunHandler: WorkflowProviderOptions["cancelRun"];
|
|
141
|
+
private readonly upsertScheduleHandler: WorkflowProviderOptions["upsertSchedule"];
|
|
142
|
+
private readonly getScheduleHandler: WorkflowProviderOptions["getSchedule"];
|
|
143
|
+
private readonly listSchedulesHandler: WorkflowProviderOptions["listSchedules"];
|
|
144
|
+
private readonly deleteScheduleHandler: WorkflowProviderOptions["deleteSchedule"];
|
|
145
|
+
private readonly pauseScheduleHandler: WorkflowProviderOptions["pauseSchedule"];
|
|
146
|
+
private readonly resumeScheduleHandler: WorkflowProviderOptions["resumeSchedule"];
|
|
147
|
+
private readonly upsertEventTriggerHandler: WorkflowProviderOptions["upsertEventTrigger"];
|
|
148
|
+
private readonly getEventTriggerHandler: WorkflowProviderOptions["getEventTrigger"];
|
|
149
|
+
private readonly listEventTriggersHandler: WorkflowProviderOptions["listEventTriggers"];
|
|
150
|
+
private readonly deleteEventTriggerHandler: WorkflowProviderOptions["deleteEventTrigger"];
|
|
151
|
+
private readonly pauseEventTriggerHandler: WorkflowProviderOptions["pauseEventTrigger"];
|
|
152
|
+
private readonly resumeEventTriggerHandler: WorkflowProviderOptions["resumeEventTrigger"];
|
|
153
|
+
private readonly publishEventHandler: WorkflowProviderOptions["publishEvent"];
|
|
154
|
+
|
|
155
|
+
constructor(options: WorkflowProviderOptions) {
|
|
156
|
+
super(options);
|
|
157
|
+
this.startRunHandler = options.startRun;
|
|
158
|
+
this.getRunHandler = options.getRun;
|
|
159
|
+
this.listRunsHandler = options.listRuns;
|
|
160
|
+
this.cancelRunHandler = options.cancelRun;
|
|
161
|
+
this.upsertScheduleHandler = options.upsertSchedule;
|
|
162
|
+
this.getScheduleHandler = options.getSchedule;
|
|
163
|
+
this.listSchedulesHandler = options.listSchedules;
|
|
164
|
+
this.deleteScheduleHandler = options.deleteSchedule;
|
|
165
|
+
this.pauseScheduleHandler = options.pauseSchedule;
|
|
166
|
+
this.resumeScheduleHandler = options.resumeSchedule;
|
|
167
|
+
this.upsertEventTriggerHandler = options.upsertEventTrigger;
|
|
168
|
+
this.getEventTriggerHandler = options.getEventTrigger;
|
|
169
|
+
this.listEventTriggersHandler = options.listEventTriggers;
|
|
170
|
+
this.deleteEventTriggerHandler = options.deleteEventTrigger;
|
|
171
|
+
this.pauseEventTriggerHandler = options.pauseEventTrigger;
|
|
172
|
+
this.resumeEventTriggerHandler = options.resumeEventTrigger;
|
|
173
|
+
this.publishEventHandler = options.publishEvent;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async startRun(
|
|
177
|
+
request: StartWorkflowProviderRunRequest,
|
|
178
|
+
): Promise<MessageInitShape<typeof BoundWorkflowRunSchema>> {
|
|
179
|
+
return await this.startRunHandler(request);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async getRun(
|
|
183
|
+
request: GetWorkflowProviderRunRequest,
|
|
184
|
+
): Promise<MessageInitShape<typeof BoundWorkflowRunSchema>> {
|
|
185
|
+
return await this.getRunHandler(request);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
async listRuns(
|
|
189
|
+
request: ListWorkflowProviderRunsRequest,
|
|
190
|
+
): Promise<MessageInitShape<typeof BoundWorkflowRunSchema>[]> {
|
|
191
|
+
return await this.listRunsHandler(request);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
async cancelRun(
|
|
195
|
+
request: CancelWorkflowProviderRunRequest,
|
|
196
|
+
): Promise<MessageInitShape<typeof BoundWorkflowRunSchema>> {
|
|
197
|
+
return await this.cancelRunHandler(request);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
async upsertSchedule(
|
|
201
|
+
request: UpsertWorkflowProviderScheduleRequest,
|
|
202
|
+
): Promise<MessageInitShape<typeof BoundWorkflowScheduleSchema>> {
|
|
203
|
+
return await this.upsertScheduleHandler(request);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
async getSchedule(
|
|
207
|
+
request: GetWorkflowProviderScheduleRequest,
|
|
208
|
+
): Promise<MessageInitShape<typeof BoundWorkflowScheduleSchema>> {
|
|
209
|
+
return await this.getScheduleHandler(request);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
async listSchedules(
|
|
213
|
+
request: ListWorkflowProviderSchedulesRequest,
|
|
214
|
+
): Promise<MessageInitShape<typeof BoundWorkflowScheduleSchema>[]> {
|
|
215
|
+
return await this.listSchedulesHandler(request);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
async deleteSchedule(
|
|
219
|
+
request: DeleteWorkflowProviderScheduleRequest,
|
|
220
|
+
): Promise<void> {
|
|
221
|
+
await this.deleteScheduleHandler(request);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
async pauseSchedule(
|
|
225
|
+
request: PauseWorkflowProviderScheduleRequest,
|
|
226
|
+
): Promise<MessageInitShape<typeof BoundWorkflowScheduleSchema>> {
|
|
227
|
+
return await this.pauseScheduleHandler(request);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async resumeSchedule(
|
|
231
|
+
request: ResumeWorkflowProviderScheduleRequest,
|
|
232
|
+
): Promise<MessageInitShape<typeof BoundWorkflowScheduleSchema>> {
|
|
233
|
+
return await this.resumeScheduleHandler(request);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
async upsertEventTrigger(
|
|
237
|
+
request: UpsertWorkflowProviderEventTriggerRequest,
|
|
238
|
+
): Promise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>> {
|
|
239
|
+
return await this.upsertEventTriggerHandler(request);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
async getEventTrigger(
|
|
243
|
+
request: GetWorkflowProviderEventTriggerRequest,
|
|
244
|
+
): Promise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>> {
|
|
245
|
+
return await this.getEventTriggerHandler(request);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async listEventTriggers(
|
|
249
|
+
request: ListWorkflowProviderEventTriggersRequest,
|
|
250
|
+
): Promise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>[]> {
|
|
251
|
+
return await this.listEventTriggersHandler(request);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async deleteEventTrigger(
|
|
255
|
+
request: DeleteWorkflowProviderEventTriggerRequest,
|
|
256
|
+
): Promise<void> {
|
|
257
|
+
await this.deleteEventTriggerHandler(request);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
async pauseEventTrigger(
|
|
261
|
+
request: PauseWorkflowProviderEventTriggerRequest,
|
|
262
|
+
): Promise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>> {
|
|
263
|
+
return await this.pauseEventTriggerHandler(request);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
async resumeEventTrigger(
|
|
267
|
+
request: ResumeWorkflowProviderEventTriggerRequest,
|
|
268
|
+
): Promise<MessageInitShape<typeof BoundWorkflowEventTriggerSchema>> {
|
|
269
|
+
return await this.resumeEventTriggerHandler(request);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
async publishEvent(
|
|
273
|
+
request: PublishWorkflowProviderEventRequest,
|
|
274
|
+
): Promise<void> {
|
|
275
|
+
await this.publishEventHandler(request);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export function defineWorkflowProvider(
|
|
280
|
+
options: WorkflowProviderOptions,
|
|
281
|
+
): WorkflowProvider {
|
|
282
|
+
return new WorkflowProvider(options);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export function isWorkflowProvider(value: unknown): value is WorkflowProvider {
|
|
286
|
+
return (
|
|
287
|
+
value instanceof WorkflowProvider ||
|
|
288
|
+
(typeof value === "object" &&
|
|
289
|
+
value !== null &&
|
|
290
|
+
"kind" in value &&
|
|
291
|
+
(value as { kind?: unknown }).kind === "workflow" &&
|
|
292
|
+
"startRun" in value &&
|
|
293
|
+
"getRun" in value &&
|
|
294
|
+
"listRuns" in value &&
|
|
295
|
+
"cancelRun" in value &&
|
|
296
|
+
"upsertSchedule" in value &&
|
|
297
|
+
"getSchedule" in value &&
|
|
298
|
+
"listSchedules" in value &&
|
|
299
|
+
"deleteSchedule" in value &&
|
|
300
|
+
"pauseSchedule" in value &&
|
|
301
|
+
"resumeSchedule" in value &&
|
|
302
|
+
"upsertEventTrigger" in value &&
|
|
303
|
+
"getEventTrigger" in value &&
|
|
304
|
+
"listEventTriggers" in value &&
|
|
305
|
+
"deleteEventTrigger" in value &&
|
|
306
|
+
"pauseEventTrigger" in value &&
|
|
307
|
+
"resumeEventTrigger" in value &&
|
|
308
|
+
"publishEvent" in value)
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export class WorkflowHost {
|
|
313
|
+
private readonly client: Client<typeof WorkflowHostService>;
|
|
314
|
+
|
|
315
|
+
constructor() {
|
|
316
|
+
const socketPath = process.env[ENV_WORKFLOW_HOST_SOCKET];
|
|
317
|
+
if (!socketPath) {
|
|
318
|
+
throw new Error(`workflow host: ${ENV_WORKFLOW_HOST_SOCKET} is not set`);
|
|
319
|
+
}
|
|
320
|
+
const transport = createGrpcTransport({
|
|
321
|
+
baseUrl: "http://localhost",
|
|
322
|
+
nodeOptions: {
|
|
323
|
+
createConnection: () => connect(socketPath),
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
this.client = createClient(WorkflowHostService, transport);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
async invokeOperation(
|
|
330
|
+
request: InvokeWorkflowOperationRequest,
|
|
331
|
+
): Promise<InvokeWorkflowOperationResponse> {
|
|
332
|
+
return await this.client.invokeOperation(request);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export function createWorkflowProviderService(
|
|
337
|
+
provider: WorkflowProvider,
|
|
338
|
+
): Partial<ServiceImpl<typeof WorkflowProviderService>> {
|
|
339
|
+
return {
|
|
340
|
+
async startRun(request) {
|
|
341
|
+
return create(
|
|
342
|
+
BoundWorkflowRunSchema,
|
|
343
|
+
await invokeWorkflowProvider("start run", () => provider.startRun(request)),
|
|
344
|
+
);
|
|
345
|
+
},
|
|
346
|
+
async getRun(request) {
|
|
347
|
+
return create(
|
|
348
|
+
BoundWorkflowRunSchema,
|
|
349
|
+
await invokeWorkflowProvider("get run", () => provider.getRun(request)),
|
|
350
|
+
);
|
|
351
|
+
},
|
|
352
|
+
async listRuns(request) {
|
|
353
|
+
return create(ListWorkflowProviderRunsResponseSchema, {
|
|
354
|
+
runs: await invokeWorkflowProvider("list runs", () =>
|
|
355
|
+
provider.listRuns(request),
|
|
356
|
+
),
|
|
357
|
+
});
|
|
358
|
+
},
|
|
359
|
+
async cancelRun(request) {
|
|
360
|
+
return create(
|
|
361
|
+
BoundWorkflowRunSchema,
|
|
362
|
+
await invokeWorkflowProvider("cancel run", () => provider.cancelRun(request)),
|
|
363
|
+
);
|
|
364
|
+
},
|
|
365
|
+
async upsertSchedule(request) {
|
|
366
|
+
return create(
|
|
367
|
+
BoundWorkflowScheduleSchema,
|
|
368
|
+
await invokeWorkflowProvider("upsert schedule", () =>
|
|
369
|
+
provider.upsertSchedule(request),
|
|
370
|
+
),
|
|
371
|
+
);
|
|
372
|
+
},
|
|
373
|
+
async getSchedule(request) {
|
|
374
|
+
return create(
|
|
375
|
+
BoundWorkflowScheduleSchema,
|
|
376
|
+
await invokeWorkflowProvider("get schedule", () =>
|
|
377
|
+
provider.getSchedule(request),
|
|
378
|
+
),
|
|
379
|
+
);
|
|
380
|
+
},
|
|
381
|
+
async listSchedules(request) {
|
|
382
|
+
return create(ListWorkflowProviderSchedulesResponseSchema, {
|
|
383
|
+
schedules: await invokeWorkflowProvider("list schedules", () =>
|
|
384
|
+
provider.listSchedules(request),
|
|
385
|
+
),
|
|
386
|
+
});
|
|
387
|
+
},
|
|
388
|
+
async deleteSchedule(request) {
|
|
389
|
+
await invokeWorkflowProvider("delete schedule", () =>
|
|
390
|
+
provider.deleteSchedule(request),
|
|
391
|
+
);
|
|
392
|
+
return create(EmptySchema, {});
|
|
393
|
+
},
|
|
394
|
+
async pauseSchedule(request) {
|
|
395
|
+
return create(
|
|
396
|
+
BoundWorkflowScheduleSchema,
|
|
397
|
+
await invokeWorkflowProvider("pause schedule", () =>
|
|
398
|
+
provider.pauseSchedule(request),
|
|
399
|
+
),
|
|
400
|
+
);
|
|
401
|
+
},
|
|
402
|
+
async resumeSchedule(request) {
|
|
403
|
+
return create(
|
|
404
|
+
BoundWorkflowScheduleSchema,
|
|
405
|
+
await invokeWorkflowProvider("resume schedule", () =>
|
|
406
|
+
provider.resumeSchedule(request),
|
|
407
|
+
),
|
|
408
|
+
);
|
|
409
|
+
},
|
|
410
|
+
async upsertEventTrigger(request) {
|
|
411
|
+
return create(
|
|
412
|
+
BoundWorkflowEventTriggerSchema,
|
|
413
|
+
await invokeWorkflowProvider("upsert event trigger", () =>
|
|
414
|
+
provider.upsertEventTrigger(request),
|
|
415
|
+
),
|
|
416
|
+
);
|
|
417
|
+
},
|
|
418
|
+
async getEventTrigger(request) {
|
|
419
|
+
return create(
|
|
420
|
+
BoundWorkflowEventTriggerSchema,
|
|
421
|
+
await invokeWorkflowProvider("get event trigger", () =>
|
|
422
|
+
provider.getEventTrigger(request),
|
|
423
|
+
),
|
|
424
|
+
);
|
|
425
|
+
},
|
|
426
|
+
async listEventTriggers(request) {
|
|
427
|
+
return create(ListWorkflowProviderEventTriggersResponseSchema, {
|
|
428
|
+
triggers: await invokeWorkflowProvider("list event triggers", () =>
|
|
429
|
+
provider.listEventTriggers(request),
|
|
430
|
+
),
|
|
431
|
+
});
|
|
432
|
+
},
|
|
433
|
+
async deleteEventTrigger(request) {
|
|
434
|
+
await invokeWorkflowProvider("delete event trigger", () =>
|
|
435
|
+
provider.deleteEventTrigger(request),
|
|
436
|
+
);
|
|
437
|
+
return create(EmptySchema, {});
|
|
438
|
+
},
|
|
439
|
+
async pauseEventTrigger(request) {
|
|
440
|
+
return create(
|
|
441
|
+
BoundWorkflowEventTriggerSchema,
|
|
442
|
+
await invokeWorkflowProvider("pause event trigger", () =>
|
|
443
|
+
provider.pauseEventTrigger(request),
|
|
444
|
+
),
|
|
445
|
+
);
|
|
446
|
+
},
|
|
447
|
+
async resumeEventTrigger(request) {
|
|
448
|
+
return create(
|
|
449
|
+
BoundWorkflowEventTriggerSchema,
|
|
450
|
+
await invokeWorkflowProvider("resume event trigger", () =>
|
|
451
|
+
provider.resumeEventTrigger(request),
|
|
452
|
+
),
|
|
453
|
+
);
|
|
454
|
+
},
|
|
455
|
+
async publishEvent(request) {
|
|
456
|
+
await invokeWorkflowProvider("publish event", () =>
|
|
457
|
+
provider.publishEvent(request),
|
|
458
|
+
);
|
|
459
|
+
return create(EmptySchema, {});
|
|
460
|
+
},
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
async function invokeWorkflowProvider<T>(
|
|
465
|
+
action: string,
|
|
466
|
+
fn: () => Promise<T>,
|
|
467
|
+
): Promise<T> {
|
|
468
|
+
try {
|
|
469
|
+
return await fn();
|
|
470
|
+
} catch (error) {
|
|
471
|
+
if (error instanceof ConnectError) {
|
|
472
|
+
throw error;
|
|
473
|
+
}
|
|
474
|
+
throw new ConnectError(
|
|
475
|
+
`workflow provider ${action}: ${errorMessage(error)}`,
|
|
476
|
+
Code.Unknown,
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
}
|