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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +6 -6
- data/lib/cadenya/client.rb +18 -0
- data/lib/cadenya/internal/cursor_pagination.rb +2 -2
- data/lib/cadenya/models/agent_spec.rb +19 -4
- data/lib/cadenya/models/agents/webhook_delivery_data.rb +1 -0
- data/lib/cadenya/models/agents/webhook_delivery_list_params.rb +1 -0
- data/lib/cadenya/models/ai_provider_key.rb +30 -0
- data/lib/cadenya/models/ai_provider_key_create_params.rb +41 -0
- data/lib/cadenya/models/ai_provider_key_delete_params.rb +26 -0
- data/lib/cadenya/models/ai_provider_key_list_params.rb +61 -0
- data/lib/cadenya/models/ai_provider_key_retrieve_params.rb +26 -0
- data/lib/cadenya/models/ai_provider_key_spec.rb +36 -0
- data/lib/cadenya/models/ai_provider_key_update_params.rb +56 -0
- data/lib/cadenya/models/approval_requirement_filter.rb +26 -0
- data/lib/cadenya/models/attribute_filter.rb +38 -0
- data/lib/cadenya/models/objective_data.rb +21 -1
- data/lib/cadenya/models/objective_event_data.rb +32 -1
- data/lib/cadenya/models/objective_list_params.rb +2 -1
- data/lib/cadenya/models/objective_status.rb +2 -1
- data/lib/cadenya/models/profile_spec.rb +1 -0
- data/lib/cadenya/models/string_matcher.rb +47 -0
- data/lib/cadenya/models/tool_filter.rb +35 -0
- data/lib/cadenya/models/tool_set_adapter.rb +7 -1
- data/lib/cadenya/models/tool_set_adapter_mcp.rb +11 -33
- data/lib/cadenya/models/tool_set_adapter_openapi.rb +79 -0
- data/lib/cadenya/models/tool_set_get_openapi_spec_params.rb +26 -0
- data/lib/cadenya/models/tool_set_get_openapi_spec_response.rb +17 -0
- data/lib/cadenya/models/tool_sets/config_openapi.rb +29 -0
- data/lib/cadenya/models/tool_sets/tool_spec_config.rb +7 -1
- data/lib/cadenya/models/workspace.rb +27 -1
- data/lib/cadenya/models/workspace_admin/member_add_params.rb +39 -0
- data/lib/cadenya/models/workspace_admin/member_list_params.rb +39 -0
- data/lib/cadenya/models/workspace_admin/member_remove_params.rb +28 -0
- data/lib/cadenya/models/workspace_admin/profile_list_params.rb +44 -0
- data/lib/cadenya/models/workspace_admin_archive_params.rb +20 -0
- data/lib/cadenya/models/workspace_admin_create_params.rb +70 -0
- data/lib/cadenya/models/workspace_admin_list_params.rb +42 -0
- data/lib/cadenya/models/workspace_admin_retrieve_params.rb +20 -0
- data/lib/cadenya/models/workspace_admin_update_params.rb +85 -0
- data/lib/cadenya/models/workspace_member.rb +53 -0
- data/lib/cadenya/models.rb +40 -2
- data/lib/cadenya/resources/ai_provider_keys.rb +168 -0
- data/lib/cadenya/resources/tool_sets.rb +31 -0
- data/lib/cadenya/resources/workspace_admin/members.rb +107 -0
- data/lib/cadenya/resources/workspace_admin/profiles.rb +54 -0
- data/lib/cadenya/resources/workspace_admin.rb +173 -0
- data/lib/cadenya/resources/workspaces.rb +4 -0
- data/lib/cadenya/version.rb +1 -1
- data/lib/cadenya.rb +29 -1
- data/rbi/cadenya/client.rbi +16 -0
- data/rbi/cadenya/models/agent_spec.rbi +21 -4
- data/rbi/cadenya/models/agents/webhook_delivery_data.rbi +5 -0
- data/rbi/cadenya/models/agents/webhook_delivery_list_params.rbi +5 -0
- data/rbi/cadenya/models/ai_provider_key.rbi +51 -0
- data/rbi/cadenya/models/ai_provider_key_create_params.rbi +65 -0
- data/rbi/cadenya/models/ai_provider_key_delete_params.rbi +43 -0
- data/rbi/cadenya/models/ai_provider_key_list_params.rbi +96 -0
- data/rbi/cadenya/models/ai_provider_key_retrieve_params.rbi +46 -0
- data/rbi/cadenya/models/ai_provider_key_spec.rbi +56 -0
- data/rbi/cadenya/models/ai_provider_key_update_params.rbi +82 -0
- data/rbi/cadenya/models/approval_requirement_filter.rbi +45 -0
- data/rbi/cadenya/models/attribute_filter.rbi +84 -0
- data/rbi/cadenya/models/objective_data.rbi +26 -0
- data/rbi/cadenya/models/objective_event_data.rbi +52 -0
- data/rbi/cadenya/models/objective_list_params.rbi +7 -2
- data/rbi/cadenya/models/objective_status.rbi +4 -2
- data/rbi/cadenya/models/profile_spec.rbi +5 -0
- data/rbi/cadenya/models/string_matcher.rbi +84 -0
- data/rbi/cadenya/models/tool_filter.rbi +66 -0
- data/rbi/cadenya/models/tool_set_adapter.rbi +14 -3
- data/rbi/cadenya/models/tool_set_adapter_mcp.rbi +16 -62
- data/rbi/cadenya/models/tool_set_adapter_openapi.rbi +127 -0
- data/rbi/cadenya/models/tool_set_get_openapi_spec_params.rbi +46 -0
- data/rbi/cadenya/models/tool_set_get_openapi_spec_response.rbi +33 -0
- data/rbi/cadenya/models/tool_sets/config_openapi.rbi +48 -0
- data/rbi/cadenya/models/tool_sets/tool_spec_config.rbi +11 -3
- data/rbi/cadenya/models/workspace.rbi +39 -3
- data/rbi/cadenya/models/workspace_admin/member_add_params.rbi +68 -0
- data/rbi/cadenya/models/workspace_admin/member_list_params.rbi +68 -0
- data/rbi/cadenya/models/workspace_admin/member_remove_params.rbi +48 -0
- data/rbi/cadenya/models/workspace_admin/profile_list_params.rbi +75 -0
- data/rbi/cadenya/models/workspace_admin_archive_params.rbi +38 -0
- data/rbi/cadenya/models/workspace_admin_create_params.rbi +127 -0
- data/rbi/cadenya/models/workspace_admin_list_params.rbi +70 -0
- data/rbi/cadenya/models/workspace_admin_retrieve_params.rbi +38 -0
- data/rbi/cadenya/models/workspace_admin_update_params.rbi +144 -0
- data/rbi/cadenya/models/workspace_member.rbi +80 -0
- data/rbi/cadenya/models.rbi +40 -2
- data/rbi/cadenya/resources/ai_provider_keys.rbi +125 -0
- data/rbi/cadenya/resources/tool_sets.rbi +18 -0
- data/rbi/cadenya/resources/workspace_admin/members.rbi +83 -0
- data/rbi/cadenya/resources/workspace_admin/profiles.rbi +42 -0
- data/rbi/cadenya/resources/workspace_admin.rbi +131 -0
- data/rbi/cadenya/resources/workspaces.rbi +4 -0
- data/sig/cadenya/client.rbs +4 -0
- data/sig/cadenya/models/agent_spec.rbs +12 -5
- data/sig/cadenya/models/agents/webhook_delivery_data.rbs +2 -0
- data/sig/cadenya/models/agents/webhook_delivery_list_params.rbs +2 -0
- data/sig/cadenya/models/ai_provider_key.rbs +22 -0
- data/sig/cadenya/models/ai_provider_key_create_params.rbs +36 -0
- data/sig/cadenya/models/ai_provider_key_delete_params.rbs +28 -0
- data/sig/cadenya/models/ai_provider_key_list_params.rbs +61 -0
- data/sig/cadenya/models/ai_provider_key_retrieve_params.rbs +28 -0
- data/sig/cadenya/models/ai_provider_key_spec.rbs +28 -0
- data/sig/cadenya/models/ai_provider_key_update_params.rbs +54 -0
- data/sig/cadenya/models/approval_requirement_filter.rbs +20 -0
- data/sig/cadenya/models/attribute_filter.rbs +44 -0
- data/sig/cadenya/models/objective_data.rbs +14 -0
- data/sig/cadenya/models/objective_event_data.rbs +21 -0
- data/sig/cadenya/models/objective_list_params.rbs +4 -2
- data/sig/cadenya/models/objective_status.rbs +4 -2
- data/sig/cadenya/models/profile_spec.rbs +5 -1
- data/sig/cadenya/models/string_matcher.rbs +57 -0
- data/sig/cadenya/models/tool_filter.rbs +41 -0
- data/sig/cadenya/models/tool_set_adapter.rbs +15 -3
- data/sig/cadenya/models/tool_set_adapter_mcp.rbs +16 -32
- data/sig/cadenya/models/tool_set_adapter_openapi.rbs +73 -0
- data/sig/cadenya/models/tool_set_get_openapi_spec_params.rbs +28 -0
- data/sig/cadenya/models/tool_set_get_openapi_spec_response.rbs +15 -0
- data/sig/cadenya/models/tool_sets/config_openapi.rbs +30 -0
- data/sig/cadenya/models/tool_sets/tool_spec_config.rbs +12 -3
- data/sig/cadenya/models/workspace.rbs +24 -3
- data/sig/cadenya/models/workspace_admin/member_add_params.rbs +38 -0
- data/sig/cadenya/models/workspace_admin/member_list_params.rbs +38 -0
- data/sig/cadenya/models/workspace_admin/member_remove_params.rbs +30 -0
- data/sig/cadenya/models/workspace_admin/profile_list_params.rbs +40 -0
- data/sig/cadenya/models/workspace_admin_archive_params.rbs +23 -0
- data/sig/cadenya/models/workspace_admin_create_params.rbs +58 -0
- data/sig/cadenya/models/workspace_admin_list_params.rbs +38 -0
- data/sig/cadenya/models/workspace_admin_retrieve_params.rbs +23 -0
- data/sig/cadenya/models/workspace_admin_update_params.rbs +76 -0
- data/sig/cadenya/models/workspace_member.rbs +46 -0
- data/sig/cadenya/models.rbs +40 -2
- data/sig/cadenya/resources/ai_provider_keys.rbs +45 -0
- data/sig/cadenya/resources/tool_sets.rbs +6 -0
- data/sig/cadenya/resources/workspace_admin/members.rbs +29 -0
- data/sig/cadenya/resources/workspace_admin/profiles.rbs +16 -0
- data/sig/cadenya/resources/workspace_admin.rbs +42 -0
- metadata +89 -5
- data/lib/cadenya/models/mcp_tool_filter.rb +0 -111
- data/rbi/cadenya/models/mcp_tool_filter.rbi +0 -235
- 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
|
-
|
|
162
|
+
STATE_WAITING =
|
|
163
163
|
T.let(
|
|
164
|
-
:
|
|
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
|
-
|
|
57
|
-
T.let(:
|
|
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
|
-
{
|
|
41
|
+
{
|
|
42
|
+
http: Cadenya::ToolSetAdapterHTTP,
|
|
43
|
+
mcp: Cadenya::ToolSetAdapterMcp,
|
|
44
|
+
openapi: Cadenya::ToolSetAdapterOpenAPI
|
|
45
|
+
}
|
|
35
46
|
)
|
|
36
47
|
end
|
|
37
48
|
def to_hash
|