mirror of
https://github.com/deepseek-ai/awesome-deepseek-integration.git
synced 2025-02-22 13:48:59 -05:00
Add ATTPs SDK Docs (#247)
* init ATTPs Doc * modify link * format * remove DS_Store * remove code * add CN version and JA version * modify some introduction * modify cn version * format * format again * remove link --------- Co-authored-by: Simon Shieh <simonshieh@Simons-MacBook-Pro.local>
This commit is contained in:
parent
e62fe2f845
commit
e0d7b1f4ed
@ -249,6 +249,11 @@ English/[简体中文](https://github.com/deepseek-ai/awesome-deepseek-integrati
|
|||||||
<td> <a href="https://github.com/Upsonic/Upsonic">Upsonic</a> </td>
|
<td> <a href="https://github.com/Upsonic/Upsonic">Upsonic</a> </td>
|
||||||
<td>Upsonic offers a cutting-edge enterprise-ready agent framework where you can orchestrate LLM calls, agents, and computer use to complete tasks cost-effectively.</td>
|
<td>Upsonic offers a cutting-edge enterprise-ready agent framework where you can orchestrate LLM calls, agents, and computer use to complete tasks cost-effectively.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <img src="https://avatars.githubusercontent.com/u/173022229" alt="Icon" width="64" height="auto" /> </td>
|
||||||
|
<td> <a href="https://github.com/APRO-com">ATTPs</a> </td>
|
||||||
|
<td>A foundational protocol framework for trusted communication between agents. Any agents based on DeepSeek, By integrating with the <a href="https://docs.apro.com/attps">ATTPs</a> SDK, can access features such as agent registration, sending verifiable data, and retrieving verifiable data. So that it can make trusted communication with agents from other platforms. </td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
### RAG frameworks
|
### RAG frameworks
|
||||||
|
@ -171,6 +171,11 @@
|
|||||||
<td> <a href="https://github.com/bob-robert-ai/bob/blob/main/alice/readme.md">Alice</a> </td>
|
<td> <a href="https://github.com/bob-robert-ai/bob/blob/main/alice/readme.md">Alice</a> </td>
|
||||||
<td>一个基于 ICP 的自主 AI 代理,利用 DeepSeek 等大型语言模型进行链上决策。Alice 结合实时数据分析和独特的个性,管理代币、挖掘 BOB 并参与生态系统治理。</td>
|
<td>一个基于 ICP 的自主 AI 代理,利用 DeepSeek 等大型语言模型进行链上决策。Alice 结合实时数据分析和独特的个性,管理代币、挖掘 BOB 并参与生态系统治理。</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <img src="https://avatars.githubusercontent.com/u/173022229" alt="图标" width="64" height="auto" /> </td>
|
||||||
|
<td> <a href="https://github.com/APRO-com">ATTPs</a> </td>
|
||||||
|
<td>一个用于Agent之间可信通信的基础协议框架,基于DeekSeek的Agent,可以接入<a href="https://docs.apro.com/attps">ATTPs</a>的SDK,获得注册Agent,发送可验证数据,获取可验证数据等功能,从而与其他平台的Agent进行可信通信。</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
### RAG 框架
|
### RAG 框架
|
||||||
|
@ -158,6 +158,11 @@ DeepSeek API を人気のソフトウェアに統合します。API キーを取
|
|||||||
<td> <a href="https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/docs/anda/README.md">Anda</a> </td>
|
<td> <a href="https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/docs/anda/README.md">Anda</a> </td>
|
||||||
<td>高度にコンポーザブルで自律的かつ永続的な記憶を持つAIエージェントネットワークを構築するために設計されたRustフレームワーク。</td>
|
<td>高度にコンポーザブルで自律的かつ永続的な記憶を持つAIエージェントネットワークを構築するために設計されたRustフレームワーク。</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <img src="https://avatars.githubusercontent.com/u/173022229" alt="Icon" width="64" height="auto" /> </td>
|
||||||
|
<td> <a href="https://github.com/APRO-com">ATTPs</a> </td>
|
||||||
|
<td>エージェント間の信頼できる通信のための基本プロトコルフレームワークです。利用者は<a href="https://docs.apro.com/attps">ATTPs</a>のSDKを導入することで、エージェントの登録、検証可能なデータの送信、検証可能なデータの取得などの機能を利用することができます。</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
### RAG フレームワーク
|
### RAG フレームワーク
|
||||||
|
379
docs/ATTPs/README.md
Normal file
379
docs/ATTPs/README.md
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
|
||||||
|
# APRO-COM/ATTPs-framework
|
||||||
|
|
||||||
|
Foundation framework that enables advanced agent based on DeepSeek interactions, data verification, and price queries with [ATTPs Protocol](https://docs.apro.com/attps) . It streamlines agent creation, verification processes, and provides a flexible framework for building robust agent-based solutions.
|
||||||
|
|
||||||
|
For more details about ATTPs, you can see the [whitepaper here](https://www.apro.com/attps.pdf)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The ATTPs framework bridges agent-based logic with the DeepSeek. It handles agent registration, data verification, and price queries, empowering both automated and user-driven workflows.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Agent Operations
|
||||||
|
- **Agent Creation**: Deploy new agents with custom settings
|
||||||
|
- **Registration**: Register agents on-chain or via standardized processes
|
||||||
|
- **Multi-Signer Framework**: Supports threshold-based approval flows
|
||||||
|
|
||||||
|
### Data Verification
|
||||||
|
- **Chain Validation**: Verify data authenticity on-chain
|
||||||
|
- **Transaction Execution**: Handle verification logic with built-in security checks
|
||||||
|
- **Auto-Hashing**: Convert raw data to hashed formats when needed
|
||||||
|
- **Metadata Parsing**: Validate content type, encoding, and compression
|
||||||
|
|
||||||
|
### Price Queries
|
||||||
|
- **Live Price Data**: Fetch price information for various pairs
|
||||||
|
- **Format Validation**: Normalize user query inputs to standard trading-pair formats
|
||||||
|
- **APIs Integration**: Retrieve real-time or near-real-time pricing information
|
||||||
|
|
||||||
|
## Security Features
|
||||||
|
|
||||||
|
### Access Control
|
||||||
|
- **Private Key Management**: Safe usage of private keys for transaction signing
|
||||||
|
- **Environment Variables**: Secure injection of credentials
|
||||||
|
- **On-Chain Validation**: Leverage on-chain contract checks
|
||||||
|
|
||||||
|
### Verification
|
||||||
|
- **Input Validation**: Strict schema checks before on-chain operations
|
||||||
|
- **Transaction Receipts**: Provide verifiable transaction details
|
||||||
|
- **Error Handling**: Detailed error logs for quick debugging
|
||||||
|
|
||||||
|
## Performance Optimization
|
||||||
|
|
||||||
|
1. **Cache Management**
|
||||||
|
- Implement caching for frequent queries
|
||||||
|
- Monitor retrieval times and cache hits
|
||||||
|
|
||||||
|
2. **Network Efficiency**
|
||||||
|
- Batch requests where possible
|
||||||
|
- Validate response parsing to reduce overhead
|
||||||
|
|
||||||
|
## System Requirements
|
||||||
|
- Node.js 16.x or higher
|
||||||
|
- Sufficient network access to on-chain endpoints
|
||||||
|
- Basic configuration of environment variables
|
||||||
|
- Minimum 4GB RAM recommended
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
1. **Invalid Agent Settings**
|
||||||
|
- Ensure signers and threshold are correct
|
||||||
|
- Validate agentHeader for proper UUIDs and numeric values
|
||||||
|
|
||||||
|
2. **Verification Failures**
|
||||||
|
- Check the input data formats
|
||||||
|
- Confirm environment variables are set
|
||||||
|
|
||||||
|
3. **Price Query Errors**
|
||||||
|
- Verify the trading pair format
|
||||||
|
- Check external API availability
|
||||||
|
|
||||||
|
## Safety & Security
|
||||||
|
|
||||||
|
1. **Credential Management**
|
||||||
|
- Store private keys securely
|
||||||
|
- Do not commit secrets to version control
|
||||||
|
|
||||||
|
2. **Transaction Limits**
|
||||||
|
- Configure thresholds to mitigate abuse
|
||||||
|
- Log transaction attempts and failures
|
||||||
|
|
||||||
|
3. **Monitoring & Logging**
|
||||||
|
- Track unusual activity
|
||||||
|
- Maintain detailed audit logs
|
||||||
|
|
||||||
|
|
||||||
|
# Usage with js
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install ai-agent-sdk-js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Configure the plugin by setting environment variables or runtime settings:
|
||||||
|
- APRO_RPC_URL
|
||||||
|
- APRO_PROXY_ADDRESS
|
||||||
|
- APRO_PRIVATE_KEY
|
||||||
|
- APRO_CONVERTER_ADDRESS
|
||||||
|
- APRO_AUTO_HASH_DATA
|
||||||
|
|
||||||
|
## Usage with js sdk
|
||||||
|
|
||||||
|
To use the AI Agent SDK, import the library and create an instance of the `Agent` class:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { AgentSDK } from 'ai-agent-sdk-js'
|
||||||
|
|
||||||
|
const agent = new AgentSDK({
|
||||||
|
rpcUrl: 'https://bsc-testnet-rpc.publicnode.com',
|
||||||
|
privateKey: '',
|
||||||
|
proxyAddress: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// if you want the SDK to hash the data automatically
|
||||||
|
const autoHashAgent = new AgentSDK({
|
||||||
|
rpcUrl: 'https://bsc-testnet-rpc.publicnode.com',
|
||||||
|
privateKey: '',
|
||||||
|
proxyAddress: '',
|
||||||
|
autoHashData: true,
|
||||||
|
converterAddress: '',
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
To create a new agent, call the `createAndRegisterAgent` method:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import type { AgentSettings, TransactionOptions } from 'ai-agent-sdk-js'
|
||||||
|
import { randomUUID } from 'node:crypto'
|
||||||
|
import { parseUnits } from 'ethers'
|
||||||
|
|
||||||
|
// prepare the agent settings
|
||||||
|
const agentSettings: AgentSettings = {
|
||||||
|
signers: [],
|
||||||
|
threshold: 3,
|
||||||
|
converterAddress: '',
|
||||||
|
agentHeader: {
|
||||||
|
messageId: randomUUID(),
|
||||||
|
sourceAgentId: randomUUID(),
|
||||||
|
sourceAgentName: 'AI Agent SDK JS',
|
||||||
|
targetAgentId: '',
|
||||||
|
timestamp: Math.floor(Date.now() / 1000),
|
||||||
|
messageType: 0,
|
||||||
|
priority: 1,
|
||||||
|
ttl: 3600,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// prepare the transaction options
|
||||||
|
const nonce = await agent.getNextNonce()
|
||||||
|
const transactionOptions: TransactionOptions = {
|
||||||
|
nonce,
|
||||||
|
gasPrice: parseUnits('1', 'gwei'),
|
||||||
|
gasLimit: BigInt(2000000),
|
||||||
|
}
|
||||||
|
|
||||||
|
const tx = await agent.createAndRegisterAgent({ agentSettings, transactionOptions })
|
||||||
|
|
||||||
|
// or you can leave the transaction options empty, the SDK will use the auto-generated values
|
||||||
|
// const tx = await agent.createAndRegisterAgent({ agentSettings })
|
||||||
|
```
|
||||||
|
|
||||||
|
The SDK also provides the tool to extract the new agent address from the transaction receipt:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { parseNewAgentAddress } from 'ai-agent-sdk-js'
|
||||||
|
|
||||||
|
const receipt = await tx.wait()
|
||||||
|
const agentAddress = parseNewAgentAddress(receipt)
|
||||||
|
```
|
||||||
|
|
||||||
|
To verify the data integrity, call the `verify` method:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import type { MessagePayload } from 'ai-agent-sdk-js'
|
||||||
|
import { hexlify, keccak256, toUtf8Bytes } from 'ethers'
|
||||||
|
|
||||||
|
// prepare the payload
|
||||||
|
const data = hexlify(toUtf8Bytes('Hello World!'))
|
||||||
|
const dataHash = keccak256(data)
|
||||||
|
const payload: MessagePayload = {
|
||||||
|
data,
|
||||||
|
dataHash,
|
||||||
|
signatures: [
|
||||||
|
{
|
||||||
|
r: '',
|
||||||
|
s: '',
|
||||||
|
v: 1, // 1, 0, 27, 28 are allowed
|
||||||
|
},
|
||||||
|
// ...
|
||||||
|
],
|
||||||
|
metadata: {
|
||||||
|
contentType: '',
|
||||||
|
encoding: '',
|
||||||
|
compression: '',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const tx = await agent.verify({ payload, agent: '', digest: '' })
|
||||||
|
```
|
||||||
|
|
||||||
|
If the data is obtained from the APRO DATA pull service, you can use the auto-hash feature:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import type { MessagePayload } from 'ai-agent-sdk-js'
|
||||||
|
|
||||||
|
const payload: MessagePayload = {
|
||||||
|
data: '0x...',
|
||||||
|
signatures: [
|
||||||
|
{
|
||||||
|
r: '',
|
||||||
|
s: '',
|
||||||
|
v: 1, // 1, 0, 27, 28 are allowed
|
||||||
|
},
|
||||||
|
// ...
|
||||||
|
],
|
||||||
|
metadata: {
|
||||||
|
contentType: '',
|
||||||
|
encoding: '',
|
||||||
|
compression: '',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// When
|
||||||
|
const tx = await autoHashAgent.verify({ payload, agent: '', digest: '' })
|
||||||
|
```
|
||||||
|
|
||||||
|
For more examples, see the [test](https://github.com/APRO-com/ai-agent-sdk-js/tree/main/test) cases.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Usage with Python
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ pip3 install ai-agent-sdk
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage with Python SDK
|
||||||
|
|
||||||
|
### Initialize AgentSDK
|
||||||
|
|
||||||
|
```python
|
||||||
|
from ai_agent.agent import AgentSDK
|
||||||
|
|
||||||
|
AGENT_PROXY_ADDRESS = "0x07771A3026E60776deC8C1C61106FB9623521394"
|
||||||
|
NETWORK_RPC = "https://testnet-rpc.bitlayer.org"
|
||||||
|
|
||||||
|
agent = AgentSDK(endpoint_uri=NETWORK_RPC, proxy_address=AGENT_PROXY_ADDRESS)
|
||||||
|
```
|
||||||
|
|
||||||
|
To create a new agent, call the createAndRegisterAgent method:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
from ai_agent.entities import (
|
||||||
|
AgentSettings,
|
||||||
|
AgentHeader,
|
||||||
|
MessageType,
|
||||||
|
Priority
|
||||||
|
)
|
||||||
|
from ai_agent.utils import (
|
||||||
|
generate_uuid_v4
|
||||||
|
)
|
||||||
|
|
||||||
|
AGENT_SETTINGS = AgentSettings(
|
||||||
|
signers=[
|
||||||
|
"0x4b1056f504f32c678227b5Ae812936249c40AfBF",
|
||||||
|
"0xB973476e0cF88a3693014b99f230CEB5A01ac686",
|
||||||
|
"0x6cF0803D049a4e8DC01da726A5a212BCB9FAC1a1",
|
||||||
|
"0x9D46daa26342e9E9e586A6AdCEDaD667f985567B",
|
||||||
|
"0x33AF673aBcE193E20Ee94D6fBEb30fEf0cA7015b",
|
||||||
|
"0x868D2dE4a0378450BC62A7596463b30Dc4e3897E",
|
||||||
|
"0xD4E157c36E7299bB40800e4aE7909DDcA8097f67",
|
||||||
|
"0xA3866A07ABEf3fD0643BD7e1c32600520F465ca8",
|
||||||
|
"0x62f642Ae0Ed7F12Bc40F2a9Bf82ccD0a3F3b7531"
|
||||||
|
],
|
||||||
|
threshold=2,
|
||||||
|
converter_address="0xaB303EF87774D9D259d1098E9aA4dD6c07F69240",
|
||||||
|
agent_header=AgentHeader(
|
||||||
|
version="1.0",
|
||||||
|
message_id="d4d0813f-ceb7-4ce1-8988-12899b26c4b6",
|
||||||
|
source_agent_id="da70f6b3-e580-470f-b88b-caa5369e7778",
|
||||||
|
source_agent_name="APRO Pull Mode Agent",
|
||||||
|
target_agent_id="",
|
||||||
|
timestamp=int(time.time()),
|
||||||
|
message_type=MessageType.Event,
|
||||||
|
priority=Priority.Low,
|
||||||
|
ttl=60 * 60
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
dynamic_setting = AGENT_SETTINGS
|
||||||
|
dynamic_setting.agent_header.source_agent_id = generate_uuid_v4()
|
||||||
|
dynamic_setting.agent_header.target_agent_id = generate_uuid_v4()
|
||||||
|
dynamic_setting.agent_header.message_id = generate_uuid_v4()
|
||||||
|
user_owner = agent.add_account("0x_user_private_key")
|
||||||
|
result = agent.create_and_register_agent(
|
||||||
|
transmitter="",
|
||||||
|
nonce=None,
|
||||||
|
settings=AGENT_SETTINGS)
|
||||||
|
print("created agent:", result)
|
||||||
|
|
||||||
|
```
|
||||||
|
To verify the data integrity, call the verify method:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from ai_agent.entities import (
|
||||||
|
AgentMessagePayload,
|
||||||
|
Proofs,
|
||||||
|
AgentMetadata,
|
||||||
|
)
|
||||||
|
|
||||||
|
AGENT_CONTRACT = "0xA1903361Ee8Ec35acC7c8951b4008dbE8D12C155"
|
||||||
|
AGENT_SETTING_DIGEST = "0x010038164dba6abffb84eb5cb538850d9bc5d8f815149a371069b3255fd177a4"
|
||||||
|
AGENT_PAYLOAD = AgentMessagePayload(
|
||||||
|
data="0x0006e706cf7ab41fa599311eb3de68be869198ce62aef1cd079475ca50e5b3f60000000000000000000000000000000000000000000000000000000002b1bf0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200003665949c883f9e0f6f002eac32e00bd59dfe6c34e92a91c37d6a8322d6489000000000000000000000000000000000000000000000000000000006762677d000000000000000000000000000000000000000000000000000000006762677d000000000000000000000000000000000000000000000000000003128629ec0800000000000000000000000000000000000000000000000004db732547630000000000000000000000000000000000000000000000000000000000006763b8fd0000000000000000000000000000000000000000000015f0f60671beb95cc0000000000000000000000000000000000000000000000015f083baa654a7b900000000000000000000000000000000000000000000000015f103ec7cb057ea80000000000000000000000000000000000000000000000000000000000000000003b64f7e72208147bb898e8b215d0997967bef0219263726c76995d8a19107d6ba5306a176474f9ccdb1bc5841f97e0592013e404e15b0de0839b81d0efb26179f222e0191269a8560ebd9096707d225bc606d61466b85d8568d7620a3b59a73e800000000000000000000000000000000000000000000000000000000000000037cae0f05c1bf8353eb5db27635f02b40a534d4192099de445764891198231c597a303cd15f302dafbb1263eb6e8e19cbacea985c66c6fed3231fd84a84ebe0276f69f481fe7808c339a04ceb905bb49980846c8ceb89a27b1c09713cb356f773",
|
||||||
|
data_hash="0x53d9f133f1265bd4391fcdf89b63424cbcfd316c8448f76cc515647267ac0a8e",
|
||||||
|
proofs=Proofs(
|
||||||
|
zk_proof="0x",
|
||||||
|
merkle_proof="0x",
|
||||||
|
signature_proof="0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000003b64f7e72208147bb898e8b215d0997967bef0219263726c76995d8a19107d6ba5306a176474f9ccdb1bc5841f97e0592013e404e15b0de0839b81d0efb26179f222e0191269a8560ebd9096707d225bc606d61466b85d8568d7620a3b59a73e800000000000000000000000000000000000000000000000000000000000000037cae0f05c1bf8353eb5db27635f02b40a534d4192099de445764891198231c597a303cd15f302dafbb1263eb6e8e19cbacea985c66c6fed3231fd84a84ebe0276f69f481fe7808c339a04ceb905bb49980846c8ceb89a27b1c09713cb356f7730000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001",
|
||||||
|
),
|
||||||
|
meta_data=AgentMetadata(
|
||||||
|
content_type="0x",
|
||||||
|
encoding="0x",
|
||||||
|
compression="0x"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
user_owner = agent.add_account("0x_user_private_key")
|
||||||
|
result = agent.verify(
|
||||||
|
transmitter=user_owner,
|
||||||
|
nonce=None,
|
||||||
|
agent_contract=AGENT_CONTRACT,
|
||||||
|
settings_digest=AGENT_SETTING_DIGEST,
|
||||||
|
payload=AGENT_PAYLOAD
|
||||||
|
)
|
||||||
|
print("verify:", result)
|
||||||
|
```
|
||||||
|
For more examples, see the [test cases](https://github.com/APRO-com/ai-agent-sdk-python/tree/main/tests).
|
||||||
|
|
||||||
|
|
||||||
|
# Other SDKs
|
||||||
|
|
||||||
|
JAVA: https://github.com/APRO-com/ai-agent-sdk-java
|
||||||
|
|
||||||
|
RUST: https://github.com/APRO-com/ai-agent-sdk-rust
|
||||||
|
|
||||||
|
GOLANG: https://github.com/APRO-com/ai-agent-sdk-go
|
||||||
|
|
||||||
|
# Support
|
||||||
|
|
||||||
|
For issues or feature requests:
|
||||||
|
1. Check existing documentation
|
||||||
|
2. Submit a GitHub issue with relevant details
|
||||||
|
3. Include transaction logs and system info if applicable
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
We welcome pull requests! Refer to the project’s CONTRIBUTING.md and open discussions to coordinate efforts.
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
|
||||||
|
- [APRO](https://www.apro.com/) - Plugin sponsor and partner
|
||||||
|
- [ai-agent-sdk-js](https://github.com/APRO-com/ai-agent-sdk-js) - Underlying agent SDK
|
||||||
|
- [ethers.js](https://docs.ethers.io/) - Transaction and contract interaction
|
||||||
|
- Community contributors for feedback and testing
|
||||||
|
|
||||||
|
For more information about Apro plugin capabilities:
|
||||||
|
|
||||||
|
- [Apro Documentation](https://docs.apro.com/en)
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
This plugin is part of the Eliza project. Refer to the main project repository for licensing details.
|
Loading…
Reference in New Issue
Block a user