solana-agent 27.1.0__py3-none-any.whl → 27.3.0__py3-none-any.whl
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.
- solana_agent/adapters/{llm_adapter.py → openai_adapter.py} +59 -5
- solana_agent/adapters/pinecone_adapter.py +496 -0
- solana_agent/client/solana_agent.py +145 -1
- solana_agent/factories/agent_factory.py +74 -8
- solana_agent/interfaces/client/client.py +75 -5
- solana_agent/interfaces/providers/llm.py +20 -0
- solana_agent/interfaces/providers/vector_storage.py +59 -0
- solana_agent/interfaces/services/knowledge_base.py +86 -0
- solana_agent/services/knowledge_base.py +771 -0
- solana_agent/services/query.py +33 -2
- {solana_agent-27.1.0.dist-info → solana_agent-27.3.0.dist-info}/METADATA +153 -72
- {solana_agent-27.1.0.dist-info → solana_agent-27.3.0.dist-info}/RECORD +14 -10
- {solana_agent-27.1.0.dist-info → solana_agent-27.3.0.dist-info}/LICENSE +0 -0
- {solana_agent-27.1.0.dist-info → solana_agent-27.3.0.dist-info}/WHEEL +0 -0
solana_agent/services/query.py
CHANGED
@@ -11,6 +11,7 @@ from solana_agent.interfaces.services.query import QueryService as QueryServiceI
|
|
11
11
|
from solana_agent.interfaces.services.routing import RoutingService as RoutingServiceInterface
|
12
12
|
from solana_agent.services.agent import AgentService
|
13
13
|
from solana_agent.services.routing import RoutingService
|
14
|
+
from solana_agent.services.knowledge_base import KnowledgeBaseService
|
14
15
|
from solana_agent.interfaces.providers.memory import MemoryProvider
|
15
16
|
|
16
17
|
|
@@ -22,6 +23,8 @@ class QueryService(QueryServiceInterface):
|
|
22
23
|
agent_service: AgentService,
|
23
24
|
routing_service: RoutingService,
|
24
25
|
memory_provider: Optional[MemoryProvider] = None,
|
26
|
+
knowledge_base: Optional[KnowledgeBaseService] = None,
|
27
|
+
kb_results_count: int = 3,
|
25
28
|
):
|
26
29
|
"""Initialize the query service.
|
27
30
|
|
@@ -33,6 +36,8 @@ class QueryService(QueryServiceInterface):
|
|
33
36
|
self.agent_service = agent_service
|
34
37
|
self.routing_service = routing_service
|
35
38
|
self.memory_provider = memory_provider
|
39
|
+
self.knowledge_base = knowledge_base
|
40
|
+
self.kb_results_count = kb_results_count
|
36
41
|
|
37
42
|
async def process(
|
38
43
|
self,
|
@@ -99,12 +104,38 @@ class QueryService(QueryServiceInterface):
|
|
99
104
|
if self.memory_provider:
|
100
105
|
memory_context = await self.memory_provider.retrieve(user_id)
|
101
106
|
|
107
|
+
# Retrieve relevant knowledge from the KB
|
108
|
+
kb_context = ""
|
109
|
+
if self.knowledge_base:
|
110
|
+
try:
|
111
|
+
kb_results = await self.knowledge_base.query(
|
112
|
+
query_text=user_text,
|
113
|
+
top_k=self.kb_results_count,
|
114
|
+
include_content=True,
|
115
|
+
include_metadata=False
|
116
|
+
)
|
117
|
+
|
118
|
+
if kb_results:
|
119
|
+
kb_context = "**KNOWLEDGE BASE (CRITICAL: MAKE THIS INFORMATION THE TOP PRIORITY):**\n"
|
120
|
+
for i, result in enumerate(kb_results, 1):
|
121
|
+
content = result.get("content", "").strip()
|
122
|
+
kb_context += f"[{i}] {content}\n\n"
|
123
|
+
except Exception as e:
|
124
|
+
print(f"Error retrieving knowledge: {e}")
|
125
|
+
|
102
126
|
# Route query to appropriate agent
|
103
127
|
if router:
|
104
128
|
agent_name = await router.route_query(user_text)
|
105
129
|
else:
|
106
130
|
agent_name = await self.routing_service.route_query(user_text)
|
107
131
|
|
132
|
+
# Combine context from memory and knowledge base
|
133
|
+
combined_context = ""
|
134
|
+
if memory_context:
|
135
|
+
combined_context += f"CONVERSATION HISTORY:\n{memory_context}\n\n"
|
136
|
+
if kb_context:
|
137
|
+
combined_context += f"{kb_context}\n"
|
138
|
+
|
108
139
|
print(f"Routed to agent: {agent_name}")
|
109
140
|
|
110
141
|
# Generate response
|
@@ -113,7 +144,7 @@ class QueryService(QueryServiceInterface):
|
|
113
144
|
agent_name=agent_name,
|
114
145
|
user_id=user_id,
|
115
146
|
query=user_text,
|
116
|
-
memory_context=
|
147
|
+
memory_context=combined_context,
|
117
148
|
output_format="audio",
|
118
149
|
audio_voice=audio_voice,
|
119
150
|
audio_output_format=audio_output_format,
|
@@ -134,7 +165,7 @@ class QueryService(QueryServiceInterface):
|
|
134
165
|
agent_name=agent_name,
|
135
166
|
user_id=user_id,
|
136
167
|
query=user_text,
|
137
|
-
memory_context=
|
168
|
+
memory_context=combined_context,
|
138
169
|
output_format="text",
|
139
170
|
prompt=prompt,
|
140
171
|
):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: solana-agent
|
3
|
-
Version: 27.
|
3
|
+
Version: 27.3.0
|
4
4
|
Summary: Agentic IQ
|
5
5
|
License: MIT
|
6
6
|
Keywords: ai,openai,ai agents,agi
|
@@ -15,9 +15,13 @@ 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.7.9,<2.0.0)
|
18
|
-
Requires-Dist:
|
18
|
+
Requires-Dist: llama-index-core (>=0.12.30,<0.13.0)
|
19
|
+
Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
|
20
|
+
Requires-Dist: openai (>=1.74.0,<2.0.0)
|
21
|
+
Requires-Dist: pinecone (>=6.0.2,<7.0.0)
|
19
22
|
Requires-Dist: pydantic (>=2.11.3,<3.0.0)
|
20
23
|
Requires-Dist: pymongo (>=4.12.0,<5.0.0)
|
24
|
+
Requires-Dist: pypdf (>=5.4.0,<6.0.0)
|
21
25
|
Requires-Dist: zep-cloud (>=2.10.1,<3.0.0)
|
22
26
|
Project-URL: Documentation, https://docs.solana-agent.com
|
23
27
|
Project-URL: Repository, https://github.com/truemagic-coder/solana-agent
|
@@ -51,6 +55,7 @@ Build your AI business in three lines of code!
|
|
51
55
|
* Business Alignment
|
52
56
|
* Extensible Tooling
|
53
57
|
* Simple Business Definition
|
58
|
+
* Knowledge Base with PDF support
|
54
59
|
* Tested & Secure
|
55
60
|
* Built in Python
|
56
61
|
* Powers [CometHeart](https://cometheart.com) & [WalletBubbles](https://walletbubbles.com)
|
@@ -70,6 +75,7 @@ Build your AI business in three lines of code!
|
|
70
75
|
* Powerful tool integration using standard Python packages and/or inline tools
|
71
76
|
* Assigned tools are utilized by agents automatically and effectively
|
72
77
|
* Simple business definition using JSON
|
78
|
+
* Integrated Knowledge Base with semantic search and automatic PDF chunking
|
73
79
|
|
74
80
|
## Stack
|
75
81
|
|
@@ -79,22 +85,17 @@ Build your AI business in three lines of code!
|
|
79
85
|
* [OpenAI](https://openai.com), [Google](https://ai.google.dev), [xAI](https://x.ai) - LLM Providers
|
80
86
|
* [MongoDB](https://mongodb.com) - Conversational History (optional)
|
81
87
|
* [Zep Cloud](https://getzep.com) - Conversational Memory (optional)
|
88
|
+
* [Pinecone](https://pinecone.io) - Knowledge Base (optional)
|
82
89
|
|
83
90
|
### LLMs
|
84
91
|
|
85
|
-
* [gpt-
|
86
|
-
* [
|
87
|
-
* [
|
88
|
-
* [tts-1](https://platform.openai.com/docs/models/tts-1)
|
89
|
-
* [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe)
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
Gemini makes the routing about 2x faster.
|
94
|
-
|
95
|
-
Grok is a fast reasoning model and makes the answers and conversation much better.
|
96
|
-
|
97
|
-
OpenAI is required while Gemini and Grok are optional.
|
92
|
+
* [gpt-4.1-mini](https://platform.openai.com/docs/models/gpt-4.1-mini) (agent)
|
93
|
+
* [gpt-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) (router)
|
94
|
+
* [text-embedding-3-large](https://platform.openai.com/docs/models/text-embedding-3-large) or [text-embedding-3-small](https://platform.openai.com/docs/models/text-embedding-3-small) (embedding)
|
95
|
+
* [tts-1](https://platform.openai.com/docs/models/tts-1) (audio TTS)
|
96
|
+
* [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe) (audio transcription)
|
97
|
+
* [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash) (optional)
|
98
|
+
* [grok-3-mini-fast-beta](https://docs.x.ai/docs/models#models-and-pricing) (optional)
|
98
99
|
|
99
100
|
## Installation
|
100
101
|
|
@@ -155,12 +156,6 @@ Keep this in mind while designing your agentic systems using Solana Agent.
|
|
155
156
|
from solana_agent import SolanaAgent
|
156
157
|
|
157
158
|
config = {
|
158
|
-
"grok": {
|
159
|
-
"api_key": "your-grok-api-key",
|
160
|
-
},
|
161
|
-
"gemini": {
|
162
|
-
"api_key": "your-gemini-api-key",
|
163
|
-
},
|
164
159
|
"openai": {
|
165
160
|
"api_key": "your-openai-api-key",
|
166
161
|
},
|
@@ -190,12 +185,6 @@ async for response in solana_agent.process("user123", "What are the latest AI de
|
|
190
185
|
from solana_agent import SolanaAgent
|
191
186
|
|
192
187
|
config = {
|
193
|
-
"grok": {
|
194
|
-
"api_key": "your-grok-api-key",
|
195
|
-
},
|
196
|
-
"gemini": {
|
197
|
-
"api_key": "your-gemini-api-key",
|
198
|
-
},
|
199
188
|
"openai": {
|
200
189
|
"api_key": "your-openai-api-key",
|
201
190
|
},
|
@@ -215,7 +204,7 @@ config = {
|
|
215
204
|
|
216
205
|
solana_agent = SolanaAgent(config=config)
|
217
206
|
|
218
|
-
audio_content = audio_file.read()
|
207
|
+
audio_content = await audio_file.read()
|
219
208
|
|
220
209
|
async for response in solana_agent.process("user123", audio_content, output_format="audio", audio_voice="nova", audio_input_format="webm", audio_output_format="aac"):
|
221
210
|
print(response, end="")
|
@@ -227,12 +216,6 @@ async for response in solana_agent.process("user123", audio_content, output_form
|
|
227
216
|
from solana_agent import SolanaAgent
|
228
217
|
|
229
218
|
config = {
|
230
|
-
"grok": {
|
231
|
-
"api_key": "your-grok-api-key",
|
232
|
-
},
|
233
|
-
"gemini": {
|
234
|
-
"api_key": "your-gemini-api-key",
|
235
|
-
},
|
236
219
|
"openai": {
|
237
220
|
"api_key": "your-openai-api-key",
|
238
221
|
},
|
@@ -262,12 +245,6 @@ async for response in solana_agent.process("user123", "What is the latest news o
|
|
262
245
|
from solana_agent import SolanaAgent
|
263
246
|
|
264
247
|
config = {
|
265
|
-
"grok": {
|
266
|
-
"api_key": "your-grok-api-key",
|
267
|
-
},
|
268
|
-
"gemini": {
|
269
|
-
"api_key": "your-gemini-api-key",
|
270
|
-
},
|
271
248
|
"openai": {
|
272
249
|
"api_key": "your-openai-api-key",
|
273
250
|
},
|
@@ -287,7 +264,7 @@ config = {
|
|
287
264
|
|
288
265
|
solana_agent = SolanaAgent(config=config)
|
289
266
|
|
290
|
-
audio_content = audio_file.read()
|
267
|
+
audio_content = await audio_file.read()
|
291
268
|
|
292
269
|
async for response in solana_agent.process("user123", audio_content, audio_input_format="aac"):
|
293
270
|
print(response, end="")
|
@@ -334,6 +311,138 @@ config = {
|
|
334
311
|
}
|
335
312
|
```
|
336
313
|
|
314
|
+
### Gemini
|
315
|
+
|
316
|
+
This allows Gemini to replace OpenAI for agent and router.
|
317
|
+
|
318
|
+
```python
|
319
|
+
config = {
|
320
|
+
"gemini": {
|
321
|
+
"api_key": "your-gemini-api-key",
|
322
|
+
},
|
323
|
+
}
|
324
|
+
```
|
325
|
+
|
326
|
+
### Grok
|
327
|
+
|
328
|
+
This allows Grok to replace OpenAI (or Gemini) for agent.
|
329
|
+
|
330
|
+
```python
|
331
|
+
config = {
|
332
|
+
"grok": {
|
333
|
+
"api_key": "your-grok-api-key",
|
334
|
+
},
|
335
|
+
}
|
336
|
+
```
|
337
|
+
|
338
|
+
### Knowledge Base
|
339
|
+
|
340
|
+
The Knowledge Base (KB) is meant to store text values and/or small PDFs.
|
341
|
+
|
342
|
+
```python
|
343
|
+
config = {
|
344
|
+
"knowledge_base": {
|
345
|
+
"pinecone": {
|
346
|
+
"api_key": "your-pinecone-api-key",
|
347
|
+
"index_name": "your-pinecone-index-name",
|
348
|
+
}
|
349
|
+
},
|
350
|
+
"mongo": {
|
351
|
+
"connection_string": "your-mongo-connection-string",
|
352
|
+
"database": "your-database-name"
|
353
|
+
},
|
354
|
+
}
|
355
|
+
```
|
356
|
+
|
357
|
+
#### Example for KB (text)
|
358
|
+
|
359
|
+
```python
|
360
|
+
from solana_agent import SolanaAgent
|
361
|
+
|
362
|
+
config = {
|
363
|
+
"openai": {
|
364
|
+
"api_key": "your-openai-api-key",
|
365
|
+
},
|
366
|
+
"knowledge_base": {
|
367
|
+
"pinecone": {
|
368
|
+
"api_key": "your-pinecone-api-key",
|
369
|
+
"index_name": "your-pinecone-index-name",
|
370
|
+
}
|
371
|
+
},
|
372
|
+
"mongo": {
|
373
|
+
"connection_string": "your-mongo-connection-string",
|
374
|
+
"database": "your-database-name"
|
375
|
+
},
|
376
|
+
"agents": [
|
377
|
+
{
|
378
|
+
"name": "kb_expert",
|
379
|
+
"instructions": "You answer questions based on the provided knowledge base documents.",
|
380
|
+
"specialization": "Company Knowledge",
|
381
|
+
}
|
382
|
+
]
|
383
|
+
}
|
384
|
+
|
385
|
+
solana_agent = SolanaAgent(config=config)
|
386
|
+
|
387
|
+
doc_text = "Solana Agent is a Python framework for building multi-agent AI systems."
|
388
|
+
doc_metadata = {
|
389
|
+
"source": "internal_docs",
|
390
|
+
"version": "1.0",
|
391
|
+
"tags": ["framework", "python", "ai"]
|
392
|
+
}
|
393
|
+
await solana_agent.kb_add_document(text=doc_text, metadata=doc_metadata)
|
394
|
+
|
395
|
+
async for response in solana_agent.process("user123", "What is Solana Agent?"):
|
396
|
+
print(response, end="")
|
397
|
+
```
|
398
|
+
|
399
|
+
#### Example for KB (pdf)
|
400
|
+
|
401
|
+
```python
|
402
|
+
from solana_agent import SolanaAgent
|
403
|
+
|
404
|
+
config = {
|
405
|
+
"openai": {
|
406
|
+
"api_key": "your-openai-api-key",
|
407
|
+
},
|
408
|
+
"knowledge_base": {
|
409
|
+
"pinecone": {
|
410
|
+
"api_key": "your-pinecone-api-key",
|
411
|
+
"index_name": "your-pinecone-index-name",
|
412
|
+
}
|
413
|
+
},
|
414
|
+
"mongo": {
|
415
|
+
"connection_string": "your-mongo-connection-string",
|
416
|
+
"database": "your-database-name"
|
417
|
+
},
|
418
|
+
"agents": [
|
419
|
+
{
|
420
|
+
"name": "kb_expert",
|
421
|
+
"instructions": "You answer questions based on the provided knowledge base documents.",
|
422
|
+
"specialization": "Company Knowledge",
|
423
|
+
}
|
424
|
+
]
|
425
|
+
}
|
426
|
+
|
427
|
+
solana_agent = SolanaAgent(config=config)
|
428
|
+
|
429
|
+
pdf_bytes = await pdf_file.read()
|
430
|
+
|
431
|
+
pdf_metadata = {
|
432
|
+
"source": "annual_report_2024.pdf",
|
433
|
+
"year": 2024,
|
434
|
+
"tags": ["finance", "report"]
|
435
|
+
}
|
436
|
+
|
437
|
+
await solana_agent.kb_add_pdf_document(
|
438
|
+
pdf_data=pdf_bytes,
|
439
|
+
metadata=pdf_metadata,
|
440
|
+
)
|
441
|
+
|
442
|
+
async for response in solana_agent.process("user123", "Summarize the annual report for 2024."):
|
443
|
+
print(response, end="")
|
444
|
+
```
|
445
|
+
|
337
446
|
## Tools
|
338
447
|
|
339
448
|
Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
@@ -351,12 +460,6 @@ Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools
|
|
351
460
|
from solana_agent import SolanaAgent
|
352
461
|
|
353
462
|
config = {
|
354
|
-
"grok": {
|
355
|
-
"api_key": "your-grok-api-key",
|
356
|
-
},
|
357
|
-
"gemini": {
|
358
|
-
"api_key": "your-gemini-api-key",
|
359
|
-
},
|
360
463
|
"openai": {
|
361
464
|
"api_key": "your-openai-api-key",
|
362
465
|
},
|
@@ -439,12 +542,6 @@ class TestTool(Tool):
|
|
439
542
|
}
|
440
543
|
|
441
544
|
config = {
|
442
|
-
"grok": {
|
443
|
-
"api_key": "your-grok-api-key",
|
444
|
-
},
|
445
|
-
"gemini": {
|
446
|
-
"api_key": "your-gemini-api-key",
|
447
|
-
},
|
448
545
|
"openai": {
|
449
546
|
"api_key": "your-openai-api-key",
|
450
547
|
},
|
@@ -472,24 +569,14 @@ async for response in solana_agent.process("user123", "What are the latest AI de
|
|
472
569
|
print(response, end="")
|
473
570
|
```
|
474
571
|
|
475
|
-
##
|
476
|
-
|
477
|
-
Many use cases for Solana Agent require training your agents on your company data.
|
478
|
-
|
479
|
-
This can be accomplished via runtime prompt injection. Integrations that work well with this method are vector stores like Pinecone and FAQs.
|
572
|
+
## Advanced Customization
|
480
573
|
|
481
|
-
|
574
|
+
### Runtime Prompt Injection
|
482
575
|
|
483
576
|
```python
|
484
577
|
from solana_agent import SolanaAgent
|
485
578
|
|
486
579
|
config = {
|
487
|
-
"grok": {
|
488
|
-
"api_key": "your-grok-api-key",
|
489
|
-
},
|
490
|
-
"gemini": {
|
491
|
-
"api_key": "your-gemini-api-key",
|
492
|
-
},
|
493
580
|
"openai": {
|
494
581
|
"api_key": "your-openai-api-key",
|
495
582
|
},
|
@@ -508,7 +595,7 @@ async for response in solana_agent.process("user123", "How do replace the latch
|
|
508
595
|
print(response, end="")
|
509
596
|
```
|
510
597
|
|
511
|
-
|
598
|
+
### Custom Routing
|
512
599
|
|
513
600
|
In advanced cases like implementing a ticketing system on-top of Solana Agent - you can use your own router.
|
514
601
|
|
@@ -517,12 +604,6 @@ from solana_agent import SolanaAgent
|
|
517
604
|
from solana_agent.interfaces.services.routing import RoutingService as RoutingServiceInterface
|
518
605
|
|
519
606
|
config = {
|
520
|
-
"grok": {
|
521
|
-
"api_key": "your-grok-api-key",
|
522
|
-
},
|
523
|
-
"gemini": {
|
524
|
-
"api_key": "your-gemini-api-key",
|
525
|
-
},
|
526
607
|
"openai": {
|
527
608
|
"api_key": "your-openai-api-key",
|
528
609
|
},
|
@@ -1,21 +1,24 @@
|
|
1
1
|
solana_agent/__init__.py,sha256=ceYeUpjIitpln8YK1r0JVJU8mzG6cRPYu-HLny3d-Tw,887
|
2
2
|
solana_agent/adapters/__init__.py,sha256=tiEEuuy0NF3ngc_tGEcRTt71zVI58v3dYY9RvMrF2Cg,204
|
3
|
-
solana_agent/adapters/llm_adapter.py,sha256=Zx2-8LMixocDrymBFpS_UkUNm9PyL50XXLqlFCjdtFk,9050
|
4
3
|
solana_agent/adapters/mongodb_adapter.py,sha256=qqEFbY_v1XGyFXBmwd5HSXSSHnA9wWo-Hm1vGEyIG0k,2718
|
4
|
+
solana_agent/adapters/openai_adapter.py,sha256=-GS_ujZIF3OVq3LDWb30a4zEvUADvfECDo7GO1lQnqM,10997
|
5
|
+
solana_agent/adapters/pinecone_adapter.py,sha256=xn_353EoFYD8KCTckOOO4e0OKzukeBWpyhGUmDawURw,22591
|
5
6
|
solana_agent/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
solana_agent/client/solana_agent.py,sha256=
|
7
|
+
solana_agent/client/solana_agent.py,sha256=gARyoQkWStre3bwaTrR1AoAqdCpI3sw_p0hl6z6kkmA,9982
|
7
8
|
solana_agent/domains/__init__.py,sha256=HiC94wVPRy-QDJSSRywCRrhrFfTBeHjfi5z-QfZv46U,168
|
8
9
|
solana_agent/domains/agent.py,sha256=WTo-pEc66V6D_35cpDE-kTsw1SJM-dtylPZ7em5em7Q,2659
|
9
10
|
solana_agent/domains/routing.py,sha256=UDlgTjUoC9xIBVYu_dnf9-KG_bBgdEXAv_UtDOrYo0w,650
|
10
11
|
solana_agent/factories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
solana_agent/factories/agent_factory.py,sha256=
|
12
|
+
solana_agent/factories/agent_factory.py,sha256=7O1WdWA9etV2Wk8DRJUf7qTiFD3GOhBN2T278sfRegM,11536
|
12
13
|
solana_agent/interfaces/__init__.py,sha256=IQs1WIM1FeKP1-kY2FEfyhol_dB-I-VAe2rD6jrVF6k,355
|
13
|
-
solana_agent/interfaces/client/client.py,sha256=
|
14
|
+
solana_agent/interfaces/client/client.py,sha256=rIZQXFenEpoSWUvZrCMNE-FWwYwZMCBvXSFC8vCWksg,3610
|
14
15
|
solana_agent/interfaces/plugins/plugins.py,sha256=T8HPBsekmzVwfU_Rizp-vtzAeYkMlKMYD7U9d0Wjq9c,3338
|
15
16
|
solana_agent/interfaces/providers/data_storage.py,sha256=NqGeFvAzhz9rr-liLPRNCGjooB2EIhe-EVsMmX__b0M,1658
|
16
|
-
solana_agent/interfaces/providers/llm.py,sha256=
|
17
|
+
solana_agent/interfaces/providers/llm.py,sha256=gcZeu8ErLoSmdXWKiBVZuNl31c0KIUhGwX3wPBD_xuI,2356
|
17
18
|
solana_agent/interfaces/providers/memory.py,sha256=oNOH8WZXVW8assDigIWZAWiwkxbpDiKupxA2RB6tQvQ,1010
|
19
|
+
solana_agent/interfaces/providers/vector_storage.py,sha256=zgdlzQuXCRREVSlB-g7QKKNjVoshSe2AFoAt4CHCAB0,1606
|
18
20
|
solana_agent/interfaces/services/agent.py,sha256=tVs2piqWVfO1JiRd58e29oP1GWgYuCzberRSfaFfH4M,1979
|
21
|
+
solana_agent/interfaces/services/knowledge_base.py,sha256=J4jGeWcxpKL3XpcrqdNuV1xyd5dj2d-hyAmx4AZ272w,2103
|
19
22
|
solana_agent/interfaces/services/query.py,sha256=yo2JZPJSy2iwxtkUlMz0emm9u_27xNgnrAFJRHQoulQ,1480
|
20
23
|
solana_agent/interfaces/services/routing.py,sha256=UzJC-z-Q9puTWPFGEo2_CAhIxuxP5IRnze7S66NSrsI,397
|
21
24
|
solana_agent/plugins/__init__.py,sha256=coZdgJKq1ExOaj6qB810i3rEhbjdVlrkN76ozt_Ojgo,193
|
@@ -27,9 +30,10 @@ solana_agent/repositories/__init__.py,sha256=fP83w83CGzXLnSdq-C5wbw9EhWTYtqE2lQT
|
|
27
30
|
solana_agent/repositories/memory.py,sha256=0S3oJIwrJgLokFZHc5nL6Wva_CLdnkwJKfAwmMcpa9E,7853
|
28
31
|
solana_agent/services/__init__.py,sha256=ab_NXJmwYUCmCrCzuTlZ47bJZINW0Y0F5jfQ9OovidU,163
|
29
32
|
solana_agent/services/agent.py,sha256=M1Aukr9xKGP9mL0jM_JqdRdWSqG4LxF0y0PDAzE_fpY,24608
|
30
|
-
solana_agent/services/
|
33
|
+
solana_agent/services/knowledge_base.py,sha256=bvoLZHSrfp6BhT8i4fKhxOkaUkYGCFedLp2uTzL-7xI,32379
|
34
|
+
solana_agent/services/query.py,sha256=TAPwgeQViCEg71q9u8oaqD0-W5sR1ipDlPAFkqGlRA8,12528
|
31
35
|
solana_agent/services/routing.py,sha256=hC5t98KZPHty9kMX27KcuxcmZlwjm0g59uMkR8n7k_w,6818
|
32
|
-
solana_agent-27.
|
33
|
-
solana_agent-27.
|
34
|
-
solana_agent-27.
|
35
|
-
solana_agent-27.
|
36
|
+
solana_agent-27.3.0.dist-info/LICENSE,sha256=BnSRc-NSFuyF2s496l_4EyrwAP6YimvxWcjPiJ0J7g4,1057
|
37
|
+
solana_agent-27.3.0.dist-info/METADATA,sha256=Rij3Z-DwLTDbKX0Max2mmuOE7LcbDLyOPC6dey7tJwU,22183
|
38
|
+
solana_agent-27.3.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
39
|
+
solana_agent-27.3.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|