zavudev 0.5.0 → 0.7.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/internal/util.rb +3 -1
  5. data/lib/zavudev/models/contact.rb +3 -153
  6. data/lib/zavudev/models/contact_channel.rb +155 -0
  7. data/lib/zavudev/models/message_send_params.rb +4 -3
  8. data/lib/zavudev/models/senders/agent/agent_flow.rb +6 -101
  9. data/lib/zavudev/models/senders/agent/agent_tool.rb +3 -53
  10. data/lib/zavudev/models/senders/agent/flow_create_params.rb +6 -100
  11. data/lib/zavudev/models/senders/agent/flow_step.rb +61 -0
  12. data/lib/zavudev/models/senders/agent/flow_trigger.rb +51 -0
  13. data/lib/zavudev/models/senders/agent/flow_update_params.rb +6 -100
  14. data/lib/zavudev/models/senders/agent/tool_create_params.rb +3 -52
  15. data/lib/zavudev/models/senders/agent/tool_parameters.rb +58 -0
  16. data/lib/zavudev/models/senders/agent/tool_update_params.rb +3 -52
  17. data/lib/zavudev/models/template.rb +33 -5
  18. data/lib/zavudev/models/template_create_params.rb +64 -2
  19. data/lib/zavudev/models.rb +2 -0
  20. data/lib/zavudev/resources/messages.rb +1 -1
  21. data/lib/zavudev/resources/senders/agent/flows.rb +4 -4
  22. data/lib/zavudev/resources/senders/agent/tools.rb +2 -2
  23. data/lib/zavudev/resources/templates.rb +14 -2
  24. data/lib/zavudev/version.rb +1 -1
  25. data/lib/zavudev.rb +4 -0
  26. data/rbi/zavudev/models/contact.rbi +4 -235
  27. data/rbi/zavudev/models/contact_channel.rbi +231 -0
  28. data/rbi/zavudev/models/message_send_params.rbi +6 -4
  29. data/rbi/zavudev/models/senders/agent/agent_flow.rbi +7 -233
  30. data/rbi/zavudev/models/senders/agent/agent_tool.rbi +4 -130
  31. data/rbi/zavudev/models/senders/agent/flow_create_params.rbi +7 -245
  32. data/rbi/zavudev/models/senders/agent/flow_step.rbi +115 -0
  33. data/rbi/zavudev/models/senders/agent/flow_trigger.rbi +108 -0
  34. data/rbi/zavudev/models/senders/agent/flow_update_params.rbi +8 -255
  35. data/rbi/zavudev/models/senders/agent/tool_create_params.rbi +4 -132
  36. data/rbi/zavudev/models/senders/agent/tool_parameters.rbi +124 -0
  37. data/rbi/zavudev/models/senders/agent/tool_update_params.rbi +4 -136
  38. data/rbi/zavudev/models/template.rbi +39 -4
  39. data/rbi/zavudev/models/template_create_params.rbi +105 -0
  40. data/rbi/zavudev/models.rbi +2 -0
  41. data/rbi/zavudev/resources/messages.rbi +3 -3
  42. data/rbi/zavudev/resources/senders/agent/flows.rbi +4 -12
  43. data/rbi/zavudev/resources/senders/agent/tools.rbi +2 -4
  44. data/rbi/zavudev/resources/templates.rbi +19 -0
  45. data/sig/zavudev/models/contact.rbs +6 -153
  46. data/sig/zavudev/models/contact_channel.rbs +150 -0
  47. data/sig/zavudev/models/senders/agent/agent_flow.rbs +8 -100
  48. data/sig/zavudev/models/senders/agent/agent_tool.rbs +4 -57
  49. data/sig/zavudev/models/senders/agent/flow_create_params.rbs +8 -100
  50. data/sig/zavudev/models/senders/agent/flow_step.rbs +55 -0
  51. data/sig/zavudev/models/senders/agent/flow_trigger.rbs +51 -0
  52. data/sig/zavudev/models/senders/agent/flow_update_params.rbs +12 -104
  53. data/sig/zavudev/models/senders/agent/tool_create_params.rbs +4 -57
  54. data/sig/zavudev/models/senders/agent/tool_parameters.rbs +60 -0
  55. data/sig/zavudev/models/senders/agent/tool_update_params.rbs +6 -59
  56. data/sig/zavudev/models/template.rbs +21 -0
  57. data/sig/zavudev/models/template_create_params.rbs +57 -0
  58. data/sig/zavudev/models.rbs +2 -0
  59. data/sig/zavudev/resources/senders/agent/flows.rbs +4 -4
  60. data/sig/zavudev/resources/senders/agent/tools.rbs +2 -2
  61. data/sig/zavudev/resources/templates.rbs +6 -0
  62. metadata +14 -2
