cadenya 0.2.0 → 0.4.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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +6 -6
  4. data/lib/cadenya/client.rb +18 -0
  5. data/lib/cadenya/internal/cursor_pagination.rb +2 -2
  6. data/lib/cadenya/models/agent_spec.rb +19 -4
  7. data/lib/cadenya/models/agents/webhook_delivery_data.rb +1 -0
  8. data/lib/cadenya/models/agents/webhook_delivery_list_params.rb +1 -0
  9. data/lib/cadenya/models/ai_provider_key.rb +30 -0
  10. data/lib/cadenya/models/ai_provider_key_create_params.rb +41 -0
  11. data/lib/cadenya/models/ai_provider_key_delete_params.rb +26 -0
  12. data/lib/cadenya/models/ai_provider_key_list_params.rb +61 -0
  13. data/lib/cadenya/models/ai_provider_key_retrieve_params.rb +26 -0
  14. data/lib/cadenya/models/ai_provider_key_spec.rb +36 -0
  15. data/lib/cadenya/models/ai_provider_key_update_params.rb +56 -0
  16. data/lib/cadenya/models/approval_requirement_filter.rb +26 -0
  17. data/lib/cadenya/models/attribute_filter.rb +38 -0
  18. data/lib/cadenya/models/objective_data.rb +21 -1
  19. data/lib/cadenya/models/objective_event_data.rb +32 -1
  20. data/lib/cadenya/models/objective_list_params.rb +2 -1
  21. data/lib/cadenya/models/objective_status.rb +2 -1
  22. data/lib/cadenya/models/profile_spec.rb +1 -0
  23. data/lib/cadenya/models/string_matcher.rb +47 -0
  24. data/lib/cadenya/models/tool_filter.rb +35 -0
  25. data/lib/cadenya/models/tool_set_adapter.rb +7 -1
  26. data/lib/cadenya/models/tool_set_adapter_mcp.rb +11 -33
  27. data/lib/cadenya/models/tool_set_adapter_openapi.rb +79 -0
  28. data/lib/cadenya/models/tool_set_get_openapi_spec_params.rb +26 -0
  29. data/lib/cadenya/models/tool_set_get_openapi_spec_response.rb +17 -0
  30. data/lib/cadenya/models/tool_sets/config_openapi.rb +29 -0
  31. data/lib/cadenya/models/tool_sets/tool_spec_config.rb +7 -1
  32. data/lib/cadenya/models/workspace.rb +27 -1
  33. data/lib/cadenya/models/workspace_admin/member_add_params.rb +39 -0
  34. data/lib/cadenya/models/workspace_admin/member_list_params.rb +39 -0
  35. data/lib/cadenya/models/workspace_admin/member_remove_params.rb +28 -0
  36. data/lib/cadenya/models/workspace_admin/profile_list_params.rb +44 -0
  37. data/lib/cadenya/models/workspace_admin_archive_params.rb +20 -0
  38. data/lib/cadenya/models/workspace_admin_create_params.rb +70 -0
  39. data/lib/cadenya/models/workspace_admin_list_params.rb +42 -0
  40. data/lib/cadenya/models/workspace_admin_retrieve_params.rb +20 -0
  41. data/lib/cadenya/models/workspace_admin_update_params.rb +85 -0
  42. data/lib/cadenya/models/workspace_member.rb +53 -0
  43. data/lib/cadenya/models.rb +40 -2
  44. data/lib/cadenya/resources/ai_provider_keys.rb +168 -0
  45. data/lib/cadenya/resources/tool_sets.rb +31 -0
  46. data/lib/cadenya/resources/workspace_admin/members.rb +107 -0
  47. data/lib/cadenya/resources/workspace_admin/profiles.rb +54 -0
  48. data/lib/cadenya/resources/workspace_admin.rb +173 -0
  49. data/lib/cadenya/resources/workspaces.rb +4 -0
  50. data/lib/cadenya/version.rb +1 -1
  51. data/lib/cadenya.rb +29 -1
  52. data/rbi/cadenya/client.rbi +16 -0
  53. data/rbi/cadenya/models/agent_spec.rbi +21 -4
  54. data/rbi/cadenya/models/agents/webhook_delivery_data.rbi +5 -0
  55. data/rbi/cadenya/models/agents/webhook_delivery_list_params.rbi +5 -0
  56. data/rbi/cadenya/models/ai_provider_key.rbi +51 -0
  57. data/rbi/cadenya/models/ai_provider_key_create_params.rbi +65 -0
  58. data/rbi/cadenya/models/ai_provider_key_delete_params.rbi +43 -0
  59. data/rbi/cadenya/models/ai_provider_key_list_params.rbi +96 -0
  60. data/rbi/cadenya/models/ai_provider_key_retrieve_params.rbi +46 -0
  61. data/rbi/cadenya/models/ai_provider_key_spec.rbi +56 -0
  62. data/rbi/cadenya/models/ai_provider_key_update_params.rbi +82 -0
  63. data/rbi/cadenya/models/approval_requirement_filter.rbi +45 -0
  64. data/rbi/cadenya/models/attribute_filter.rbi +84 -0
  65. data/rbi/cadenya/models/objective_data.rbi +26 -0
  66. data/rbi/cadenya/models/objective_event_data.rbi +52 -0
  67. data/rbi/cadenya/models/objective_list_params.rbi +7 -2
  68. data/rbi/cadenya/models/objective_status.rbi +4 -2
  69. data/rbi/cadenya/models/profile_spec.rbi +5 -0
  70. data/rbi/cadenya/models/string_matcher.rbi +84 -0
  71. data/rbi/cadenya/models/tool_filter.rbi +66 -0
  72. data/rbi/cadenya/models/tool_set_adapter.rbi +14 -3
  73. data/rbi/cadenya/models/tool_set_adapter_mcp.rbi +16 -62
  74. data/rbi/cadenya/models/tool_set_adapter_openapi.rbi +127 -0
  75. data/rbi/cadenya/models/tool_set_get_openapi_spec_params.rbi +46 -0
  76. data/rbi/cadenya/models/tool_set_get_openapi_spec_response.rbi +33 -0
  77. data/rbi/cadenya/models/tool_sets/config_openapi.rbi +48 -0
  78. data/rbi/cadenya/models/tool_sets/tool_spec_config.rbi +11 -3
  79. data/rbi/cadenya/models/workspace.rbi +39 -3
  80. data/rbi/cadenya/models/workspace_admin/member_add_params.rbi +68 -0
  81. data/rbi/cadenya/models/workspace_admin/member_list_params.rbi +68 -0
  82. data/rbi/cadenya/models/workspace_admin/member_remove_params.rbi +48 -0
  83. data/rbi/cadenya/models/workspace_admin/profile_list_params.rbi +75 -0
  84. data/rbi/cadenya/models/workspace_admin_archive_params.rbi +38 -0
  85. data/rbi/cadenya/models/workspace_admin_create_params.rbi +127 -0
  86. data/rbi/cadenya/models/workspace_admin_list_params.rbi +70 -0
  87. data/rbi/cadenya/models/workspace_admin_retrieve_params.rbi +38 -0
  88. data/rbi/cadenya/models/workspace_admin_update_params.rbi +144 -0
  89. data/rbi/cadenya/models/workspace_member.rbi +80 -0
  90. data/rbi/cadenya/models.rbi +40 -2
  91. data/rbi/cadenya/resources/ai_provider_keys.rbi +125 -0
  92. data/rbi/cadenya/resources/tool_sets.rbi +18 -0
  93. data/rbi/cadenya/resources/workspace_admin/members.rbi +83 -0
  94. data/rbi/cadenya/resources/workspace_admin/profiles.rbi +42 -0
  95. data/rbi/cadenya/resources/workspace_admin.rbi +131 -0
  96. data/rbi/cadenya/resources/workspaces.rbi +4 -0
  97. data/sig/cadenya/client.rbs +4 -0
  98. data/sig/cadenya/models/agent_spec.rbs +12 -5
  99. data/sig/cadenya/models/agents/webhook_delivery_data.rbs +2 -0
  100. data/sig/cadenya/models/agents/webhook_delivery_list_params.rbs +2 -0
  101. data/sig/cadenya/models/ai_provider_key.rbs +22 -0
  102. data/sig/cadenya/models/ai_provider_key_create_params.rbs +36 -0
  103. data/sig/cadenya/models/ai_provider_key_delete_params.rbs +28 -0
  104. data/sig/cadenya/models/ai_provider_key_list_params.rbs +61 -0
  105. data/sig/cadenya/models/ai_provider_key_retrieve_params.rbs +28 -0
  106. data/sig/cadenya/models/ai_provider_key_spec.rbs +28 -0
  107. data/sig/cadenya/models/ai_provider_key_update_params.rbs +54 -0
  108. data/sig/cadenya/models/approval_requirement_filter.rbs +20 -0
  109. data/sig/cadenya/models/attribute_filter.rbs +44 -0
  110. data/sig/cadenya/models/objective_data.rbs +14 -0
  111. data/sig/cadenya/models/objective_event_data.rbs +21 -0
  112. data/sig/cadenya/models/objective_list_params.rbs +4 -2
  113. data/sig/cadenya/models/objective_status.rbs +4 -2
  114. data/sig/cadenya/models/profile_spec.rbs +5 -1
  115. data/sig/cadenya/models/string_matcher.rbs +57 -0
  116. data/sig/cadenya/models/tool_filter.rbs +41 -0
  117. data/sig/cadenya/models/tool_set_adapter.rbs +15 -3
  118. data/sig/cadenya/models/tool_set_adapter_mcp.rbs +16 -32
  119. data/sig/cadenya/models/tool_set_adapter_openapi.rbs +73 -0
  120. data/sig/cadenya/models/tool_set_get_openapi_spec_params.rbs +28 -0
  121. data/sig/cadenya/models/tool_set_get_openapi_spec_response.rbs +15 -0
  122. data/sig/cadenya/models/tool_sets/config_openapi.rbs +30 -0
  123. data/sig/cadenya/models/tool_sets/tool_spec_config.rbs +12 -3
  124. data/sig/cadenya/models/workspace.rbs +24 -3
  125. data/sig/cadenya/models/workspace_admin/member_add_params.rbs +38 -0
  126. data/sig/cadenya/models/workspace_admin/member_list_params.rbs +38 -0
  127. data/sig/cadenya/models/workspace_admin/member_remove_params.rbs +30 -0
  128. data/sig/cadenya/models/workspace_admin/profile_list_params.rbs +40 -0
  129. data/sig/cadenya/models/workspace_admin_archive_params.rbs +23 -0
  130. data/sig/cadenya/models/workspace_admin_create_params.rbs +58 -0
  131. data/sig/cadenya/models/workspace_admin_list_params.rbs +38 -0
  132. data/sig/cadenya/models/workspace_admin_retrieve_params.rbs +23 -0
  133. data/sig/cadenya/models/workspace_admin_update_params.rbs +76 -0
  134. data/sig/cadenya/models/workspace_member.rbs +46 -0
  135. data/sig/cadenya/models.rbs +40 -2
  136. data/sig/cadenya/resources/ai_provider_keys.rbs +45 -0
  137. data/sig/cadenya/resources/tool_sets.rbs +6 -0
  138. data/sig/cadenya/resources/workspace_admin/members.rbs +29 -0
  139. data/sig/cadenya/resources/workspace_admin/profiles.rbs +16 -0
  140. data/sig/cadenya/resources/workspace_admin.rbs +42 -0
  141. metadata +89 -5
  142. data/lib/cadenya/models/mcp_tool_filter.rb +0 -111
  143. data/rbi/cadenya/models/mcp_tool_filter.rbi +0 -235
  144. data/sig/cadenya/models/mcp_tool_filter.rbs +0 -138
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AIProviderKeyRetrieveParams < 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::AIProviderKeyRetrieveParams,
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 :id
22
+
23
+ sig do
24
+ params(
25
+ workspace_id: String,
26
+ id: String,
27
+ request_options: Cadenya::RequestOptions::OrHash
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(workspace_id:, id:, request_options: {})
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ workspace_id: String,
37
+ id: String,
38
+ request_options: Cadenya::RequestOptions
39
+ }
40
+ )
41
+ end
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,56 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AIProviderKeySpec < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::AIProviderKeySpec, Cadenya::Internal::AnyHash)
9
+ end
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
15
+
16
+ sig { params(api_key: String).void }
17
+ attr_writer :api_key
18
+
19
+ # The AI provider this key authenticates against. Currently "openrouter".
20
+ sig { returns(T.nilable(String)) }
21
+ attr_reader :provider
22
+
23
+ sig { params(provider: String).void }
24
+ attr_writer :provider
25
+
26
+ # The provider region. "us" or "eu". Defaults to "us".
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :region
29
+
30
+ sig { params(region: String).void }
31
+ attr_writer :region
32
+
33
+ sig do
34
+ params(api_key: String, provider: String, region: String).returns(
35
+ T.attached_class
36
+ )
37
+ end
38
+ def self.new(
39
+ # The provider credential. Accepted on create/update; never populated in responses
40
+ # (the server returns an empty value to avoid leaking it).
41
+ api_key: nil,
42
+ # The AI provider this key authenticates against. Currently "openrouter".
43
+ provider: nil,
44
+ # The provider region. "us" or "eu". Defaults to "us".
45
+ region: nil
46
+ )
47
+ end
48
+
49
+ sig do
50
+ override.returns({ api_key: String, provider: String, region: String })
51
+ end
52
+ def to_hash
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,82 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AIProviderKeyUpdateParams < 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(Cadenya::AIProviderKeyUpdateParams, Cadenya::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :workspace_id
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :id
19
+
20
+ # UpdateResourceMetadata contains the user-provided fields for updating a
21
+ # workspace-scoped resource. Read-only fields (id, account_id, workspace_id,
22
+ # profile_id, created_at) are excluded since they are set by the server.
23
+ sig { returns(T.nilable(Cadenya::UpdateResourceMetadata)) }
24
+ attr_reader :metadata
25
+
26
+ sig { params(metadata: Cadenya::UpdateResourceMetadata::OrHash).void }
27
+ attr_writer :metadata
28
+
29
+ sig { returns(T.nilable(Cadenya::AIProviderKeySpec)) }
30
+ attr_reader :spec
31
+
32
+ sig { params(spec: Cadenya::AIProviderKeySpec::OrHash).void }
33
+ attr_writer :spec
34
+
35
+ # Fields to update.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :update_mask
38
+
39
+ sig { params(update_mask: String).void }
40
+ attr_writer :update_mask
41
+
42
+ sig do
43
+ params(
44
+ workspace_id: String,
45
+ id: String,
46
+ metadata: Cadenya::UpdateResourceMetadata::OrHash,
47
+ spec: Cadenya::AIProviderKeySpec::OrHash,
48
+ update_mask: String,
49
+ request_options: Cadenya::RequestOptions::OrHash
50
+ ).returns(T.attached_class)
51
+ end
52
+ def self.new(
53
+ workspace_id:,
54
+ id:,
55
+ # UpdateResourceMetadata contains the user-provided fields for updating a
56
+ # workspace-scoped resource. Read-only fields (id, account_id, workspace_id,
57
+ # profile_id, created_at) are excluded since they are set by the server.
58
+ metadata: nil,
59
+ spec: nil,
60
+ # Fields to update.
61
+ update_mask: nil,
62
+ request_options: {}
63
+ )
64
+ end
65
+
66
+ sig do
67
+ override.returns(
68
+ {
69
+ workspace_id: String,
70
+ id: String,
71
+ metadata: Cadenya::UpdateResourceMetadata,
72
+ spec: Cadenya::AIProviderKeySpec,
73
+ update_mask: String,
74
+ request_options: Cadenya::RequestOptions
75
+ }
76
+ )
77
+ end
78
+ def to_hash
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,45 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class ApprovalRequirementFilter < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::ApprovalRequirementFilter, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(T::Boolean)) }
12
+ attr_reader :always
13
+
14
+ sig { params(always: T::Boolean).void }
15
+ attr_writer :always
16
+
17
+ # Top-level filter with simple boolean logic (no nesting)
18
+ sig { returns(T.nilable(Cadenya::ToolFilter)) }
19
+ attr_reader :only
20
+
21
+ sig { params(only: Cadenya::ToolFilter::OrHash).void }
22
+ attr_writer :only
23
+
24
+ # Approval filters that will automatically set the approval requirement on tools
25
+ # synced from an external source
26
+ sig do
27
+ params(always: T::Boolean, only: Cadenya::ToolFilter::OrHash).returns(
28
+ T.attached_class
29
+ )
30
+ end
31
+ def self.new(
32
+ always: nil,
33
+ # Top-level filter with simple boolean logic (no nesting)
34
+ only: nil
35
+ )
36
+ end
37
+
38
+ sig do
39
+ override.returns({ always: T::Boolean, only: Cadenya::ToolFilter })
40
+ end
41
+ def to_hash
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,84 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AttributeFilter < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::AttributeFilter, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(Cadenya::AttributeFilter::Attribute::OrSymbol) }
12
+ attr_accessor :attribute
13
+
14
+ # String matching operations
15
+ sig { returns(T.nilable(Cadenya::StringMatcher)) }
16
+ attr_reader :matcher
17
+
18
+ sig { params(matcher: Cadenya::StringMatcher::OrHash).void }
19
+ attr_writer :matcher
20
+
21
+ # Single attribute filter
22
+ sig do
23
+ params(
24
+ attribute: Cadenya::AttributeFilter::Attribute::OrSymbol,
25
+ matcher: Cadenya::StringMatcher::OrHash
26
+ ).returns(T.attached_class)
27
+ end
28
+ def self.new(
29
+ attribute:,
30
+ # String matching operations
31
+ matcher: nil
32
+ )
33
+ end
34
+
35
+ sig do
36
+ override.returns(
37
+ {
38
+ attribute: Cadenya::AttributeFilter::Attribute::OrSymbol,
39
+ matcher: Cadenya::StringMatcher
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+
46
+ module Attribute
47
+ extend Cadenya::Internal::Type::Enum
48
+
49
+ TaggedSymbol =
50
+ T.type_alias { T.all(Symbol, Cadenya::AttributeFilter::Attribute) }
51
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
52
+
53
+ ATTRIBUTE_UNSPECIFIED =
54
+ T.let(
55
+ :ATTRIBUTE_UNSPECIFIED,
56
+ Cadenya::AttributeFilter::Attribute::TaggedSymbol
57
+ )
58
+ ATTRIBUTE_NAME =
59
+ T.let(
60
+ :ATTRIBUTE_NAME,
61
+ Cadenya::AttributeFilter::Attribute::TaggedSymbol
62
+ )
63
+ ATTRIBUTE_TITLE =
64
+ T.let(
65
+ :ATTRIBUTE_TITLE,
66
+ Cadenya::AttributeFilter::Attribute::TaggedSymbol
67
+ )
68
+ ATTRIBUTE_DESCRIPTION =
69
+ T.let(
70
+ :ATTRIBUTE_DESCRIPTION,
71
+ Cadenya::AttributeFilter::Attribute::TaggedSymbol
72
+ )
73
+
74
+ sig do
75
+ override.returns(
76
+ T::Array[Cadenya::AttributeFilter::Attribute::TaggedSymbol]
77
+ )
78
+ end
79
+ def self.values
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -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