cadenya 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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +1 -1
  4. data/lib/cadenya/client.rb +14 -0
  5. data/lib/cadenya/models/agent_spec.rb +19 -4
  6. data/lib/cadenya/models/agents/webhook_delivery_data.rb +1 -0
  7. data/lib/cadenya/models/agents/webhook_delivery_list_params.rb +1 -0
  8. data/lib/cadenya/models/approval_requirement_filter.rb +26 -0
  9. data/lib/cadenya/models/attribute_filter.rb +38 -0
  10. data/lib/cadenya/models/objective_data.rb +21 -1
  11. data/lib/cadenya/models/objective_event_data.rb +32 -1
  12. data/lib/cadenya/models/objective_list_params.rb +2 -1
  13. data/lib/cadenya/models/objective_status.rb +2 -1
  14. data/lib/cadenya/models/profile_spec.rb +1 -0
  15. data/lib/cadenya/models/string_matcher.rb +47 -0
  16. data/lib/cadenya/models/tool_filter.rb +35 -0
  17. data/lib/cadenya/models/tool_set_adapter.rb +7 -1
  18. data/lib/cadenya/models/tool_set_adapter_mcp.rb +11 -33
  19. data/lib/cadenya/models/tool_set_adapter_openapi.rb +79 -0
  20. data/lib/cadenya/models/tool_set_get_openapi_spec_params.rb +26 -0
  21. data/lib/cadenya/models/tool_set_get_openapi_spec_response.rb +17 -0
  22. data/lib/cadenya/models/tool_sets/config_openapi.rb +29 -0
  23. data/lib/cadenya/models/tool_sets/tool_spec_config.rb +7 -1
  24. data/lib/cadenya/models/workspace.rb +27 -1
  25. data/lib/cadenya/models/workspace_admin/member_add_params.rb +39 -0
  26. data/lib/cadenya/models/workspace_admin/member_list_params.rb +39 -0
  27. data/lib/cadenya/models/workspace_admin/member_remove_params.rb +28 -0
  28. data/lib/cadenya/models/workspace_admin/profile_list_params.rb +44 -0
  29. data/lib/cadenya/models/workspace_admin_archive_params.rb +20 -0
  30. data/lib/cadenya/models/workspace_admin_create_params.rb +70 -0
  31. data/lib/cadenya/models/workspace_admin_list_params.rb +42 -0
  32. data/lib/cadenya/models/workspace_admin_retrieve_params.rb +20 -0
  33. data/lib/cadenya/models/workspace_admin_update_params.rb +85 -0
  34. data/lib/cadenya/models/workspace_member.rb +53 -0
  35. data/lib/cadenya/models.rb +26 -2
  36. data/lib/cadenya/resources/tool_sets.rb +31 -0
  37. data/lib/cadenya/resources/workspace_admin/members.rb +107 -0
  38. data/lib/cadenya/resources/workspace_admin/profiles.rb +54 -0
  39. data/lib/cadenya/resources/workspace_admin.rb +173 -0
  40. data/lib/cadenya/resources/workspaces.rb +4 -0
  41. data/lib/cadenya/version.rb +1 -1
  42. data/lib/cadenya.rb +21 -1
  43. data/rbi/cadenya/client.rbi +13 -0
  44. data/rbi/cadenya/models/agent_spec.rbi +21 -4
  45. data/rbi/cadenya/models/agents/webhook_delivery_data.rbi +5 -0
  46. data/rbi/cadenya/models/agents/webhook_delivery_list_params.rbi +5 -0
  47. data/rbi/cadenya/models/approval_requirement_filter.rbi +45 -0
  48. data/rbi/cadenya/models/attribute_filter.rbi +84 -0
  49. data/rbi/cadenya/models/objective_data.rbi +26 -0
  50. data/rbi/cadenya/models/objective_event_data.rbi +52 -0
  51. data/rbi/cadenya/models/objective_list_params.rbi +7 -2
  52. data/rbi/cadenya/models/objective_status.rbi +4 -2
  53. data/rbi/cadenya/models/profile_spec.rbi +5 -0
  54. data/rbi/cadenya/models/string_matcher.rbi +84 -0
  55. data/rbi/cadenya/models/tool_filter.rbi +66 -0
  56. data/rbi/cadenya/models/tool_set_adapter.rbi +14 -3
  57. data/rbi/cadenya/models/tool_set_adapter_mcp.rbi +16 -62
  58. data/rbi/cadenya/models/tool_set_adapter_openapi.rbi +127 -0
  59. data/rbi/cadenya/models/tool_set_get_openapi_spec_params.rbi +46 -0
  60. data/rbi/cadenya/models/tool_set_get_openapi_spec_response.rbi +33 -0
  61. data/rbi/cadenya/models/tool_sets/config_openapi.rbi +48 -0
  62. data/rbi/cadenya/models/tool_sets/tool_spec_config.rbi +11 -3
  63. data/rbi/cadenya/models/workspace.rbi +39 -3
  64. data/rbi/cadenya/models/workspace_admin/member_add_params.rbi +68 -0
  65. data/rbi/cadenya/models/workspace_admin/member_list_params.rbi +68 -0
  66. data/rbi/cadenya/models/workspace_admin/member_remove_params.rbi +48 -0
  67. data/rbi/cadenya/models/workspace_admin/profile_list_params.rbi +75 -0
  68. data/rbi/cadenya/models/workspace_admin_archive_params.rbi +38 -0
  69. data/rbi/cadenya/models/workspace_admin_create_params.rbi +127 -0
  70. data/rbi/cadenya/models/workspace_admin_list_params.rbi +70 -0
  71. data/rbi/cadenya/models/workspace_admin_retrieve_params.rbi +38 -0
  72. data/rbi/cadenya/models/workspace_admin_update_params.rbi +144 -0
  73. data/rbi/cadenya/models/workspace_member.rbi +80 -0
  74. data/rbi/cadenya/models.rbi +26 -2
  75. data/rbi/cadenya/resources/tool_sets.rbi +18 -0
  76. data/rbi/cadenya/resources/workspace_admin/members.rbi +83 -0
  77. data/rbi/cadenya/resources/workspace_admin/profiles.rbi +42 -0
  78. data/rbi/cadenya/resources/workspace_admin.rbi +131 -0
  79. data/rbi/cadenya/resources/workspaces.rbi +4 -0
  80. data/sig/cadenya/client.rbs +2 -0
  81. data/sig/cadenya/models/agent_spec.rbs +12 -5
  82. data/sig/cadenya/models/agents/webhook_delivery_data.rbs +2 -0
  83. data/sig/cadenya/models/agents/webhook_delivery_list_params.rbs +2 -0
  84. data/sig/cadenya/models/approval_requirement_filter.rbs +20 -0
  85. data/sig/cadenya/models/attribute_filter.rbs +44 -0
  86. data/sig/cadenya/models/objective_data.rbs +14 -0
  87. data/sig/cadenya/models/objective_event_data.rbs +21 -0
  88. data/sig/cadenya/models/objective_list_params.rbs +4 -2
  89. data/sig/cadenya/models/objective_status.rbs +4 -2
  90. data/sig/cadenya/models/profile_spec.rbs +5 -1
  91. data/sig/cadenya/models/string_matcher.rbs +57 -0
  92. data/sig/cadenya/models/tool_filter.rbs +41 -0
  93. data/sig/cadenya/models/tool_set_adapter.rbs +15 -3
  94. data/sig/cadenya/models/tool_set_adapter_mcp.rbs +16 -32
  95. data/sig/cadenya/models/tool_set_adapter_openapi.rbs +73 -0
  96. data/sig/cadenya/models/tool_set_get_openapi_spec_params.rbs +28 -0
  97. data/sig/cadenya/models/tool_set_get_openapi_spec_response.rbs +15 -0
  98. data/sig/cadenya/models/tool_sets/config_openapi.rbs +30 -0
  99. data/sig/cadenya/models/tool_sets/tool_spec_config.rbs +12 -3
  100. data/sig/cadenya/models/workspace.rbs +24 -3
  101. data/sig/cadenya/models/workspace_admin/member_add_params.rbs +38 -0
  102. data/sig/cadenya/models/workspace_admin/member_list_params.rbs +38 -0
  103. data/sig/cadenya/models/workspace_admin/member_remove_params.rbs +30 -0
  104. data/sig/cadenya/models/workspace_admin/profile_list_params.rbs +40 -0
  105. data/sig/cadenya/models/workspace_admin_archive_params.rbs +23 -0
  106. data/sig/cadenya/models/workspace_admin_create_params.rbs +58 -0
  107. data/sig/cadenya/models/workspace_admin_list_params.rbs +38 -0
  108. data/sig/cadenya/models/workspace_admin_retrieve_params.rbs +23 -0
  109. data/sig/cadenya/models/workspace_admin_update_params.rbs +76 -0
  110. data/sig/cadenya/models/workspace_member.rbs +46 -0
  111. data/sig/cadenya/models.rbs +26 -2
  112. data/sig/cadenya/resources/tool_sets.rbs +6 -0
  113. data/sig/cadenya/resources/workspace_admin/members.rbs +29 -0
  114. data/sig/cadenya/resources/workspace_admin/profiles.rbs +16 -0
  115. data/sig/cadenya/resources/workspace_admin.rbs +42 -0
  116. metadata +65 -5
  117. data/lib/cadenya/models/mcp_tool_filter.rb +0 -111
  118. data/rbi/cadenya/models/mcp_tool_filter.rbi +0 -235
  119. data/sig/cadenya/models/mcp_tool_filter.rbs +0 -138