@@ -0,0 +1,231 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class ContactChannel < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Zavudev::ContactChannel, Zavudev::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ # Channel type.
15
+ sig { returns(Zavudev::ContactChannel::Channel::TaggedSymbol) }
16
+ attr_accessor :channel
17
+
18
+ sig { returns(Time) }
19
+ attr_accessor :created_at
20
+
21
+ # Channel identifier (phone number or email address).
22
+ sig { returns(String) }
23
+ attr_accessor :identifier
24
+
25
+ # Whether this is the primary channel for its type.
26
+ sig { returns(T::Boolean) }
27
+ attr_accessor :is_primary
28
+
29
+ # Whether this channel has been verified.
30
+ sig { returns(T::Boolean) }
31
+ attr_accessor :verified
32
+
33
+ # ISO country code for phone numbers.
34
+ sig { returns(T.nilable(String)) }
35
+ attr_reader :country_code
36
+
37
+ sig { params(country_code: String).void }
38
+ attr_writer :country_code
39
+
40
+ # Optional label for the channel.
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :label
43
+
44
+ sig { params(label: String).void }
45
+ attr_writer :label
46
+
47
+ # Last time a message was received on this channel.
48
+ sig { returns(T.nilable(Time)) }
49
+ attr_reader :last_inbound_at
50
+
51
+ sig { params(last_inbound_at: Time).void }
52
+ attr_writer :last_inbound_at
53
+
54
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
55
+ attr_reader :metadata
56
+
57
+ sig { params(metadata: T::Hash[Symbol, String]).void }
58
+ attr_writer :metadata
59
+
60
+ # Delivery metrics for this channel.
61
+ sig { returns(T.nilable(Zavudev::ContactChannel::Metrics)) }
62
+ attr_reader :metrics
63
+
64
+ sig { params(metrics: Zavudev::ContactChannel::Metrics::OrHash).void }
65
+ attr_writer :metrics
66
+
67
+ sig { returns(T.nilable(Time)) }
68
+ attr_reader :updated_at
69
+
70
+ sig { params(updated_at: Time).void }
71
+ attr_writer :updated_at
72
+
73
+ # A communication channel for a contact.
74
+ sig do
75
+ params(
76
+ id: String,
77
+ channel: Zavudev::ContactChannel::Channel::OrSymbol,
78
+ created_at: Time,
79
+ identifier: String,
80
+ is_primary: T::Boolean,
81
+ verified: T::Boolean,
82
+ country_code: String,
83
+ label: String,
84
+ last_inbound_at: Time,
85
+ metadata: T::Hash[Symbol, String],
86
+ metrics: Zavudev::ContactChannel::Metrics::OrHash,
87
+ updated_at: Time
88
+ ).returns(T.attached_class)
89
+ end
90
+ def self.new(
91
+ id:,
92
+ # Channel type.
93
+ channel:,
94
+ created_at:,
95
+ # Channel identifier (phone number or email address).
96
+ identifier:,
97
+ # Whether this is the primary channel for its type.
98
+ is_primary:,
99
+ # Whether this channel has been verified.
100
+ verified:,
101
+ # ISO country code for phone numbers.
102
+ country_code: nil,
103
+ # Optional label for the channel.
104
+ label: nil,
105
+ # Last time a message was received on this channel.
106
+ last_inbound_at: nil,
107
+ metadata: nil,
108
+ # Delivery metrics for this channel.
109
+ metrics: nil,
110
+ updated_at: nil
111
+ )
112
+ end
113
+
114
+ sig do
115
+ override.returns(
116
+ {
117
+ id: String,
118
+ channel: Zavudev::ContactChannel::Channel::TaggedSymbol,
119
+ created_at: Time,
120
+ identifier: String,
121
+ is_primary: T::Boolean,
122
+ verified: T::Boolean,
123
+ country_code: String,
124
+ label: String,
125
+ last_inbound_at: Time,
126
+ metadata: T::Hash[Symbol, String],
127
+ metrics: Zavudev::ContactChannel::Metrics,
128
+ updated_at: Time
129
+ }
130
+ )
131
+ end
132
+ def to_hash
133
+ end
134
+
135
+ # Channel type.
136
+ module Channel
137
+ extend Zavudev::Internal::Type::Enum
138
+
139
+ TaggedSymbol =
140
+ T.type_alias { T.all(Symbol, Zavudev::ContactChannel::Channel) }
141
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
142
+
143
+ SMS = T.let(:sms, Zavudev::ContactChannel::Channel::TaggedSymbol)
144
+ WHATSAPP =
145
+ T.let(:whatsapp, Zavudev::ContactChannel::Channel::TaggedSymbol)
146
+ EMAIL = T.let(:email, Zavudev::ContactChannel::Channel::TaggedSymbol)
147
+ TELEGRAM =
148
+ T.let(:telegram, Zavudev::ContactChannel::Channel::TaggedSymbol)
149
+ VOICE = T.let(:voice, Zavudev::ContactChannel::Channel::TaggedSymbol)
150
+
151
+ sig do
152
+ override.returns(
153
+ T::Array[Zavudev::ContactChannel::Channel::TaggedSymbol]
154
+ )
155
+ end
156
+ def self.values
157
+ end
158
+ end
159
+
160
+ class Metrics < Zavudev::Internal::Type::BaseModel
161
+ OrHash =
162
+ T.type_alias do
163
+ T.any(Zavudev::ContactChannel::Metrics, Zavudev::Internal::AnyHash)
164
+ end
165
+
166
+ sig { returns(T.nilable(Float)) }
167
+ attr_reader :avg_delivery_time_ms
168
+
169
+ sig { params(avg_delivery_time_ms: Float).void }
170
+ attr_writer :avg_delivery_time_ms
171
+
172
+ sig { returns(T.nilable(Integer)) }
173
+ attr_reader :failure_count
174
+
175
+ sig { params(failure_count: Integer).void }
176
+ attr_writer :failure_count
177
+
178
+ sig { returns(T.nilable(Time)) }
179
+ attr_reader :last_success_at
180
+
181
+ sig { params(last_success_at: Time).void }
182
+ attr_writer :last_success_at
183
+
184
+ sig { returns(T.nilable(Integer)) }
185
+ attr_reader :success_count
186
+
187
+ sig { params(success_count: Integer).void }
188
+ attr_writer :success_count
189
+
190
+ sig { returns(T.nilable(Integer)) }
191
+ attr_reader :total_attempts
192
+
193
+ sig { params(total_attempts: Integer).void }
194
+ attr_writer :total_attempts
195
+
196
+ # Delivery metrics for this channel.
197
+ sig do
198
+ params(
199
+ avg_delivery_time_ms: Float,
200
+ failure_count: Integer,
201
+ last_success_at: Time,
202
+ success_count: Integer,
203
+ total_attempts: Integer
204
+ ).returns(T.attached_class)
205
+ end
206
+ def self.new(
207
+ avg_delivery_time_ms: nil,
208
+ failure_count: nil,
209
+ last_success_at: nil,
210
+ success_count: nil,
211
+ total_attempts: nil
212
+ )
213
+ end
214
+
215
+ sig do
216
+ override.returns(
217
+ {
218
+ avg_delivery_time_ms: Float,
219
+ failure_count: Integer,
220
+ last_success_at: Time,
221
+ success_count: Integer,
222
+ total_attempts: Integer
223
+ }
224
+ )
225
+ end
226
+ def to_hash
227
+ end
228
+ end
229
+ end
230
+ end
231
+ end
@@ -30,8 +30,9 @@ module Zavudev
30
30
  end
