cadenya 0.20.0 → 0.22.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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/cadenya/client.rb +0 -7
  5. data/lib/cadenya/models/agent_list_params.rb +1 -9
  6. data/lib/cadenya/models/agents/schedule_list_params.rb +1 -9
  7. data/lib/cadenya/models/agents/variation_list_params.rb +1 -9
  8. data/lib/cadenya/models/ai_provider_key_spec.rb +168 -14
  9. data/lib/cadenya/models/api_key_list_params.rb +1 -9
  10. data/lib/cadenya/models/create_resource_metadata.rb +1 -9
  11. data/lib/cadenya/models/memory_layer_list_params.rb +1 -9
  12. data/lib/cadenya/models/memory_layers/entry_list_params.rb +1 -9
  13. data/lib/cadenya/models/model_list_params.rb +1 -9
  14. data/lib/cadenya/models/resource_metadata.rb +1 -12
  15. data/lib/cadenya/models/tool_set_list_params.rb +1 -9
  16. data/lib/cadenya/models/tool_sets/secret_list_params.rb +1 -9
  17. data/lib/cadenya/models/tool_sets/tool_list_params.rb +1 -9
  18. data/lib/cadenya/models/update_resource_metadata.rb +1 -9
  19. data/lib/cadenya/models/workspace_secret_list_params.rb +1 -9
  20. data/lib/cadenya/models.rb +0 -34
  21. data/lib/cadenya/resources/agents/schedules.rb +2 -8
  22. data/lib/cadenya/resources/agents/variations.rb +2 -8
  23. data/lib/cadenya/resources/agents.rb +1 -4
  24. data/lib/cadenya/resources/api_keys.rb +2 -8
  25. data/lib/cadenya/resources/memory_layers/entries.rb +2 -8
  26. data/lib/cadenya/resources/memory_layers.rb +1 -4
  27. data/lib/cadenya/resources/models.rb +1 -4
  28. data/lib/cadenya/resources/tool_sets/secrets.rb +2 -8
  29. data/lib/cadenya/resources/tool_sets/tools.rb +1 -4
  30. data/lib/cadenya/resources/tool_sets.rb +2 -8
  31. data/lib/cadenya/resources/workspace_secrets.rb +2 -8
  32. data/lib/cadenya/version.rb +1 -1
  33. data/lib/cadenya.rb +0 -30
  34. data/rbi/cadenya/client.rbi +0 -6
  35. data/rbi/cadenya/models/agent_list_params.rbi +0 -11
  36. data/rbi/cadenya/models/agents/schedule_list_params.rbi +0 -11
  37. data/rbi/cadenya/models/agents/variation_list_params.rbi +0 -11
  38. data/rbi/cadenya/models/ai_provider_key_spec.rbi +363 -24
  39. data/rbi/cadenya/models/api_key_list_params.rbi +0 -11
  40. data/rbi/cadenya/models/create_resource_metadata.rbi +1 -16
  41. data/rbi/cadenya/models/memory_layer_list_params.rbi +0 -11
  42. data/rbi/cadenya/models/memory_layers/entry_list_params.rbi +0 -11
  43. data/rbi/cadenya/models/model_list_params.rbi +0 -11
  44. data/rbi/cadenya/models/resource_metadata.rbi +0 -17
  45. data/rbi/cadenya/models/tool_set_list_params.rbi +0 -11
  46. data/rbi/cadenya/models/tool_sets/secret_list_params.rbi +0 -11
  47. data/rbi/cadenya/models/tool_sets/tool_list_params.rbi +0 -11
  48. data/rbi/cadenya/models/update_resource_metadata.rbi +1 -16
  49. data/rbi/cadenya/models/workspace_secret_list_params.rbi +0 -11
  50. data/rbi/cadenya/models.rbi +0 -37
  51. data/rbi/cadenya/resources/agents/schedules.rbi +0 -3
  52. data/rbi/cadenya/resources/agents/variations.rbi +0 -3
  53. data/rbi/cadenya/resources/agents.rbi +0 -3
  54. data/rbi/cadenya/resources/api_keys.rbi +0 -3
  55. data/rbi/cadenya/resources/memory_layers/entries.rbi +0 -3
  56. data/rbi/cadenya/resources/memory_layers.rbi +0 -3
  57. data/rbi/cadenya/resources/models.rbi +0 -3
  58. data/rbi/cadenya/resources/tool_sets/secrets.rbi +0 -3
  59. data/rbi/cadenya/resources/tool_sets/tools.rbi +0 -3
  60. data/rbi/cadenya/resources/tool_sets.rbi +0 -3
  61. data/rbi/cadenya/resources/workspace_secrets.rbi +0 -3
  62. data/sig/cadenya/client.rbs +0 -2
  63. data/sig/cadenya/models/agent_list_params.rbs +0 -7
  64. data/sig/cadenya/models/agents/schedule_list_params.rbs +0 -7
  65. data/sig/cadenya/models/agents/variation_list_params.rbs +0 -7
  66. data/sig/cadenya/models/ai_provider_key_spec.rbs +161 -11
  67. data/sig/cadenya/models/api_key_list_params.rbs +0 -7
  68. data/sig/cadenya/models/create_resource_metadata.rbs +1 -12
  69. data/sig/cadenya/models/memory_layer_list_params.rbs +0 -7
  70. data/sig/cadenya/models/memory_layers/entry_list_params.rbs +0 -7
  71. data/sig/cadenya/models/model_list_params.rbs +0 -7
  72. data/sig/cadenya/models/resource_metadata.rbs +0 -7
  73. data/sig/cadenya/models/tool_set_list_params.rbs +0 -7
  74. data/sig/cadenya/models/tool_sets/secret_list_params.rbs +0 -7
  75. data/sig/cadenya/models/tool_sets/tool_list_params.rbs +0 -7
  76. data/sig/cadenya/models/update_resource_metadata.rbs +1 -12
  77. data/sig/cadenya/models/workspace_secret_list_params.rbs +0 -7
  78. data/sig/cadenya/models.rbs +0 -34
  79. data/sig/cadenya/resources/agents/schedules.rbs +0 -1
  80. data/sig/cadenya/resources/agents/variations.rbs +0 -1
  81. data/sig/cadenya/resources/agents.rbs +0 -1
  82. data/sig/cadenya/resources/api_keys.rbs +0 -1
  83. data/sig/cadenya/resources/memory_layers/entries.rbs +0 -1
  84. data/sig/cadenya/resources/memory_layers.rbs +0 -1
  85. data/sig/cadenya/resources/models.rbs +0 -1
  86. data/sig/cadenya/resources/tool_sets/secrets.rbs +0 -1
  87. data/sig/cadenya/resources/tool_sets/tools.rbs +0 -1
  88. data/sig/cadenya/resources/tool_sets.rbs +0 -1
  89. data/sig/cadenya/resources/workspace_secrets.rbs +0 -1
  90. metadata +2 -92
  91. data/lib/cadenya/models/agent_entry.rb +0 -76
  92. data/lib/cadenya/models/agent_schedule_entry.rb +0 -60
  93. data/lib/cadenya/models/agent_variation_entry.rb +0 -52
  94. data/lib/cadenya/models/bulk_workspace_apply.rb +0 -46
  95. data/lib/cadenya/models/bulk_workspace_apply_data.rb +0 -75
  96. data/lib/cadenya/models/bulk_workspace_apply_info.rb +0 -79
  97. data/lib/cadenya/models/bulk_workspace_apply_status.rb +0 -115
  98. data/lib/cadenya/models/bulk_workspace_resource_apply_params.rb +0 -26
  99. data/lib/cadenya/models/bulk_workspace_resource_list_params.rb +0 -78
  100. data/lib/cadenya/models/bulk_workspace_resource_retrieve_params.rb +0 -26
  101. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result.rb +0 -40
  102. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data.rb +0 -95
  103. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_outcome.rb +0 -124
  104. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_schedule_outcome.rb +0 -126
  105. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_variation_outcome.rb +0 -125
  106. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_entry_outcome.rb +0 -133
  107. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_layer_outcome.rb +0 -130
  108. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_outcome.rb +0 -123
  109. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_set_outcome.rb +0 -123
  110. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_assignment_outcome.rb +0 -125
  111. data/lib/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_memory_layer_outcome.rb +0 -123
  112. data/lib/cadenya/models/bulk_workspace_resources/result_list_params.rb +0 -85
  113. data/lib/cadenya/models/memory_entry_item.rb +0 -33
  114. data/lib/cadenya/models/memory_layer_entry.rb +0 -37
  115. data/lib/cadenya/models/tool_entry.rb +0 -57
  116. data/lib/cadenya/models/tool_set_entry.rb +0 -37
  117. data/lib/cadenya/models/variation_assignment_entry.rb +0 -27
  118. data/lib/cadenya/models/variation_memory_layer_entry.rb +0 -23
  119. data/lib/cadenya/resources/bulk_workspace_resources/results.rb +0 -66
  120. data/lib/cadenya/resources/bulk_workspace_resources.rb +0 -113
  121. data/rbi/cadenya/models/agent_entry.rbi +0 -124
  122. data/rbi/cadenya/models/agent_schedule_entry.rbi +0 -104
  123. data/rbi/cadenya/models/agent_variation_entry.rbi +0 -87
  124. data/rbi/cadenya/models/bulk_workspace_apply.rbi +0 -72
  125. data/rbi/cadenya/models/bulk_workspace_apply_data.rbi +0 -122
  126. data/rbi/cadenya/models/bulk_workspace_apply_info.rbi +0 -116
  127. data/rbi/cadenya/models/bulk_workspace_apply_status.rbi +0 -259
  128. data/rbi/cadenya/models/bulk_workspace_resource_apply_params.rbi +0 -49
  129. data/rbi/cadenya/models/bulk_workspace_resource_list_params.rbi +0 -169
  130. data/rbi/cadenya/models/bulk_workspace_resource_retrieve_params.rbi +0 -46
  131. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result.rbi +0 -78
  132. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data.rbi +0 -246
  133. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_outcome.rbi +0 -291
  134. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_schedule_outcome.rbi +0 -293
  135. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_variation_outcome.rbi +0 -291
  136. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_entry_outcome.rbi +0 -309
  137. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_layer_outcome.rbi +0 -301
  138. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_outcome.rbi +0 -289
  139. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_set_outcome.rbi +0 -289
  140. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_assignment_outcome.rbi +0 -298
  141. data/rbi/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_memory_layer_outcome.rbi +0 -298
  142. data/rbi/cadenya/models/bulk_workspace_resources/result_list_params.rbi +0 -175
  143. data/rbi/cadenya/models/memory_entry_item.rbi +0 -57
  144. data/rbi/cadenya/models/memory_layer_entry.rbi +0 -66
  145. data/rbi/cadenya/models/tool_entry.rbi +0 -88
  146. data/rbi/cadenya/models/tool_set_entry.rbi +0 -64
  147. data/rbi/cadenya/models/variation_assignment_entry.rbi +0 -48
  148. data/rbi/cadenya/models/variation_memory_layer_entry.rbi +0 -41
  149. data/rbi/cadenya/resources/bulk_workspace_resources/results.rbi +0 -54
  150. data/rbi/cadenya/resources/bulk_workspace_resources.rbi +0 -87
  151. data/sig/cadenya/models/agent_entry.rbs +0 -73
  152. data/sig/cadenya/models/agent_schedule_entry.rbs +0 -55
  153. data/sig/cadenya/models/agent_variation_entry.rbs +0 -50
  154. data/sig/cadenya/models/bulk_workspace_apply.rbs +0 -39
  155. data/sig/cadenya/models/bulk_workspace_apply_data.rbs +0 -61
  156. data/sig/cadenya/models/bulk_workspace_apply_info.rbs +0 -78
  157. data/sig/cadenya/models/bulk_workspace_apply_status.rbs +0 -108
  158. data/sig/cadenya/models/bulk_workspace_resource_apply_params.rbs +0 -28
  159. data/sig/cadenya/models/bulk_workspace_resource_list_params.rbs +0 -88
  160. data/sig/cadenya/models/bulk_workspace_resource_retrieve_params.rbs +0 -28
  161. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result.rbs +0 -27
  162. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data.rbs +0 -105
  163. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_outcome.rbs +0 -117
  164. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_schedule_outcome.rbs +0 -119
  165. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_agent_variation_outcome.rbs +0 -119
  166. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_entry_outcome.rbs +0 -119
  167. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_memory_layer_outcome.rbs +0 -117
  168. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_outcome.rbs +0 -117
  169. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_tool_set_outcome.rbs +0 -117
  170. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_assignment_outcome.rbs +0 -112
  171. data/sig/cadenya/models/bulk_workspace_resources/bulk_workspace_apply_result_data_variation_memory_layer_outcome.rbs +0 -112
  172. data/sig/cadenya/models/bulk_workspace_resources/result_list_params.rbs +0 -91
  173. data/sig/cadenya/models/memory_entry_item.rbs +0 -36
  174. data/sig/cadenya/models/memory_layer_entry.rbs +0 -41
  175. data/sig/cadenya/models/tool_entry.rbs +0 -55
  176. data/sig/cadenya/models/tool_set_entry.rbs +0 -41
  177. data/sig/cadenya/models/variation_assignment_entry.rbs +0 -32
  178. data/sig/cadenya/models/variation_memory_layer_entry.rbs +0 -20
  179. data/sig/cadenya/resources/bulk_workspace_resources/results.rbs +0 -20
  180. data/sig/cadenya/resources/bulk_workspace_resources.rbs +0 -31