@@ -64,6 +64,22 @@ module Cadenya
64
64
  sig { params(agent: Cadenya::Agent::OrHash).void }
65
65
  attr_writer :agent
66
66
 
67
+ # The output of the objective, populated when the objective completes. Will match
68
+ # the schema of output_json_schema or output_json_inferred.
69
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
70
+ attr_reader :output
71
+
72
+ sig { params(output: T::Hash[Symbol, T.anything]).void }
73
+ attr_writer :output
74
+
75
+ # Snapshot of the agent spec's output_definition at objective creation time. When
76
+ # present, the objective will run an extraction step after the LLM finishes.
77
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
78
+ attr_reader :output_definition
79
+
80
+ sig { params(output_definition: T::Hash[Symbol, T.anything]).void }
81
+ attr_writer :output_definition
82
+
67
83
  # A parent objective means the objective was spawned off using a separate agent to
68
84
  # complete an objective
69
85
  sig { returns(T.nilable(String)) }
@@ -101,6 +117,8 @@ module Cadenya
101
117
  data: T.anything,
102
118
  initial_message: String,
103
119
  memory_stack: T::Array[Cadenya::MemoryReference::OrHash],
120
+ output: T::Hash[Symbol, T.anything],
121
+ output_definition: T::Hash[Symbol, T.anything],
104
122
  parent_objective_id: String,