31
31
  attr_writer :attachments
32
32
 
33
- # Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text
34
- # messageType, WhatsApp is used. For email recipients, defaults to 'email'.
33
+ # Delivery channel. Use 'auto' for intelligent routing. If omitted, channel is
34
+ # auto-selected based on sender capabilities and recipient type. For email
35
+ # recipients, defaults to 'email'.
35
36
  sig { returns(T.nilable(Zavudev::Channel::OrSymbol)) }
36
37
  attr_reader :channel
37
38
 
@@ -143,8 +144,9 @@ module Zavudev
143
144
  # Email attachments. Only supported when channel is 'email'. Maximum 40MB total
144
145
  # size.
145
146
  attachments: nil,
146
- # Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text
147
- # messageType, WhatsApp is used. For email recipients, defaults to 'email'.
147
+ # Delivery channel. Use 'auto' for intelligent routing. If omitted, channel is
148
+ # auto-selected based on sender capabilities and recipient type. For email
149
+ # recipients, defaults to 'email'.
148
150
  channel: nil,
149
151
  # Additional content for non-text message types.
150
152
  content: nil,
@@ -34,16 +34,14 @@ module Zavudev
34
34
  sig { returns(Integer) }
35
35
  attr_accessor :priority
36
36
 
37
- sig { returns(T::Array[Zavudev::Senders::Agent::AgentFlow::Step]) }
37
+ sig { returns(T::Array[Zavudev::Senders::Agent::FlowStep]) }
38
38
  attr_accessor :steps
