Skip to content

Commit 9cc407c

Browse files
committed
sdks: add idempotency_key to trigger workflow requests
1 parent 63a4c95 commit 9cc407c

File tree

15 files changed

+156
-84
lines changed

15 files changed

+156
-84
lines changed

β€Žsdks/python/hatchet_sdk/contracts/v1/workflows_pb2.pyβ€Ž

Lines changed: 42 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žsdks/python/hatchet_sdk/contracts/v1/workflows_pb2.pyiβ€Ž

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,18 @@ class ReplayTasksResponse(_message.Message):
119119
def __init__(self, replayed_tasks: _Optional[_Iterable[str]] = ...) -> None: ...
120120

121121
class TriggerWorkflowRunRequest(_message.Message):
122-
__slots__ = ("workflow_name", "input", "additional_metadata", "priority")
122+
__slots__ = ("workflow_name", "input", "additional_metadata", "priority", "idempotency_key")
123123
WORKFLOW_NAME_FIELD_NUMBER: _ClassVar[int]
124124
INPUT_FIELD_NUMBER: _ClassVar[int]
125125
ADDITIONAL_METADATA_FIELD_NUMBER: _ClassVar[int]
126126
PRIORITY_FIELD_NUMBER: _ClassVar[int]
127+
IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int]
127128
workflow_name: str
128129
input: bytes
129130
additional_metadata: bytes
130131
priority: int
131-
def __init__(self, workflow_name: _Optional[str] = ..., input: _Optional[bytes] = ..., additional_metadata: _Optional[bytes] = ..., priority: _Optional[int] = ...) -> None: ...
132+
idempotency_key: str
133+
def __init__(self, workflow_name: _Optional[str] = ..., input: _Optional[bytes] = ..., additional_metadata: _Optional[bytes] = ..., priority: _Optional[int] = ..., idempotency_key: _Optional[str] = ...) -> None: ...
132134

133135
class TriggerWorkflowRunResponse(_message.Message):
134136
__slots__ = ("external_id",)
@@ -200,7 +202,7 @@ class DesiredWorkerLabels(_message.Message):
200202
required: bool
201203
comparator: WorkerLabelComparator
202204
weight: int
203-
def __init__(self, str_value: _Optional[str] = ..., int_value: _Optional[int] = ..., required: bool = ..., comparator: _Optional[_Union[WorkerLabelComparator, str]] = ..., weight: _Optional[int] = ...) -> None: ...
205+
def __init__(self, str_value: _Optional[str] = ..., int_value: _Optional[int] = ..., required: _Optional[bool] = ..., comparator: _Optional[_Union[WorkerLabelComparator, str]] = ..., weight: _Optional[int] = ...) -> None: ...
204206

205207
class CreateTaskOpts(_message.Message):
206208
__slots__ = ("readable_id", "action", "timeout", "inputs", "parents", "retries", "rate_limits", "worker_labels", "backoff_factor", "backoff_max_seconds", "concurrency", "conditions", "schedule_timeout")
@@ -302,4 +304,4 @@ class GetRunDetailsResponse(_message.Message):
302304
task_runs: _containers.MessageMap[str, TaskRunDetail]
303305
done: bool
304306
additional_metadata: bytes
305-
def __init__(self, input: _Optional[bytes] = ..., status: _Optional[_Union[RunStatus, str]] = ..., task_runs: _Optional[_Mapping[str, TaskRunDetail]] = ..., done: bool = ..., additional_metadata: _Optional[bytes] = ...) -> None: ...
307+
def __init__(self, input: _Optional[bytes] = ..., status: _Optional[_Union[RunStatus, str]] = ..., task_runs: _Optional[_Mapping[str, TaskRunDetail]] = ..., done: _Optional[bool] = ..., additional_metadata: _Optional[bytes] = ...) -> None: ...

β€Žsdks/python/hatchet_sdk/contracts/workflows_pb2.pyβ€Ž

Lines changed: 22 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žsdks/python/hatchet_sdk/contracts/workflows_pb2.pyiβ€Ž

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class DesiredWorkerLabels(_message.Message):
143143
required: bool
144144
comparator: WorkerLabelComparator
145145
weight: int
146-
def __init__(self, str_value: _Optional[str] = ..., int_value: _Optional[int] = ..., required: bool = ..., comparator: _Optional[_Union[WorkerLabelComparator, str]] = ..., weight: _Optional[int] = ...) -> None: ...
146+
def __init__(self, str_value: _Optional[str] = ..., int_value: _Optional[int] = ..., required: _Optional[bool] = ..., comparator: _Optional[_Union[WorkerLabelComparator, str]] = ..., weight: _Optional[int] = ...) -> None: ...
147147

148148
class CreateWorkflowStepOpts(_message.Message):
149149
__slots__ = ("readable_id", "action", "timeout", "inputs", "parents", "user_data", "retries", "rate_limits", "worker_labels", "backoff_factor", "backoff_max_seconds")
@@ -275,7 +275,7 @@ class BulkTriggerWorkflowResponse(_message.Message):
275275
def __init__(self, workflow_run_ids: _Optional[_Iterable[str]] = ...) -> None: ...
276276