105
123
  secrets: T::Array[Cadenya::ObjectiveDataSecret::OrHash],
106
124
  source_schedule_id: String,
@@ -133,6 +151,12 @@ module Cadenya
133
151
  # - this field) must not exceed 10 entries. A request that would produce an
134
152
  # effective stack larger than 10 is rejected with InvalidArgument.
135
153
  memory_stack: nil,
154
+ # The output of the objective, populated when the objective completes. Will match
155
+ # the schema of output_json_schema or output_json_inferred.
156
+ output: nil,
157
+ # Snapshot of the agent spec's output_definition at objective creation time. When
158
+ # present, the objective will run an extraction step after the LLM finishes.
159
+ output_definition: nil,
136
160
  # A parent objective means the objective was spawned off using a separate agent to
137
161
  # complete an objective
138
162
  parent_objective_id: nil,
@@ -157,6 +181,8 @@ module Cadenya
157
181
  data: T.anything,
158
182
  initial_message: String,
159
183
  memory_stack: T::Array[Cadenya::MemoryReference],
184
+ output: T::Hash[Symbol, T.anything],
185
+ output_definition: T::Hash[Symbol, T.anything],
160
186
  parent_objective_id: String,
161
187
  secrets: T::Array[Cadenya::ObjectiveDataSecret],
162
188
  source_schedule_id: String,
@@ -41,6 +41,17 @@ module Cadenya
41
41
  sig { params(error: Cadenya::ObjectiveError::OrHash).void }
42
42
  attr_writer :error
43
43
 
44
+ # ObjectiveFinalized is the terminal event written when an objective is finalized.
45
+ # After this event, the objective is super-terminal: no further iterations,
46
+ # compaction, or continuation are permitted.
47
+ sig { returns(T.nilable(Cadenya::ObjectiveEventData::Finalized)) }
48
+ attr_reader :finalized
49
+
50
+ sig do
51
+ params(finalized: Cadenya::ObjectiveEventData::Finalized::OrHash).void
52
+ end
53
+ attr_writer :finalized
54
+
44
55
  # MemoryRead is emitted each time the agent resolves a key against the memory
45
56
  # stack and loads an entry. Lookups that miss (key not found in any layer) do not
46
57
  # emit this event.
@@ -120,6 +131,7 @@ module Cadenya
120
131
  cancelled: Cadenya::ObjectiveEventData::Cancelled::OrHash,
