neuro-simulator 0.2.2__py3-none-any.whl → 0.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- neuro_simulator/agent/core.py +163 -130
- neuro_simulator/agent/memory/manager.py +26 -26
- neuro_simulator/api/stream.py +1 -55
- neuro_simulator/api/system.py +30 -60
- neuro_simulator/cli.py +3 -2
- neuro_simulator/core/agent_interface.py +1 -1
- neuro_simulator/core/application.py +210 -17
- neuro_simulator/services/builtin.py +34 -4
- neuro_simulator/services/letta.py +32 -2
- neuro_simulator/utils/queue.py +3 -1
- neuro_simulator/utils/state.py +5 -1
- neuro_simulator/utils/websocket.py +11 -14
- {neuro_simulator-0.2.2.dist-info → neuro_simulator-0.3.1.dist-info}/METADATA +3 -4
- {neuro_simulator-0.2.2.dist-info → neuro_simulator-0.3.1.dist-info}/RECORD +17 -18
- neuro_simulator/api/agent.py +0 -163
- {neuro_simulator-0.2.2.dist-info → neuro_simulator-0.3.1.dist-info}/WHEEL +0 -0
- {neuro_simulator-0.2.2.dist-info → neuro_simulator-0.3.1.dist-info}/entry_points.txt +0 -0
- {neuro_simulator-0.2.2.dist-info → neuro_simulator-0.3.1.dist-info}/top_level.txt +0 -0
neuro_simulator/api/agent.py
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
# neuro_simulator/api/agent.py
|
2
|
-
"""Unified API endpoints for agent management, decoupled from implementation."""
|
3
|
-
|
4
|
-
from fastapi import APIRouter, Depends, HTTPException, status, Request
|
5
|
-
from typing import Dict, Any, List, Optional
|
6
|
-
from pydantic import BaseModel
|
7
|
-
|
8
|
-
# Imports for the new structure
|
9
|
-
from ..core.config import config_manager
|
10
|
-
from ..core.agent_factory import create_agent
|
11
|
-
from ..core.agent_interface import BaseAgent
|
12
|
-
|
13
|
-
router = APIRouter(prefix="/api/agent", tags=["Agent Management"])
|
14
|
-
|
15
|
-
# Security dependency (remains the same)
|
16
|
-
async def get_api_token(request: Request):
|
17
|
-
password = config_manager.settings.server.panel_password
|
18
|
-
if not password:
|
19
|
-
return True
|
20
|
-
header_token = request.headers.get("X-API-Token")
|
21
|
-
if header_token and header_token == password:
|
22
|
-
return True
|
23
|
-
raise HTTPException(
|
24
|
-
status_code=status.HTTP_401_UNAUTHORIZED,
|
25
|
-
detail="Invalid API token",
|
26
|
-
headers={"WWW-Authenticate": "Bearer"},
|
27
|
-
)
|
28
|
-
|
29
|
-
# Pydantic models (remains the same)
|
30
|
-
class MessageItem(BaseModel):
|
31
|
-
username: str
|
32
|
-
text: str
|
33
|
-
role: str = "user"
|
34
|
-
|
35
|
-
class ToolExecutionRequest(BaseModel):
|
36
|
-
tool_name: str
|
37
|
-
params: Dict[str, Any]
|
38
|
-
|
39
|
-
class MemoryUpdateRequest(BaseModel):
|
40
|
-
title: Optional[str] = None
|
41
|
-
description: Optional[str] = None
|
42
|
-
content: Optional[List[str]] = None
|
43
|
-
|
44
|
-
class MemoryCreateRequest(BaseModel):
|
45
|
-
title: str
|
46
|
-
description: str
|
47
|
-
content: List[str]
|
48
|
-
|
49
|
-
class InitMemoryUpdateRequest(BaseModel):
|
50
|
-
memory: Dict[str, Any]
|
51
|
-
|
52
|
-
class TempMemoryItem(BaseModel):
|
53
|
-
content: str
|
54
|
-
role: str = "system"
|
55
|
-
|
56
|
-
# Dependency to get the agent instance, making endpoints cleaner
|
57
|
-
async def get_agent() -> BaseAgent:
|
58
|
-
return await create_agent()
|
59
|
-
|
60
|
-
# A single dependency for both auth and agent instance
|
61
|
-
class AgentDeps:
|
62
|
-
def __init__(self, token: bool = Depends(get_api_token), agent: BaseAgent = Depends(get_agent)):
|
63
|
-
self.agent = agent
|
64
|
-
|
65
|
-
# --- Refactored Agent Endpoints ---
|
66
|
-
|
67
|
-
@router.get("/messages", response_model=List[Dict[str, Any]])
|
68
|
-
async def get_agent_messages(deps: AgentDeps = Depends()):
|
69
|
-
"""Get agent's detailed message processing history."""
|
70
|
-
return await deps.agent.get_message_history()
|
71
|
-
|
72
|
-
@router.get("/context", response_model=List[Dict[str, Any]])
|
73
|
-
async def get_agent_context(deps: AgentDeps = Depends()):
|
74
|
-
"""Get agent's recent conversation context (last 20 entries)."""
|
75
|
-
return await deps.agent.get_message_history(limit=20)
|
76
|
-
|
77
|
-
@router.delete("/messages")
|
78
|
-
async def clear_agent_messages(deps: AgentDeps = Depends()):
|
79
|
-
"""Clear agent's message history."""
|
80
|
-
await deps.agent.reset_memory()
|
81
|
-
return {"status": "success", "message": "Agent memory reset successfully"}
|
82
|
-
|
83
|
-
@router.post("/messages")
|
84
|
-
async def send_message_to_agent(message: MessageItem, deps: AgentDeps = Depends()):
|
85
|
-
"""Send a message to the agent."""
|
86
|
-
response = await deps.agent.process_messages([message.dict()])
|
87
|
-
return {"response": response}
|
88
|
-
|
89
|
-
@router.get("/memory/init", response_model=Dict[str, Any])
|
90
|
-
async def get_init_memory(deps: AgentDeps = Depends()):
|
91
|
-
"""Get initialization memory content."""
|
92
|
-
return await deps.agent.get_init_memory()
|
93
|
-
|
94
|
-
@router.put("/memory/init")
|
95
|
-
async def update_init_memory(request: InitMemoryUpdateRequest, deps: AgentDeps = Depends()):
|
96
|
-
"""Update initialization memory content."""
|
97
|
-
await deps.agent.update_init_memory(request.memory)
|
98
|
-
return {"status": "success", "message": "Initialization memory updated"}
|
99
|
-
|
100
|
-
@router.get("/memory/temp", response_model=List[Dict[str, Any]])
|
101
|
-
async def get_temp_memory(deps: AgentDeps = Depends()):
|
102
|
-
"""Get all temporary memory content."""
|
103
|
-
return await deps.agent.get_temp_memory()
|
104
|
-
|
105
|
-
@router.post("/memory/temp")
|
106
|
-
async def add_temp_memory_item(request: TempMemoryItem, deps: AgentDeps = Depends()):
|
107
|
-
"""Add an item to temporary memory."""
|
108
|
-
await deps.agent.add_temp_memory(request.content, request.role)
|
109
|
-
return {"status": "success", "message": "Item added to temporary memory"}
|
110
|
-
|
111
|
-
@router.delete("/memory/temp")
|
112
|
-
async def clear_temp_memory(deps: AgentDeps = Depends()):
|
113
|
-
"""Clear temporary memory."""
|
114
|
-
await deps.agent.clear_temp_memory()
|
115
|
-
return {"status": "success", "message": "Temporary memory cleared"}
|
116
|
-
|
117
|
-
@router.get("/memory/blocks", response_model=List[Dict[str, Any]])
|
118
|
-
async def get_memory_blocks(deps: AgentDeps = Depends()):
|
119
|
-
"""Get all memory blocks."""
|
120
|
-
return await deps.agent.get_memory_blocks()
|
121
|
-
|
122
|
-
@router.get("/memory/blocks/{block_id}", response_model=Dict[str, Any])
|
123
|
-
async def get_memory_block(block_id: str, deps: AgentDeps = Depends()):
|
124
|
-
"""Get a specific memory block."""
|
125
|
-
block = await deps.agent.get_memory_block(block_id)
|
126
|
-
if block is None:
|
127
|
-
raise HTTPException(status_code=404, detail="Memory block not found")
|
128
|
-
return block
|
129
|
-
|
130
|
-
@router.post("/memory/blocks", response_model=Dict[str, str])
|
131
|
-
async def create_memory_block(request: MemoryCreateRequest, deps: AgentDeps = Depends()):
|
132
|
-
"""Create a new memory block."""
|
133
|
-
return await deps.agent.create_memory_block(request.title, request.description, request.content)
|
134
|
-
|
135
|
-
@router.put("/memory/blocks/{block_id}")
|
136
|
-
async def update_memory_block(block_id: str, request: MemoryUpdateRequest, deps: AgentDeps = Depends()):
|
137
|
-
"""Update a memory block."""
|
138
|
-
await deps.agent.update_memory_block(block_id, request.title, request.description, request.content)
|
139
|
-
return {"status": "success"}
|
140
|
-
|
141
|
-
@router.delete("/memory/blocks/{block_id}")
|
142
|
-
async def delete_memory_block(block_id: str, deps: AgentDeps = Depends()):
|
143
|
-
"""Delete a memory block."""
|
144
|
-
await deps.agent.delete_memory_block(block_id)
|
145
|
-
return {"status": "success"}
|
146
|
-
|
147
|
-
@router.post("/reset_memory")
|
148
|
-
async def reset_agent_memory(deps: AgentDeps = Depends()):
|
149
|
-
"""Reset all agent memory types."""
|
150
|
-
await deps.agent.reset_memory()
|
151
|
-
return {"status": "success", "message": "Agent memory reset successfully"}
|
152
|
-
|
153
|
-
@router.get("/tools")
|
154
|
-
async def get_available_tools(deps: AgentDeps = Depends()):
|
155
|
-
"""Get list of available tools."""
|
156
|
-
# Return in the format expected by the frontend
|
157
|
-
return {"tools": await deps.agent.get_available_tools()}
|
158
|
-
|
159
|
-
@router.post("/tools/execute")
|
160
|
-
async def execute_tool(request: ToolExecutionRequest, deps: AgentDeps = Depends()):
|
161
|
-
"""Execute a tool with given parameters."""
|
162
|
-
result = await deps.agent.execute_tool(request.tool_name, request.params)
|
163
|
-
return {"result": result}
|
File without changes
|
File without changes
|
File without changes
|