39
39
 
40
- sig { returns(Zavudev::Senders::Agent::AgentFlow::Trigger) }
40
+ sig { returns(Zavudev::Senders::Agent::FlowTrigger) }
41
41
  attr_reader :trigger
42
42
 
43
43
  sig do
44
- params(
45
- trigger: Zavudev::Senders::Agent::AgentFlow::Trigger::OrHash
46
- ).void
44
+ params(trigger: Zavudev::Senders::Agent::FlowTrigger::OrHash).void
47
45
  end
48
46
  attr_writer :trigger
49
47
 
@@ -61,8 +59,8 @@ module Zavudev
61
59
  enabled: T::Boolean,
62
60
  name: String,
63
61
  priority: Integer,
64
- steps: T::Array[Zavudev::Senders::Agent::AgentFlow::Step::OrHash],
65
- trigger: Zavudev::Senders::Agent::AgentFlow::Trigger::OrHash,
62
+ steps: T::Array[Zavudev::Senders::Agent::FlowStep::OrHash],
63
+ trigger: Zavudev::Senders::Agent::FlowTrigger::OrHash,
66
64
  updated_at: Time,
67
65
  description: T.nilable(String)
68
66
  ).returns(T.attached_class)
@@ -91,8 +89,8 @@ module Zavudev
91
89
  enabled: T::Boolean,
92
90
  name: String,
93
91
  priority: Integer,
94
- steps: T::Array[Zavudev::Senders::Agent::AgentFlow::Step],
95
- trigger: Zavudev::Senders::Agent::AgentFlow::Trigger,
92
+ steps: T::Array[Zavudev::Senders::Agent::FlowStep],
93
+ trigger: Zavudev::Senders::Agent::FlowTrigger,
96
94
  updated_at: Time,
97
95
  description: T.nilable(String)
98
96
  }
@@ -100,230 +98,6 @@ module Zavudev
100
98
  end
101
99
  def to_hash
102
100
  end