277277
class TriggerWorkflowRequest(_message.Message):
278-
__slots__ = ("name", "input", "parent_id", "parent_task_run_external_id", "child_index", "child_key", "additional_metadata", "desired_worker_id", "priority")
278+
__slots__ = ("name", "input", "parent_id", "parent_task_run_external_id", "child_index", "child_key", "additional_metadata", "desired_worker_id", "priority", "idempotency_key")
279279
NAME_FIELD_NUMBER: _ClassVar[int]
280280
INPUT_FIELD_NUMBER: _ClassVar[int]
281281
PARENT_ID_FIELD_NUMBER: _ClassVar[int]
@@ -285,6 +285,7 @@ class TriggerWorkflowRequest(_message.Message):
285285
ADDITIONAL_METADATA_FIELD_NUMBER: _ClassVar[int]
286286
DESIRED_WORKER_ID_FIELD_NUMBER: _ClassVar[int]
287287
PRIORITY_FIELD_NUMBER: _ClassVar[int]
288+
IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int]
288289
name: str
289290
input: str
290291
parent_id: str
@@ -294,7 +295,8 @@ class TriggerWorkflowRequest(_message.Message):
294295
additional_metadata: str
295296
desired_worker_id: str
296297
priority: int
297-
def __init__(self, name: _Optional[str] = ..., input: _Optional[str] = ..., parent_id: _Optional[str] = ..., parent_task_run_external_id: _Optional[str] = ..., child_index: _Optional[int] = ..., child_key: _Optional[str] = ..., additional_metadata: _Optional[str] = ..., desired_worker_id: _Optional[str] = ..., priority: _Optional[int] = ...) -> None: ...
298+
idempotency_key: str
299+
def __init__(self, name: _Optional[str] = ..., input: _Optional[str] = ..., parent_id: _Optional[str] = ..., parent_task_run_external_id: _Optional[str] = ..., child_index: _Optional[int] = ..., child_key: _Optional[str] = ..., additional_metadata: _Optional[str] = ..., desired_worker_id: _Optional[str] = ..., priority: _Optional[int] = ..., idempotency_key: _Optional[str] = ...) -> None: ...
298300

299301
class TriggerWorkflowResponse(_message.Message):
300302
__slots__ = ("workflow_run_id",)
Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
15
# Directory to write generated code to (.js and .d.ts files)
26

37
OUT_DIR="./src/protoc"
@@ -8,12 +12,22 @@ else
812
IN_DIR="../../api-contracts"
913
fi
1014

11-
# Generate code
12-
./node_modules/.bin/grpc_tools_node_protoc \
15+
# Generate code.
16+
# Prefer system `protoc` (available in Nix environments) over `grpc-tools`' bundled protoc.
17+
PROTOC_BIN="${PROTOC_BIN:-}"
18+
if [ -z "$PROTOC_BIN" ]; then
19+
if command -v protoc >/dev/null 2>&1; then
20+
PROTOC_BIN="protoc"
21+
else
22+
PROTOC_BIN="./node_modules/.bin/grpc_tools_node_protoc"
23+
fi
24+
fi
25+
26+
"$PROTOC_BIN" \
1327
--plugin=protoc-gen-ts_proto=./node_modules/.bin/protoc-gen-ts_proto \
14-
--ts_proto_out=$OUT_DIR \
28+
--ts_proto_out="$OUT_DIR" \
1529
--ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false \
16-
--proto_path=$IN_DIR \
17-
$IN_DIR/**/*.proto
30+
--proto_path="$IN_DIR" \
31+
$(find "$IN_DIR" -type f -name '*.proto' -print)
1832

1933
pnpm lint:fix

β€Žsdks/typescript/src/clients/admin/admin-client.tsβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type WorkflowRun<T = object> = {
5252
parentStepRunId?: string | undefined;
5353
childIndex?: number | undefined;
5454
childKey?: string | undefined;
55+
idempotencyKey?: string | undefined;
5556
additionalMetadata?: Record<string, string> | undefined;
5657
};
5758
};
@@ -171,6 +172,7 @@ export class AdminClient {
171172
parentStepRunId?: string | undefined;
172173
childIndex?: number | undefined;
173174
childKey?: string | undefined;
175+
idempotencyKey?: string | undefined;
174176
additionalMetadata?: Record<string, string> | undefined;
175177
}
176178
) {
@@ -203,6 +205,7 @@ export class AdminClient {
203205
parentStepRunId?: string | undefined;
204206
childIndex?: number | undefined;
205207
childKey?: string | undefined;
208+
idempotencyKey?: string | undefined;
206209
additionalMetadata?: Record<string, string> | undefined;
207210
desiredWorkerId?: string | undefined;
208211
priority?: Priority;
@@ -256,6 +259,7 @@ export class AdminClient {
256259
parentStepRunId?: string | undefined;
257260
childIndex?: number | undefined;
258261
childKey?: string | undefined;
262+
idempotencyKey?: string | undefined;
259263
additionalMetadata?: Record<string, string> | undefined;
260264
desiredWorkerId?: string | undefined;
261265
priority?: Priority;

β€Žsdks/typescript/src/protoc/dispatcher/dispatcher.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žsdks/typescript/src/protoc/events/events.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žsdks/typescript/src/protoc/google/protobuf/timestamp.tsβ€Ž

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žsdks/typescript/src/protoc/v1/dispatcher.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
Β (0)