121
132
  context_window_compacted: Cadenya::ContextWindowCompacted::OrHash,
122
133
  error: Cadenya::ObjectiveError::OrHash,
134
+ finalized: Cadenya::ObjectiveEventData::Finalized::OrHash,
123
135
  memory_read: Cadenya::MemoryRead::OrHash,
124
136
  sub_agent_spawned: Cadenya::SubAgentSpawned::OrHash,
125
137
  sub_agent_updated: Cadenya::SubAgentUpdated::OrHash,
@@ -141,6 +153,10 @@ module Cadenya
141
153
  cancelled: nil,
142
154
  context_window_compacted: nil,
143
155
  error: nil,
156
+ # ObjectiveFinalized is the terminal event written when an objective is finalized.
157
+ # After this event, the objective is super-terminal: no further iterations,
158
+ # compaction, or continuation are permitted.
159
+ finalized: nil,
144
160
  # MemoryRead is emitted each time the agent resolves a key against the memory
145
161
  # stack and loads an entry. Lookups that miss (key not found in any layer) do not
146
162
  # emit this event.
@@ -165,6 +181,7 @@ module Cadenya
165
181
  cancelled: Cadenya::ObjectiveEventData::Cancelled,
166
182
  context_window_compacted: Cadenya::ContextWindowCompacted,
167
183
  error: Cadenya::ObjectiveError,
184
+ finalized: Cadenya::ObjectiveEventData::Finalized,
168
185
  memory_read: Cadenya::MemoryRead,
169
186
  sub_agent_spawned: Cadenya::SubAgentSpawned,
170
187
  sub_agent_updated: Cadenya::SubAgentUpdated,
@@ -216,6 +233,41 @@ module Cadenya
216
233
  def to_hash
217
234
  end
218
235
  end
236
+
237
+ class Finalized < Cadenya::Internal::Type::BaseModel
238
+ OrHash =
239
+ T.type_alias do
240
+ T.any(
241
+ Cadenya::ObjectiveEventData::Finalized,
242
+ Cadenya::Internal::AnyHash
243
+ )
244
+ end
245
+
246
+ # If the objective was created with an output schema, and the agent successfully
247
+ # completed the objective, this field will contain the structured output of the
248
+ # objective.
249
+ sig { returns(T.nilable(T.anything)) }
250
+ attr_reader :output
251
+
252
+ sig { params(output: T.anything).void }
253
+ attr_writer :output
254
+
255
+ # ObjectiveFinalized is the terminal event written when an objective is finalized.
256
+ # After this event, the objective is super-terminal: no further iterations,
257
+ # compaction, or continuation are permitted.
258
+ sig { params(output: T.anything).returns(T.attached_class) }
259
+ def self.new(
260
+ # If the objective was created with an output schema, and the agent successfully
261
+ # completed the objective, this field will contain the structured output of the
262
+ # objective.
263
+ output: nil
264
+ )
265
+ end
266
+
267
+ sig { override.returns({ output: T.anything }) }
268
+ def to_hash
269
+ end
270
+ end
219
271
  end
220
272
  end
221
273
  end
@@ -159,9 +159,9 @@ module Cadenya
159
159
  :STATE_RUNNING,
160
160
  Cadenya::ObjectiveListParams::State::TaggedSymbol
161
161
  )
162
- STATE_COMPLETED =
162
+ STATE_WAITING =
163
163
  T.let(
164
- :STATE_COMPLETED,
164
+ :STATE_WAITING,
165
165
  Cadenya::ObjectiveListParams::State::TaggedSymbol
166
166
  )
167
167
  STATE_FAILED =
@@ -174,6 +174,11 @@ module Cadenya
174
174
  :STATE_CANCELLED,
175
175
  Cadenya::ObjectiveListParams::State::TaggedSymbol
176
176
  )
177
+ STATE_FINALIZED =
178
+ T.let(
179
+ :STATE_FINALIZED,
180
+ Cadenya::ObjectiveListParams::State::TaggedSymbol
181
+ )
177
182
 
178
183
  sig do
