solana-agent 22.0.2__tar.gz → 22.0.3__tar.gz

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.
Files changed (35) hide show
  1. {solana_agent-22.0.2 → solana_agent-22.0.3}/PKG-INFO +1 -1
  2. {solana_agent-22.0.2 → solana_agent-22.0.3}/pyproject.toml +1 -1
  3. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/services/agent.py +37 -7
  4. {solana_agent-22.0.2 → solana_agent-22.0.3}/LICENSE +0 -0
  5. {solana_agent-22.0.2 → solana_agent-22.0.3}/README.md +0 -0
  6. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/__init__.py +0 -0
  7. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/adapters/__init__.py +0 -0
  8. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/adapters/llm_adapter.py +0 -0
  9. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/adapters/mongodb_adapter.py +0 -0
  10. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/client/__init__.py +0 -0
  11. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/client/solana_agent.py +0 -0
  12. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/domains/__init__.py +0 -0
  13. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/domains/agent.py +0 -0
  14. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/domains/routing.py +0 -0
  15. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/factories/__init__.py +0 -0
  16. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/factories/agent_factory.py +0 -0
  17. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/__init__.py +0 -0
  18. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/client/client.py +0 -0
  19. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/plugins/plugins.py +0 -0
  20. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/providers/data_storage.py +0 -0
  21. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/providers/llm.py +0 -0
  22. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/providers/memory.py +0 -0
  23. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/services/agent.py +0 -0
  24. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/services/query.py +0 -0
  25. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/interfaces/services/routing.py +0 -0
  26. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/plugins/__init__.py +0 -0
  27. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/plugins/manager.py +0 -0
  28. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/plugins/registry.py +0 -0
  29. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/plugins/tools/__init__.py +0 -0
  30. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/plugins/tools/auto_tool.py +0 -0
  31. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/repositories/__init__.py +0 -0
  32. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/repositories/memory.py +0 -0
  33. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/services/__init__.py +0 -0
  34. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/services/query.py +0 -0
  35. {solana_agent-22.0.2 → solana_agent-22.0.3}/solana_agent/services/routing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: solana-agent
3
- Version: 22.0.2
3
+ Version: 22.0.3
4
4
  Summary: Agentic IQ
5
5
  License: MIT
6
6
  Keywords: ai,openai,ai agents,agi
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "solana-agent"
3
- version = "22.0.2"
3
+ version = "22.0.3"
4
4
  description = "Agentic IQ"
5
5
  authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
6
6
  license = "MIT"
@@ -276,7 +276,7 @@ class AgentService(AgentServiceInterface):
276
276
  tool_response += processed_chunk
277
277
 
278
278
  # Add to our complete text record and full audio buffer
279
- tool_response = self._remove_markdown(
279
+ tool_response = self._clean_for_audio(
280
280
  tool_response)
281
281
  complete_text_response += tool_response
282
282
  full_response_buffer += tool_response
@@ -318,8 +318,8 @@ class AgentService(AgentServiceInterface):
318
318
 
319
319
  # For audio output, now process the complete response
320
320
  if output_format == "audio" and full_response_buffer:
321
- # Clean markdown before TTS
322
- full_response_buffer = self._remove_markdown(
321
+ # Clean text before TTS
322
+ full_response_buffer = self._clean_for_audio(
323
323
  full_response_buffer)
324
324
 
325
325
  # Process the entire response with TTS
@@ -427,14 +427,14 @@ class AgentService(AgentServiceInterface):
427
427
  - Use exact tool names as shown in AVAILABLE TOOLS
428
428
  """
429
429
 
430
- def _remove_markdown(self, text: str) -> str:
431
- """Remove Markdown formatting and links from text.
430
+ def _clean_for_audio(self, text: str) -> str:
431
+ """Remove Markdown formatting, emojis, and non-pronounceable characters from text.
432
432
 
433
433
  Args:
434
- text: Input text with potential Markdown formatting
434
+ text: Input text with potential Markdown formatting and special characters
435
435
 
436
436
  Returns:
437
- Clean text without Markdown formatting
437
+ Clean text without Markdown, emojis, and special characters
438
438
  """
439
439
  import re
440
440
 
@@ -469,4 +469,34 @@ class AgentService(AgentServiceInterface):
469
469
  # Remove multiple consecutive newlines (keep just one)
470
470
  text = re.sub(r'\n{3,}', '\n\n', text)
471
471
 
472
+ # Remove emojis and other non-pronounceable characters
473
+ # Common emoji Unicode ranges
474
+ emoji_pattern = re.compile(
475
+ "["
476
+ "\U0001F600-\U0001F64F" # emoticons
477
+ "\U0001F300-\U0001F5FF" # symbols & pictographs
478
+ "\U0001F680-\U0001F6FF" # transport & map symbols
479
+ "\U0001F700-\U0001F77F" # alchemical symbols
480
+ "\U0001F780-\U0001F7FF" # Geometric Shapes
481
+ "\U0001F800-\U0001F8FF" # Supplemental Arrows-C
482
+ "\U0001F900-\U0001F9FF" # Supplemental Symbols and Pictographs
483
+ "\U0001FA00-\U0001FA6F" # Chess Symbols
484
+ "\U0001FA70-\U0001FAFF" # Symbols and Pictographs Extended-A
485
+ "\U00002702-\U000027B0" # Dingbats
486
+ "\U000024C2-\U0000257F" # Enclosed characters
487
+ "\U00002600-\U000026FF" # Miscellaneous Symbols
488
+ "\U00002700-\U000027BF" # Dingbats
489
+ "\U0000FE00-\U0000FE0F" # Variation Selectors
490
+ "\U0001F1E0-\U0001F1FF" # Flags (iOS)
491
+ "]+",
492
+ flags=re.UNICODE
493
+ )
494
+ text = emoji_pattern.sub(r' ', text)
495
+
496
+ # Replace special characters that can cause issues with TTS
497
+ text = re.sub(r'[^\w\s\.\,\;\:\?\!\'\"\-\(\)]', ' ', text)
498
+
499
+ # Replace multiple spaces with a single space
500
+ text = re.sub(r'\s+', ' ', text)
501
+
472
502
  return text.strip()
File without changes
File without changes