solana-agent 31.2.5__tar.gz → 31.2.6__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 (47) hide show
  1. {solana_agent-31.2.5 → solana_agent-31.2.6}/PKG-INFO +2 -2
  2. {solana_agent-31.2.5 → solana_agent-31.2.6}/pyproject.toml +2 -2
  3. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/domains/routing.py +10 -4
  4. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/routing.py +17 -22
  5. {solana_agent-31.2.5 → solana_agent-31.2.6}/LICENSE +0 -0
  6. {solana_agent-31.2.5 → solana_agent-31.2.6}/README.md +0 -0
  7. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/__init__.py +0 -0
  8. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/__init__.py +0 -0
  9. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/ffmpeg_transcoder.py +0 -0
  10. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/mongodb_adapter.py +0 -0
  11. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/openai_adapter.py +0 -0
  12. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/openai_realtime_ws.py +0 -0
  13. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/adapters/pinecone_adapter.py +0 -0
  14. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/cli.py +0 -0
  15. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/client/__init__.py +0 -0
  16. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/client/solana_agent.py +0 -0
  17. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/domains/__init__.py +0 -0
  18. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/domains/agent.py +0 -0
  19. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/factories/__init__.py +0 -0
  20. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/factories/agent_factory.py +0 -0
  21. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/guardrails/pii.py +0 -0
  22. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/__init__.py +0 -0
  23. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/client/client.py +0 -0
  24. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/guardrails/guardrails.py +0 -0
  25. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/plugins/plugins.py +0 -0
  26. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/audio.py +0 -0
  27. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/data_storage.py +0 -0
  28. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/llm.py +0 -0
  29. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/memory.py +0 -0
  30. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/realtime.py +0 -0
  31. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/providers/vector_storage.py +0 -0
  32. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/services/agent.py +0 -0
  33. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/services/knowledge_base.py +0 -0
  34. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/services/query.py +0 -0
  35. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/interfaces/services/routing.py +0 -0
  36. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/plugins/__init__.py +0 -0
  37. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/plugins/manager.py +0 -0
  38. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/plugins/registry.py +0 -0
  39. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/plugins/tools/__init__.py +0 -0
  40. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/plugins/tools/auto_tool.py +0 -0
  41. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/repositories/__init__.py +0 -0
  42. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/repositories/memory.py +0 -0
  43. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/__init__.py +0 -0
  44. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/agent.py +0 -0
  45. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/knowledge_base.py +0 -0
  46. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/query.py +0 -0
  47. {solana_agent-31.2.5 → solana_agent-31.2.6}/solana_agent/services/realtime.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: solana-agent
3
- Version: 31.2.5
3
+ Version: 31.2.6
4
4
  Summary: AI Agents for Solana
5
5
  License: MIT
6
6
  Keywords: solana,solana ai,solana agent,ai,ai agent,ai agents
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
17
  Requires-Dist: instructor (==1.11.3)
18
- Requires-Dist: llama-index-core (==0.14.0)
18
+ Requires-Dist: llama-index-core (==0.14.1)
19
19
  Requires-Dist: llama-index-embeddings-openai (==0.5.1)
20
20
  Requires-Dist: logfire (==4.7.0)
21
21
  Requires-Dist: openai (==1.107.2)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "solana-agent"
3
- version = "31.2.5"
3
+ version = "31.2.6"
4
4
  description = "AI Agents for Solana"
5
5
  authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
6
6
  license = "MIT"
@@ -30,7 +30,7 @@ pymongo = "4.15.0"
30
30
  zep-cloud = "3.4.3"
31
31
  instructor = "1.11.3"
32
32
  pinecone = { version = "7.3.0", extras = ["asyncio"] }
33
- llama-index-core = "0.14.0"
33
+ llama-index-core = "0.14.1"
34
34
  llama-index-embeddings-openai = "0.5.1"
35
35
  pypdf = "6.0.0"
36
36
  scrubadub = "2.0.1"
@@ -10,9 +10,15 @@ class QueryAnalysis(BaseModel):
10
10
  description="Name of the primary agent that should handle this query (must be one of the available agent names)",
11
11
  )
12
12
  secondary_agents: List[str] = Field(
13
- ...,
13
+ default_factory=list,
14
14
  description="Names of secondary agents that might be helpful (must be from the available agent names)",
15
15
  )
16
- complexity_level: int = Field(..., description="Complexity level (1-5)")
17
- topics: List[str] = Field(..., description="Key topics in the query")
18
- confidence: float = Field(..., description="Confidence in the analysis")
16
+ complexity_level: int = Field(
17
+ default=1, description="Complexity level (1-5)", ge=1, le=5
18
+ )
19
+ topics: List[str] = Field(
20
+ default_factory=list, description="Key topics in the query"
21
+ )
22
+ confidence: float = Field(
23
+ default=0.5, description="Confidence in the analysis", ge=0.0, le=1.0
24
+ )
@@ -1,11 +1,3 @@
1
- """
2
- Routing service implementation.
3
-
4
- This service manages query routing to appropriate agents using an LLM-based
5
- analysis. It defaults to a small, low-cost model for routing to minimize
6
- overhead while maintaining quality.
7
- """
8
-
9
1
  import logging
10
2
  from typing import Dict, List, Optional, Any
11
3
  from solana_agent.interfaces.services.routing import (
@@ -81,17 +73,18 @@ class RoutingService(RoutingServiceInterface):
81
73
 
82
74
  USER QUERY: {query}
83
75
 
76
+ ROUTING RULES:
77
+ - Match the user query to the agent whose specialization best fits the user's intent
78
+ - Return the EXACT agent name that matches best
79
+
84
80
  INSTRUCTIONS:
85
- - Look at the user query and match it to the most appropriate agent from the list above
86
- - If the user mentions a specific topic or need that matches an agent's specialization, choose that agent
87
- - Return the EXACT agent name (not the specialization description)
88
-
89
- Please determine:
90
- 1. primary_agent: The exact name of the best matching agent (e.g., "onboarding", "support")
91
- 2. secondary_agents: Names of other agents that might help (empty list if none)
92
- 3. complexity_level: 1-5 (5 being most complex)
93
- 4. topics: Key topics mentioned
94
- 5. confidence: 0.0-1.0 (how confident you are in this routing decision)
81
+ - primary_agent: The exact name of the best matching agent (e.g., "onboarding", "event_feedback")
82
+ - secondary_agents: Other agents that might help (usually empty)
83
+ - complexity_level: 1-5 (5 being most complex)
84
+ - topics: Key topics mentioned
85
+ - confidence: 0.0-1.0 (how confident you are in this routing decision)
86
+
87
+ For the query "{query}", which agent should handle it?
95
88
  """
96
89
 
97
90
  try:
@@ -114,12 +107,14 @@ class RoutingService(RoutingServiceInterface):
114
107
  "confidence": analysis.confidence,
115
108
  }
116
109
  except Exception as e:
117
- logger.error(f"Error analyzing query: {e}") # Use logger.error
110
+ logger.error(f"Error analyzing query: {e}")
111
+ logger.debug(f"Query that failed: {query}")
112
+ logger.debug(f"Available agents: {list(agents.keys())}")
118
113
  # Return default analysis on error
114
+ first_agent = list(agents.keys())[0] if agents else "general"
115
+ logger.debug(f"Defaulting to first agent: {first_agent}")
119
116
  return {
120
- "primary_specialization": list(agents.keys())[0]
121
- if agents
122
- else "general",
117
+ "primary_specialization": first_agent,
123
118
  "secondary_specializations": [],
124
119
  "complexity_level": 1,
125
120
  "topics": [],
File without changes
File without changes