179
184
  override.returns(
@@ -53,12 +53,14 @@ module Cadenya
53
53
  T.let(:STATE_PENDING, Cadenya::ObjectiveStatus::State::TaggedSymbol)
54
54
  STATE_RUNNING =
55
55
  T.let(:STATE_RUNNING, Cadenya::ObjectiveStatus::State::TaggedSymbol)
56
- STATE_COMPLETED =
57
- T.let(:STATE_COMPLETED, Cadenya::ObjectiveStatus::State::TaggedSymbol)
56
+ STATE_WAITING =
57
+ T.let(:STATE_WAITING, Cadenya::ObjectiveStatus::State::TaggedSymbol)
58
58
  STATE_FAILED =
59
59
  T.let(:STATE_FAILED, Cadenya::ObjectiveStatus::State::TaggedSymbol)
60
60
  STATE_CANCELLED =
61
61
  T.let(:STATE_CANCELLED, Cadenya::ObjectiveStatus::State::TaggedSymbol)
62
+ STATE_FINALIZED =
63
+ T.let(:STATE_FINALIZED, Cadenya::ObjectiveStatus::State::TaggedSymbol)
62
64
 
63
65
  sig do
64
66
  override.returns(
@@ -64,6 +64,11 @@ module Cadenya
64
64
  T.type_alias { T.all(Symbol, Cadenya::ProfileSpec::Type) }
65
65
  OrSymbol = T.type_alias { T.any(Symbol, String) }
66
66
 
67
+ PROFILE_TYPE_UNSPECIFIED =
68
+ T.let(
69
+ :PROFILE_TYPE_UNSPECIFIED,
70
+ Cadenya::ProfileSpec::Type::TaggedSymbol
71
+ )
67
72
  PROFILE_TYPE_USER =
68
73
  T.let(:PROFILE_TYPE_USER, Cadenya::ProfileSpec::Type::TaggedSymbol)
69
74
  PROFILE_TYPE_API_KEY =
@@ -0,0 +1,84 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class StringMatcher < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::StringMatcher, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(T::Boolean)) }
12
+ attr_reader :case_sensitive
13
+
14
+ sig { params(case_sensitive: T::Boolean).void }
15
+ attr_writer :case_sensitive
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :contains
19
+
20
+ sig { params(contains: String).void }
21
+ attr_writer :contains
22
+
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :ends_with
25
+
26
+ sig { params(ends_with: String).void }
27
+ attr_writer :ends_with
28
+
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :exact
31
+
32
+ sig { params(exact: String).void }
33
+ attr_writer :exact
34
+
35
+ sig { returns(T.nilable(String)) }
36
+ attr_reader :regex
37
+
38
+ sig { params(regex: String).void }
39
+ attr_writer :regex
40
+
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :starts_with
43
+
44
+ sig { params(starts_with: String).void }
45
+ attr_writer :starts_with
46
+
47
+ # String matching operations
48
+ sig do
49
+ params(
50
+ case_sensitive: T::Boolean,
51
+ contains: String,
52
+ ends_with: String,
53
+ exact: String,
54
+ regex: String,
55
+ starts_with: String
56
+ ).returns(T.attached_class)
57
+ end
58
+ def self.new(
59
+ case_sensitive: nil,
60
+ contains: nil,
61
+ ends_with: nil,
62
+ exact: nil,
63
+ regex: nil,
64
+ starts_with: nil
65
+ )
66
+ end
67
+
68
+ sig do
69
+ override.returns(
70
+ {
71
+ case_sensitive: T::Boolean,
72
+ contains: String,
73
+ ends_with: String,
74
+ exact: String,
75
+ regex: String,
76
+ starts_with: String
77
+ }
78
+ )
79
+ end
80
+ def to_hash
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,66 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class ToolFilter < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Cadenya::ToolFilter, Cadenya::Internal::AnyHash) }
8
+
9
+ sig { returns(Cadenya::ToolFilter::Operator::OrSymbol) }
10
+ attr_accessor :operator
11
+
12
+ sig { returns(T.nilable(T::Array[Cadenya::AttributeFilter])) }
13
+ attr_reader :filters
14
+
15
+ sig { params(filters: T::Array[Cadenya::AttributeFilter::OrHash]).void }
16
+ attr_writer :filters
17
+
18
+ # Top-level filter with simple boolean logic (no nesting)
19
+ sig do
20
+ params(
21
+ operator: Cadenya::ToolFilter::Operator::OrSymbol,
22
+ filters: T::Array[Cadenya::AttributeFilter::OrHash]
23
+ ).returns(T.attached_class)
24
+ end
25
+ def self.new(operator:, filters: nil)
26
+ end
27
+
28
+ sig do
29
+ override.returns(
30
+ {
31
+ operator: Cadenya::ToolFilter::Operator::OrSymbol,
32
+ filters: T::Array[Cadenya::AttributeFilter]
33
+ }
34
+ )
35
+ end
36
+ def to_hash
37
+ end
38
+
39
+ module Operator
40
+ extend Cadenya::Internal::Type::Enum
41
+
42
+ TaggedSymbol =
43
+ T.type_alias { T.all(Symbol, Cadenya::ToolFilter::Operator) }
44
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
45
+
46
+ OPERATOR_UNSPECIFIED =
47
+ T.let(
48
+ :OPERATOR_UNSPECIFIED,
49
+ Cadenya::ToolFilter::Operator::TaggedSymbol
50
+ )
51
+ OPERATOR_AND =
52
+ T.let(:OPERATOR_AND, Cadenya::ToolFilter::Operator::TaggedSymbol)
53
+ OPERATOR_OR =
54
+ T.let(:OPERATOR_OR, Cadenya::ToolFilter::Operator::TaggedSymbol)
55
+
56
+ sig do
57
+ override.returns(
58
+ T::Array[Cadenya::ToolFilter::Operator::TaggedSymbol]
59
+ )
60
+ end
61
+ def self.values
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -20,18 +20,29 @@ module Cadenya
20
20
  sig { params(mcp: Cadenya::ToolSetAdapterMcp::OrHash).void }
