cadenya 0.1.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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/README.md +1 -1
  4. data/lib/cadenya/client.rb +14 -0
  5. data/lib/cadenya/internal/cursor_pagination.rb +1 -1
  6. data/lib/cadenya/internal/transport/base_client.rb +2 -0
  7. data/lib/cadenya/models/agent_spec.rb +19 -4
  8. data/lib/cadenya/models/agents/webhook_delivery_data.rb +3 -1
  9. data/lib/cadenya/models/agents/webhook_delivery_list_params.rb +3 -1
  10. data/lib/cadenya/models/approval_requirement_filter.rb +26 -0
  11. data/lib/cadenya/models/attribute_filter.rb +38 -0
  12. data/lib/cadenya/models/objective_create_params.rb +3 -3
  13. data/lib/cadenya/models/objective_data.rb +21 -1
  14. data/lib/cadenya/models/objective_event_data.rb +43 -5
  15. data/lib/cadenya/models/objective_list_events_params.rb +9 -1
  16. data/lib/cadenya/models/objective_list_params.rb +2 -1
  17. data/lib/cadenya/models/objective_status.rb +2 -1
  18. data/lib/cadenya/models/profile_spec.rb +1 -0
  19. data/lib/cadenya/models/string_matcher.rb +47 -0
  20. data/lib/cadenya/models/sub_agent_spawned.rb +35 -0
  21. data/lib/cadenya/models/sub_agent_updated.rb +66 -0
  22. data/lib/cadenya/models/tool_filter.rb +35 -0
  23. data/lib/cadenya/models/tool_set_adapter.rb +7 -1
  24. data/lib/cadenya/models/tool_set_adapter_mcp.rb +11 -33
  25. data/lib/cadenya/models/tool_set_adapter_openapi.rb +79 -0
  26. data/lib/cadenya/models/tool_set_get_openapi_spec_params.rb +26 -0
  27. data/lib/cadenya/models/tool_set_get_openapi_spec_response.rb +17 -0
  28. data/lib/cadenya/models/tool_sets/config_openapi.rb +29 -0
  29. data/lib/cadenya/models/tool_sets/tool_spec_config.rb +7 -1
  30. data/lib/cadenya/models/workspace.rb +27 -1
  31. data/lib/cadenya/models/workspace_admin/member_add_params.rb +39 -0
  32. data/lib/cadenya/models/workspace_admin/member_list_params.rb +39 -0
  33. data/lib/cadenya/models/workspace_admin/member_remove_params.rb +28 -0
  34. data/lib/cadenya/models/workspace_admin/profile_list_params.rb +44 -0
  35. data/lib/cadenya/models/workspace_admin_archive_params.rb +20 -0
  36. data/lib/cadenya/models/workspace_admin_create_params.rb +70 -0
  37. data/lib/cadenya/models/workspace_admin_list_params.rb +42 -0
  38. data/lib/cadenya/models/workspace_admin_retrieve_params.rb +20 -0
  39. data/lib/cadenya/models/workspace_admin_update_params.rb +85 -0
  40. data/lib/cadenya/models/workspace_member.rb +53 -0
  41. data/lib/cadenya/models.rb +29 -3
  42. data/lib/cadenya/resources/objectives.rb +5 -2
  43. data/lib/cadenya/resources/tool_sets.rb +31 -0
  44. data/lib/cadenya/resources/workspace_admin/members.rb +107 -0
  45. data/lib/cadenya/resources/workspace_admin/profiles.rb +54 -0
  46. data/lib/cadenya/resources/workspace_admin.rb +173 -0
  47. data/lib/cadenya/resources/workspaces.rb +4 -0
  48. data/lib/cadenya/version.rb +1 -1
  49. data/lib/cadenya.rb +23 -2
  50. data/rbi/cadenya/client.rbi +13 -0
  51. data/rbi/cadenya/models/agent_spec.rbi +21 -4
  52. data/rbi/cadenya/models/agents/webhook_delivery_data.rbi +15 -5
  53. data/rbi/cadenya/models/agents/webhook_delivery_list_params.rbi +15 -5
  54. data/rbi/cadenya/models/approval_requirement_filter.rbi +45 -0
  55. data/rbi/cadenya/models/attribute_filter.rbi +84 -0
  56. data/rbi/cadenya/models/objective_create_params.rbi +2 -2
  57. data/rbi/cadenya/models/objective_data.rbi +26 -0
  58. data/rbi/cadenya/models/objective_event_data.rbi +68 -9
  59. data/rbi/cadenya/models/objective_list_events_params.rbi +11 -0
  60. data/rbi/cadenya/models/objective_list_params.rbi +7 -2
  61. data/rbi/cadenya/models/objective_status.rbi +4 -2
  62. data/rbi/cadenya/models/profile_spec.rbi +5 -0
  63. data/rbi/cadenya/models/string_matcher.rbi +84 -0
  64. data/rbi/cadenya/models/sub_agent_spawned.rbi +62 -0
  65. data/rbi/cadenya/models/sub_agent_updated.rbi +127 -0
  66. data/rbi/cadenya/models/tool_filter.rbi +66 -0
  67. data/rbi/cadenya/models/tool_set_adapter.rbi +14 -3
  68. data/rbi/cadenya/models/tool_set_adapter_mcp.rbi +16 -62
  69. data/rbi/cadenya/models/tool_set_adapter_openapi.rbi +127 -0
  70. data/rbi/cadenya/models/tool_set_get_openapi_spec_params.rbi +46 -0
  71. data/rbi/cadenya/models/tool_set_get_openapi_spec_response.rbi +33 -0
  72. data/rbi/cadenya/models/tool_sets/config_openapi.rbi +48 -0
  73. data/rbi/cadenya/models/tool_sets/tool_spec_config.rbi +11 -3
  74. data/rbi/cadenya/models/workspace.rbi +39 -3
  75. data/rbi/cadenya/models/workspace_admin/member_add_params.rbi +68 -0
  76. data/rbi/cadenya/models/workspace_admin/member_list_params.rbi +68 -0
  77. data/rbi/cadenya/models/workspace_admin/member_remove_params.rbi +48 -0
  78. data/rbi/cadenya/models/workspace_admin/profile_list_params.rbi +75 -0
  79. data/rbi/cadenya/models/workspace_admin_archive_params.rbi +38 -0
  80. data/rbi/cadenya/models/workspace_admin_create_params.rbi +127 -0
  81. data/rbi/cadenya/models/workspace_admin_list_params.rbi +70 -0
  82. data/rbi/cadenya/models/workspace_admin_retrieve_params.rbi +38 -0
  83. data/rbi/cadenya/models/workspace_admin_update_params.rbi +144 -0
  84. data/rbi/cadenya/models/workspace_member.rbi +80 -0
  85. data/rbi/cadenya/models.rbi +29 -3
  86. data/rbi/cadenya/resources/objectives.rbi +4 -1
  87. data/rbi/cadenya/resources/tool_sets.rbi +18 -0
  88. data/rbi/cadenya/resources/workspace_admin/members.rbi +83 -0
  89. data/rbi/cadenya/resources/workspace_admin/profiles.rbi +42 -0
  90. data/rbi/cadenya/resources/workspace_admin.rbi +131 -0
  91. data/rbi/cadenya/resources/workspaces.rbi +4 -0
  92. data/sig/cadenya/client.rbs +2 -0
  93. data/sig/cadenya/models/agent_spec.rbs +12 -5
  94. data/sig/cadenya/models/agents/webhook_delivery_data.rbs +6 -2
  95. data/sig/cadenya/models/agents/webhook_delivery_list_params.rbs +6 -2
  96. data/sig/cadenya/models/approval_requirement_filter.rbs +20 -0
  97. data/sig/cadenya/models/attribute_filter.rbs +44 -0
  98. data/sig/cadenya/models/objective_create_params.rbs +6 -2
  99. data/sig/cadenya/models/objective_data.rbs +14 -0
  100. data/sig/cadenya/models/objective_event_data.rbs +37 -7
  101. data/sig/cadenya/models/objective_list_events_params.rbs +7 -0
  102. data/sig/cadenya/models/objective_list_params.rbs +4 -2
  103. data/sig/cadenya/models/objective_status.rbs +4 -2
  104. data/sig/cadenya/models/profile_spec.rbs +5 -1
  105. data/sig/cadenya/models/string_matcher.rbs +57 -0
  106. data/sig/cadenya/models/sub_agent_spawned.rbs +36 -0
  107. data/sig/cadenya/models/sub_agent_updated.rbs +66 -0
  108. data/sig/cadenya/models/tool_filter.rbs +41 -0
  109. data/sig/cadenya/models/tool_set_adapter.rbs +15 -3
  110. data/sig/cadenya/models/tool_set_adapter_mcp.rbs +16 -32
  111. data/sig/cadenya/models/tool_set_adapter_openapi.rbs +73 -0
  112. data/sig/cadenya/models/tool_set_get_openapi_spec_params.rbs +28 -0
  113. data/sig/cadenya/models/tool_set_get_openapi_spec_response.rbs +15 -0
  114. data/sig/cadenya/models/tool_sets/config_openapi.rbs +30 -0
  115. data/sig/cadenya/models/tool_sets/tool_spec_config.rbs +12 -3
  116. data/sig/cadenya/models/workspace.rbs +24 -3
  117. data/sig/cadenya/models/workspace_admin/member_add_params.rbs +38 -0
  118. data/sig/cadenya/models/workspace_admin/member_list_params.rbs +38 -0
  119. data/sig/cadenya/models/workspace_admin/member_remove_params.rbs +30 -0
  120. data/sig/cadenya/models/workspace_admin/profile_list_params.rbs +40 -0
  121. data/sig/cadenya/models/workspace_admin_archive_params.rbs +23 -0
  122. data/sig/cadenya/models/workspace_admin_create_params.rbs +58 -0
  123. data/sig/cadenya/models/workspace_admin_list_params.rbs +38 -0
  124. data/sig/cadenya/models/workspace_admin_retrieve_params.rbs +23 -0
  125. data/sig/cadenya/models/workspace_admin_update_params.rbs +76 -0
  126. data/sig/cadenya/models/workspace_member.rbs +46 -0
  127. data/sig/cadenya/models.rbs +29 -3
  128. data/sig/cadenya/resources/objectives.rbs +2 -1
  129. data/sig/cadenya/resources/tool_sets.rbs +6 -0
  130. data/sig/cadenya/resources/workspace_admin/members.rbs +29 -0
  131. data/sig/cadenya/resources/workspace_admin/profiles.rbs +16 -0
  132. data/sig/cadenya/resources/workspace_admin.rbs +42 -0
  133. metadata +71 -8
  134. data/lib/cadenya/models/mcp_tool_filter.rb +0 -111
  135. data/lib/cadenya/models/sub_objective_created.rb +0 -20
  136. data/rbi/cadenya/models/mcp_tool_filter.rbi +0 -235
  137. data/rbi/cadenya/models/sub_objective_created.rbi +0 -36
  138. data/sig/cadenya/models/mcp_tool_filter.rbs +0 -138
  139. data/sig/cadenya/models/sub_objective_created.rbs +0 -15