103
-
104
- class Step < Zavudev::Internal::Type::BaseModel
105
- OrHash =
106
- T.type_alias do
107
- T.any(
108
- Zavudev::Senders::Agent::AgentFlow::Step,
109
- Zavudev::Internal::AnyHash
110
- )
111
- end
112
-
113
- # Unique step identifier.
114
- sig { returns(String) }
115
- attr_accessor :id
116
-
117
- # Step configuration (varies by type).
118
- sig { returns(T::Hash[Symbol, T.anything]) }
119
- attr_accessor :config
120
-
121
- # Type of flow step.
122
- sig do
123
- returns(
124
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
125
- )
126
- end
127
- attr_accessor :type
128
-
129
- # ID of the next step to execute.
130
- sig { returns(T.nilable(String)) }
131
- attr_accessor :next_step_id
132
-
133
- sig do
134
- params(
135
- id: String,
136
- config: T::Hash[Symbol, T.anything],
137
- type: Zavudev::Senders::Agent::AgentFlow::Step::Type::OrSymbol,
138
- next_step_id: T.nilable(String)
139
- ).returns(T.attached_class)
140
- end
141
- def self.new(
142
- # Unique step identifier.
143
- id:,
144
- # Step configuration (varies by type).
145
- config:,
146
- # Type of flow step.
147
- type:,
148
- # ID of the next step to execute.
149
- next_step_id: nil
150
- )
151
- end
152
-
153
- sig do
154
- override.returns(
155
- {
156
- id: String,
157
- config: T::Hash[Symbol, T.anything],
158
- type:
159
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol,
160
- next_step_id: T.nilable(String)
161
- }
162
- )
163
- end
164
- def to_hash
165
- end
166
-
167
- # Type of flow step.
168
- module Type
169
- extend Zavudev::Internal::Type::Enum
170
-
171
- TaggedSymbol =
172
- T.type_alias do
173
- T.all(Symbol, Zavudev::Senders::Agent::AgentFlow::Step::Type)
174
- end
175
- OrSymbol = T.type_alias { T.any(Symbol, String) }
176
-
177
- MESSAGE =
178
- T.let(
179
- :message,
180
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
181
- )
182
- COLLECT =
183
- T.let(
184
- :collect,
185
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
186
- )
187
- CONDITION =
188
- T.let(
189
- :condition,
190
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
191
- )
192
- TOOL =
193
- T.let(
194
- :tool,
195
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
196
- )
197
- LLM =
198
- T.let(
199
- :llm,
200
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
201
- )
202
- TRANSFER =
203
- T.let(
204
- :transfer,
205
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
206
- )
207
-
208
- sig do
209
- override.returns(
210
- T::Array[
211
- Zavudev::Senders::Agent::AgentFlow::Step::Type::TaggedSymbol
212
- ]
213
- )
214
- end
215
- def self.values
216
- end
217
- end
218
- end
219
-
220
- class Trigger < Zavudev::Internal::Type::BaseModel
221
- OrHash =
222
- T.type_alias do
223
- T.any(
224
- Zavudev::Senders::Agent::AgentFlow::Trigger,
225
- Zavudev::Internal::AnyHash
226
- )
227
- end
228
-
229
- # Type of trigger for a flow.
230
- sig do
231
- returns(
232
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
233
- )
234
- end
235
- attr_accessor :type
236
-
237
- # Intent that triggers the flow (for intent type).
238
- sig { returns(T.nilable(String)) }
239
- attr_reader :intent
240
-
241
- sig { params(intent: String).void }
242
- attr_writer :intent
243
-
244
- # Keywords that trigger the flow (for keyword type).
245
- sig { returns(T.nilable(T::Array[String])) }
246
- attr_reader :keywords
247
-
248
- sig { params(keywords: T::Array[String]).void }
249
- attr_writer :keywords
250
-
251
- sig do
252
- params(
253
- type:
254
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::OrSymbol,
255
- intent: String,
256
- keywords: T::Array[String]
257
- ).returns(T.attached_class)
258
- end
259
- def self.new(
260
- # Type of trigger for a flow.
261
- type:,
262
- # Intent that triggers the flow (for intent type).
263
- intent: nil,
264
- # Keywords that trigger the flow (for keyword type).
265
- keywords: nil
266
- )
267
- end
268
-
269
- sig do
270
- override.returns(
271
- {
272
- type:
273
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol,
274
- intent: String,
275
- keywords: T::Array[String]
276
- }
277
- )
278
- end
279
- def to_hash
280
- end
281
-
282
- # Type of trigger for a flow.
283
- module Type
284
- extend Zavudev::Internal::Type::Enum
285
-
286
- TaggedSymbol =
287
- T.type_alias do
288
- T.all(
289
- Symbol,
290
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type
291
- )
292
- end
293
- OrSymbol = T.type_alias { T.any(Symbol, String) }
294
-
295
- KEYWORD =
296
- T.let(
297
- :keyword,
298
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
299
- )
300
- INTENT =
301
- T.let(
302
- :intent,
303
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
304
- )
305
- ALWAYS =
306
- T.let(
307
- :always,
308
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
309
- )
310
- MANUAL =
311
- T.let(
312
- :manual,
313
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
314
- )
315
-
316
- sig do
317
- override.returns(
318
- T::Array[
319
- Zavudev::Senders::Agent::AgentFlow::Trigger::Type::TaggedSymbol
320
- ]
321
- )
322
- end
323
- def self.values
324
- end
325
- end
326
- end
327
101
  end
328
102
  end
329
103
  end
@@ -34,12 +34,12 @@ module Zavudev
34
34
  sig { returns(String) }
35
35
  attr_accessor :name
36
36
 
37
- sig { returns(Zavudev::Senders::Agent::AgentTool::Parameters) }
37
+ sig { returns(Zavudev::Senders::Agent::ToolParameters) }
38
38
  attr_reader :parameters
39
39
 
40
40
  sig do
41
41
  params(
42
- parameters: Zavudev::Senders::Agent::AgentTool::Parameters::OrHash
42
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash
43
43
  ).void
44
44
  end
45
45
  attr_writer :parameters
@@ -59,8 +59,7 @@ module Zavudev
59
59
  description: String,