21
21
  attr_writer :mcp
22
22
 
23
+ sig { returns(T.nilable(Cadenya::ToolSetAdapterOpenAPI)) }
24
+ attr_reader :openapi
25
+
26
+ sig { params(openapi: Cadenya::ToolSetAdapterOpenAPI::OrHash).void }
27
+ attr_writer :openapi
28
+
23
29
  sig do
24
30
  params(
25
31
  http: Cadenya::ToolSetAdapterHTTP::OrHash,
26
- mcp: Cadenya::ToolSetAdapterMcp::OrHash
32
+ mcp: Cadenya::ToolSetAdapterMcp::OrHash,
33
+ openapi: Cadenya::ToolSetAdapterOpenAPI::OrHash
27
34
  ).returns(T.attached_class)
28
35
  end
29
- def self.new(http: nil, mcp: nil)
36
+ def self.new(http: nil, mcp: nil, openapi: nil)
30
37
  end
31
38
 
32
39
  sig do
33
40
  override.returns(
34
- { http: Cadenya::ToolSetAdapterHTTP, mcp: Cadenya::ToolSetAdapterMcp }
41
+ {
42
+ http: Cadenya::ToolSetAdapterHTTP,
43
+ mcp: Cadenya::ToolSetAdapterMcp,
44
+ openapi: Cadenya::ToolSetAdapterOpenAPI
45
+ }
35
46
  )
36
47
  end
37
48
  def to_hash
@@ -9,10 +9,10 @@ module Cadenya
9
9
  end
10
10
 
11
11
  # Top-level filter with simple boolean logic (no nesting)
12
- sig { returns(T.nilable(Cadenya::McpToolFilter)) }
12
+ sig { returns(T.nilable(Cadenya::ToolFilter)) }
13
13
  attr_reader :exclude_tools
14
14
 
15
- sig { params(exclude_tools: Cadenya::McpToolFilter::OrHash).void }
15
+ sig { params(exclude_tools: Cadenya::ToolFilter::OrHash).void }
16
16
  attr_writer :exclude_tools
17
17
 
18
18
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
@@ -22,21 +22,19 @@ module Cadenya
22
22
  attr_writer :headers
23
23
 
24
24
  # Top-level filter with simple boolean logic (no nesting)
25
- sig { returns(T.nilable(Cadenya::McpToolFilter)) }
25
+ sig { returns(T.nilable(Cadenya::ToolFilter)) }
26
26
  attr_reader :include_tools
27
27
 
28
- sig { params(include_tools: Cadenya::McpToolFilter::OrHash).void }
28
+ sig { params(include_tools: Cadenya::ToolFilter::OrHash).void }
29
29
  attr_writer :include_tools
30
30
 
31
- # Approval filters that will automatically set the approval requirement on the
32
- # tools synced from the MCP server
33
- sig { returns(T.nilable(Cadenya::ToolSetAdapterMcp::ToolApprovals)) }
31
+ # Approval filters that will automatically set the approval requirement on tools
32
+ # synced from an external source
33
+ sig { returns(T.nilable(Cadenya::ApprovalRequirementFilter)) }
34
34
  attr_reader :tool_approvals
35
35
 
36
36
  sig do
37
- params(
38
- tool_approvals: Cadenya::ToolSetAdapterMcp::ToolApprovals::OrHash
39
- ).void
37
+ params(tool_approvals: Cadenya::ApprovalRequirementFilter::OrHash).void
40
38
  end
