akseljoonas HF Staff commited on
Commit
6b80d78
Β·
1 Parent(s): 0c252e4

mcp integration done, tools done, agent working

Browse files
Files changed (2) hide show
  1. agent/core/agent_loop.py +16 -9
  2. 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
- # Record assistant message if there's content
52
- if content:
53
- assistant_msg = Message(role="assistant", content=content)
54
- session.context_manager.add_message(assistant_msg)
 
 
 
 
 
 
 
 
 
 
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.user_input(session, text)
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
- msg = event.data.get("message", {})
41
- content = msg.get("content", "")
42
  if content:
43
  print(f"\nπŸ€– Assistant: {content}")
 
 
 
 
44
  elif event.event_type == "tool_output":
45
- msg = event.data.get("message", {})
46
- content = msg.get("content", "")
47
- if content:
48
- print(
49
- f"πŸ”§ Tool: {content[:200]}{'...' if len(content) > 200 else ''}"
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
- import traceback
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")