mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
only show agents that have no store listing
This commit is contained in:
@@ -71,6 +71,7 @@ app.include_router(
|
||||
backend.server.v2.store.routes.router, tags=["v2"], prefix="/api/store"
|
||||
)
|
||||
|
||||
|
||||
@app.get(path="/health", tags=["health"], dependencies=[])
|
||||
async def health():
|
||||
return {"status": "healthy"}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
import prisma.enums
|
||||
import prisma.errors
|
||||
@@ -8,8 +9,6 @@ import prisma.types
|
||||
import backend.server.v2.store.exceptions
|
||||
import backend.server.v2.store.model
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -389,7 +388,7 @@ async def create_store_submission(
|
||||
"description": description,
|
||||
"categories": categories,
|
||||
"subHeading": sub_heading,
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
@@ -563,18 +562,30 @@ async def get_my_agents(
|
||||
|
||||
try:
|
||||
agents_with_max_version = await prisma.models.AgentGraph.prisma().find_many(
|
||||
where=prisma.types.AgentGraphWhereInput(userId=user_id),
|
||||
where=prisma.types.AgentGraphWhereInput(
|
||||
userId=user_id, StoreListing={"none": {"isDeleted": False}}
|
||||
),
|
||||
order=[{"version": "desc"}],
|
||||
distinct=["id"],
|
||||
skip=(page - 1) * page_size,
|
||||
take=page_size,
|
||||
)
|
||||
|
||||
total = len(await prisma.models.AgentGraph.prisma().find_many(
|
||||
where=prisma.types.AgentGraphWhereInput(userId=user_id),
|
||||
order=[{"version": "desc"}],
|
||||
distinct=["id"],
|
||||
))
|
||||
# store_listings = await prisma.models.StoreListing.prisma().find_many(
|
||||
# where=prisma.types.StoreListingWhereInput(
|
||||
# isDeleted=False,
|
||||
# ),
|
||||
# )
|
||||
|
||||
total = len(
|
||||
await prisma.models.AgentGraph.prisma().find_many(
|
||||
where=prisma.types.AgentGraphWhereInput(
|
||||
userId=user_id, StoreListing={"none": {"isDeleted": False}}
|
||||
),
|
||||
order=[{"version": "desc"}],
|
||||
distinct=["id"],
|
||||
)
|
||||
)
|
||||
|
||||
total_pages = (total + page_size - 1) // page_size
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ import logging
|
||||
import os
|
||||
import uuid
|
||||
|
||||
import dotenv
|
||||
import fastapi
|
||||
from google.cloud import storage
|
||||
import dotenv
|
||||
|
||||
import backend.server.v2.store.exceptions
|
||||
|
||||
@@ -76,10 +76,7 @@ async def upload_media(user_id: str, file: fastapi.UploadFile) -> str:
|
||||
blob.content_type = content_type
|
||||
|
||||
file_bytes = await file.read()
|
||||
blob.upload_from_string(
|
||||
file_bytes,
|
||||
content_type=content_type
|
||||
)
|
||||
blob.upload_from_string(file_bytes, content_type=content_type)
|
||||
|
||||
public_url = blob.public_url
|
||||
|
||||
|
||||
@@ -19,16 +19,19 @@ class Pagination(pydantic.BaseModel):
|
||||
description="Number of items per page.", examples=[25]
|
||||
)
|
||||
|
||||
|
||||
class MyAgent(pydantic.BaseModel):
|
||||
agent_id: str
|
||||
agent_version: int
|
||||
agent_name: str
|
||||
last_edited: datetime.datetime
|
||||
|
||||
|
||||
class MyAgentsResponse(pydantic.BaseModel):
|
||||
agents: list[MyAgent]
|
||||
pagination: Pagination
|
||||
|
||||
|
||||
class StoreAgent(pydantic.BaseModel):
|
||||
slug: str
|
||||
agent_name: str
|
||||
@@ -85,6 +88,7 @@ class CreatorDetails(pydantic.BaseModel):
|
||||
agent_runs: int
|
||||
top_categories: list[str]
|
||||
|
||||
|
||||
class Profile(pydantic.BaseModel):
|
||||
name: str
|
||||
username: str
|
||||
@@ -92,6 +96,7 @@ class Profile(pydantic.BaseModel):
|
||||
links: list[str]
|
||||
avatar_url: str
|
||||
|
||||
|
||||
class StoreSubmission(pydantic.BaseModel):
|
||||
name: str
|
||||
slug: str
|
||||
|
||||
@@ -226,12 +226,14 @@ async def get_creator(username: str) -> backend.server.v2.store.model.CreatorDet
|
||||
############# Store Submissions ###############
|
||||
############################################
|
||||
@router.get(
|
||||
"/myagents",
|
||||
tags=["store", "private"],
|
||||
dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)],
|
||||
"/myagents",
|
||||
tags=["store", "private"],
|
||||
dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)],
|
||||
)
|
||||
async def get_my_agents(
|
||||
user_id: typing.Annotated[str, fastapi.Depends(autogpt_libs.auth.depends.get_user_id)]
|
||||
user_id: typing.Annotated[
|
||||
str, fastapi.Depends(autogpt_libs.auth.depends.get_user_id)
|
||||
]
|
||||
) -> backend.server.v2.store.model.MyAgentsResponse:
|
||||
try:
|
||||
agents = await backend.server.v2.store.db.get_my_agents(user_id)
|
||||
@@ -240,6 +242,7 @@ async def get_my_agents(
|
||||
logger.exception("Exception occurred whilst getting my agents")
|
||||
raise
|
||||
|
||||
|
||||
@router.get(
|
||||
"/submissions",
|
||||
tags=["store", "private"],
|
||||
|
||||
@@ -45,6 +45,7 @@ def get_image():
|
||||
url = faker.image_url()
|
||||
return url
|
||||
|
||||
|
||||
async def main():
|
||||
db = Prisma()
|
||||
await db.connect()
|
||||
|
||||
@@ -56,8 +56,8 @@ export default async function Page({
|
||||
<BreadCrumbs items={breadcrumbs} />
|
||||
|
||||
<div className="mt-4 flex flex-col items-start gap-4 sm:mt-6 sm:gap-6 md:mt-8 md:flex-row md:gap-8">
|
||||
<div className="w-full md:w-auto md:shrink-0">
|
||||
<AgentInfo
|
||||
<div className="w-full md:w-auto md:shrink-0">
|
||||
<AgentInfo
|
||||
name={agent.agent_name}
|
||||
creator={agent.creator}
|
||||
shortDescription={agent.description}
|
||||
|
||||
@@ -14,15 +14,18 @@ const SchemaTooltip: React.FC<{ description?: string }> = ({ description }) => {
|
||||
<TooltipProvider delayDuration={400}>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<Info className="rounded-full p-1 hover:bg-gray-300 dark:hover:bg-gray-700" size={24} />
|
||||
<Info
|
||||
className="rounded-full p-1 hover:bg-gray-300 dark:hover:bg-gray-700"
|
||||
size={24}
|
||||
/>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent className="tooltip-content max-w-xs bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100">
|
||||
<TooltipContent className="tooltip-content max-w-xs bg-white text-gray-900 dark:bg-gray-800 dark:text-gray-100">
|
||||
<ReactMarkdown
|
||||
components={{
|
||||
a: ({ node, ...props }) => (
|
||||
<a
|
||||
target="_blank"
|
||||
className="text-blue-400 dark:text-blue-300 underline"
|
||||
className="text-blue-400 underline dark:text-blue-300"
|
||||
{...props}
|
||||
/>
|
||||
),
|
||||
|
||||
@@ -60,17 +60,19 @@ export const PublishAgentPopout: React.FC<PublishAgentPopoutProps> = ({
|
||||
);
|
||||
|
||||
React.useEffect(() => {
|
||||
const loadMyAgents = async () => {
|
||||
try {
|
||||
const response = await api.getMyAgents();
|
||||
setMyAgents(response);
|
||||
} catch (error) {
|
||||
console.error("Failed to load my agents:", error);
|
||||
}
|
||||
};
|
||||
if (open) {
|
||||
const loadMyAgents = async () => {
|
||||
try {
|
||||
const response = await api.getMyAgents();
|
||||
setMyAgents(response);
|
||||
} catch (error) {
|
||||
console.error("Failed to load my agents:", error);
|
||||
}
|
||||
};
|
||||
|
||||
loadMyAgents();
|
||||
}, []);
|
||||
loadMyAgents();
|
||||
}
|
||||
}, [open]);
|
||||
|
||||
const handleClose = () => {
|
||||
setStep("select");
|
||||
|
||||
Reference in New Issue
Block a user