@@ -21,13 +21,6 @@ module Cadenya
21
21
  sig { returns(String) }
22
22
  attr_accessor :agent_id
23
23
 
24
- # Filter by bundle_key — return only resources owned by this bundle.
25
- sig { returns(T.nilable(String)) }
26
- attr_reader :bundle_key
27
-
28
- sig { params(bundle_key: String).void }
29
- attr_writer :bundle_key
30
-
31
24
  # Pagination cursor from previous response
32
25
  sig { returns(T.nilable(String)) }
33
26
  attr_reader :cursor
@@ -61,7 +54,6 @@ module Cadenya
61
54
  params(
62
55
  workspace_id: String,
63
56
  agent_id: String,
64
- bundle_key: String,
65
57
  cursor: String,
66
58
  include_info: T::Boolean,
67
59
  limit: Integer,
@@ -72,8 +64,6 @@ module Cadenya
72
64
  def self.new(
73
65
  workspace_id:,
74
66
  agent_id:,
75
- # Filter by bundle_key — return only resources owned by this bundle.
76
- bundle_key: nil,
77
67
  # Pagination cursor from previous response
78
68
  cursor: nil,
79
69
  # When true, the `info` field on each returned variation is populated. Requests
@@ -92,7 +82,6 @@ module Cadenya
92
82
  {
93
83
  workspace_id: String,
94
84
  agent_id: String,
95
- bundle_key: String,
96
85
  cursor: String,
97
86
  include_info: T::Boolean,
98
87
  limit: Integer,
@@ -8,22 +8,29 @@ module Cadenya
8
8
  T.any(Cadenya::AIProviderKeySpec, Cadenya::Internal::AnyHash)
9
9
  end
10
10
 
11
- # The provider credential. Accepted on create/update; never populated in responses
12
- # (the server returns an empty value to avoid leaking it).
13
- sig { returns(T.nilable(String)) }
14
- attr_reader :api_key
11
+ # AIProviderConfig holds non-secret, provider-specific settings. The set case must
12
+ # correspond to AIProviderKeySpec.provider. Providers with no settings (Anthropic,
13
+ # Gemini) simply leave this unset. The endpoint of a named provider is fixed and
14
+ # intentionally not overridable here; use the OpenAI-compatible provider to target
15
+ # a custom endpoint.
16
+ sig { returns(T.nilable(Cadenya::AIProviderKeySpec::Config)) }
17
+ attr_reader :config
15
18
 
16
- sig { params(api_key: String).void }
17
- attr_writer :api_key
19
+ sig { params(config: Cadenya::AIProviderKeySpec::Config::OrHash).void }
20
+ attr_writer :config
18
21
 
19
- # OpenRouterConfig holds OpenRouter-specific settings. Empty for now; it exists as
20
- # the oneof seam so provider-specific options (region, base URL, etc.) can be
21
- # added later without restructuring the spec.
22
- sig { returns(T.nilable(T.anything)) }
23
- attr_reader :openrouter
22
+ # AIProviderCredential is the secret material used to authenticate with a
23
+ # provider. The set case must correspond to AIProviderKeySpec.provider. The server
24
+ # encrypts the serialized message at rest and never returns it on reads.
25
+ sig { returns(T.nilable(Cadenya::AIProviderKeySpec::Credentials)) }
26
+ attr_reader :credentials
24
27
 
25
- sig { params(openrouter: T.anything).void }
26
- attr_writer :openrouter
28
+ sig do
29
+ params(
30
+ credentials: Cadenya::AIProviderKeySpec::Credentials::OrHash
31
+ ).void
32
+ end
33
+ attr_writer :credentials
27
34
 
28
35
  # The AI provider this key authenticates against.
29
36
  sig { returns(T.nilable(Cadenya::AIProviderKeySpec::Provider::OrSymbol)) }
@@ -36,19 +43,22 @@ module Cadenya
36
43
 
37
44
  sig do
38
45
  params(
39
- api_key: String,
40
- openrouter: T.anything,
46
+ config: Cadenya::AIProviderKeySpec::Config::OrHash,
47
+ credentials: Cadenya::AIProviderKeySpec::Credentials::OrHash,
41
48
  provider: Cadenya::AIProviderKeySpec::Provider::OrSymbol
42
49
  ).returns(T.attached_class)
43
50
  end
44
51
  def self.new(
45
- # The provider credential. Accepted on create/update; never populated in responses
46
- # (the server returns an empty value to avoid leaking it).
47
- api_key: nil,
48
- # OpenRouterConfig holds OpenRouter-specific settings. Empty for now; it exists as
49
- # the oneof seam so provider-specific options (region, base URL, etc.) can be
50
- # added later without restructuring the spec.
51
- openrouter: nil,
52
+ # AIProviderConfig holds non-secret, provider-specific settings. The set case must
53
+ # correspond to AIProviderKeySpec.provider. Providers with no settings (Anthropic,
54
+ # Gemini) simply leave this unset. The endpoint of a named provider is fixed and
55
+ # intentionally not overridable here; use the OpenAI-compatible provider to target
56
+ # a custom endpoint.
57
+ config: nil,
58
+ # AIProviderCredential is the secret material used to authenticate with a
59
+ # provider. The set case must correspond to AIProviderKeySpec.provider. The server
60
+ # encrypts the serialized message at rest and never returns it on reads.
61
+ credentials: nil,
52
62
  # The AI provider this key authenticates against.
53
63
  provider: nil
54
64
  )
@@ -57,8 +67,8 @@ module Cadenya
57
67
  sig do
58
68
  override.returns(
59
69
  {
60
- api_key: String,
61
- openrouter: T.anything,
70
+ config: Cadenya::AIProviderKeySpec::Config,
71
+ credentials: Cadenya::AIProviderKeySpec::Credentials,
62
72
  provider: Cadenya::AIProviderKeySpec::Provider::OrSymbol
63
73
  }
64
74
  )
@@ -66,6 +76,315 @@ module Cadenya
66
76
  def to_hash
67
77
  end
68
78
 
79
+ class Config < Cadenya::Internal::Type::BaseModel
80
+ OrHash =
81
+ T.type_alias do
82
+ T.any(
83
+ Cadenya::AIProviderKeySpec::Config,
84
+ Cadenya::Internal::AnyHash
85
+ )
86
+ end
87
+
88
+ # OpenAIConfig holds OpenAI-specific settings.
89
+ sig { returns(T.nilable(Cadenya::AIProviderKeySpec::Config::OpenAI)) }
90
+ attr_reader :openai
91
+
92
+ sig do
93
+ params(
94
+ openai: Cadenya::AIProviderKeySpec::Config::OpenAI::OrHash
95
+ ).void
96
+ end
97
+ attr_writer :openai
98
+
99
+ # OpenAICompatibleConfig configures a generic endpoint that speaks the OpenAI Chat
100
+ # Completions API. The base URL is required and its model catalog is discovered
101
+ # live via GET {base_url}/models.
102
+ sig do
103
+ returns(
104
+ T.nilable(Cadenya::AIProviderKeySpec::Config::OpenAICompatible)
105
+ )
106
+ end
107
+ attr_reader :openai_compatible
108
+
109
+ sig do
110
+ params(
111
+ openai_compatible:
112
+ Cadenya::AIProviderKeySpec::Config::OpenAICompatible::OrHash
113
+ ).void
114
+ end
115
+ attr_writer :openai_compatible
116
+
117
+ # OpenRouterConfig holds OpenRouter-specific settings.
118
+ sig do
119
+ returns(T.nilable(Cadenya::AIProviderKeySpec::Config::Openrouter))
120
+ end
121
+ attr_reader :openrouter
122
+
123
+ sig do
124
+ params(
125
+ openrouter: Cadenya::AIProviderKeySpec::Config::Openrouter::OrHash
126
+ ).void
127
+ end
128
+ attr_writer :openrouter
129
+
130
+ # AIProviderConfig holds non-secret, provider-specific settings. The set case must
131
+ # correspond to AIProviderKeySpec.provider. Providers with no settings (Anthropic,
132
+ # Gemini) simply leave this unset. The endpoint of a named provider is fixed and
133
+ # intentionally not overridable here; use the OpenAI-compatible provider to target
134
+ # a custom endpoint.
135
+ sig do
136
+ params(
137
+ openai: Cadenya::AIProviderKeySpec::Config::OpenAI::OrHash,
138
+ openai_compatible:
139
+ Cadenya::AIProviderKeySpec::Config::OpenAICompatible::OrHash,
140
+ openrouter: Cadenya::AIProviderKeySpec::Config::Openrouter::OrHash
141
+ ).returns(T.attached_class)
142
+ end
143
+ def self.new(
144
+ # OpenAIConfig holds OpenAI-specific settings.
145
+ openai: nil,
146
+ # OpenAICompatibleConfig configures a generic endpoint that speaks the OpenAI Chat
147
+ # Completions API. The base URL is required and its model catalog is discovered
148
+ # live via GET {base_url}/models.
149
+ openai_compatible: nil,
150
+ # OpenRouterConfig holds OpenRouter-specific settings.
151
+ openrouter: nil
152
+ )
153
+ end
154
+
155
+ sig do
156
+ override.returns(
157
+ {
158
+ openai: Cadenya::AIProviderKeySpec::Config::OpenAI,
159
+ openai_compatible:
160
+ Cadenya::AIProviderKeySpec::Config::OpenAICompatible,
161
+ openrouter: Cadenya::AIProviderKeySpec::Config::Openrouter
162
+ }
163
+ )
164
+ end
165
+ def to_hash
166
+ end
167
+
168
+ class OpenAI < Cadenya::Internal::Type::BaseModel
169
+ OrHash =
170
+ T.type_alias do
171
+ T.any(
172
+ Cadenya::AIProviderKeySpec::Config::OpenAI,
173
+ Cadenya::Internal::AnyHash
174
+ )
175
+ end
176
+
177
+ # Sent as the OpenAI-Organization header when set.
178
+ sig { returns(T.nilable(String)) }
179
+ attr_reader :organization_id
180
+
181
+ sig { params(organization_id: String).void }
182
+ attr_writer :organization_id
183
+
184
+ # Sent as the OpenAI-Project header when set.
185
+ sig { returns(T.nilable(String)) }
186
+ attr_reader :project_id
187
+
188
+ sig { params(project_id: String).void }
189
+ attr_writer :project_id
190
+
191
+ # OpenAIConfig holds OpenAI-specific settings.
192
+ sig do
193
+ params(organization_id: String, project_id: String).returns(
194
+ T.attached_class
195
+ )
196
+ end
197
+ def self.new(
198
+ # Sent as the OpenAI-Organization header when set.
199
+ organization_id: nil,
200
+ # Sent as the OpenAI-Project header when set.
201
+ project_id: nil
202
+ )
203
+ end
204
+
205
+ sig do
206
+ override.returns({ organization_id: String, project_id: String })
207
+ end
208
+ def to_hash
209
+ end
210
+ end
211
+
212
+ class OpenAICompatible < Cadenya::Internal::Type::BaseModel
213
+ OrHash =
214
+ T.type_alias do
215
+ T.any(
216
+ Cadenya::AIProviderKeySpec::Config::OpenAICompatible,
217
+ Cadenya::Internal::AnyHash
218
+ )
219
+ end
220
+
221
+ sig { returns(T.nilable(String)) }
222
+ attr_reader :base_url
223
+
224
+ sig { params(base_url: String).void }
225
+ attr_writer :base_url
226
+
227
+ # OpenAICompatibleConfig configures a generic endpoint that speaks the OpenAI Chat
228
+ # Completions API. The base URL is required and its model catalog is discovered
229
+ # live via GET {base_url}/models.
230
+ sig { params(base_url: String).returns(T.attached_class) }
231
+ def self.new(base_url: nil)
232
+ end
233
+
234
+ sig { override.returns({ base_url: String }) }
235
+ def to_hash
236
+ end
237
+ end
238
+
239
+ class Openrouter < Cadenya::Internal::Type::BaseModel
240
+ OrHash =
241
+ T.type_alias do
242
+ T.any(
243
+ Cadenya::AIProviderKeySpec::Config::Openrouter,
244
+ Cadenya::Internal::AnyHash
245
+ )
246
+ end
247
+
248
+ # Data-residency region (e.g. "us", "eu"). Empty uses the provider default.
249
+ sig { returns(T.nilable(String)) }
250
+ attr_reader :region
251
+
252
+ sig { params(region: String).void }
253
+ attr_writer :region
254
+
255
+ # OpenRouterConfig holds OpenRouter-specific settings.
256
+ sig { params(region: String).returns(T.attached_class) }
257
+ def self.new(
258
+ # Data-residency region (e.g. "us", "eu"). Empty uses the provider default.
259
+ region: nil
260
+ )
261
+ end
262
+
263
+ sig { override.returns({ region: String }) }
264
+ def to_hash
265
+ end
266
+ end
267
+ end
268
+
269
+ class Credentials < Cadenya::Internal::Type::BaseModel
270
+ OrHash =
271
+ T.type_alias do
272
+ T.any(
273
+ Cadenya::AIProviderKeySpec::Credentials,
274
+ Cadenya::Internal::AnyHash
275
+ )
276
+ end
277
+
278
+ # CredentialAPIKey carries a single bearer/header API key.
279
+ sig do
280
+ returns(T.nilable(Cadenya::AIProviderKeySpec::Credentials::APIKey))
281
+ end
282
+ attr_reader :api_key
283
+
284
+ sig do
285
+ params(
286
+ api_key: Cadenya::AIProviderKeySpec::Credentials::APIKey::OrHash
287
+ ).void
288
+ end
289
+ attr_writer :api_key
290
+
291
+ # CredentialHeaders carries arbitrary HTTP headers sent with every request to the
292
+ # provider (e.g. {"Authorization": "Bearer ...", "X-Api-Key": "..."}).
293
+ sig do
294
+ returns(T.nilable(Cadenya::AIProviderKeySpec::Credentials::Headers))
295
+ end
296
+ attr_reader :headers
297
+
298
+ sig do
299
+ params(
300
+ headers: Cadenya::AIProviderKeySpec::Credentials::Headers::OrHash
301
+ ).void
302
+ end
303
+ attr_writer :headers
304
+
305
+ # AIProviderCredential is the secret material used to authenticate with a
306
+ # provider. The set case must correspond to AIProviderKeySpec.provider. The server
307
+ # encrypts the serialized message at rest and never returns it on reads.
308
+ sig do
309
+ params(
310
+ api_key: Cadenya::AIProviderKeySpec::Credentials::APIKey::OrHash,
311
+ headers: Cadenya::AIProviderKeySpec::Credentials::Headers::OrHash
312
+ ).returns(T.attached_class)
313
+ end
314
+ def self.new(
315
+ # CredentialAPIKey carries a single bearer/header API key.
316
+ api_key: nil,
317
+ # CredentialHeaders carries arbitrary HTTP headers sent with every request to the
318
+ # provider (e.g. {"Authorization": "Bearer ...", "X-Api-Key": "..."}).
319
+ headers: nil
320
+ )
321
+ end
322
+
323
+ sig do
324
+ override.returns(
325
+ {
326
+ api_key: Cadenya::AIProviderKeySpec::Credentials::APIKey,
327
+ headers: Cadenya::AIProviderKeySpec::Credentials::Headers
328
+ }
329
+ )
330
+ end
331
+ def to_hash
332
+ end
333
+
334
+ class APIKey < Cadenya::Internal::Type::BaseModel
335
+ OrHash =
336
+ T.type_alias do
337
+ T.any(
338
+ Cadenya::AIProviderKeySpec::Credentials::APIKey,
339
+ Cadenya::Internal::AnyHash
340
+ )
341
+ end
342
+
343
+ sig { returns(T.nilable(String)) }
344
+ attr_reader :api_key
345
+
346
+ sig { params(api_key: String).void }
347
+ attr_writer :api_key
348
+
349
+ # CredentialAPIKey carries a single bearer/header API key.
350
+ sig { params(api_key: String).returns(T.attached_class) }
351
+ def self.new(api_key: nil)
352
+ end
353
+
354
+ sig { override.returns({ api_key: String }) }
355
+ def to_hash
356
+ end
357
+ end
358
+
359
+ class Headers < Cadenya::Internal::Type::BaseModel
360
+ OrHash =
361
+ T.type_alias do
362
+ T.any(
363
+ Cadenya::AIProviderKeySpec::Credentials::Headers,
364
+ Cadenya::Internal::AnyHash
365
+ )
366
+ end
367
+
368
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
369
+ attr_reader :headers
370
+
371
+ sig { params(headers: T::Hash[Symbol, String]).void }
372
+ attr_writer :headers
373
+
374
+ # CredentialHeaders carries arbitrary HTTP headers sent with every request to the
375
+ # provider (e.g. {"Authorization": "Bearer ...", "X-Api-Key": "..."}).
376
+ sig do
377
+ params(headers: T::Hash[Symbol, String]).returns(T.attached_class)
378
+ end
379
+ def self.new(headers: nil)
380
+ end
381
+
382
+ sig { override.returns({ headers: T::Hash[Symbol, String] }) }
383
+ def to_hash
384
+ end
385
+ end
386
+ end
387
+
69
388
  # The AI provider this key authenticates against.
70
389
  module Provider
71
390
  extend Cadenya::Internal::Type::Enum
@@ -84,6 +403,26 @@ module Cadenya
84
403
  :AI_PROVIDER_OPENROUTER,
85
404
  Cadenya::AIProviderKeySpec::Provider::TaggedSymbol
86
405
  )
406
+ AI_PROVIDER_OPENAI =
407
+ T.let(
408
+ :AI_PROVIDER_OPENAI,
409
+ Cadenya::AIProviderKeySpec::Provider::TaggedSymbol
410
+ )
411
+ AI_PROVIDER_ANTHROPIC =
412
+ T.let(
413
+ :AI_PROVIDER_ANTHROPIC,
414
+ Cadenya::AIProviderKeySpec::Provider::TaggedSymbol
415
+ )
416
+ AI_PROVIDER_GEMINI =
417
+ T.let(
418
+ :AI_PROVIDER_GEMINI,
419
+ Cadenya::AIProviderKeySpec::Provider::TaggedSymbol
420
+ )
421
+ AI_PROVIDER_OPENAI_COMPATIBLE =
422
+ T.let(
423
+ :AI_PROVIDER_OPENAI_COMPATIBLE,
424
+ Cadenya::AIProviderKeySpec::Provider::TaggedSymbol
425
+ )
87
426
 
88
427
  sig do
89
428
  override.returns(
@@ -11,13 +11,6 @@ module Cadenya
11
11
  T.any(Cadenya::APIKeyListParams, Cadenya::Internal::AnyHash)
12
12
  end
13
13
 
14
- # Filter by bundle_key — return only resources owned by this bundle.
15
- sig { returns(T.nilable(String)) }
16
- attr_reader :bundle_key
17
-
18
- sig { params(bundle_key: String).void }
19
- attr_writer :bundle_key
20
-
21
14
  # Pagination cursor from previous response.
22
15
  sig { returns(T.nilable(String)) }
23
16
  attr_reader :cursor
@@ -63,7 +56,6 @@ module Cadenya
63
56
 
64
57
  sig do
65
58
  params(
66
- bundle_key: String,
67
59
  cursor: String,
68
60
  include_info: T::Boolean,
69
61
  limit: Integer,
@@ -74,8 +66,6 @@ module Cadenya
74
66
  ).returns(T.attached_class)
75
67
  end
76
68
  def self.new(
77
- # Filter by bundle_key — return only resources owned by this bundle.
78
- bundle_key: nil,
79
69
  # Pagination cursor from previous response.
80
70
  cursor: nil,
81
71
  # When true, included info fields are populated. Requests with this flag count
@@ -96,7 +86,6 @@ module Cadenya
96
86
  sig do
97
87
  override.returns(
98
88
  {
99
- bundle_key: String,
100
89
  cursor: String,
101
90
  include_info: T::Boolean,
102
91
  limit: Integer,
@@ -13,13 +13,6 @@ module Cadenya
13
13
  sig { returns(String) }
14
14
  attr_accessor :name
15
15
 
16
- # Optional bundle ownership key. See ResourceMetadata.bundle_key.
17
- sig { returns(T.nilable(String)) }
18
- attr_reader :bundle_key
19
-
20
- sig { params(bundle_key: String).void }
21
- attr_writer :bundle_key
22
-
23
16
  # External ID for the resource (e.g., a workflow ID from an external system)
24
17
  sig { returns(T.nilable(String)) }
25
18
  attr_reader :external_id
@@ -41,7 +34,6 @@ module Cadenya
41
34
  sig do
42
35
  params(
43
36
  name: String,
44
- bundle_key: String,
45
37
  external_id: String,
46
38
  labels: T::Hash[Symbol, String]
47
39
  ).returns(T.attached_class)
@@ -50,8 +42,6 @@ module Cadenya
50
42
  # Human-readable name for the resource (e.g., "Customer Support Agent", "Email
51
43
  # Tool")
52
44
  name:,
53
- # Optional bundle ownership key. See ResourceMetadata.bundle_key.
54
- bundle_key: nil,
55
45
  # External ID for the resource (e.g., a workflow ID from an external system)
56
46
  external_id: nil,
57
47
  # Arbitrary key-value pairs for categorization and filtering Examples:
@@ -62,12 +52,7 @@ module Cadenya
62
52
 
63
53
  sig do
64
54
  override.returns(
65
- {
66
- name: String,
67
- bundle_key: String,
68
- external_id: String,
69
- labels: T::Hash[Symbol, String]
70
- }
55
+ { name: String, external_id: String, labels: T::Hash[Symbol, String] }
71
56
  )
72
57
  end
73
58
  def to_hash
@@ -21,13 +21,6 @@ module Cadenya
21
21
  sig { params(agent_id: String).void }
22
22
  attr_writer :agent_id
23
23
 
24
- # Filter by bundle_key — return only resources owned by this bundle.
25
- sig { returns(T.nilable(String)) }
26
- attr_reader :bundle_key
27
-
28
- sig { params(bundle_key: String).void }
29
- attr_writer :bundle_key
30
-
31
24
  # Pagination cursor from previous response
32
25
  sig { returns(T.nilable(String)) }
33
26
  attr_reader :cursor
@@ -90,7 +83,6 @@ module Cadenya
90
83
  params(
91
84
  workspace_id: String,
92
85
  agent_id: String,
93
- bundle_key: String,
94
86
  cursor: String,
95
87
  episodic_key_prefix: String,
96
88
  include_info: T::Boolean,
@@ -106,8 +98,6 @@ module Cadenya
106
98
  workspace_id:,
107
99
  # Filter to episodic layers belonging to this agent.
108
100
  agent_id: nil,
109
- # Filter by bundle_key — return only resources owned by this bundle.
110
- bundle_key: nil,
111
101
  # Pagination cursor from previous response
112
102
  cursor: nil,
113
103
  # Filter to episodic layers whose episodic key starts with this prefix (e.g.
@@ -135,7 +125,6 @@ module Cadenya
135
125
  {
136
126
  workspace_id: String,
137
127
  agent_id: String,
138
- bundle_key: String,
139
128
  cursor: String,
140
129
  episodic_key_prefix: String,
141
130
  include_info: T::Boolean,
@@ -21,13 +21,6 @@ module Cadenya
21
21
  sig { returns(String) }
22
22
  attr_accessor :memory_layer_id
23
23
 
24
- # Filter by bundle_key — return only resources owned by this bundle.
25
- sig { returns(T.nilable(String)) }
26
- attr_reader :bundle_key
27
-
28
- sig { params(bundle_key: String).void }
29
- attr_writer :bundle_key
30
-
31
24
  # Pagination cursor from previous response
32
25
  sig { returns(T.nilable(String)) }
33
26
  attr_reader :cursor
@@ -75,7 +68,6 @@ module Cadenya
75
68
  params(
76
69
  workspace_id: String,
77
70
  memory_layer_id: String,
78
- bundle_key: String,
79
71
  cursor: String,
80
72
  include_info: T::Boolean,
81
73
  limit: Integer,
@@ -88,8 +80,6 @@ module Cadenya
88
80
  def self.new(
89
81
  workspace_id:,
90
82
  memory_layer_id:,
91
- # Filter by bundle_key — return only resources owned by this bundle.
92
- bundle_key: nil,
93
83
  # Pagination cursor from previous response
94
84
  cursor: nil,
95
85
  # When set to true you may use more of your alloted API rate-limit
@@ -112,7 +102,6 @@ module Cadenya
112
102
  {
113
103
  workspace_id: String,
114
104
  memory_layer_id: String,
115
- bundle_key: String,
116
105
  cursor: String,
117
106
  include_info: T::Boolean,
118
107
  limit: Integer,
@@ -22,13 +22,6 @@ module Cadenya
22
22
  sig { params(ai_provider_key_id: String).void }
23
23
  attr_writer :ai_provider_key_id
24
24
 
25
- # Filter by bundle_key — return only resources owned by this bundle.
26
- sig { returns(T.nilable(String)) }
27
- attr_reader :bundle_key
28
-
29
- sig { params(bundle_key: String).void }
30
- attr_writer :bundle_key
31
-
32
25
  # Pagination cursor from previous response
33
26
  sig { returns(T.nilable(String)) }
34
27
  attr_reader :cursor
@@ -92,7 +85,6 @@ module Cadenya
92
85
  params(
93
86
  workspace_id: String,
94
87
  ai_provider_key_id: String,
95
- bundle_key: String,
96
88
  cursor: String,
97
89
  include_info: T::Boolean,
98
90
  is_assigned: T::Boolean,
@@ -109,8 +101,6 @@ module Cadenya
109
101
  # Filter to models provisioned on a specific AI provider key. Accepts the key's id
110
102
  # or an "external_id:"-prefixed slug.
111
103
  ai_provider_key_id: nil,
112
- # Filter by bundle_key — return only resources owned by this bundle.
113
- bundle_key: nil,
114
104
  # Pagination cursor from previous response
115
105
  cursor: nil,
116
106
  # When true, populate each item's info (e.g. the AI provider), at the cost of
@@ -139,7 +129,6 @@ module Cadenya
139
129
  {
140
130
  workspace_id: String,
141
131
  ai_provider_key_id: String,
142
- bundle_key: String,
143
132
  cursor: String,
144
133
  include_info: T::Boolean,
145
134
  is_assigned: T::Boolean,