Class: Assistant::Profiles::Profile
- Inherits:
-
Data
- Object
- Data
- Assistant::Profiles::Profile
- Defined in:
- app/services/assistant/profiles.rb
Overview
A single profile definition.
Instance Attribute Summary collapse
-
#icon ⇒ Object
readonly
Font Awesome icon name (no "fa-" prefix).
-
#key ⇒ Object
readonly
stable identifier (also used as conversation_type).
-
#label ⇒ Object
readonly
human label shown on the card.
-
#model ⇒ Object
readonly
ChatService::MODELS key to pin (model_preference).
-
#required_services ⇒ Object
readonly
service keys the user MUST have permission for, or the profile is hidden from them.
-
#starters ⇒ Object
readonly
suggested opening prompts.
-
#system_directive ⇒ Object
readonly
short tone/intent line appended to the system prompt while this profile is active.
-
#tagline ⇒ Object
readonly
one-line description shown on the card.
-
#tool_handles ⇒ Object
readonly
kebab tool handles (resolved to services).
Instance Method Summary collapse
-
#available_to?(permitted_service_keys) ⇒ Boolean
True when the user's permitted service keys cover this profile's required services (a subset check — every required service must be permitted).
- #to_param ⇒ Object
Instance Attribute Details
#icon ⇒ Object (readonly)
Font Awesome icon name (no "fa-" prefix)
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#key ⇒ Object (readonly)
stable identifier (also used as conversation_type)
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#label ⇒ Object (readonly)
human label shown on the card
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#model ⇒ Object (readonly)
ChatService::MODELS key to pin (model_preference)
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#required_services ⇒ Object (readonly)
service keys the user MUST have
permission for, or the profile is hidden from them
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#starters ⇒ Object (readonly)
suggested opening prompts
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#system_directive ⇒ Object (readonly)
short tone/intent line appended to the
system prompt while this profile is active
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#tagline ⇒ Object (readonly)
one-line description shown on the card
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
#tool_handles ⇒ Object (readonly)
kebab tool handles (resolved to services)
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/assistant/profiles.rb', line 38 Profile = Data.define( :key, :label, :icon, :tagline, :model, :tool_handles, :required_services, :system_directive, :starters ) do def to_param = key # True when the user's permitted service keys cover this profile's # required services (a subset check — every required service must be # permitted). Profiles with no requirements are available to everyone. def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end end |
Instance Method Details
#available_to?(permitted_service_keys) ⇒ Boolean
True when the user's permitted service keys cover this profile's
required services (a subset check — every required service must be
permitted). Profiles with no requirements are available to everyone.
47 48 49 |
# File 'app/services/assistant/profiles.rb', line 47 def available_to?(permitted_service_keys) Array(required_services).all? { |svc| permitted_service_keys.include?(svc) } end |
#to_param ⇒ Object
42 |
# File 'app/services/assistant/profiles.rb', line 42 def to_param = key |