XanderJC commited on
Commit
25fccaa
·
1 Parent(s): ed23622
src/proxy_lite/logger.py CHANGED
@@ -1,7 +1,6 @@
1
  import asyncio
2
  import logging
3
  import sys
4
- import time # Added for time.sleep
5
  from typing import Literal
6
  from uuid import uuid4
7
 
@@ -9,29 +8,18 @@ from rich.logging import RichHandler
9
 
10
 
11
  class StructuredLogger(logging.Logger):
12
- def _stream_message_sync(self, message: str) -> None:
13
- """Synchronous version of stream message to run in separate thread."""
14
  try:
15
  sys.stdout.write("\r") # Overwrite current line
16
  for char in message:
17
  sys.stdout.write(char)
18
  sys.stdout.flush()
19
- time.sleep(0.002) # Using regular sleep in thread
20
  sys.stdout.write("\n")
21
  except Exception:
22
  pass
23
 
24
- async def stream_message(self, message: str) -> None:
25
- """Streams the message character by character in a separate thread."""
26
- return await asyncio.to_thread(self._stream_message_sync, message)
27
-
28
- # def info_stream(self, msg: str) -> Coroutine[Any, Any, None]:
29
- # """Special method for streaming messages that returns a coroutine."""
30
- # # Log the message normally first
31
- # # self.info(msg)
32
- # # Return the streaming coroutine
33
- # return self.stream_message(msg)
34
-
35
  def _log(
36
  self,
37
  level,
@@ -102,5 +90,3 @@ logging.setLoggerClass(StructuredLogger)
102
 
103
  # Initialize logger
104
  logger = create_logger(__name__, level="INFO")
105
-
106
- stream_logger = create_logger(__name__, level="INFO", detailed_name=False)
 
1
  import asyncio
2
  import logging
3
  import sys
 
4
  from typing import Literal
5
  from uuid import uuid4
6
 
 
8
 
9
 
10
  class StructuredLogger(logging.Logger):
11
+ async def stream_message(self, message: str) -> None:
12
+ """Streams the message character by character asynchronously."""
13
  try:
14
  sys.stdout.write("\r") # Overwrite current line
15
  for char in message:
16
  sys.stdout.write(char)
17
  sys.stdout.flush()
18
+ await asyncio.sleep(0.002)
19
  sys.stdout.write("\n")
20
  except Exception:
21
  pass
22
 
 
 
 
 
 
 
 
 
 
 
 
23
  def _log(
24
  self,
25
  level,
 
90
 
91
  # Initialize logger
92
  logger = create_logger(__name__, level="INFO")
 
 
src/proxy_lite/solvers/simple_solver.py CHANGED
@@ -2,7 +2,7 @@
2
  import json
3
  import re
4
  from functools import cached_property
5
- from typing import Any, Coroutine, Literal, Optional
6
 
7
  from proxy_lite.agents import AgentConfigTypes, Agents, BaseAgent
8
  from proxy_lite.environments.environment_base import Action, Observation
@@ -27,7 +27,6 @@ class SimpleSolverConfig(BaseSolverConfig):
27
  class SimpleSolver(BaseSolver):
28
  task: Optional[str] = None
29
  complete: bool = False
30
- coroutines: list[Coroutine[Any, Any, None]] = []
31
 
32
  @cached_property
33
  def tools(self) -> list[Tool]:
@@ -84,7 +83,7 @@ class SimpleSolver(BaseSolver):
84
 
85
  self.logger.info("🌐 [bold blue]Observation:[/]")
86
  # await self.logger.stream_message(observation_content)
87
- self.logger._stream_message_sync(observation_content)
88
 
89
  # Extract text between thinking tags if present
90
  thinking_match = re.search(r"<thinking>(.*?)</thinking>", text_content, re.DOTALL)
@@ -92,7 +91,7 @@ class SimpleSolver(BaseSolver):
92
 
93
  self.logger.info("🧠 [bold purple]Thinking:[/]")
94
  # await self.logger.stream_message(thinking_content)
95
- self.logger._stream_message_sync(thinking_content)
96
 
97
  return Action(tool_calls=message.tool_calls, text=text_content)
98
 
 
2
  import json
3
  import re
4
  from functools import cached_property
5
+ from typing import Literal, Optional
6
 
7
  from proxy_lite.agents import AgentConfigTypes, Agents, BaseAgent
8
  from proxy_lite.environments.environment_base import Action, Observation
 
27
  class SimpleSolver(BaseSolver):
28
  task: Optional[str] = None
29
  complete: bool = False
 
30
 
31
  @cached_property
32
  def tools(self) -> list[Tool]:
 
83
 
84
  self.logger.info("🌐 [bold blue]Observation:[/]")
85
  # await self.logger.stream_message(observation_content)
86
+ await self.logger.stream_message(observation_content)
87
 
88
  # Extract text between thinking tags if present
89
  thinking_match = re.search(r"<thinking>(.*?)</thinking>", text_content, re.DOTALL)
 
91
 
92
  self.logger.info("🧠 [bold purple]Thinking:[/]")
93
  # await self.logger.stream_message(thinking_content)
94
+ await self.logger.stream_message(thinking_content)
95
 
96
  return Action(tool_calls=message.tool_calls, text=text_content)
97