deeprails 0.17.0 → 0.23.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +71 -0
- data/README.md +3 -3
- data/lib/deeprails/internal/stream.rb +29 -0
- data/lib/deeprails/internal/transport/base_client.rb +3 -1
- data/lib/deeprails/internal/transport/pooled_net_requester.rb +12 -10
- data/lib/deeprails/internal/type/base_stream.rb +83 -0
- data/lib/deeprails/internal/util.rb +7 -2
- data/lib/deeprails/models/defend_create_workflow_params.rb +14 -1
- data/lib/deeprails/models/defend_response.rb +136 -12
- data/lib/deeprails/models/defend_submit_and_stream_event_params.rb +83 -0
- data/lib/deeprails/models/defend_submit_and_stream_event_response.rb +7 -0
- data/lib/deeprails/models/defend_submit_event_params.rb +52 -16
- data/lib/deeprails/models/defend_update_response.rb +9 -1
- data/lib/deeprails/models/defend_update_workflow_params.rb +131 -5
- data/lib/deeprails/models/file_upload_params.rb +5 -5
- data/lib/deeprails/models/monitor_create_params.rb +14 -1
- data/lib/deeprails/models/monitor_detail_response.rb +56 -17
- data/lib/deeprails/models/monitor_event_detail_response.rb +6 -2
- data/lib/deeprails/models/monitor_submit_event_params.rb +52 -16
- data/lib/deeprails/models/monitor_update_params.rb +46 -5
- data/lib/deeprails/models/workflow_event_detail_response.rb +106 -34
- data/lib/deeprails/models/workflow_event_response.rb +9 -1
- data/lib/deeprails/models.rb +2 -0
- data/lib/deeprails/resources/defend.rb +70 -7
- data/lib/deeprails/resources/files.rb +2 -2
- data/lib/deeprails/resources/monitor.rb +14 -6
- data/lib/deeprails/version.rb +1 -1
- data/lib/deeprails.rb +5 -0
- data/manifest.yaml +1 -0
- data/rbi/deeprails/internal/stream.rbi +20 -0
- data/rbi/deeprails/internal/transport/base_client.rbi +18 -2
- data/rbi/deeprails/internal/type/base_stream.rbi +75 -0
- data/rbi/deeprails/models/defend_create_workflow_params.rbi +21 -0
- data/rbi/deeprails/models/defend_response.rbi +288 -16
- data/rbi/deeprails/models/defend_submit_and_stream_event_params.rbi +148 -0
- data/rbi/deeprails/models/defend_submit_and_stream_event_response.rbi +7 -0
- data/rbi/deeprails/models/defend_submit_event_params.rbi +108 -25
- data/rbi/deeprails/models/defend_update_response.rbi +14 -3
- data/rbi/deeprails/models/defend_update_workflow_params.rbi +298 -4
- data/rbi/deeprails/models/file_upload_params.rbi +9 -6
- data/rbi/deeprails/models/monitor_create_params.rbi +21 -0
- data/rbi/deeprails/models/monitor_detail_response.rbi +107 -26
- data/rbi/deeprails/models/monitor_event_detail_response.rbi +4 -2
- data/rbi/deeprails/models/monitor_submit_event_params.rbi +108 -25
- data/rbi/deeprails/models/monitor_update_params.rbi +107 -4
- data/rbi/deeprails/models/workflow_event_detail_response.rbi +209 -66
- data/rbi/deeprails/models/workflow_event_response.rbi +8 -0
- data/rbi/deeprails/models.rbi +3 -0
- data/rbi/deeprails/resources/defend.rbi +99 -9
- data/rbi/deeprails/resources/files.rbi +3 -3
- data/rbi/deeprails/resources/monitor.rbi +28 -8
- data/sig/deeprails/internal/stream.rbs +9 -0
- data/sig/deeprails/internal/type/base_stream.rbs +38 -0
- data/sig/deeprails/models/defend_create_workflow_params.rbs +7 -0
- data/sig/deeprails/models/defend_response.rbs +114 -8
- data/sig/deeprails/models/defend_submit_and_stream_event_params.rbs +74 -0
- data/sig/deeprails/models/defend_submit_and_stream_event_response.rbs +5 -0
- data/sig/deeprails/models/defend_submit_event_params.rbs +39 -10
- data/sig/deeprails/models/defend_update_response.rbs +10 -3
- data/sig/deeprails/models/defend_update_workflow_params.rbs +103 -1
- data/sig/deeprails/models/file_upload_params.rbs +4 -4
- data/sig/deeprails/models/monitor_create_params.rbs +7 -0
- data/sig/deeprails/models/monitor_detail_response.rbs +36 -9
- data/sig/deeprails/models/monitor_submit_event_params.rbs +39 -10
- data/sig/deeprails/models/monitor_update_params.rbs +45 -1
- data/sig/deeprails/models/workflow_event_detail_response.rbs +100 -27
- data/sig/deeprails/models/workflow_event_response.rbs +5 -0
- data/sig/deeprails/models.rbs +2 -0
- data/sig/deeprails/resources/defend.rbs +20 -0
- data/sig/deeprails/resources/files.rbs +1 -1
- data/sig/deeprails/resources/monitor.rbs +4 -0
- metadata +28 -2
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Deeprails
|
|
4
|
+
module Models
|
|
5
|
+
class DefendSubmitAndStreamEventParams < Deeprails::Internal::Type::BaseModel
|
|
6
|
+
extend Deeprails::Internal::Type::RequestParameters::Converter
|
|
7
|
+
include Deeprails::Internal::Type::RequestParameters
|
|
8
|
+
|
|
9
|
+
OrHash =
|
|
10
|
+
T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
Deeprails::DefendSubmitAndStreamEventParams,
|
|
13
|
+
Deeprails::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The input provided to the model (e.g., prompt, messages).
|
|
18
|
+
sig { returns(T::Hash[Symbol, T.anything]) }
|
|
19
|
+
attr_accessor :model_input
|
|
20
|
+
|
|
21
|
+
# The output generated by the model to be evaluated.
|
|
22
|
+
sig { returns(String) }
|
|
23
|
+
attr_accessor :model_output
|
|
24
|
+
|
|
25
|
+
# The model that generated the output (e.g., "gpt-4", "claude-3").
|
|
26
|
+
sig { returns(String) }
|
|
27
|
+
attr_accessor :model_used
|
|
28
|
+
|
|
29
|
+
# The evaluation run mode. Streaming only supports fast, precision, and
|
|
30
|
+
# precision_codex.
|
|
31
|
+
sig do
|
|
32
|
+
returns(Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol)
|
|
33
|
+
end
|
|
34
|
+
attr_accessor :run_mode
|
|
35
|
+
|
|
36
|
+
# Enable SSE streaming for real-time token feedback. Only supported for
|
|
37
|
+
# single-model run modes (fast, precision, precision_codex).
|
|
38
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
39
|
+
attr_reader :stream
|
|
40
|
+
|
|
41
|
+
sig { params(stream: T::Boolean).void }
|
|
42
|
+
attr_writer :stream
|
|
43
|
+
|
|
44
|
+
# Optional tag to identify this event.
|
|
45
|
+
sig { returns(T.nilable(String)) }
|
|
46
|
+
attr_reader :nametag
|
|
47
|
+
|
|
48
|
+
sig { params(nametag: String).void }
|
|
49
|
+
attr_writer :nametag
|
|
50
|
+
|
|
51
|
+
sig do
|
|
52
|
+
params(
|
|
53
|
+
model_input: T::Hash[Symbol, T.anything],
|
|
54
|
+
model_output: String,
|
|
55
|
+
model_used: String,
|
|
56
|
+
run_mode:
|
|
57
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol,
|
|
58
|
+
stream: T::Boolean,
|
|
59
|
+
nametag: String,
|
|
60
|
+
request_options: Deeprails::RequestOptions::OrHash
|
|
61
|
+
).returns(T.attached_class)
|
|
62
|
+
end
|
|
63
|
+
def self.new(
|
|
64
|
+
# The input provided to the model (e.g., prompt, messages).
|
|
65
|
+
model_input:,
|
|
66
|
+
# The output generated by the model to be evaluated.
|
|
67
|
+
model_output:,
|
|
68
|
+
# The model that generated the output (e.g., "gpt-4", "claude-3").
|
|
69
|
+
model_used:,
|
|
70
|
+
# The evaluation run mode. Streaming only supports fast, precision, and
|
|
71
|
+
# precision_codex.
|
|
72
|
+
run_mode:,
|
|
73
|
+
# Enable SSE streaming for real-time token feedback. Only supported for
|
|
74
|
+
# single-model run modes (fast, precision, precision_codex).
|
|
75
|
+
stream: nil,
|
|
76
|
+
# Optional tag to identify this event.
|
|
77
|
+
nametag: nil,
|
|
78
|
+
request_options: {}
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
sig do
|
|
83
|
+
override.returns(
|
|
84
|
+
{
|
|
85
|
+
model_input: T::Hash[Symbol, T.anything],
|
|
86
|
+
model_output: String,
|
|
87
|
+
model_used: String,
|
|
88
|
+
run_mode:
|
|
89
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::OrSymbol,
|
|
90
|
+
stream: T::Boolean,
|
|
91
|
+
nametag: String,
|
|
92
|
+
request_options: Deeprails::RequestOptions
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
def to_hash
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# The evaluation run mode. Streaming only supports fast, precision, and
|
|
100
|
+
# precision_codex.
|
|
101
|
+
module RunMode
|
|
102
|
+
extend Deeprails::Internal::Type::Enum
|
|
103
|
+
|
|
104
|
+
TaggedSymbol =
|
|
105
|
+
T.type_alias do
|
|
106
|
+
T.all(Symbol, Deeprails::DefendSubmitAndStreamEventParams::RunMode)
|
|
107
|
+
end
|
|
108
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
109
|
+
|
|
110
|
+
FAST =
|
|
111
|
+
T.let(
|
|
112
|
+
:fast,
|
|
113
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
114
|
+
)
|
|
115
|
+
PRECISION =
|
|
116
|
+
T.let(
|
|
117
|
+
:precision,
|
|
118
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
119
|
+
)
|
|
120
|
+
PRECISION_CODEX =
|
|
121
|
+
T.let(
|
|
122
|
+
:precision_codex,
|
|
123
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
124
|
+
)
|
|
125
|
+
PRECISION_MAX =
|
|
126
|
+
T.let(
|
|
127
|
+
:precision_max,
|
|
128
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
129
|
+
)
|
|
130
|
+
PRECISION_MAX_CODEX =
|
|
131
|
+
T.let(
|
|
132
|
+
:precision_max_codex,
|
|
133
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
sig do
|
|
137
|
+
override.returns(
|
|
138
|
+
T::Array[
|
|
139
|
+
Deeprails::DefendSubmitAndStreamEventParams::RunMode::TaggedSymbol
|
|
140
|
+
]
|
|
141
|
+
)
|
|
142
|
+
end
|
|
143
|
+
def self.values
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -15,8 +15,8 @@ module Deeprails
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# A dictionary of inputs sent to the LLM to generate output. The dictionary must
|
|
18
|
-
# contain
|
|
19
|
-
#
|
|
18
|
+
# contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
|
|
19
|
+
# `ground_truth` should be provided.
|
|
20
20
|
sig { returns(Deeprails::DefendSubmitEventParams::ModelInput) }
|
|
21
21
|
attr_reader :model_input
|
|
22
22
|
|
|
@@ -37,8 +37,8 @@ module Deeprails
|
|
|
37
37
|
|
|
38
38
|
# Run mode for the workflow event. The run mode allows the user to optimize for
|
|
39
39
|
# speed, accuracy, and cost by determining which models are used to evaluate the
|
|
40
|
-
# event. Available run modes include `
|
|
41
|
-
# `economy`. Defaults to `smart`.
|
|
40
|
+
# event. Available run modes include `precision_plus_codex`, `precision_plus`,
|
|
41
|
+
# `precision`, `smart`, and `economy`. Defaults to `smart`.
|
|
42
42
|
sig { returns(Deeprails::DefendSubmitEventParams::RunMode::OrSymbol) }
|
|
43
43
|
attr_accessor :run_mode
|
|
44
44
|
|
|
@@ -61,8 +61,8 @@ module Deeprails
|
|
|
61
61
|
end
|
|
62
62
|
def self.new(
|
|
63
63
|
# A dictionary of inputs sent to the LLM to generate output. The dictionary must
|
|
64
|
-
# contain
|
|
65
|
-
#
|
|
64
|
+
# contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
|
|
65
|
+
# `ground_truth` should be provided.
|
|
66
66
|
model_input:,
|
|
67
67
|
# Output generated by the LLM to be evaluated.
|
|
68
68
|
model_output:,
|
|
@@ -70,8 +70,8 @@ module Deeprails
|
|
|
70
70
|
model_used:,
|
|
71
71
|
# Run mode for the workflow event. The run mode allows the user to optimize for
|
|
72
72
|
# speed, accuracy, and cost by determining which models are used to evaluate the
|
|
73
|
-
# event. Available run modes include `
|
|
74
|
-
# `economy`. Defaults to `smart`.
|
|
73
|
+
# event. Available run modes include `precision_plus_codex`, `precision_plus`,
|
|
74
|
+
# `precision`, `smart`, and `economy`. Defaults to `smart`.
|
|
75
75
|
run_mode:,
|
|
76
76
|
# An optional, user-defined tag for the event.
|
|
77
77
|
nametag: nil,
|
|
@@ -103,6 +103,34 @@ module Deeprails
|
|
|
103
103
|
)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
+
# The user prompt used to generate the output.
|
|
107
|
+
sig { returns(String) }
|
|
108
|
+
attr_accessor :user_prompt
|
|
109
|
+
|
|
110
|
+
# Any structured information that directly relates to the model’s input and
|
|
111
|
+
# expected output—e.g., the recent turn-by-turn history between an AI tutor and a
|
|
112
|
+
# student, facts or state passed through an agentic workflow, or other
|
|
113
|
+
# domain-specific signals your system already knows and wants the model to
|
|
114
|
+
# condition on.
|
|
115
|
+
sig do
|
|
116
|
+
returns(
|
|
117
|
+
T.nilable(
|
|
118
|
+
T::Array[Deeprails::DefendSubmitEventParams::ModelInput::Context]
|
|
119
|
+
)
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
attr_reader :context
|
|
123
|
+
|
|
124
|
+
sig do
|
|
125
|
+
params(
|
|
126
|
+
context:
|
|
127
|
+
T::Array[
|
|
128
|
+
Deeprails::DefendSubmitEventParams::ModelInput::Context::OrHash
|
|
129
|
+
]
|
|
130
|
+
).void
|
|
131
|
+
end
|
|
132
|
+
attr_writer :context
|
|
133
|
+
|
|
106
134
|
# The ground truth for evaluating the Ground Truth Adherence guardrail.
|
|
107
135
|
sig { returns(T.nilable(String)) }
|
|
108
136
|
attr_reader :ground_truth
|
|
@@ -117,46 +145,96 @@ module Deeprails
|
|
|
117
145
|
sig { params(system_prompt: String).void }
|
|
118
146
|
attr_writer :system_prompt
|
|
119
147
|
|
|
120
|
-
# The user prompt used to generate the output.
|
|
121
|
-
sig { returns(T.nilable(String)) }
|
|
122
|
-
attr_reader :user_prompt
|
|
123
|
-
|
|
124
|
-
sig { params(user_prompt: String).void }
|
|
125
|
-
attr_writer :user_prompt
|
|
126
|
-
|
|
127
148
|
# A dictionary of inputs sent to the LLM to generate output. The dictionary must
|
|
128
|
-
# contain
|
|
129
|
-
#
|
|
149
|
+
# contain a `user_prompt` field. For the ground_truth_adherence guardrail metric,
|
|
150
|
+
# `ground_truth` should be provided.
|
|
130
151
|
sig do
|
|
131
152
|
params(
|
|
153
|
+
user_prompt: String,
|
|
154
|
+
context:
|
|
155
|
+
T::Array[
|
|
156
|
+
Deeprails::DefendSubmitEventParams::ModelInput::Context::OrHash
|
|
157
|
+
],
|
|
132
158
|
ground_truth: String,
|
|
133
|
-
system_prompt: String
|
|
134
|
-
user_prompt: String
|
|
159
|
+
system_prompt: String
|
|
135
160
|
).returns(T.attached_class)
|
|
136
161
|
end
|
|
137
162
|
def self.new(
|
|
163
|
+
# The user prompt used to generate the output.
|
|
164
|
+
user_prompt:,
|
|
165
|
+
# Any structured information that directly relates to the model’s input and
|
|
166
|
+
# expected output—e.g., the recent turn-by-turn history between an AI tutor and a
|
|
167
|
+
# student, facts or state passed through an agentic workflow, or other
|
|
168
|
+
# domain-specific signals your system already knows and wants the model to
|
|
169
|
+
# condition on.
|
|
170
|
+
context: nil,
|
|
138
171
|
# The ground truth for evaluating the Ground Truth Adherence guardrail.
|
|
139
172
|
ground_truth: nil,
|
|
140
173
|
# The system prompt used to generate the output.
|
|
141
|
-
system_prompt: nil
|
|
142
|
-
# The user prompt used to generate the output.
|
|
143
|
-
user_prompt: nil
|
|
174
|
+
system_prompt: nil
|
|
144
175
|
)
|
|
145
176
|
end
|
|
146
177
|
|
|
147
178
|
sig do
|
|
148
179
|
override.returns(
|
|
149
|
-
{
|
|
180
|
+
{
|
|
181
|
+
user_prompt: String,
|
|
182
|
+
context:
|
|
183
|
+
T::Array[
|
|
184
|
+
Deeprails::DefendSubmitEventParams::ModelInput::Context
|
|
185
|
+
],
|
|
186
|
+
ground_truth: String,
|
|
187
|
+
system_prompt: String
|
|
188
|
+
}
|
|
150
189
|
)
|
|
151
190
|
end
|
|
152
191
|
def to_hash
|
|
153
192
|
end
|
|
193
|
+
|
|
194
|
+
class Context < Deeprails::Internal::Type::BaseModel
|
|
195
|
+
OrHash =
|
|
196
|
+
T.type_alias do
|
|
197
|
+
T.any(
|
|
198
|
+
Deeprails::DefendSubmitEventParams::ModelInput::Context,
|
|
199
|
+
Deeprails::Internal::AnyHash
|
|
200
|
+
)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# The content of the message.
|
|
204
|
+
sig { returns(T.nilable(String)) }
|
|
205
|
+
attr_reader :content
|
|
206
|
+
|
|
207
|
+
sig { params(content: String).void }
|
|
208
|
+
attr_writer :content
|
|
209
|
+
|
|
210
|
+
# The role of the speaker.
|
|
211
|
+
sig { returns(T.nilable(String)) }
|
|
212
|
+
attr_reader :role
|
|
213
|
+
|
|
214
|
+
sig { params(role: String).void }
|
|
215
|
+
attr_writer :role
|
|
216
|
+
|
|
217
|
+
sig do
|
|
218
|
+
params(content: String, role: String).returns(T.attached_class)
|
|
219
|
+
end
|
|
220
|
+
def self.new(
|
|
221
|
+
# The content of the message.
|
|
222
|
+
content: nil,
|
|
223
|
+
# The role of the speaker.
|
|
224
|
+
role: nil
|
|
225
|
+
)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
sig { override.returns({ content: String, role: String }) }
|
|
229
|
+
def to_hash
|
|
230
|
+
end
|
|
231
|
+
end
|
|
154
232
|
end
|
|
155
233
|
|
|
156
234
|
# Run mode for the workflow event. The run mode allows the user to optimize for
|
|
157
235
|
# speed, accuracy, and cost by determining which models are used to evaluate the
|
|
158
|
-
# event. Available run modes include `
|
|
159
|
-
# `economy`. Defaults to `smart`.
|
|
236
|
+
# event. Available run modes include `precision_plus_codex`, `precision_plus`,
|
|
237
|
+
# `precision`, `smart`, and `economy`. Defaults to `smart`.
|
|
160
238
|
module RunMode
|
|
161
239
|
extend Deeprails::Internal::Type::Enum
|
|
162
240
|
|
|
@@ -166,6 +244,11 @@ module Deeprails
|
|
|
166
244
|
end
|
|
167
245
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
168
246
|
|
|
247
|
+
PRECISION_PLUS_CODEX =
|
|
248
|
+
T.let(
|
|
249
|
+
:precision_plus_codex,
|
|
250
|
+
Deeprails::DefendSubmitEventParams::RunMode::TaggedSymbol
|
|
251
|
+
)
|
|
169
252
|
PRECISION_PLUS =
|
|
170
253
|
T.let(
|
|
171
254
|
:precision_plus,
|
|
@@ -21,11 +21,19 @@ module Deeprails
|
|
|
21
21
|
sig { returns(String) }
|
|
22
22
|
attr_accessor :workflow_id
|
|
23
23
|
|
|
24
|
+
# The name of the workflow.
|
|
25
|
+
sig { returns(T.nilable(String)) }
|
|
26
|
+
attr_reader :name
|
|
27
|
+
|
|
28
|
+
sig { params(name: String).void }
|
|
29
|
+
attr_writer :name
|
|
30
|
+
|
|
24
31
|
sig do
|
|
25
32
|
params(
|
|
26
33
|
modified_at: Time,
|
|
27
34
|
status: Deeprails::DefendUpdateResponse::Status::OrSymbol,
|
|
28
|
-
workflow_id: String
|
|
35
|
+
workflow_id: String,
|
|
36
|
+
name: String
|
|
29
37
|
).returns(T.attached_class)
|
|
30
38
|
end
|
|
31
39
|
def self.new(
|
|
@@ -35,7 +43,9 @@ module Deeprails
|
|
|
35
43
|
# workflows will not accept events.
|
|
36
44
|
status:,
|
|
37
45
|
# A unique workflow ID.
|
|
38
|
-
workflow_id
|
|
46
|
+
workflow_id:,
|
|
47
|
+
# The name of the workflow.
|
|
48
|
+
name: nil
|
|
39
49
|
)
|
|
40
50
|
end
|
|
41
51
|
|
|
@@ -44,7 +54,8 @@ module Deeprails
|
|
|
44
54
|
{
|
|
45
55
|
modified_at: Time,
|
|
46
56
|
status: Deeprails::DefendUpdateResponse::Status::TaggedSymbol,
|
|
47
|
-
workflow_id: String
|
|
57
|
+
workflow_id: String,
|
|
58
|
+
name: String
|
|
48
59
|
}
|
|
49
60
|
)
|
|
50
61
|
end
|