diff --git a/rnd/autogpt_server/autogpt_server/server/routes/blocks.py b/rnd/autogpt_server/autogpt_server/server/routes/blocks.py index e21a1cd5df..daecaeeb21 100644 --- a/rnd/autogpt_server/autogpt_server/server/routes/blocks.py +++ b/rnd/autogpt_server/autogpt_server/server/routes/blocks.py @@ -1,17 +1,34 @@ -from fastapi import APIRouter -from autogpt_server.server.rest_api import AgentServer -from typing import Any +import typing +import collections + +import fastapi +import autogpt_server.data.block +import autogpt_server.data.credit + +router = fastapi.APIRouter() -router = APIRouter() @router.get("/blocks") async def get_graph_blocks(): - return AgentServer.get_graph_blocks() + return [v.to_dict() for v in autogpt_server.data.block.get_blocks().values()] + @router.get("/blocks/costs") async def get_graph_block_costs(): - return AgentServer.get_graph_block_costs() + return autogpt_server.data.credit.get_block_costs() + @router.post("/blocks/{block_id}/execute") -async def execute_graph_block(block_id: str, data: dict[str, Any]): - return AgentServer.execute_graph_block(block_id, data) +async def execute_graph_block( + block_id: str, data: autogpt_server.data.block.BlockInput +) -> autogpt_server.data.block.CompletedBlockOutput: + obj = autogpt_server.data.block.get_block(block_id) + if not obj: + raise fastapi.HTTPException( + status_code=404, detail=f"Block #{block_id} not found." + ) + + output = collections.defaultdict(list) + for name, data in obj.execute(data): + output[name].append(data) + return output