Class: Assistant::Profiles::Profile

Inherits:
Data
  • Object
show all
Defined in:
app/services/assistant/profiles.rb

Overview

A single profile definition.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#iconObject (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

#keyObject (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

#labelObject (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

#modelObject (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_servicesObject (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

#startersObject (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_directiveObject (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

#taglineObject (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_handlesObject (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.

Returns:

  • (Boolean)


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_paramObject



42
# File 'app/services/assistant/profiles.rb', line 42

def to_param = key