@@ -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,62 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class SubAgentSpawned < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::SubAgentSpawned, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ # Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
12
+ sig { returns(T.nilable(Cadenya::ResourceMetadata)) }
13
+ attr_reader :agent
14
+
15
+ sig { params(agent: Cadenya::ResourceMetadata::OrHash).void }
16
+ attr_writer :agent
17
+
18
+ # Metadata for ephemeral operations and activities (e.g., objectives, executions,
19
+ # runs)
20
+ sig { returns(T.nilable(Cadenya::OperationMetadata)) }
21
+ attr_reader :objective
22
+
23
+ sig { params(objective: Cadenya::OperationMetadata::OrHash).void }
24
+ attr_writer :objective
25
+
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :task
28
+
29
+ sig { params(task: String).void }
30
+ attr_writer :task
31
+
32
+ sig do
33
+ params(
34
+ agent: Cadenya::ResourceMetadata::OrHash,
35
+ objective: Cadenya::OperationMetadata::OrHash,
36
+ task: String
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ # Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
41
+ agent: nil,
42
+ # Metadata for ephemeral operations and activities (e.g., objectives, executions,
43
+ # runs)
44
+ objective: nil,
45
+ task: nil
46
+ )
47
+ end
48
+
49
+ sig do
50
+ override.returns(
51
+ {
52
+ agent: Cadenya::ResourceMetadata,
53
+ objective: Cadenya::OperationMetadata,
54
+ task: String
55
+ }
56
+ )
57
+ end
58
+ def to_hash
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,127 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class SubAgentUpdated < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::SubAgentUpdated, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ # BareMetadata contains the minimal metadata for a resource: the ID and an
12
+ # optional human-readable name. These are used for reference fields where the full
13
+ # metadata (account scoping, timestamps, labels, external IDs) is not needed —
14
+ # e.g., the tool references inside an agent variation spec or the tools assigned
15
+ # to an objective. Both fields are server-populated; clients provide IDs through
16
+ # sibling fields rather than by constructing a BareMetadata themselves.
17
+ sig { returns(T.nilable(Cadenya::BareMetadata)) }
18
+ attr_reader :agent
19
+
20
+ sig { params(agent: Cadenya::BareMetadata::OrHash).void }
21
+ attr_writer :agent
22
+
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :message
25
+
26
+ sig { params(message: String).void }
27
+ attr_writer :message
28
+
29
+ # BareMetadata contains the minimal metadata for a resource: the ID and an
30
+ # optional human-readable name. These are used for reference fields where the full
31
+ # metadata (account scoping, timestamps, labels, external IDs) is not needed —
32
+ # e.g., the tool references inside an agent variation spec or the tools assigned
33
+ # to an objective. Both fields are server-populated; clients provide IDs through
34
+ # sibling fields rather than by constructing a BareMetadata themselves.
35
+ sig { returns(T.nilable(Cadenya::BareMetadata)) }
36
+ attr_reader :objective
37
+
38
+ sig { params(objective: Cadenya::BareMetadata::OrHash).void }
39
+ attr_writer :objective
40
+
41
+ sig { returns(T.nilable(Cadenya::SubAgentUpdated::Status::TaggedSymbol)) }
42
+ attr_reader :status
43
+
44
+ sig { params(status: Cadenya::SubAgentUpdated::Status::OrSymbol).void }
45
+ attr_writer :status
46
+
47
+ sig do
48
+ params(
49
+ agent: Cadenya::BareMetadata::OrHash,
50
+ message: String,
51
+ objective: Cadenya::BareMetadata::OrHash,
52
+ status: Cadenya::SubAgentUpdated::Status::OrSymbol
53
+ ).returns(T.attached_class)
54
+ end
55
+ def self.new(
56
+ # BareMetadata contains the minimal metadata for a resource: the ID and an
57
+ # optional human-readable name. These are used for reference fields where the full
58
+ # metadata (account scoping, timestamps, labels, external IDs) is not needed —
59
+ # e.g., the tool references inside an agent variation spec or the tools assigned
60
+ # to an objective. Both fields are server-populated; clients provide IDs through
61
+ # sibling fields rather than by constructing a BareMetadata themselves.
62
+ agent: nil,
63
+ message: nil,
64
+ # BareMetadata contains the minimal metadata for a resource: the ID and an
65
+ # optional human-readable name. These are used for reference fields where the full
66
+ # metadata (account scoping, timestamps, labels, external IDs) is not needed —
67
+ # e.g., the tool references inside an agent variation spec or the tools assigned
68
+ # to an objective. Both fields are server-populated; clients provide IDs through
69
+ # sibling fields rather than by constructing a BareMetadata themselves.
70
+ objective: nil,
71
+ status: nil
72
+ )
73
+ end
74
+
75
+ sig do
76
+ override.returns(
77
+ {
78
+ agent: Cadenya::BareMetadata,
79
+ message: String,
80
+ objective: Cadenya::BareMetadata,
81
+ status: Cadenya::SubAgentUpdated::Status::TaggedSymbol
82
+ }
83
+ )
84
+ end
85
+ def to_hash
86
+ end
87
+
88
+ module Status
89
+ extend Cadenya::Internal::Type::Enum
90
+
91
+ TaggedSymbol =
92
+ T.type_alias { T.all(Symbol, Cadenya::SubAgentUpdated::Status) }
93
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
94
+
95
+ STATUS_UNSPECIFIED =
96
+ T.let(
97
+ :STATUS_UNSPECIFIED,
98
+ Cadenya::SubAgentUpdated::Status::TaggedSymbol
99
+ )
100
+ STATUS_PENDING =
101
+ T.let(:STATUS_PENDING, Cadenya::SubAgentUpdated::Status::TaggedSymbol)
102
+ STATUS_RUNNING =
103
+ T.let(:STATUS_RUNNING, Cadenya::SubAgentUpdated::Status::TaggedSymbol)
104
+ STATUS_COMPLETED =
105
+ T.let(
106
+ :STATUS_COMPLETED,
107
+ Cadenya::SubAgentUpdated::Status::TaggedSymbol
108
+ )
109
+ STATUS_FAILED =
110
+ T.let(:STATUS_FAILED, Cadenya::SubAgentUpdated::Status::TaggedSymbol)
111
+ STATUS_CANCELLED =
112
+ T.let(
113
+ :STATUS_CANCELLED,
114
+ Cadenya::SubAgentUpdated::Status::TaggedSymbol
115
+ )
116
+
117
+ sig do
118
+ override.returns(
119
+ T::Array[Cadenya::SubAgentUpdated::Status::TaggedSymbol]
120
+ )
121
+ end
122
+ def self.values
123
+ end
124
+ end
125
+ end
126
+ end
127
+ 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