Files
letta-server/letta/server/rest_api/routers/v1/internal_agents.py
Shubham Naik 2ee1ff50dd Shub/let 6339 add endpoint for counting non hidden agents [LET-6339] (#6406)
* feat: add hidden agent count

* feat: add hidden agent count

* chore; hiddne agents

---------

Co-authored-by: Shubham Naik <shub@memgpt.ai>
2025-11-26 14:39:40 -08:00

54 lines
2.1 KiB
Python

from fastapi import APIRouter, Body, Depends, Query
from letta.schemas.block import Block, BlockUpdate
from letta.server.rest_api.dependencies import HeaderParams, get_headers, get_letta_server
from letta.server.server import SyncServer
from letta.validators import AgentId
router = APIRouter(prefix="/_internal_agents", tags=["_internal_agents"])
@router.get("/count", response_model=int, operation_id="count_internal_agents")
async def count_agents(
exclude_hidden: bool = Query(True, description="If True, excludes hidden agents from the count. If False, includes all agents."),
server: "SyncServer" = Depends(get_letta_server),
headers: HeaderParams = Depends(get_headers),
):
"""
Get the total number of agents for a user, with option to exclude hidden agents.
"""
actor = await server.user_manager.get_actor_or_default_async(actor_id=headers.actor_id)
# When exclude_hidden=True, we want show_hidden_agents=False
# When exclude_hidden=False, we want show_hidden_agents=True
show_hidden_agents = not exclude_hidden
# Always use count_agents_async to ensure proper filtering
return await server.agent_manager.count_agents_async(
actor=actor,
show_hidden_agents=show_hidden_agents,
)
@router.patch("/{agent_id}/core-memory/blocks/{block_label}", response_model=Block, operation_id="modify_internal_core_memory_block")
async def modify_block_for_agent(
block_label: str,
agent_id: AgentId,
block_update: BlockUpdate = Body(...),
server: "SyncServer" = Depends(get_letta_server),
headers: HeaderParams = Depends(get_headers),
):
"""
Updates a core memory block of an agent.
"""
actor = await server.user_manager.get_actor_or_default_async(actor_id=headers.actor_id)
block = await server.agent_manager.modify_block_by_label_async(
agent_id=agent_id, block_label=block_label, block_update=block_update, actor=actor
)
# This should also trigger a system prompt change in the agent
await server.agent_manager.rebuild_system_prompt_async(agent_id=agent_id, actor=actor, force=True, update_timestamp=False)
return block