60
60
  enabled: T::Boolean,
61
61
  name: String,
62
- parameters:
63
- Zavudev::Senders::Agent::AgentTool::Parameters::OrHash,
62
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash,
64
63
  updated_at: Time,
65
64
  webhook_url: String
66
65
  ).returns(T.attached_class)
@@ -89,7 +88,7 @@ module Zavudev
89
88
  description: String,
90
89
  enabled: T::Boolean,
91
90
  name: String,
92
- parameters: Zavudev::Senders::Agent::AgentTool::Parameters,
91
+ parameters: Zavudev::Senders::Agent::ToolParameters,
93
92
  updated_at: Time,
94
93
  webhook_url: String
95
94
  }
@@ -97,131 +96,6 @@ module Zavudev
97
96
  end
98
97
  def to_hash
99
98
  end
100
-
101
- class Parameters < Zavudev::Internal::Type::BaseModel
102
- OrHash =
103
- T.type_alias do
104
- T.any(
105
- Zavudev::Senders::Agent::AgentTool::Parameters,
106
- Zavudev::Internal::AnyHash
107
- )
108
- end
109
-
110
- sig do
111
- returns(
112
- T::Hash[
113
- Symbol,
114
- Zavudev::Senders::Agent::AgentTool::Parameters::Property
115
- ]
116
- )
117
- end
118
- attr_accessor :properties
119
-
120
- sig { returns(T::Array[String]) }
121
- attr_accessor :required
122
-
123
- sig do
124
- returns(
125
- Zavudev::Senders::Agent::AgentTool::Parameters::Type::TaggedSymbol
126
- )
127
- end
128
- attr_accessor :type
129
-
130
- sig do
131
- params(
132
- properties:
133
- T::Hash[
134
- Symbol,
135
- Zavudev::Senders::Agent::AgentTool::Parameters::Property::OrHash
136
- ],
137
- required: T::Array[String],
138
- type:
139
- Zavudev::Senders::Agent::AgentTool::Parameters::Type::OrSymbol
140
- ).returns(T.attached_class)
141
- end
142
- def self.new(properties:, required:, type:)
143
- end
144
-
145
- sig do
146
- override.returns(
147
- {
148
- properties:
149
- T::Hash[
150
- Symbol,
151
- Zavudev::Senders::Agent::AgentTool::Parameters::Property
152
- ],
153
- required: T::Array[String],
154
- type:
155
- Zavudev::Senders::Agent::AgentTool::Parameters::Type::TaggedSymbol
156
- }
157
- )
158
- end
159
- def to_hash
160
- end
161
-
162
- class Property < Zavudev::Internal::Type::BaseModel
163
- OrHash =
164
- T.type_alias do
165
- T.any(
166
- Zavudev::Senders::Agent::AgentTool::Parameters::Property,
167
- Zavudev::Internal::AnyHash
168
- )
169
- end
170
-
171
- sig { returns(T.nilable(String)) }
172
- attr_reader :description
173
-
174
- sig { params(description: String).void }
175
- attr_writer :description
176
-
177
- sig { returns(T.nilable(String)) }
178
- attr_reader :type
179
-
180
- sig { params(type: String).void }
181
- attr_writer :type
182
-
183
- sig do
184
- params(description: String, type: String).returns(
185
- T.attached_class
186
- )
187
- end
188
- def self.new(description: nil, type: nil)
189
- end
190
-
191
- sig { override.returns({ description: String, type: String }) }
192
- def to_hash
193
- end
194
- end
195
-
196
- module Type
197
- extend Zavudev::Internal::Type::Enum
198
-
199
- TaggedSymbol =
200
- T.type_alias do
201
- T.all(
202
- Symbol,
203
- Zavudev::Senders::Agent::AgentTool::Parameters::Type
204
- )
205
- end
206
- OrSymbol = T.type_alias { T.any(Symbol, String) }
207
-
208
- OBJECT =
209
- T.let(
210
- :object,
211
- Zavudev::Senders::Agent::AgentTool::Parameters::Type::TaggedSymbol
212
- )
213
-
214
- sig do
215
- override.returns(
216
- T::Array[
217
- Zavudev::Senders::Agent::AgentTool::Parameters::Type::TaggedSymbol
218
- ]
219
- )
220
- end
221
- def self.values
222
- end
223
- end
224
- end
225
99
  end
226
100
  end
227
101
  end