mirror of
https://github.com/khoj-ai/khoj.git
synced 2024-11-23 23:48:56 +01:00
Improve agents management, and limit agents view to private and official agents
- Default to None for the input_tools and output_modes so that they can be managed in the admin panel - Hold off on showing off all Public Agents until we have a better experience for user profiles etc.
This commit is contained in:
parent
a979457442
commit
59fec37943
3 changed files with 54 additions and 2 deletions
|
@ -622,6 +622,8 @@ class AgentAdapters:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_all_accessible_agents(user: KhojUser = None):
|
def get_all_accessible_agents(user: KhojUser = None):
|
||||||
public_query = Q(privacy_level=Agent.PrivacyLevel.PUBLIC)
|
public_query = Q(privacy_level=Agent.PrivacyLevel.PUBLIC)
|
||||||
|
# TODO Update this to allow any public agent that's officially approved once that experience is launched
|
||||||
|
public_query &= Q(managed_by_admin=True)
|
||||||
if user:
|
if user:
|
||||||
return (
|
return (
|
||||||
Agent.objects.filter(public_query | Q(creator=user))
|
Agent.objects.filter(public_query | Q(creator=user))
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Generated by Django 5.0.8 on 2024-10-21 05:16
|
||||||
|
|
||||||
|
import django.contrib.postgres.fields
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("database", "0069_webscraper_serverchatsettings_web_scraper"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="agent",
|
||||||
|
name="input_tools",
|
||||||
|
field=django.contrib.postgres.fields.ArrayField(
|
||||||
|
base_field=models.CharField(
|
||||||
|
choices=[
|
||||||
|
("general", "General"),
|
||||||
|
("online", "Online"),
|
||||||
|
("notes", "Notes"),
|
||||||
|
("summarize", "Summarize"),
|
||||||
|
("webpage", "Webpage"),
|
||||||
|
],
|
||||||
|
max_length=200,
|
||||||
|
),
|
||||||
|
blank=True,
|
||||||
|
default=list,
|
||||||
|
null=True,
|
||||||
|
size=None,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="agent",
|
||||||
|
name="output_modes",
|
||||||
|
field=django.contrib.postgres.fields.ArrayField(
|
||||||
|
base_field=models.CharField(
|
||||||
|
choices=[("text", "Text"), ("image", "Image"), ("automation", "Automation")], max_length=200
|
||||||
|
),
|
||||||
|
blank=True,
|
||||||
|
default=list,
|
||||||
|
null=True,
|
||||||
|
size=None,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -180,8 +180,12 @@ class Agent(BaseModel):
|
||||||
) # Creator will only be null when the agents are managed by admin
|
) # Creator will only be null when the agents are managed by admin
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
personality = models.TextField()
|
personality = models.TextField()
|
||||||
input_tools = ArrayField(models.CharField(max_length=200, choices=InputToolOptions.choices), default=list)
|
input_tools = ArrayField(
|
||||||
output_modes = ArrayField(models.CharField(max_length=200, choices=OutputModeOptions.choices), default=list)
|
models.CharField(max_length=200, choices=InputToolOptions.choices), default=list, null=True, blank=True
|
||||||
|
)
|
||||||
|
output_modes = ArrayField(
|
||||||
|
models.CharField(max_length=200, choices=OutputModeOptions.choices), default=list, null=True, blank=True
|
||||||
|
)
|
||||||
managed_by_admin = models.BooleanField(default=False)
|
managed_by_admin = models.BooleanField(default=False)
|
||||||
chat_model = models.ForeignKey(ChatModelOptions, on_delete=models.CASCADE)
|
chat_model = models.ForeignKey(ChatModelOptions, on_delete=models.CASCADE)
|
||||||
slug = models.CharField(max_length=200, unique=True)
|
slug = models.CharField(max_length=200, unique=True)
|
||||||
|
|
Loading…
Reference in a new issue