Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Commit Β·
6b80d78
1
Parent(s): 0c252e4
mcp integration done, tools done, agent working
Browse files- agent/core/agent_loop.py +16 -9
- agent/main.py +12 -12
agent/core/agent_loop.py
CHANGED
|
@@ -48,19 +48,26 @@ class Handlers:
|
|
| 48 |
content = message.content
|
| 49 |
tool_calls: list[ToolCall] = message.get("tool_calls", [])
|
| 50 |
|
| 51 |
-
#
|
| 52 |
-
if
|
| 53 |
-
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
|
|
|
|
| 56 |
await session.send_event(
|
| 57 |
Event(event_type="assistant_message", data={"content": content})
|
| 58 |
)
|
| 59 |
|
| 60 |
-
# If no tool calls, we're done
|
| 61 |
-
if not tool_calls:
|
| 62 |
-
break
|
| 63 |
-
|
| 64 |
# Execute tools
|
| 65 |
for tc in tool_calls:
|
| 66 |
tool_name = tc.function.name
|
|
@@ -163,7 +170,7 @@ async def process_submission(session: Session, submission) -> bool:
|
|
| 163 |
|
| 164 |
if op.op_type == OpType.USER_INPUT:
|
| 165 |
text = op.data.get("text", "") if op.data else ""
|
| 166 |
-
await Handlers.
|
| 167 |
return True
|
| 168 |
|
| 169 |
if op.op_type == OpType.INTERRUPT:
|
|
|
|
| 48 |
content = message.content
|
| 49 |
tool_calls: list[ToolCall] = message.get("tool_calls", [])
|
| 50 |
|
| 51 |
+
# If no tool calls, add assistant message and we're done
|
| 52 |
+
if not tool_calls:
|
| 53 |
+
if content:
|
| 54 |
+
assistant_msg = Message(role="assistant", content=content)
|
| 55 |
+
session.context_manager.add_message(assistant_msg)
|
| 56 |
+
await session.send_event(
|
| 57 |
+
Event(event_type="assistant_message", data={"content": content})
|
| 58 |
+
)
|
| 59 |
+
break
|
| 60 |
+
|
| 61 |
+
# Add assistant message with tool calls to history
|
| 62 |
+
# LiteLLM will format this correctly for the provider
|
| 63 |
+
assistant_msg = Message(role="assistant", content=content, tool_calls=tool_calls)
|
| 64 |
+
session.context_manager.add_message(assistant_msg)
|
| 65 |
|
| 66 |
+
if content:
|
| 67 |
await session.send_event(
|
| 68 |
Event(event_type="assistant_message", data={"content": content})
|
| 69 |
)
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
# Execute tools
|
| 72 |
for tc in tool_calls:
|
| 73 |
tool_name = tc.function.name
|
|
|
|
| 170 |
|
| 171 |
if op.op_type == OpType.USER_INPUT:
|
| 172 |
text = op.data.get("text", "") if op.data else ""
|
| 173 |
+
await Handlers.run_agent(session, text)
|
| 174 |
return True
|
| 175 |
|
| 176 |
if op.op_type == OpType.INTERRUPT:
|
agent/main.py
CHANGED
|
@@ -37,25 +37,25 @@ async def event_listener(
|
|
| 37 |
|
| 38 |
# Display event
|
| 39 |
if event.event_type == "assistant_message":
|
| 40 |
-
|
| 41 |
-
content = msg.get("content", "")
|
| 42 |
if content:
|
| 43 |
print(f"\nπ€ Assistant: {content}")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
elif event.event_type == "tool_output":
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
if
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
)
|
| 51 |
elif event.event_type == "turn_complete":
|
| 52 |
print("β
Turn complete\n")
|
| 53 |
turn_complete_event.set()
|
| 54 |
elif event.event_type == "error":
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
traceback.print_exc()
|
| 58 |
-
print(f"β Error: {event.data.get('error', 'Unknown error')}")
|
| 59 |
turn_complete_event.set()
|
| 60 |
elif event.event_type == "shutdown":
|
| 61 |
print("π Agent shutdown")
|
|
|
|
| 37 |
|
| 38 |
# Display event
|
| 39 |
if event.event_type == "assistant_message":
|
| 40 |
+
content = event.data.get("content", "") if event.data else ""
|
|
|
|
| 41 |
if content:
|
| 42 |
print(f"\nπ€ Assistant: {content}")
|
| 43 |
+
elif event.event_type == "tool_call":
|
| 44 |
+
tool_name = event.data.get("tool", "") if event.data else ""
|
| 45 |
+
if tool_name:
|
| 46 |
+
print(f"π§ Calling tool: {tool_name}")
|
| 47 |
elif event.event_type == "tool_output":
|
| 48 |
+
output = event.data.get("output", "") if event.data else ""
|
| 49 |
+
success = event.data.get("success", False) if event.data else False
|
| 50 |
+
status = "β
" if success else "β"
|
| 51 |
+
if output:
|
| 52 |
+
print(f"{status} Tool output: {output}")
|
|
|
|
| 53 |
elif event.event_type == "turn_complete":
|
| 54 |
print("β
Turn complete\n")
|
| 55 |
turn_complete_event.set()
|
| 56 |
elif event.event_type == "error":
|
| 57 |
+
error = event.data.get("error", "Unknown error") if event.data else "Unknown error"
|
| 58 |
+
print(f"β Error: {error}")
|
|
|
|
|
|
|
| 59 |
turn_complete_event.set()
|
| 60 |
elif event.event_type == "shutdown":
|
| 61 |
print("π Agent shutdown")
|