@hatchet-dev/typescript-sdk 0.2.0 → 0.3.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/clients/dispatcher/action-listener.d.ts +11 -0
- package/clients/dispatcher/action-listener.js +71 -1
- package/clients/event/event-client.d.ts +1 -0
- package/clients/event/event-client.js +26 -0
- package/clients/listener/listener-client.d.ts +1 -0
- package/clients/listener/listener-client.js +3 -0
- package/package.json +1 -1
- package/protoc/dispatcher/dispatcher.d.ts +88 -0
- package/protoc/dispatcher/dispatcher.js +132 -1
- package/protoc/events/events.d.ts +52 -0
- package/protoc/events/events.js +166 -1
- package/step.d.ts +1 -0
- package/step.js +11 -0
|
@@ -2,6 +2,10 @@ import { DispatcherClient as PbDispatcherClient, AssignedAction } from '../../pr
|
|
|
2
2
|
import { ClientConfig } from '../hatchet-client/client-config';
|
|
3
3
|
import { Logger } from '../../util/logger';
|
|
4
4
|
import { DispatcherClient } from './dispatcher-client';
|
|
5
|
+
declare enum ListenStrategy {
|
|
6
|
+
LISTEN_STRATEGY_V1 = 1,
|
|
7
|
+
LISTEN_STRATEGY_V2 = 2
|
|
8
|
+
}
|
|
5
9
|
export interface Action {
|
|
6
10
|
tenantId: string;
|
|
7
11
|
jobId: string;
|
|
@@ -26,9 +30,16 @@ export declare class ActionListener {
|
|
|
26
30
|
retryInterval: number;
|
|
27
31
|
retryCount: number;
|
|
28
32
|
done: boolean;
|
|
33
|
+
listenStrategy: ListenStrategy;
|
|
34
|
+
heartbeatInterval: any;
|
|
29
35
|
constructor(client: DispatcherClient, workerId: string, retryInterval?: number, retryCount?: number);
|
|
30
36
|
actions: () => AsyncGenerator<Action, void, unknown>;
|
|
37
|
+
setListenStrategy(strategy: ListenStrategy): Promise<void>;
|
|
38
|
+
getListenStrategy(): Promise<ListenStrategy>;
|
|
31
39
|
incrementRetries(): Promise<void>;
|
|
40
|
+
heartbeat(): Promise<void>;
|
|
41
|
+
closeHeartbeat(): void;
|
|
32
42
|
getListenClient(): Promise<AsyncIterable<AssignedAction>>;
|
|
33
43
|
unregister(): Promise<import("../../protoc/dispatcher").WorkerUnsubscribeResponse>;
|
|
34
44
|
}
|
|
45
|
+
export {};
|
|
@@ -39,6 +39,12 @@ const hatchet_error_1 = __importDefault(require("../../util/errors/hatchet-error
|
|
|
39
39
|
const logger_1 = require("../../util/logger");
|
|
40
40
|
const DEFAULT_ACTION_LISTENER_RETRY_INTERVAL = 5000; // milliseconds
|
|
41
41
|
const DEFAULT_ACTION_LISTENER_RETRY_COUNT = 5;
|
|
42
|
+
// eslint-disable-next-line no-shadow
|
|
43
|
+
var ListenStrategy;
|
|
44
|
+
(function (ListenStrategy) {
|
|
45
|
+
ListenStrategy[ListenStrategy["LISTEN_STRATEGY_V1"] = 1] = "LISTEN_STRATEGY_V1";
|
|
46
|
+
ListenStrategy[ListenStrategy["LISTEN_STRATEGY_V2"] = 2] = "LISTEN_STRATEGY_V2";
|
|
47
|
+
})(ListenStrategy || (ListenStrategy = {}));
|
|
42
48
|
class ActionListener {
|
|
43
49
|
constructor(client, workerId, retryInterval = DEFAULT_ACTION_LISTENER_RETRY_INTERVAL, retryCount = DEFAULT_ACTION_LISTENER_RETRY_COUNT) {
|
|
44
50
|
this.lastConnectionAttempt = 0;
|
|
@@ -46,6 +52,7 @@ class ActionListener {
|
|
|
46
52
|
this.retryInterval = DEFAULT_ACTION_LISTENER_RETRY_INTERVAL;
|
|
47
53
|
this.retryCount = DEFAULT_ACTION_LISTENER_RETRY_COUNT;
|
|
48
54
|
this.done = false;
|
|
55
|
+
this.listenStrategy = ListenStrategy.LISTEN_STRATEGY_V2;
|
|
49
56
|
this.actions = () => (function gen(client) {
|
|
50
57
|
return __asyncGenerator(this, arguments, function* gen_1() {
|
|
51
58
|
var _a, e_1, _b, _c;
|
|
@@ -79,6 +86,10 @@ class ActionListener {
|
|
|
79
86
|
if (e.code === nice_grpc_1.Status.CANCELLED) {
|
|
80
87
|
break;
|
|
81
88
|
}
|
|
89
|
+
if ((yield __await(client.getListenStrategy())) === ListenStrategy.LISTEN_STRATEGY_V2 &&
|
|
90
|
+
e.code === nice_grpc_1.Status.UNIMPLEMENTED) {
|
|
91
|
+
client.setListenStrategy(ListenStrategy.LISTEN_STRATEGY_V1);
|
|
92
|
+
}
|
|
82
93
|
client.incrementRetries();
|
|
83
94
|
}
|
|
84
95
|
}
|
|
@@ -91,11 +102,62 @@ class ActionListener {
|
|
|
91
102
|
this.retryInterval = retryInterval;
|
|
92
103
|
this.retryCount = retryCount;
|
|
93
104
|
}
|
|
105
|
+
setListenStrategy(strategy) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
this.listenStrategy = strategy;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
getListenStrategy() {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
return this.listenStrategy;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
94
115
|
incrementRetries() {
|
|
95
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
117
|
this.retries += 1;
|
|
97
118
|
});
|
|
98
119
|
}
|
|
120
|
+
heartbeat() {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
if (this.heartbeatInterval) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// start with a heartbeat
|
|
126
|
+
try {
|
|
127
|
+
yield this.client.heartbeat({
|
|
128
|
+
workerId: this.workerId,
|
|
129
|
+
heartbeatAt: new Date(),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
this.logger.error(`Failed to send heartbeat: ${e.message}`);
|
|
134
|
+
if (e.code === nice_grpc_1.Status.UNIMPLEMENTED) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
this.heartbeatInterval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
try {
|
|
140
|
+
yield this.client.heartbeat({
|
|
141
|
+
workerId: this.workerId,
|
|
142
|
+
heartbeatAt: new Date(),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
if (e.code === nice_grpc_1.Status.UNIMPLEMENTED) {
|
|
147
|
+
// break out of interval
|
|
148
|
+
this.closeHeartbeat();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.logger.error(`Failed to send heartbeat: ${e.message}`);
|
|
152
|
+
}
|
|
153
|
+
}), 4000);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
closeHeartbeat() {
|
|
157
|
+
if (this.heartbeatInterval) {
|
|
158
|
+
clearInterval(this.heartbeatInterval);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
99
161
|
getListenClient() {
|
|
100
162
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
163
|
const currentTime = Math.floor(Date.now());
|
|
@@ -112,9 +174,16 @@ class ActionListener {
|
|
|
112
174
|
yield (0, sleep_1.default)(DEFAULT_ACTION_LISTENER_RETRY_INTERVAL);
|
|
113
175
|
}
|
|
114
176
|
try {
|
|
115
|
-
|
|
177
|
+
if (this.listenStrategy === ListenStrategy.LISTEN_STRATEGY_V1) {
|
|
178
|
+
return this.client.listen({
|
|
179
|
+
workerId: this.workerId,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
const res = this.client.listenV2({
|
|
116
183
|
workerId: this.workerId,
|
|
117
184
|
});
|
|
185
|
+
this.heartbeat();
|
|
186
|
+
return res;
|
|
118
187
|
}
|
|
119
188
|
catch (e) {
|
|
120
189
|
this.retries += 1;
|
|
@@ -126,6 +195,7 @@ class ActionListener {
|
|
|
126
195
|
unregister() {
|
|
127
196
|
return __awaiter(this, void 0, void 0, function* () {
|
|
128
197
|
this.done = true;
|
|
198
|
+
this.closeHeartbeat();
|
|
129
199
|
try {
|
|
130
200
|
return this.client.unsubscribe({
|
|
131
201
|
workerId: this.workerId,
|
|
@@ -15,4 +15,5 @@ export declare class EventClient {
|
|
|
15
15
|
constructor(config: ClientConfig, channel: Channel, factory: ClientFactory);
|
|
16
16
|
push<T>(type: string, input: T): Promise<import("../../protoc/events/events").Event>;
|
|
17
17
|
putLog(stepRunId: string, log: string, level?: LogLevel): void;
|
|
18
|
+
putStream(stepRunId: string, data: string | Uint8Array): void;
|
|
18
19
|
}
|
|
@@ -65,5 +65,31 @@ class EventClient {
|
|
|
65
65
|
this.logger.warn(`Could not put log: ${e.message}`);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
+
putStream(stepRunId, data) {
|
|
69
|
+
const createdAt = new Date();
|
|
70
|
+
let dataBytes;
|
|
71
|
+
if (typeof data === 'string') {
|
|
72
|
+
dataBytes = new TextEncoder().encode(data);
|
|
73
|
+
}
|
|
74
|
+
else if (data instanceof Uint8Array) {
|
|
75
|
+
dataBytes = data;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new Error('Invalid data type. Expected string or Uint8Array.');
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
(0, retrier_1.retrier)(() => __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
return this.client.putStreamEvent({
|
|
83
|
+
stepRunId,
|
|
84
|
+
createdAt,
|
|
85
|
+
message: dataBytes,
|
|
86
|
+
});
|
|
87
|
+
}), this.logger);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
// log a warning, but this is not a fatal error
|
|
91
|
+
this.logger.warn(`Could not put log: ${e.message}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
68
94
|
}
|
|
69
95
|
exports.EventClient = EventClient;
|
|
@@ -11,6 +11,7 @@ export declare enum RunEventType {
|
|
|
11
11
|
STEP_RUN_EVENT_TYPE_FAILED = "STEP_RUN_EVENT_TYPE_FAILED",
|
|
12
12
|
STEP_RUN_EVENT_TYPE_CANCELLED = "STEP_RUN_EVENT_TYPE_CANCELLED",
|
|
13
13
|
STEP_RUN_EVENT_TYPE_TIMED_OUT = "STEP_RUN_EVENT_TYPE_TIMED_OUT",
|
|
14
|
+
STEP_RUN_EVENT_TYPE_STREAM = "STEP_RUN_EVENT_TYPE_STREAM",
|
|
14
15
|
WORKFLOW_RUN_EVENT_TYPE_STARTED = "WORKFLOW_RUN_EVENT_TYPE_STARTED",
|
|
15
16
|
WORKFLOW_RUN_EVENT_TYPE_COMPLETED = "WORKFLOW_RUN_EVENT_TYPE_COMPLETED",
|
|
16
17
|
WORKFLOW_RUN_EVENT_TYPE_FAILED = "WORKFLOW_RUN_EVENT_TYPE_FAILED",
|
|
@@ -52,6 +52,7 @@ var RunEventType;
|
|
|
52
52
|
RunEventType["STEP_RUN_EVENT_TYPE_FAILED"] = "STEP_RUN_EVENT_TYPE_FAILED";
|
|
53
53
|
RunEventType["STEP_RUN_EVENT_TYPE_CANCELLED"] = "STEP_RUN_EVENT_TYPE_CANCELLED";
|
|
54
54
|
RunEventType["STEP_RUN_EVENT_TYPE_TIMED_OUT"] = "STEP_RUN_EVENT_TYPE_TIMED_OUT";
|
|
55
|
+
RunEventType["STEP_RUN_EVENT_TYPE_STREAM"] = "STEP_RUN_EVENT_TYPE_STREAM";
|
|
55
56
|
RunEventType["WORKFLOW_RUN_EVENT_TYPE_STARTED"] = "WORKFLOW_RUN_EVENT_TYPE_STARTED";
|
|
56
57
|
RunEventType["WORKFLOW_RUN_EVENT_TYPE_COMPLETED"] = "WORKFLOW_RUN_EVENT_TYPE_COMPLETED";
|
|
57
58
|
RunEventType["WORKFLOW_RUN_EVENT_TYPE_FAILED"] = "WORKFLOW_RUN_EVENT_TYPE_FAILED";
|
|
@@ -64,6 +65,7 @@ const stepEventTypeMap = {
|
|
|
64
65
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_FAILED]: RunEventType.STEP_RUN_EVENT_TYPE_FAILED,
|
|
65
66
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_CANCELLED]: RunEventType.STEP_RUN_EVENT_TYPE_CANCELLED,
|
|
66
67
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_TIMED_OUT]: RunEventType.STEP_RUN_EVENT_TYPE_TIMED_OUT,
|
|
68
|
+
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_STREAM]: RunEventType.STEP_RUN_EVENT_TYPE_STREAM,
|
|
67
69
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_UNKNOWN]: undefined,
|
|
68
70
|
[dispatcher_1.ResourceEventType.UNRECOGNIZED]: undefined,
|
|
69
71
|
};
|
|
@@ -74,6 +76,7 @@ const workflowEventTypeMap = {
|
|
|
74
76
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_CANCELLED]: RunEventType.WORKFLOW_RUN_EVENT_TYPE_CANCELLED,
|
|
75
77
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_TIMED_OUT]: RunEventType.WORKFLOW_RUN_EVENT_TYPE_TIMED_OUT,
|
|
76
78
|
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_UNKNOWN]: undefined,
|
|
79
|
+
[dispatcher_1.ResourceEventType.RESOURCE_EVENT_TYPE_STREAM]: undefined,
|
|
77
80
|
[dispatcher_1.ResourceEventType.UNRECOGNIZED]: undefined,
|
|
78
81
|
};
|
|
79
82
|
const resourceTypeMap = {
|
package/package.json
CHANGED
|
@@ -42,6 +42,7 @@ export declare enum ResourceEventType {
|
|
|
42
42
|
RESOURCE_EVENT_TYPE_FAILED = 3,
|
|
43
43
|
RESOURCE_EVENT_TYPE_CANCELLED = 4,
|
|
44
44
|
RESOURCE_EVENT_TYPE_TIMED_OUT = 5,
|
|
45
|
+
RESOURCE_EVENT_TYPE_STREAM = 6,
|
|
45
46
|
UNRECOGNIZED = -1
|
|
46
47
|
}
|
|
47
48
|
export declare function resourceEventTypeFromJSON(object: any): ResourceEventType;
|
|
@@ -178,6 +179,14 @@ export interface OverridesData {
|
|
|
178
179
|
}
|
|
179
180
|
export interface OverridesDataResponse {
|
|
180
181
|
}
|
|
182
|
+
export interface HeartbeatRequest {
|
|
183
|
+
/** the id of the worker */
|
|
184
|
+
workerId: string;
|
|
185
|
+
/** heartbeatAt is the time the worker sent the heartbeat */
|
|
186
|
+
heartbeatAt: Date | undefined;
|
|
187
|
+
}
|
|
188
|
+
export interface HeartbeatResponse {
|
|
189
|
+
}
|
|
181
190
|
export declare const WorkerRegisterRequest: {
|
|
182
191
|
encode(message: WorkerRegisterRequest, writer?: _m0.Writer): _m0.Writer;
|
|
183
192
|
decode(input: _m0.Reader | Uint8Array, length?: number): WorkerRegisterRequest;
|
|
@@ -282,6 +291,22 @@ export declare const OverridesDataResponse: {
|
|
|
282
291
|
create(base?: DeepPartial<OverridesDataResponse>): OverridesDataResponse;
|
|
283
292
|
fromPartial(_: DeepPartial<OverridesDataResponse>): OverridesDataResponse;
|
|
284
293
|
};
|
|
294
|
+
export declare const HeartbeatRequest: {
|
|
295
|
+
encode(message: HeartbeatRequest, writer?: _m0.Writer): _m0.Writer;
|
|
296
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): HeartbeatRequest;
|
|
297
|
+
fromJSON(object: any): HeartbeatRequest;
|
|
298
|
+
toJSON(message: HeartbeatRequest): unknown;
|
|
299
|
+
create(base?: DeepPartial<HeartbeatRequest>): HeartbeatRequest;
|
|
300
|
+
fromPartial(object: DeepPartial<HeartbeatRequest>): HeartbeatRequest;
|
|
301
|
+
};
|
|
302
|
+
export declare const HeartbeatResponse: {
|
|
303
|
+
encode(_: HeartbeatResponse, writer?: _m0.Writer): _m0.Writer;
|
|
304
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): HeartbeatResponse;
|
|
305
|
+
fromJSON(_: any): HeartbeatResponse;
|
|
306
|
+
toJSON(_: HeartbeatResponse): unknown;
|
|
307
|
+
create(base?: DeepPartial<HeartbeatResponse>): HeartbeatResponse;
|
|
308
|
+
fromPartial(_: DeepPartial<HeartbeatResponse>): HeartbeatResponse;
|
|
309
|
+
};
|
|
285
310
|
export type DispatcherDefinition = typeof DispatcherDefinition;
|
|
286
311
|
export declare const DispatcherDefinition: {
|
|
287
312
|
readonly name: "Dispatcher";
|
|
@@ -331,6 +356,55 @@ export declare const DispatcherDefinition: {
|
|
|
331
356
|
readonly responseStream: true;
|
|
332
357
|
readonly options: {};
|
|
333
358
|
};
|
|
359
|
+
/**
|
|
360
|
+
* ListenV2 is like listen, but implementation does not include heartbeats. This should only used by SDKs
|
|
361
|
+
* against engine version v0.18.1+
|
|
362
|
+
*/
|
|
363
|
+
readonly listenV2: {
|
|
364
|
+
readonly name: "ListenV2";
|
|
365
|
+
readonly requestType: {
|
|
366
|
+
encode(message: WorkerListenRequest, writer?: _m0.Writer): _m0.Writer;
|
|
367
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): WorkerListenRequest;
|
|
368
|
+
fromJSON(object: any): WorkerListenRequest;
|
|
369
|
+
toJSON(message: WorkerListenRequest): unknown;
|
|
370
|
+
create(base?: DeepPartial<WorkerListenRequest>): WorkerListenRequest;
|
|
371
|
+
fromPartial(object: DeepPartial<WorkerListenRequest>): WorkerListenRequest;
|
|
372
|
+
};
|
|
373
|
+
readonly requestStream: false;
|
|
374
|
+
readonly responseType: {
|
|
375
|
+
encode(message: AssignedAction, writer?: _m0.Writer): _m0.Writer;
|
|
376
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): AssignedAction;
|
|
377
|
+
fromJSON(object: any): AssignedAction;
|
|
378
|
+
toJSON(message: AssignedAction): unknown;
|
|
379
|
+
create(base?: DeepPartial<AssignedAction>): AssignedAction;
|
|
380
|
+
fromPartial(object: DeepPartial<AssignedAction>): AssignedAction;
|
|
381
|
+
};
|
|
382
|
+
readonly responseStream: true;
|
|
383
|
+
readonly options: {};
|
|
384
|
+
};
|
|
385
|
+
/** Heartbeat is a method for workers to send heartbeats to the dispatcher */
|
|
386
|
+
readonly heartbeat: {
|
|
387
|
+
readonly name: "Heartbeat";
|
|
388
|
+
readonly requestType: {
|
|
389
|
+
encode(message: HeartbeatRequest, writer?: _m0.Writer): _m0.Writer;
|
|
390
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): HeartbeatRequest;
|
|
391
|
+
fromJSON(object: any): HeartbeatRequest;
|
|
392
|
+
toJSON(message: HeartbeatRequest): unknown;
|
|
393
|
+
create(base?: DeepPartial<HeartbeatRequest>): HeartbeatRequest;
|
|
394
|
+
fromPartial(object: DeepPartial<HeartbeatRequest>): HeartbeatRequest;
|
|
395
|
+
};
|
|
396
|
+
readonly requestStream: false;
|
|
397
|
+
readonly responseType: {
|
|
398
|
+
encode(_: HeartbeatResponse, writer?: _m0.Writer): _m0.Writer;
|
|
399
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): HeartbeatResponse;
|
|
400
|
+
fromJSON(_: any): HeartbeatResponse;
|
|
401
|
+
toJSON(_: HeartbeatResponse): unknown;
|
|
402
|
+
create(base?: DeepPartial<HeartbeatResponse>): HeartbeatResponse;
|
|
403
|
+
fromPartial(_: DeepPartial<HeartbeatResponse>): HeartbeatResponse;
|
|
404
|
+
};
|
|
405
|
+
readonly responseStream: false;
|
|
406
|
+
readonly options: {};
|
|
407
|
+
};
|
|
334
408
|
readonly subscribeToWorkflowEvents: {
|
|
335
409
|
readonly name: "SubscribeToWorkflowEvents";
|
|
336
410
|
readonly requestType: {
|
|
@@ -446,6 +520,13 @@ export declare const DispatcherDefinition: {
|
|
|
446
520
|
export interface DispatcherServiceImplementation<CallContextExt = {}> {
|
|
447
521
|
register(request: WorkerRegisterRequest, context: CallContext & CallContextExt): Promise<DeepPartial<WorkerRegisterResponse>>;
|
|
448
522
|
listen(request: WorkerListenRequest, context: CallContext & CallContextExt): ServerStreamingMethodResult<DeepPartial<AssignedAction>>;
|
|
523
|
+
/**
|
|
524
|
+
* ListenV2 is like listen, but implementation does not include heartbeats. This should only used by SDKs
|
|
525
|
+
* against engine version v0.18.1+
|
|
526
|
+
*/
|
|
527
|
+
listenV2(request: WorkerListenRequest, context: CallContext & CallContextExt): ServerStreamingMethodResult<DeepPartial<AssignedAction>>;
|
|
528
|
+
/** Heartbeat is a method for workers to send heartbeats to the dispatcher */
|
|
529
|
+
heartbeat(request: HeartbeatRequest, context: CallContext & CallContextExt): Promise<DeepPartial<HeartbeatResponse>>;
|
|
449
530
|
subscribeToWorkflowEvents(request: SubscribeToWorkflowEventsRequest, context: CallContext & CallContextExt): ServerStreamingMethodResult<DeepPartial<WorkflowEvent>>;
|
|
450
531
|
sendStepActionEvent(request: StepActionEvent, context: CallContext & CallContextExt): Promise<DeepPartial<ActionEventResponse>>;
|
|
451
532
|
sendGroupKeyActionEvent(request: GroupKeyActionEvent, context: CallContext & CallContextExt): Promise<DeepPartial<ActionEventResponse>>;
|
|
@@ -455,6 +536,13 @@ export interface DispatcherServiceImplementation<CallContextExt = {}> {
|
|
|
455
536
|
export interface DispatcherClient<CallOptionsExt = {}> {
|
|
456
537
|
register(request: DeepPartial<WorkerRegisterRequest>, options?: CallOptions & CallOptionsExt): Promise<WorkerRegisterResponse>;
|
|
457
538
|
listen(request: DeepPartial<WorkerListenRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<AssignedAction>;
|
|
539
|
+
/**
|
|
540
|
+
* ListenV2 is like listen, but implementation does not include heartbeats. This should only used by SDKs
|
|
541
|
+
* against engine version v0.18.1+
|
|
542
|
+
*/
|
|
543
|
+
listenV2(request: DeepPartial<WorkerListenRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<AssignedAction>;
|
|
544
|
+
/** Heartbeat is a method for workers to send heartbeats to the dispatcher */
|
|
545
|
+
heartbeat(request: DeepPartial<HeartbeatRequest>, options?: CallOptions & CallOptionsExt): Promise<HeartbeatResponse>;
|
|
458
546
|
subscribeToWorkflowEvents(request: DeepPartial<SubscribeToWorkflowEventsRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<WorkflowEvent>;
|
|
459
547
|
sendStepActionEvent(request: DeepPartial<StepActionEvent>, options?: CallOptions & CallOptionsExt): Promise<ActionEventResponse>;
|
|
460
548
|
sendGroupKeyActionEvent(request: DeepPartial<GroupKeyActionEvent>, options?: CallOptions & CallOptionsExt): Promise<ActionEventResponse>;
|
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.DispatcherDefinition = exports.OverridesDataResponse = exports.OverridesData = exports.WorkflowEvent = exports.SubscribeToWorkflowEventsRequest = exports.ActionEventResponse = exports.StepActionEvent = exports.GroupKeyActionEvent = exports.WorkerUnsubscribeResponse = exports.WorkerUnsubscribeRequest = exports.WorkerListenRequest = exports.AssignedAction = exports.WorkerRegisterResponse = exports.WorkerRegisterRequest = exports.resourceEventTypeToJSON = exports.resourceEventTypeFromJSON = exports.ResourceEventType = exports.resourceTypeToJSON = exports.resourceTypeFromJSON = exports.ResourceType = exports.stepActionEventTypeToJSON = exports.stepActionEventTypeFromJSON = exports.StepActionEventType = exports.groupKeyActionEventTypeToJSON = exports.groupKeyActionEventTypeFromJSON = exports.GroupKeyActionEventType = exports.actionTypeToJSON = exports.actionTypeFromJSON = exports.ActionType = exports.protobufPackage = void 0;
|
|
26
|
+
exports.DispatcherDefinition = exports.HeartbeatResponse = exports.HeartbeatRequest = exports.OverridesDataResponse = exports.OverridesData = exports.WorkflowEvent = exports.SubscribeToWorkflowEventsRequest = exports.ActionEventResponse = exports.StepActionEvent = exports.GroupKeyActionEvent = exports.WorkerUnsubscribeResponse = exports.WorkerUnsubscribeRequest = exports.WorkerListenRequest = exports.AssignedAction = exports.WorkerRegisterResponse = exports.WorkerRegisterRequest = exports.resourceEventTypeToJSON = exports.resourceEventTypeFromJSON = exports.ResourceEventType = exports.resourceTypeToJSON = exports.resourceTypeFromJSON = exports.ResourceType = exports.stepActionEventTypeToJSON = exports.stepActionEventTypeFromJSON = exports.StepActionEventType = exports.groupKeyActionEventTypeToJSON = exports.groupKeyActionEventTypeFromJSON = exports.GroupKeyActionEventType = exports.actionTypeToJSON = exports.actionTypeFromJSON = exports.ActionType = exports.protobufPackage = void 0;
|
|
27
27
|
const _m0 = __importStar(require("protobufjs/minimal"));
|
|
28
28
|
const timestamp_1 = require("../google/protobuf/timestamp");
|
|
29
29
|
exports.protobufPackage = '';
|
|
@@ -203,6 +203,7 @@ var ResourceEventType;
|
|
|
203
203
|
ResourceEventType[ResourceEventType["RESOURCE_EVENT_TYPE_FAILED"] = 3] = "RESOURCE_EVENT_TYPE_FAILED";
|
|
204
204
|
ResourceEventType[ResourceEventType["RESOURCE_EVENT_TYPE_CANCELLED"] = 4] = "RESOURCE_EVENT_TYPE_CANCELLED";
|
|
205
205
|
ResourceEventType[ResourceEventType["RESOURCE_EVENT_TYPE_TIMED_OUT"] = 5] = "RESOURCE_EVENT_TYPE_TIMED_OUT";
|
|
206
|
+
ResourceEventType[ResourceEventType["RESOURCE_EVENT_TYPE_STREAM"] = 6] = "RESOURCE_EVENT_TYPE_STREAM";
|
|
206
207
|
ResourceEventType[ResourceEventType["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
|
207
208
|
})(ResourceEventType || (exports.ResourceEventType = ResourceEventType = {}));
|
|
208
209
|
function resourceEventTypeFromJSON(object) {
|
|
@@ -225,6 +226,9 @@ function resourceEventTypeFromJSON(object) {
|
|
|
225
226
|
case 5:
|
|
226
227
|
case 'RESOURCE_EVENT_TYPE_TIMED_OUT':
|
|
227
228
|
return ResourceEventType.RESOURCE_EVENT_TYPE_TIMED_OUT;
|
|
229
|
+
case 6:
|
|
230
|
+
case 'RESOURCE_EVENT_TYPE_STREAM':
|
|
231
|
+
return ResourceEventType.RESOURCE_EVENT_TYPE_STREAM;
|
|
228
232
|
case -1:
|
|
229
233
|
case 'UNRECOGNIZED':
|
|
230
234
|
default:
|
|
@@ -246,6 +250,8 @@ function resourceEventTypeToJSON(object) {
|
|
|
246
250
|
return 'RESOURCE_EVENT_TYPE_CANCELLED';
|
|
247
251
|
case ResourceEventType.RESOURCE_EVENT_TYPE_TIMED_OUT:
|
|
248
252
|
return 'RESOURCE_EVENT_TYPE_TIMED_OUT';
|
|
253
|
+
case ResourceEventType.RESOURCE_EVENT_TYPE_STREAM:
|
|
254
|
+
return 'RESOURCE_EVENT_TYPE_STREAM';
|
|
249
255
|
case ResourceEventType.UNRECOGNIZED:
|
|
250
256
|
default:
|
|
251
257
|
return 'UNRECOGNIZED';
|
|
@@ -1579,6 +1585,110 @@ exports.OverridesDataResponse = {
|
|
|
1579
1585
|
return message;
|
|
1580
1586
|
},
|
|
1581
1587
|
};
|
|
1588
|
+
function createBaseHeartbeatRequest() {
|
|
1589
|
+
return { workerId: '', heartbeatAt: undefined };
|
|
1590
|
+
}
|
|
1591
|
+
exports.HeartbeatRequest = {
|
|
1592
|
+
encode(message, writer = _m0.Writer.create()) {
|
|
1593
|
+
if (message.workerId !== '') {
|
|
1594
|
+
writer.uint32(10).string(message.workerId);
|
|
1595
|
+
}
|
|
1596
|
+
if (message.heartbeatAt !== undefined) {
|
|
1597
|
+
timestamp_1.Timestamp.encode(toTimestamp(message.heartbeatAt), writer.uint32(18).fork()).ldelim();
|
|
1598
|
+
}
|
|
1599
|
+
return writer;
|
|
1600
|
+
},
|
|
1601
|
+
decode(input, length) {
|
|
1602
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
1603
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
1604
|
+
const message = createBaseHeartbeatRequest();
|
|
1605
|
+
while (reader.pos < end) {
|
|
1606
|
+
const tag = reader.uint32();
|
|
1607
|
+
switch (tag >>> 3) {
|
|
1608
|
+
case 1:
|
|
1609
|
+
if (tag !== 10) {
|
|
1610
|
+
break;
|
|
1611
|
+
}
|
|
1612
|
+
message.workerId = reader.string();
|
|
1613
|
+
continue;
|
|
1614
|
+
case 2:
|
|
1615
|
+
if (tag !== 18) {
|
|
1616
|
+
break;
|
|
1617
|
+
}
|
|
1618
|
+
message.heartbeatAt = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
|
|
1619
|
+
continue;
|
|
1620
|
+
}
|
|
1621
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
1622
|
+
break;
|
|
1623
|
+
}
|
|
1624
|
+
reader.skipType(tag & 7);
|
|
1625
|
+
}
|
|
1626
|
+
return message;
|
|
1627
|
+
},
|
|
1628
|
+
fromJSON(object) {
|
|
1629
|
+
return {
|
|
1630
|
+
workerId: isSet(object.workerId) ? globalThis.String(object.workerId) : '',
|
|
1631
|
+
heartbeatAt: isSet(object.heartbeatAt) ? fromJsonTimestamp(object.heartbeatAt) : undefined,
|
|
1632
|
+
};
|
|
1633
|
+
},
|
|
1634
|
+
toJSON(message) {
|
|
1635
|
+
const obj = {};
|
|
1636
|
+
if (message.workerId !== '') {
|
|
1637
|
+
obj.workerId = message.workerId;
|
|
1638
|
+
}
|
|
1639
|
+
if (message.heartbeatAt !== undefined) {
|
|
1640
|
+
obj.heartbeatAt = message.heartbeatAt.toISOString();
|
|
1641
|
+
}
|
|
1642
|
+
return obj;
|
|
1643
|
+
},
|
|
1644
|
+
create(base) {
|
|
1645
|
+
return exports.HeartbeatRequest.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
1646
|
+
},
|
|
1647
|
+
fromPartial(object) {
|
|
1648
|
+
var _a, _b;
|
|
1649
|
+
const message = createBaseHeartbeatRequest();
|
|
1650
|
+
message.workerId = (_a = object.workerId) !== null && _a !== void 0 ? _a : '';
|
|
1651
|
+
message.heartbeatAt = (_b = object.heartbeatAt) !== null && _b !== void 0 ? _b : undefined;
|
|
1652
|
+
return message;
|
|
1653
|
+
},
|
|
1654
|
+
};
|
|
1655
|
+
function createBaseHeartbeatResponse() {
|
|
1656
|
+
return {};
|
|
1657
|
+
}
|
|
1658
|
+
exports.HeartbeatResponse = {
|
|
1659
|
+
encode(_, writer = _m0.Writer.create()) {
|
|
1660
|
+
return writer;
|
|
1661
|
+
},
|
|
1662
|
+
decode(input, length) {
|
|
1663
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
1664
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
1665
|
+
const message = createBaseHeartbeatResponse();
|
|
1666
|
+
while (reader.pos < end) {
|
|
1667
|
+
const tag = reader.uint32();
|
|
1668
|
+
switch (tag >>> 3) {
|
|
1669
|
+
}
|
|
1670
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
1671
|
+
break;
|
|
1672
|
+
}
|
|
1673
|
+
reader.skipType(tag & 7);
|
|
1674
|
+
}
|
|
1675
|
+
return message;
|
|
1676
|
+
},
|
|
1677
|
+
fromJSON(_) {
|
|
1678
|
+
return {};
|
|
1679
|
+
},
|
|
1680
|
+
toJSON(_) {
|
|
1681
|
+
const obj = {};
|
|
1682
|
+
return obj;
|
|
1683
|
+
},
|
|
1684
|
+
create(base) {
|
|
1685
|
+
return exports.HeartbeatResponse.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
1686
|
+
},
|
|
1687
|
+
fromPartial(_) {
|
|
1688
|
+
const message = createBaseHeartbeatResponse();
|
|
1689
|
+
return message;
|
|
1690
|
+
},
|
|
1691
|
+
};
|
|
1582
1692
|
exports.DispatcherDefinition = {
|
|
1583
1693
|
name: 'Dispatcher',
|
|
1584
1694
|
fullName: 'Dispatcher',
|
|
@@ -1599,6 +1709,27 @@ exports.DispatcherDefinition = {
|
|
|
1599
1709
|
responseStream: true,
|
|
1600
1710
|
options: {},
|
|
1601
1711
|
},
|
|
1712
|
+
/**
|
|
1713
|
+
* ListenV2 is like listen, but implementation does not include heartbeats. This should only used by SDKs
|
|
1714
|
+
* against engine version v0.18.1+
|
|
1715
|
+
*/
|
|
1716
|
+
listenV2: {
|
|
1717
|
+
name: 'ListenV2',
|
|
1718
|
+
requestType: exports.WorkerListenRequest,
|
|
1719
|
+
requestStream: false,
|
|
1720
|
+
responseType: exports.AssignedAction,
|
|
1721
|
+
responseStream: true,
|
|
1722
|
+
options: {},
|
|
1723
|
+
},
|
|
1724
|
+
/** Heartbeat is a method for workers to send heartbeats to the dispatcher */
|
|
1725
|
+
heartbeat: {
|
|
1726
|
+
name: 'Heartbeat',
|
|
1727
|
+
requestType: exports.HeartbeatRequest,
|
|
1728
|
+
requestStream: false,
|
|
1729
|
+
responseType: exports.HeartbeatResponse,
|
|
1730
|
+
responseStream: false,
|
|
1731
|
+
options: {},
|
|
1732
|
+
},
|
|
1602
1733
|
subscribeToWorkflowEvents: {
|
|
1603
1734
|
name: 'SubscribeToWorkflowEvents',
|
|
1604
1735
|
requestType: exports.SubscribeToWorkflowEventsRequest,
|
|
@@ -27,6 +27,18 @@ export interface PutLogRequest {
|
|
|
27
27
|
}
|
|
28
28
|
export interface PutLogResponse {
|
|
29
29
|
}
|
|
30
|
+
export interface PutStreamEventRequest {
|
|
31
|
+
/** the step run id for the request */
|
|
32
|
+
stepRunId: string;
|
|
33
|
+
/** when the stream event was created */
|
|
34
|
+
createdAt: Date | undefined;
|
|
35
|
+
/** the stream event message */
|
|
36
|
+
message: Uint8Array;
|
|
37
|
+
/** associated stream event metadata */
|
|
38
|
+
metadata: string;
|
|
39
|
+
}
|
|
40
|
+
export interface PutStreamEventResponse {
|
|
41
|
+
}
|
|
30
42
|
export interface PushEventRequest {
|
|
31
43
|
/** the key for the event */
|
|
32
44
|
key: string;
|
|
@@ -63,6 +75,22 @@ export declare const PutLogResponse: {
|
|
|
63
75
|
create(base?: DeepPartial<PutLogResponse>): PutLogResponse;
|
|
64
76
|
fromPartial(_: DeepPartial<PutLogResponse>): PutLogResponse;
|
|
65
77
|
};
|
|
78
|
+
export declare const PutStreamEventRequest: {
|
|
79
|
+
encode(message: PutStreamEventRequest, writer?: _m0.Writer): _m0.Writer;
|
|
80
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): PutStreamEventRequest;
|
|
81
|
+
fromJSON(object: any): PutStreamEventRequest;
|
|
82
|
+
toJSON(message: PutStreamEventRequest): unknown;
|
|
83
|
+
create(base?: DeepPartial<PutStreamEventRequest>): PutStreamEventRequest;
|
|
84
|
+
fromPartial(object: DeepPartial<PutStreamEventRequest>): PutStreamEventRequest;
|
|
85
|
+
};
|
|
86
|
+
export declare const PutStreamEventResponse: {
|
|
87
|
+
encode(_: PutStreamEventResponse, writer?: _m0.Writer): _m0.Writer;
|
|
88
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): PutStreamEventResponse;
|
|
89
|
+
fromJSON(_: any): PutStreamEventResponse;
|
|
90
|
+
toJSON(_: PutStreamEventResponse): unknown;
|
|
91
|
+
create(base?: DeepPartial<PutStreamEventResponse>): PutStreamEventResponse;
|
|
92
|
+
fromPartial(_: DeepPartial<PutStreamEventResponse>): PutStreamEventResponse;
|
|
93
|
+
};
|
|
66
94
|
export declare const PushEventRequest: {
|
|
67
95
|
encode(message: PushEventRequest, writer?: _m0.Writer): _m0.Writer;
|
|
68
96
|
decode(input: _m0.Reader | Uint8Array, length?: number): PushEventRequest;
|
|
@@ -150,17 +178,41 @@ export declare const EventsServiceDefinition: {
|
|
|
150
178
|
readonly responseStream: false;
|
|
151
179
|
readonly options: {};
|
|
152
180
|
};
|
|
181
|
+
readonly putStreamEvent: {
|
|
182
|
+
readonly name: "PutStreamEvent";
|
|
183
|
+
readonly requestType: {
|
|
184
|
+
encode(message: PutStreamEventRequest, writer?: _m0.Writer): _m0.Writer;
|
|
185
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): PutStreamEventRequest;
|
|
186
|
+
fromJSON(object: any): PutStreamEventRequest;
|
|
187
|
+
toJSON(message: PutStreamEventRequest): unknown;
|
|
188
|
+
create(base?: DeepPartial<PutStreamEventRequest>): PutStreamEventRequest;
|
|
189
|
+
fromPartial(object: DeepPartial<PutStreamEventRequest>): PutStreamEventRequest;
|
|
190
|
+
};
|
|
191
|
+
readonly requestStream: false;
|
|
192
|
+
readonly responseType: {
|
|
193
|
+
encode(_: PutStreamEventResponse, writer?: _m0.Writer): _m0.Writer;
|
|
194
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): PutStreamEventResponse;
|
|
195
|
+
fromJSON(_: any): PutStreamEventResponse;
|
|
196
|
+
toJSON(_: PutStreamEventResponse): unknown;
|
|
197
|
+
create(base?: DeepPartial<PutStreamEventResponse>): PutStreamEventResponse;
|
|
198
|
+
fromPartial(_: DeepPartial<PutStreamEventResponse>): PutStreamEventResponse;
|
|
199
|
+
};
|
|
200
|
+
readonly responseStream: false;
|
|
201
|
+
readonly options: {};
|
|
202
|
+
};
|
|
153
203
|
};
|
|
154
204
|
};
|
|
155
205
|
export interface EventsServiceImplementation<CallContextExt = {}> {
|
|
156
206
|
push(request: PushEventRequest, context: CallContext & CallContextExt): Promise<DeepPartial<Event>>;
|
|
157
207
|
replaySingleEvent(request: ReplayEventRequest, context: CallContext & CallContextExt): Promise<DeepPartial<Event>>;
|
|
158
208
|
putLog(request: PutLogRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PutLogResponse>>;
|
|
209
|
+
putStreamEvent(request: PutStreamEventRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PutStreamEventResponse>>;
|
|
159
210
|
}
|
|
160
211
|
export interface EventsServiceClient<CallOptionsExt = {}> {
|
|
161
212
|
push(request: DeepPartial<PushEventRequest>, options?: CallOptions & CallOptionsExt): Promise<Event>;
|
|
162
213
|
replaySingleEvent(request: DeepPartial<ReplayEventRequest>, options?: CallOptions & CallOptionsExt): Promise<Event>;
|
|
163
214
|
putLog(request: DeepPartial<PutLogRequest>, options?: CallOptions & CallOptionsExt): Promise<PutLogResponse>;
|
|
215
|
+
putStreamEvent(request: DeepPartial<PutStreamEventRequest>, options?: CallOptions & CallOptionsExt): Promise<PutStreamEventResponse>;
|
|
164
216
|
}
|
|
165
217
|
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
166
218
|
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
|
package/protoc/events/events.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.EventsServiceDefinition = exports.ReplayEventRequest = exports.PushEventRequest = exports.PutLogResponse = exports.PutLogRequest = exports.Event = exports.protobufPackage = void 0;
|
|
26
|
+
exports.EventsServiceDefinition = exports.ReplayEventRequest = exports.PushEventRequest = exports.PutStreamEventResponse = exports.PutStreamEventRequest = exports.PutLogResponse = exports.PutLogRequest = exports.Event = exports.protobufPackage = void 0;
|
|
27
27
|
const _m0 = __importStar(require("protobufjs/minimal"));
|
|
28
28
|
const timestamp_1 = require("../google/protobuf/timestamp");
|
|
29
29
|
exports.protobufPackage = '';
|
|
@@ -284,6 +284,138 @@ exports.PutLogResponse = {
|
|
|
284
284
|
return message;
|
|
285
285
|
},
|
|
286
286
|
};
|
|
287
|
+
function createBasePutStreamEventRequest() {
|
|
288
|
+
return { stepRunId: '', createdAt: undefined, message: new Uint8Array(0), metadata: '' };
|
|
289
|
+
}
|
|
290
|
+
exports.PutStreamEventRequest = {
|
|
291
|
+
encode(message, writer = _m0.Writer.create()) {
|
|
292
|
+
if (message.stepRunId !== '') {
|
|
293
|
+
writer.uint32(10).string(message.stepRunId);
|
|
294
|
+
}
|
|
295
|
+
if (message.createdAt !== undefined) {
|
|
296
|
+
timestamp_1.Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(18).fork()).ldelim();
|
|
297
|
+
}
|
|
298
|
+
if (message.message.length !== 0) {
|
|
299
|
+
writer.uint32(26).bytes(message.message);
|
|
300
|
+
}
|
|
301
|
+
if (message.metadata !== '') {
|
|
302
|
+
writer.uint32(42).string(message.metadata);
|
|
303
|
+
}
|
|
304
|
+
return writer;
|
|
305
|
+
},
|
|
306
|
+
decode(input, length) {
|
|
307
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
308
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
309
|
+
const message = createBasePutStreamEventRequest();
|
|
310
|
+
while (reader.pos < end) {
|
|
311
|
+
const tag = reader.uint32();
|
|
312
|
+
switch (tag >>> 3) {
|
|
313
|
+
case 1:
|
|
314
|
+
if (tag !== 10) {
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
message.stepRunId = reader.string();
|
|
318
|
+
continue;
|
|
319
|
+
case 2:
|
|
320
|
+
if (tag !== 18) {
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
message.createdAt = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
|
|
324
|
+
continue;
|
|
325
|
+
case 3:
|
|
326
|
+
if (tag !== 26) {
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
message.message = reader.bytes();
|
|
330
|
+
continue;
|
|
331
|
+
case 5:
|
|
332
|
+
if (tag !== 42) {
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
message.metadata = reader.string();
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
reader.skipType(tag & 7);
|
|
342
|
+
}
|
|
343
|
+
return message;
|
|
344
|
+
},
|
|
345
|
+
fromJSON(object) {
|
|
346
|
+
return {
|
|
347
|
+
stepRunId: isSet(object.stepRunId) ? globalThis.String(object.stepRunId) : '',
|
|
348
|
+
createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,
|
|
349
|
+
message: isSet(object.message) ? bytesFromBase64(object.message) : new Uint8Array(0),
|
|
350
|
+
metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : '',
|
|
351
|
+
};
|
|
352
|
+
},
|
|
353
|
+
toJSON(message) {
|
|
354
|
+
const obj = {};
|
|
355
|
+
if (message.stepRunId !== '') {
|
|
356
|
+
obj.stepRunId = message.stepRunId;
|
|
357
|
+
}
|
|
358
|
+
if (message.createdAt !== undefined) {
|
|
359
|
+
obj.createdAt = message.createdAt.toISOString();
|
|
360
|
+
}
|
|
361
|
+
if (message.message.length !== 0) {
|
|
362
|
+
obj.message = base64FromBytes(message.message);
|
|
363
|
+
}
|
|
364
|
+
if (message.metadata !== '') {
|
|
365
|
+
obj.metadata = message.metadata;
|
|
366
|
+
}
|
|
367
|
+
return obj;
|
|
368
|
+
},
|
|
369
|
+
create(base) {
|
|
370
|
+
return exports.PutStreamEventRequest.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
371
|
+
},
|
|
372
|
+
fromPartial(object) {
|
|
373
|
+
var _a, _b, _c, _d;
|
|
374
|
+
const message = createBasePutStreamEventRequest();
|
|
375
|
+
message.stepRunId = (_a = object.stepRunId) !== null && _a !== void 0 ? _a : '';
|
|
376
|
+
message.createdAt = (_b = object.createdAt) !== null && _b !== void 0 ? _b : undefined;
|
|
377
|
+
message.message = (_c = object.message) !== null && _c !== void 0 ? _c : new Uint8Array(0);
|
|
378
|
+
message.metadata = (_d = object.metadata) !== null && _d !== void 0 ? _d : '';
|
|
379
|
+
return message;
|
|
380
|
+
},
|
|
381
|
+
};
|
|
382
|
+
function createBasePutStreamEventResponse() {
|
|
383
|
+
return {};
|
|
384
|
+
}
|
|
385
|
+
exports.PutStreamEventResponse = {
|
|
386
|
+
encode(_, writer = _m0.Writer.create()) {
|
|
387
|
+
return writer;
|
|
388
|
+
},
|
|
389
|
+
decode(input, length) {
|
|
390
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
391
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
392
|
+
const message = createBasePutStreamEventResponse();
|
|
393
|
+
while (reader.pos < end) {
|
|
394
|
+
const tag = reader.uint32();
|
|
395
|
+
switch (tag >>> 3) {
|
|
396
|
+
}
|
|
397
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
reader.skipType(tag & 7);
|
|
401
|
+
}
|
|
402
|
+
return message;
|
|
403
|
+
},
|
|
404
|
+
fromJSON(_) {
|
|
405
|
+
return {};
|
|
406
|
+
},
|
|
407
|
+
toJSON(_) {
|
|
408
|
+
const obj = {};
|
|
409
|
+
return obj;
|
|
410
|
+
},
|
|
411
|
+
create(base) {
|
|
412
|
+
return exports.PutStreamEventResponse.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
413
|
+
},
|
|
414
|
+
fromPartial(_) {
|
|
415
|
+
const message = createBasePutStreamEventResponse();
|
|
416
|
+
return message;
|
|
417
|
+
},
|
|
418
|
+
};
|
|
287
419
|
function createBasePushEventRequest() {
|
|
288
420
|
return { key: '', payload: '', eventTimestamp: undefined };
|
|
289
421
|
}
|
|
@@ -446,8 +578,41 @@ exports.EventsServiceDefinition = {
|
|
|
446
578
|
responseStream: false,
|
|
447
579
|
options: {},
|
|
448
580
|
},
|
|
581
|
+
putStreamEvent: {
|
|
582
|
+
name: 'PutStreamEvent',
|
|
583
|
+
requestType: exports.PutStreamEventRequest,
|
|
584
|
+
requestStream: false,
|
|
585
|
+
responseType: exports.PutStreamEventResponse,
|
|
586
|
+
responseStream: false,
|
|
587
|
+
options: {},
|
|
588
|
+
},
|
|
449
589
|
},
|
|
450
590
|
};
|
|
591
|
+
function bytesFromBase64(b64) {
|
|
592
|
+
if (globalThis.Buffer) {
|
|
593
|
+
return Uint8Array.from(globalThis.Buffer.from(b64, 'base64'));
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
const bin = globalThis.atob(b64);
|
|
597
|
+
const arr = new Uint8Array(bin.length);
|
|
598
|
+
for (let i = 0; i < bin.length; ++i) {
|
|
599
|
+
arr[i] = bin.charCodeAt(i);
|
|
600
|
+
}
|
|
601
|
+
return arr;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
function base64FromBytes(arr) {
|
|
605
|
+
if (globalThis.Buffer) {
|
|
606
|
+
return globalThis.Buffer.from(arr).toString('base64');
|
|
607
|
+
}
|
|
608
|
+
else {
|
|
609
|
+
const bin = [];
|
|
610
|
+
arr.forEach((byte) => {
|
|
611
|
+
bin.push(globalThis.String.fromCharCode(byte));
|
|
612
|
+
});
|
|
613
|
+
return globalThis.btoa(bin.join(''));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
451
616
|
function toTimestamp(date) {
|
|
452
617
|
const seconds = Math.trunc(date.getTime() / 1000);
|
|
453
618
|
const nanos = (date.getTime() % 1000) * 1000000;
|
package/step.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ export declare class Context<T, K> {
|
|
|
59
59
|
workflowRunId(): string;
|
|
60
60
|
playground(name: string, defaultValue?: string): string;
|
|
61
61
|
log(message: string, level?: LogLevel): void;
|
|
62
|
+
putStream(data: string | Uint8Array): Promise<void>;
|
|
62
63
|
spawnWorkflow<P = unknown>(workflowName: string, input: T, key?: string): ChildWorkflowRef<P>;
|
|
63
64
|
}
|
|
64
65
|
export type StepRunFunction<T, K> = (ctx: Context<T, K>) => Promise<NextStep> | NextStep | void;
|
package/step.js
CHANGED
|
@@ -182,6 +182,17 @@ class Context {
|
|
|
182
182
|
}
|
|
183
183
|
this.client.event.putLog(stepRunId, message, level);
|
|
184
184
|
}
|
|
185
|
+
putStream(data) {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
const { stepRunId } = this.action;
|
|
188
|
+
if (!stepRunId) {
|
|
189
|
+
// log a warning
|
|
190
|
+
this.logger.warn('cannot log from context without stepRunId');
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
yield this.client.event.putStream(stepRunId, data);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
185
196
|
spawnWorkflow(workflowName, input, key) {
|
|
186
197
|
const { workflowRunId, stepRunId } = this.action;
|
|
187
198
|
const childWorkflowRunIdPromise = this.client.admin.run_workflow(workflowName, input, {
|