41
39
  attr_writer :tool_approvals
42
40
 
@@ -48,10 +46,10 @@ module Cadenya
48
46
 
49
47
  sig do
50
48
  params(
51
- exclude_tools: Cadenya::McpToolFilter::OrHash,
49
+ exclude_tools: Cadenya::ToolFilter::OrHash,
52
50
  headers: T::Hash[Symbol, String],
53
- include_tools: Cadenya::McpToolFilter::OrHash,
54
- tool_approvals: Cadenya::ToolSetAdapterMcp::ToolApprovals::OrHash,
51
+ include_tools: Cadenya::ToolFilter::OrHash,
52
+ tool_approvals: Cadenya::ApprovalRequirementFilter::OrHash,
55
53
  url: String
56
54
  ).returns(T.attached_class)
57
55
  end
@@ -61,8 +59,8 @@ module Cadenya
61
59
  headers: nil,
62
60
  # Top-level filter with simple boolean logic (no nesting)
63
61
  include_tools: nil,
64
- # Approval filters that will automatically set the approval requirement on the
65
- # tools synced from the MCP server
62
+ # Approval filters that will automatically set the approval requirement on tools
63
+ # synced from an external source
66
64
  tool_approvals: nil,
67
65
  url: nil
68
66
  )
@@ -71,60 +69,16 @@ module Cadenya
71
69
  sig do
72
70
  override.returns(
73
71
  {
74
- exclude_tools: Cadenya::McpToolFilter,
72
+ exclude_tools: Cadenya::ToolFilter,
75
73
  headers: T::Hash[Symbol, String],
76
- include_tools: Cadenya::McpToolFilter,
77
- tool_approvals: Cadenya::ToolSetAdapterMcp::ToolApprovals,
74
+ include_tools: Cadenya::ToolFilter,
75
+ tool_approvals: Cadenya::ApprovalRequirementFilter,
78
76
  url: String
79
77
  }
80
78
  )
81
79
  end
82
80
  def to_hash
83
81
  end
84
-
85
- class ToolApprovals < Cadenya::Internal::Type::BaseModel
86
- OrHash =
87
- T.type_alias do
88
- T.any(
89
- Cadenya::ToolSetAdapterMcp::ToolApprovals,
90
- Cadenya::Internal::AnyHash
91
- )
92
- end
93
-
94
- sig { returns(T.nilable(T::Boolean)) }
95
- attr_reader :always
96
-
97
- sig { params(always: T::Boolean).void }
98
- attr_writer :always
99
-
100
- # Top-level filter with simple boolean logic (no nesting)
101
- sig { returns(T.nilable(Cadenya::McpToolFilter)) }
102
- attr_reader :only
103
-
104
- sig { params(only: Cadenya::McpToolFilter::OrHash).void }
105
- attr_writer :only
106
-
107
- # Approval filters that will automatically set the approval requirement on the
108
- # tools synced from the MCP server
109
- sig do
110
- params(
111
- always: T::Boolean,
112
- only: Cadenya::McpToolFilter::OrHash
113
- ).returns(T.attached_class)
114
- end
115
- def self.new(
116
- always: nil,
117
- # Top-level filter with simple boolean logic (no nesting)
118
- only: nil
119
- )
120
- end
121
-
122
- sig do
123
- override.returns({ always: T::Boolean, only: Cadenya::McpToolFilter })
124
- end
125
- def to_hash
126
- end
127
- end
128
82
  end
129
83
  end
130
84
  end
