solana-agent 29.2.2__tar.gz → 29.2.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 (42) hide show
  1. {solana_agent-29.2.2 → solana_agent-29.2.3}/PKG-INFO +6 -206
  2. {solana_agent-29.2.2 → solana_agent-29.2.3}/README.md +5 -205
  3. {solana_agent-29.2.2 → solana_agent-29.2.3}/pyproject.toml +1 -1
  4. {solana_agent-29.2.2 → solana_agent-29.2.3}/LICENSE +0 -0
  5. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/__init__.py +0 -0
  6. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/adapters/__init__.py +0 -0
  7. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/adapters/mongodb_adapter.py +0 -0
  8. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/adapters/openai_adapter.py +0 -0
  9. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/adapters/pinecone_adapter.py +0 -0
  10. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/cli.py +0 -0
  11. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/client/__init__.py +0 -0
  12. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/client/solana_agent.py +0 -0
  13. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/domains/__init__.py +0 -0
  14. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/domains/agent.py +0 -0
  15. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/domains/routing.py +0 -0
  16. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/factories/__init__.py +0 -0
  17. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/factories/agent_factory.py +0 -0
  18. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/guardrails/pii.py +0 -0
  19. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/__init__.py +0 -0
  20. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/client/client.py +0 -0
  21. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/guardrails/guardrails.py +0 -0
  22. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/plugins/plugins.py +0 -0
  23. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/providers/data_storage.py +0 -0
  24. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/providers/llm.py +0 -0
  25. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/providers/memory.py +0 -0
  26. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/providers/vector_storage.py +0 -0
  27. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/services/agent.py +0 -0
  28. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/services/knowledge_base.py +0 -0
  29. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/services/query.py +0 -0
  30. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/interfaces/services/routing.py +0 -0
  31. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/plugins/__init__.py +0 -0
  32. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/plugins/manager.py +0 -0
  33. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/plugins/registry.py +0 -0
  34. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/plugins/tools/__init__.py +0 -0
  35. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/plugins/tools/auto_tool.py +0 -0
  36. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/repositories/__init__.py +0 -0
  37. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/repositories/memory.py +0 -0
  38. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/services/__init__.py +0 -0
  39. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/services/agent.py +0 -0
  40. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/services/knowledge_base.py +0 -0
  41. {solana_agent-29.2.2 → solana_agent-29.2.3}/solana_agent/services/query.py +0 -0
  42. {solana_agent-29.2.2 → solana_agent-29.2.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: 29.2.2
3
+ Version: 29.2.3
4
4
  Summary: AI Agents for Solana
5
5
  License: MIT
6
6
  Keywords: solana,solana ai,solana agent,ai,ai agent,ai agents
@@ -79,7 +79,7 @@ Build your AI agents in three lines of code!
79
79
  * Simple agent definition using JSON
80
80
  * Fast AI responses
81
81
  * Multi-vendor support including OpenAI, Grok, and Gemini AI services
82
- * Solana Integration with transfers and swaps
82
+ * Solana Integration
83
83
  * MCP tool usage with first-class support for [Zapier](https://zapier.com/mcp)
84
84
  * Integrated observability and tracing via [Pydantic Logfire](https://pydantic.dev/logfire)
85
85
  * Designed for a multi-agent swarm
@@ -655,212 +655,12 @@ Tools empower agents to interact with external systems, fetch data, or perform a
655
655
 
656
656
  Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
657
657
 
658
- ### Solana Transfer
659
-
660
- This plugin enables Solana Agent to transfer SOL and SPL tokens from the agent's wallet to the destination wallet.
661
-
662
- Don't use tickers - but mint addresses in your user queries.
663
-
664
- `pip install sakit`
665
-
666
- ```python
667
- config = {
668
- "tools": {
669
- "solana_transfer": {
670
- "rpc_url": "my-rpc-url", # Required - your RPC URL - Helius is recommended
671
- "private_key": "my-private-key", # Required - base58 string - please use env vars to store the key as it is very confidential
672
- },
673
- },
674
- "agents": [
675
- {
676
- "name": "solana_expert",
677
- "instructions": "You are a Solana expert that can transfer tokens.",
678
- "specialization": "Solana Blockchain",
679
- "tools": ["solana_transfer"], # Enable the tool for this agent
680
- }
681
- ],
682
- }
683
-
684
- solana_agent = SolanaAgent(config=config)
685
-
686
- async for response in solana_agent.process("user123", "Transfer 0.01 Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB to DzvqBkUHUhuhHtNKGWSCVEAm2rHdm9bxxdQYC6mZBZyF"):
687
- print(response, end="")
688
- ```
689
-
690
- ### Solana Swap
691
-
692
- This plugin enables Solana Agent to trade (swap) tokens using Jupiter.
693
-
694
- Don't use tickers - but mint addresses in your user queries.
695
-
696
- `pip install sakit`
697
-
698
- ```python
699
- config = {
700
- "tools": {
701
- "solana_swap": {
702
- "rpc_url": "my-rpc-url", # Required - your RPC URL - Helius is recommended
703
- "private_key": "my-private-key", # Required - base58 string - please use env vars to store the key as it is very confidential
704
- "jupiter_url": "my-custom-url" # Optional - if you are using a custom Jupiter service like Metis from QuickNode
705
- },
706
- },
707
- "agents": [
708
- {
709
- "name": "solana_expert",
710
- "instructions": "You are a Solana expert that can swap tokens.",
711
- "specialization": "Solana Blockchain",
712
- "tools": ["solana_swap"], # Enable the tool for this agent
713
- }
714
- ],
715
- }
716
-
717
- solana_agent = SolanaAgent(config=config)
718
-
719
- async for response in solana_agent.process("user123", "Swap 0.01 Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB to So11111111111111111111111111111111111111112"):
720
- print(response, end="")
721
- ```
722
-
723
- ### Internet Search
724
-
725
- `pip install sakit`
726
-
727
- ```python
728
- from solana_agent import SolanaAgent
729
-
730
- config = {
731
- "openai": {
732
- "api_key": "your-openai-api-key",
733
- },
734
- "tools": {
735
- "search_internet": {
736
- "api_key": "your-openai-api-key",
737
- },
738
- },
739
- "agents": [
740
- {
741
- "name": "news_specialist",
742
- "instructions": "You are an expert news agent. You use your search_internet tool to get the latest information.",
743
- "specialization": "News researcher and specialist",
744
- "tools": ["search_internet"], # Enable the tool for this agent
745
- }
746
- ],
747
- }
748
-
749
- solana_agent = SolanaAgent(config=config)
750
-
751
- async for response in solana_agent.process("user123", "What is the latest news on Elon Musk?"):
752
- print(response, end="")
753
- ```
754
-
755
- ### MCP
658
+ ### Solana Agent Kit
756
659
 
757
- [Zapier](https://zapier.com/mcp) MCP has been tested, works, and is supported.
758
-
759
- Zapier integrates over 7,000+ apps with 30,000+ actions that your Solana Agent can utilize.
760
-
761
- Other MCP servers may work but are not supported.
762
-
763
- `pip install sakit`
764
-
765
- ```python
766
- from solana_agent import SolanaAgent
767
-
768
- config = {
769
- "tools": {
770
- "mcp": {
771
- "url": "my-zapier-mcp-url",
772
- }
773
- },
774
- "agents": [
775
- {
776
- "name": "zapier_expert",
777
- "instructions": "You are an expert in using Zapier integrations using MCP. You always use the mcp tool to perform Zapier AI like actions.",
778
- "specialization": "Zapier service integration expert",
779
- "tools": ["mcp"], # Enable the tool for this agent
780
- }
781
- ]
782
- }
783
-
784
- solana_agent = SolanaAgent(config=config)
785
-
786
- async for response in solana_agent.process("user123", "Send an email to bob@bob.com to clean his room!"):
787
- print(response, end="")
788
- ```
789
-
790
- ### Image Generation
791
-
792
- Generate images using OpenAI, Grok, or Gemini image models and upload them to S3-compatible storage.
793
-
794
- `pip install sakit`
795
-
796
- ```python
797
- from solana_agent import SolanaAgent
798
-
799
- config = {
800
- "tools": {
801
- "image_gen": {
802
- "provider": "openai", # Required: either "openai", "grok", or "gemini"
803
- "api_key": "your-api-key", # Required: your OpenAI or Grok or Gemini API key
804
- "s3_endpoint_url": "https://your-s3-endpoint.com", # Required: e.g., https://nyc3.digitaloceanspaces.com
805
- "s3_access_key_id": "YOUR_S3_ACCESS_KEY", # Required: Your S3 access key ID
806
- "s3_secret_access_key": "YOUR_S3_SECRET_KEY", # Required: Your S3 secret access key
807
- "s3_bucket_name": "your-bucket-name", # Required: The name of your S3 bucket
808
- "s3_region_name": "your-region", # Optional: e.g., "nyc3", needed by some providers
809
- "s3_public_url_base": "https://your-cdn-or-bucket-url.com/", # Optional: Custom base URL for public links (include trailing slash). If omitted, a standard URL is constructed.
810
- }
811
- },
812
- "agents": [
813
- {
814
- "name": "image_creator",
815
- "instructions": "You are a creative assistant that generates images based on user descriptions. Use the image_gen tool to create and store the image.",
816
- "specialization": "Image generation and storage",
817
- "tools": ["image_gen"], # Enable the tool for this agent
818
- }
819
- ]
820
- }
821
-
822
- solana_agent = SolanaAgent(config=config)
823
-
824
- async for response in solana_agent.process("user123", "Generate an image of a smiling unicorn!"):
825
- print(response, end="")
826
- ```
827
-
828
- ### Nemo Agent
829
-
830
- This plugin allows the agent to generate python programs using [Nemo Agent](https://nemo-agent.com) and uploads the files in a ZIP file to s3-compatible storage. It returns the public URL of the zip file.
831
-
832
- This has been tested using [Cloudflare R2](https://developers.cloudflare.com/r2/).
833
-
834
- ```python
835
- from solana_agent import SolanaAgent
836
-
837
- config = {
838
- "tools": {
839
- "nemo_agent": {
840
- "provider": "openai", # Required: either "openai" or "gemini"
841
- "api_key": "your-api-key", # Required: your OpenAI or Gemini API key
842
- "s3_endpoint_url": "https://your-s3-endpoint.com", # Required: e.g., https://nyc3.digitaloceanspaces.com
843
- "s3_access_key_id": "YOUR_S3_ACCESS_KEY", # Required: Your S3 access key ID
844
- "s3_secret_access_key": "YOUR_S3_SECRET_KEY", # Required: Your S3 secret access key
845
- "s3_bucket_name": "your-bucket-name", # Required: The name of your S3 bucket
846
- "s3_region_name": "your-region", # Optional: e.g., "nyc3", needed by some providers
847
- "s3_public_url_base": "https://your-cdn-or-bucket-url.com/", # Optional: Custom base URL for public links (include trailing slash). If omitted, a standard URL is constructed.
848
- }
849
- },
850
- "agents": [
851
- {
852
- "name": "python_dev",
853
- "instructions": "You are an expert Python Developer. You always use your nemo_agent tool to generate python code.",
854
- "specialization": "Python Developer",
855
- "tools": ["nemo_agent"], # Enable the tool for this agent
856
- }
857
- ]
858
- }
859
-
860
- solana_agent = SolanaAgent(config=config)
660
+ [Solana Agent Kit](https://github.com/truemagic-coder/solana-agent-kit)
861
661
 
862
- async for response in solana_agent.process("user123", "Generate an example leetcode medium in Python and give me the zip file."):
863
- print(response, end="")
662
+ ```bash
663
+ pip install sakit
864
664
  ```
865
665
 
866
666
  ### Inline Tool Example
@@ -44,7 +44,7 @@ Build your AI agents in three lines of code!
44
44
  * Simple agent definition using JSON
45
45
  * Fast AI responses
46
46
  * Multi-vendor support including OpenAI, Grok, and Gemini AI services
47
- * Solana Integration with transfers and swaps
47
+ * Solana Integration
48
48
  * MCP tool usage with first-class support for [Zapier](https://zapier.com/mcp)
49
49
  * Integrated observability and tracing via [Pydantic Logfire](https://pydantic.dev/logfire)
50
50
  * Designed for a multi-agent swarm
@@ -620,212 +620,12 @@ Tools empower agents to interact with external systems, fetch data, or perform a
620
620
 
621
621
  Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
622
622
 
623
- ### Solana Transfer
624
-
625
- This plugin enables Solana Agent to transfer SOL and SPL tokens from the agent's wallet to the destination wallet.
626
-
627
- Don't use tickers - but mint addresses in your user queries.
628
-
629
- `pip install sakit`
630
-
631
- ```python
632
- config = {
633
- "tools": {
634
- "solana_transfer": {
635
- "rpc_url": "my-rpc-url", # Required - your RPC URL - Helius is recommended
636
- "private_key": "my-private-key", # Required - base58 string - please use env vars to store the key as it is very confidential
637
- },
638
- },
639
- "agents": [
640
- {
641
- "name": "solana_expert",
642
- "instructions": "You are a Solana expert that can transfer tokens.",
643
- "specialization": "Solana Blockchain",
644
- "tools": ["solana_transfer"], # Enable the tool for this agent
645
- }
646
- ],
647
- }
648
-
649
- solana_agent = SolanaAgent(config=config)
650
-
651
- async for response in solana_agent.process("user123", "Transfer 0.01 Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB to DzvqBkUHUhuhHtNKGWSCVEAm2rHdm9bxxdQYC6mZBZyF"):
652
- print(response, end="")
653
- ```
654
-
655
- ### Solana Swap
656
-
657
- This plugin enables Solana Agent to trade (swap) tokens using Jupiter.
658
-
659
- Don't use tickers - but mint addresses in your user queries.
660
-
661
- `pip install sakit`
662
-
663
- ```python
664
- config = {
665
- "tools": {
666
- "solana_swap": {
667
- "rpc_url": "my-rpc-url", # Required - your RPC URL - Helius is recommended
668
- "private_key": "my-private-key", # Required - base58 string - please use env vars to store the key as it is very confidential
669
- "jupiter_url": "my-custom-url" # Optional - if you are using a custom Jupiter service like Metis from QuickNode
670
- },
671
- },
672
- "agents": [
673
- {
674
- "name": "solana_expert",
675
- "instructions": "You are a Solana expert that can swap tokens.",
676
- "specialization": "Solana Blockchain",
677
- "tools": ["solana_swap"], # Enable the tool for this agent
678
- }
679
- ],
680
- }
681
-
682
- solana_agent = SolanaAgent(config=config)
683
-
684
- async for response in solana_agent.process("user123", "Swap 0.01 Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB to So11111111111111111111111111111111111111112"):
685
- print(response, end="")
686
- ```
687
-
688
- ### Internet Search
689
-
690
- `pip install sakit`
691
-
692
- ```python
693
- from solana_agent import SolanaAgent
694
-
695
- config = {
696
- "openai": {
697
- "api_key": "your-openai-api-key",
698
- },
699
- "tools": {
700
- "search_internet": {
701
- "api_key": "your-openai-api-key",
702
- },
703
- },
704
- "agents": [
705
- {
706
- "name": "news_specialist",
707
- "instructions": "You are an expert news agent. You use your search_internet tool to get the latest information.",
708
- "specialization": "News researcher and specialist",
709
- "tools": ["search_internet"], # Enable the tool for this agent
710
- }
711
- ],
712
- }
713
-
714
- solana_agent = SolanaAgent(config=config)
715
-
716
- async for response in solana_agent.process("user123", "What is the latest news on Elon Musk?"):
717
- print(response, end="")
718
- ```
719
-
720
- ### MCP
623
+ ### Solana Agent Kit
721
624
 
722
- [Zapier](https://zapier.com/mcp) MCP has been tested, works, and is supported.
723
-
724
- Zapier integrates over 7,000+ apps with 30,000+ actions that your Solana Agent can utilize.
725
-
726
- Other MCP servers may work but are not supported.
727
-
728
- `pip install sakit`
729
-
730
- ```python
731
- from solana_agent import SolanaAgent
732
-
733
- config = {
734
- "tools": {
735
- "mcp": {
736
- "url": "my-zapier-mcp-url",
737
- }
738
- },
739
- "agents": [
740
- {
741
- "name": "zapier_expert",
742
- "instructions": "You are an expert in using Zapier integrations using MCP. You always use the mcp tool to perform Zapier AI like actions.",
743
- "specialization": "Zapier service integration expert",
744
- "tools": ["mcp"], # Enable the tool for this agent
745
- }
746
- ]
747
- }
748
-
749
- solana_agent = SolanaAgent(config=config)
750
-
751
- async for response in solana_agent.process("user123", "Send an email to bob@bob.com to clean his room!"):
752
- print(response, end="")
753
- ```
754
-
755
- ### Image Generation
756
-
757
- Generate images using OpenAI, Grok, or Gemini image models and upload them to S3-compatible storage.
758
-
759
- `pip install sakit`
760
-
761
- ```python
762
- from solana_agent import SolanaAgent
763
-
764
- config = {
765
- "tools": {
766
- "image_gen": {
767
- "provider": "openai", # Required: either "openai", "grok", or "gemini"
768
- "api_key": "your-api-key", # Required: your OpenAI or Grok or Gemini API key
769
- "s3_endpoint_url": "https://your-s3-endpoint.com", # Required: e.g., https://nyc3.digitaloceanspaces.com
770
- "s3_access_key_id": "YOUR_S3_ACCESS_KEY", # Required: Your S3 access key ID
771
- "s3_secret_access_key": "YOUR_S3_SECRET_KEY", # Required: Your S3 secret access key
772
- "s3_bucket_name": "your-bucket-name", # Required: The name of your S3 bucket
773
- "s3_region_name": "your-region", # Optional: e.g., "nyc3", needed by some providers
774
- "s3_public_url_base": "https://your-cdn-or-bucket-url.com/", # Optional: Custom base URL for public links (include trailing slash). If omitted, a standard URL is constructed.
775
- }
776
- },
777
- "agents": [
778
- {
779
- "name": "image_creator",
780
- "instructions": "You are a creative assistant that generates images based on user descriptions. Use the image_gen tool to create and store the image.",
781
- "specialization": "Image generation and storage",
782
- "tools": ["image_gen"], # Enable the tool for this agent
783
- }
784
- ]
785
- }
786
-
787
- solana_agent = SolanaAgent(config=config)
788
-
789
- async for response in solana_agent.process("user123", "Generate an image of a smiling unicorn!"):
790
- print(response, end="")
791
- ```
792
-
793
- ### Nemo Agent
794
-
795
- This plugin allows the agent to generate python programs using [Nemo Agent](https://nemo-agent.com) and uploads the files in a ZIP file to s3-compatible storage. It returns the public URL of the zip file.
796
-
797
- This has been tested using [Cloudflare R2](https://developers.cloudflare.com/r2/).
798
-
799
- ```python
800
- from solana_agent import SolanaAgent
801
-
802
- config = {
803
- "tools": {
804
- "nemo_agent": {
805
- "provider": "openai", # Required: either "openai" or "gemini"
806
- "api_key": "your-api-key", # Required: your OpenAI or Gemini API key
807
- "s3_endpoint_url": "https://your-s3-endpoint.com", # Required: e.g., https://nyc3.digitaloceanspaces.com
808
- "s3_access_key_id": "YOUR_S3_ACCESS_KEY", # Required: Your S3 access key ID
809
- "s3_secret_access_key": "YOUR_S3_SECRET_KEY", # Required: Your S3 secret access key
810
- "s3_bucket_name": "your-bucket-name", # Required: The name of your S3 bucket
811
- "s3_region_name": "your-region", # Optional: e.g., "nyc3", needed by some providers
812
- "s3_public_url_base": "https://your-cdn-or-bucket-url.com/", # Optional: Custom base URL for public links (include trailing slash). If omitted, a standard URL is constructed.
813
- }
814
- },
815
- "agents": [
816
- {
817
- "name": "python_dev",
818
- "instructions": "You are an expert Python Developer. You always use your nemo_agent tool to generate python code.",
819
- "specialization": "Python Developer",
820
- "tools": ["nemo_agent"], # Enable the tool for this agent
821
- }
822
- ]
823
- }
824
-
825
- solana_agent = SolanaAgent(config=config)
625
+ [Solana Agent Kit](https://github.com/truemagic-coder/solana-agent-kit)
826
626
 
827
- async for response in solana_agent.process("user123", "Generate an example leetcode medium in Python and give me the zip file."):
828
- print(response, end="")
627
+ ```bash
628
+ pip install sakit
829
629
  ```
830
630
 
831
631
  ### Inline Tool Example
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "solana-agent"
3
- version = "29.2.2"
3
+ version = "29.2.3"
4
4
  description = "AI Agents for Solana"
5
5
  authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
6
6
  license = "MIT"
File without changes