@@ -0,0 +1,127 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class ToolSetAdapterOpenAPI < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::ToolSetAdapterOpenAPI, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ # Base URL for dispatching tool calls. If set, overrides the server resolved from
12
+ # the spec's servers array.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_reader :base_url
15
+
16
+ sig { params(base_url: String).void }
17
+ attr_writer :base_url
18
+
19
+ # Top-level filter with simple boolean logic (no nesting)
20
+ sig { returns(T.nilable(Cadenya::ToolFilter)) }
21
+ attr_reader :exclude_tools
22
+
23
+ sig { params(exclude_tools: Cadenya::ToolFilter::OrHash).void }
24
+ attr_writer :exclude_tools
25
+
26
+ # Headers sent when fetching the spec from a URL and when dispatching tool calls.
27
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
28
+ attr_reader :headers
29
+
30
+ sig { params(headers: T::Hash[Symbol, String]).void }
31
+ attr_writer :headers
32
+
33
+ # Top-level filter with simple boolean logic (no nesting)
34
+ sig { returns(T.nilable(Cadenya::ToolFilter)) }
35
+ attr_reader :include_tools
36
+
37
+ sig { params(include_tools: Cadenya::ToolFilter::OrHash).void }
38
+ attr_writer :include_tools
39
+
40
+ # Name of the server entry in the spec's servers array (OpenAPI 3.2 server.name
41
+ # field). Used to select which server URL to dispatch to when base_url is not set.
42
+ # If unset, the first server is used. Ignored when base_url is set.
43
+ sig { returns(T.nilable(String)) }
44
+ attr_reader :server_name
45
+
46
+ sig { params(server_name: String).void }
47
+ attr_writer :server_name
48
+
49
+ # Approval filters that will automatically set the approval requirement on tools
50
+ # synced from an external source
51
+ sig { returns(T.nilable(Cadenya::ApprovalRequirementFilter)) }
52
+ attr_reader :tool_approvals
53
+
54
+ sig do
55
+ params(tool_approvals: Cadenya::ApprovalRequirementFilter::OrHash).void
56
+ end
57
+ attr_writer :tool_approvals
58
+
59
+ # ID of a COMPLETE Upload containing the OpenAPI spec document.
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :upload_id
62
+
63
+ sig { params(upload_id: String).void }
64
+ attr_writer :upload_id
65
+
66
+ # URL to fetch the OpenAPI spec from. Synced automatically every hour.
67
+ sig { returns(T.nilable(String)) }
68
+ attr_reader :url
69
+
70
+ sig { params(url: String).void }
71
+ attr_writer :url
72
+
73
+ sig do
74
+ params(
75
+ base_url: String,
76
+ exclude_tools: Cadenya::ToolFilter::OrHash,
77
+ headers: T::Hash[Symbol, String],
78
+ include_tools: Cadenya::ToolFilter::OrHash,
79
+ server_name: String,
80
+ tool_approvals: Cadenya::ApprovalRequirementFilter::OrHash,
81
+ upload_id: String,
82
+ url: String
83
+ ).returns(T.attached_class)
84
+ end
85
+ def self.new(
86
+ # Base URL for dispatching tool calls. If set, overrides the server resolved from
87
+ # the spec's servers array.
88
+ base_url: nil,
89
+ # Top-level filter with simple boolean logic (no nesting)
90
+ exclude_tools: nil,
91
+ # Headers sent when fetching the spec from a URL and when dispatching tool calls.
92
+ headers: nil,
93
+ # Top-level filter with simple boolean logic (no nesting)
94
+ include_tools: nil,
95
+ # Name of the server entry in the spec's servers array (OpenAPI 3.2 server.name
96
+ # field). Used to select which server URL to dispatch to when base_url is not set.
97
+ # If unset, the first server is used. Ignored when base_url is set.
98
+ server_name: nil,
99
+ # Approval filters that will automatically set the approval requirement on tools
100
+ # synced from an external source
101
+ tool_approvals: nil,
102
+ # ID of a COMPLETE Upload containing the OpenAPI spec document.
103
+ upload_id: nil,
104
+ # URL to fetch the OpenAPI spec from. Synced automatically every hour.
105
+ url: nil
106
+ )
107
+ end
108
+
109
+ sig do
110
+ override.returns(
111
+ {
112
+ base_url: String,
113
+ exclude_tools: Cadenya::ToolFilter,
114
+ headers: T::Hash[Symbol, String],
115
+ include_tools: Cadenya::ToolFilter,
116
+ server_name: String,
117
+ tool_approvals: Cadenya::ApprovalRequirementFilter,
118
+ upload_id: String,
119
+ url: String
120
+ }
121
+ )
122
+ end
123
+ def to_hash
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class ToolSetGetOpenAPISpecParams < Cadenya::Internal::Type::BaseModel
6
+ extend Cadenya::Internal::Type::RequestParameters::Converter
7
+ include Cadenya::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Cadenya::ToolSetGetOpenAPISpecParams,
13
+ Cadenya::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :workspace_id
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :tool_set_id
22
+
23
+ sig do
24
+ params(
25
+ workspace_id: String,
26
+ tool_set_id: String,
27
+ request_options: Cadenya::RequestOptions::OrHash
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(workspace_id:, tool_set_id:, request_options: {})
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ workspace_id: String,
37
+ tool_set_id: String,
38
+ request_options: Cadenya::RequestOptions
39
+ }
40
+ )
41
+ end
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end