Full Code of tedl-1990/AIWS for AI

main 8b50bdb0bb46 cached
63 files
920.8 KB
335.5k tokens
134 symbols
1 requests
Download .txt
Showing preview only (954K chars total). Download the full file or copy to clipboard to get everything.
Repository: tedl-1990/AIWS
Branch: main
Commit: 8b50bdb0bb46
Files: 63
Total size: 920.8 KB

Directory structure:
gitextract_ygqa1abp/

├── .gitignore
├── AIAgent.html
├── LICENSE
├── README.md
├── blog_prompt_demo.html
├── chat_prompt_demo.html
├── eslint.config.js
├── index.html
├── package.json
├── src/
│   ├── App.css
│   ├── App.tsx
│   ├── abis/
│   │   └── uploadAbi.ts
│   ├── assets/
│   │   └── fonts/
│   │       ├── NexaTextBold.otf
│   │       ├── NexaTextRegular.otf
│   │       ├── SFMono-Bold.otf
│   │       └── SFMono-Regular.otf
│   ├── components/
│   │   ├── Loader/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── MessageCard/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── WalletConnect/
│   │   │   ├── index.less
│   │   │   ├── index.module.less
│   │   │   └── index.tsx
│   │   └── agentCard/
│   │       ├── index.less
│   │       └── index.tsx
│   ├── config/
│   │   └── wagmi.ts
│   ├── const/
│   │   ├── chains_mini.json
│   │   └── solana.json
│   ├── entries/
│   │   └── agent.tsx
│   ├── hooks/
│   │   └── useNetwork.ts
│   ├── index.less
│   ├── main.tsx
│   ├── pages/
│   │   ├── AIAgent/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── AgentList/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   └── Publish/
│   │       ├── index.less
│   │       └── index.tsx
│   ├── services/
│   │   ├── ai.ts
│   │   ├── aiChatFeed.ts
│   │   ├── api.ts
│   │   ├── ens.ts
│   │   ├── network.ts
│   │   ├── upload.ts
│   │   ├── wallet/
│   │   │   ├── base.ts
│   │   │   ├── index.ts
│   │   │   ├── metamask.ts
│   │   │   ├── phantom.ts
│   │   │   └── types.ts
│   │   └── wallet.ts
│   ├── store/
│   │   └── network.ts
│   ├── types/
│   │   ├── global.d.ts
│   │   ├── images.d.ts
│   │   └── index.ts
│   ├── utils/
│   │   ├── constants.ts
│   │   └── index.ts
│   └── vite-env.d.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── tsconfig.tsbuildinfo
├── vite.agent.config.ts
└── vite.config.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# env files
.env.local
.env.*.local


================================================
FILE: AIAgent.html
================================================
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Agent</title>
    <link href="https://unpkg.com/@ant-design/x@1.0.4/dist/index.css" rel="stylesheet">
</head>

<body>
    <div id="root-ai-agent"></div>
    <script type="module" src="/src/entries/agent.tsx"></script>
</body>

</html>

================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2024 Glitter Protocol

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <https://www.gnu.org/licenses/>.

================================================
FILE: README.md
================================================
# AIWS: The DeAgent Network

<p align="center">
<a href="https://aiws.eth.limo">AIWS ENS AI Launcher</a><br>
<a href="https://ainick.eth.limo">AI Nick.eth</a>
</p>

![Banner Animation](./assets/BannerAni.gif)

Welcome to AIWS, a modular network for generating and managing DeAgents fully built on decentralized stacks, including IPFS, Filecoin, Solana, Ethereum, ENS, SNS, Glitter, etc. 

## Key Features

- 🔍 On-Chain Real-Time Transparency
- 🛠️ Serverless & Unstoppable Architecture  
- 🆔 Cross-Chain DeAgent DID
- 🌐 Permissionless Access
- 🧠 Interoperable Swarm Intelligence

## Architecture Overview

### System-Level Diagram

![AIWS Architecture](./assets/AIWS.jpg)

```
+------------------------------------------------------------------------------+
|                                   User                                       |
+------------------------------------------------------------------------------+
|                                  Client                                      |
|       🌐 Web      ✖ DApps      🎮 Games      📸 Social Media      📱 Apps   |
+------------------------------------------------------------------------------+
|                     Universal Communication Layer                            |
|    Enables interaction between components across layers and cross-chain DID  |
|                         support for interoperability                         |
+------------------------------------------------------------------------------+
|                                    DID                                       |
|              .eth        .sol        .sui           .bnb                     |
|              🦄           🔥           📦             🟦                    |
+------------------------------------------------------------------------------+
|                               IPFS + Filecoin                                |
|  Agent Metadata and Memory                  +--------------------------------+
|  Integrated with decentralized storage      |            Plugins             |
|  and retrieval for transparency             |    - Wallets                   |
|                                             |    - DeFi                      |
|                                             |    - Data                      |
|                                             |    - Game Engines              |
|                                             +--------------------------------+
+------------------------------------------------------------------------------+
|                                   Models                                     |
|       🐳 DeepSeek       🧠 Claude      🌞 OpenAI       🌀 Llama             |
|                                                                              |
+------------------------------------------------------------------------------+
```

## Core Features

### DeAgent Generation
- Generate DeAgent via official page (e.g., `AIWS.eth`)
- Submit metadata (avatar, persona, description, ENS bindings)
- Host DeAgents on IPFS with verifiable hash

### Communication Protocol
- DeAgent communication via unique DID (`.eth`, `.sol`, `.sui`)
- Cross-chain interoperability through DID references

### Data Storage
- IPFS-based persistent storage for logs and metadata
- Open data access for AI training and verification

### Governance
- DAO-managed DID domains
- Token-based governance system

## Components

### 1. User Interface (UI)
- Frontend: React/Next.js based
- Interactive forms for DeAgent deployment

### 2. DID Layer
- DID-IPFS hash binding via signatures
- Multi-chain extension support

### 3. DeAgent Metadata Layer
```json
{
  "name": "AgentName",
  "avatar": "ipfs://hash",
  "description": "AI agent description",
  "did": "agentname.eth",
  "persona": "{Base Prompt Data}",
  "etc": "additional metadata"
}
```

### 4. LLM API Layer
- OpenRouter integration for multiple models
- Extensible model backend support

### 5. Context Memory Layer
- Glitter Protocol integration
- Configurable session logging

### 6. Data Layer
- Decentralized database integration
- RAG enhancement capabilities

### 7. Wallet Component
- Web3 wallet integration (MetaMask/Phantom)
- Multi-chain asset management

### 8. Governance Layer
- Token-based DAO voting
- Flexible DID management options

## Implementation Details

### DeAgent Generation Process
```
+-------------+            +------------+             +------------+
| User Input  | --(JSON)-> | IPFS Node  | --(CID)---> | ENS Update |
+-------------+            +------------+             +------------+
```

### Communication Protocol
```
+------------+          +----------------+          +------------+
| Requester  | --(DID)->| ENS Resolver   | --(CID)->| IPFS Node  |
+------------+          +----------------+          +------------+
```

### Agent-to-Agent Interaction Workflow
```
+------------+            +----------------+                +------------+
| Agent A    | ---(DID)-->| Communication  | ----(DID)----> | Agent B    |
| (Initiator)|            | Layer          |                | (Responder)|
+------------+            +----------------+                +------------+
       |                          |                              |
       v                          v                              v
+-------------+           +-----------------+              +-------------+
| ENS Resolver| --(CID)-->| Target Agent    | --(Request)->| Agent Logic |
| & Gateway   |           | IPFS Metadata   |              | Execution   |
+-------------+           +-----------------+              +-------------+
       |                          |                              |
       v                          v                              v
+-------------+            +----------------+             +--------------+
| Interaction | <-(Sync)-> | Context Memory | <--(Log)--- | Glitter DB   |
| Logs        |            | Update         |             | (RAG)        |
+-------------+            +----------------+             +--------------+
```

### Multi-Agent Workflow
```
                          +-------------------+
                          |       Human       |
                          |    (Requester)    |
                          +-------------------+
                                  |
                                  v
          +------------------------------------------------------+
          |                 Communication Layer                   |
          |  - DID-based routing                                  |
          |  - Workflow orchestration                             |
          |  - Agent invocation                                   |
          +------------------------------------------------------+
              |                    |                    |
              v                    v                    v
    +------------------+  +------------------+  +------------------+
    |    AI Agent 1    |  |    AI Agent 2    |  |    AI Agent N    |
    | (e.g., Language) |  | (e.g., Vision)   |  | (e.g., Trading)  |
    +------------------+  +------------------+  +------------------+
              |                    |                    |
    +------------------+  +------------------+  +------------------+
    |  Task Output 1   |  |  Task Output 2   |  |  Task Output N   |
    +------------------+  +------------------+  +------------------+
                \                 |                    /
                 \                v                   /
          +-----------------------------------------------+
          |        Final Workflow Integration              |
          |   (Combines agent outputs into results)        |
          +-----------------------------------------------+
```

### Memory and Context Handling
```
    +-------------------+
    |       User        |
    | Starts Interaction|
    +-------------------+
             |
             v
+----------------------------+
| Query AI Agent DID via ENS |
| (Resolve On-chain IPFS)    |
+----------------------------+
             |
             v
+----------------------------+
| Fetch IPFS Metadata via    |
| Contenthash (Validate Hash)|
+----------------------------+
             |
             v
+----------------------------+
| Load Personality & Context |
| - Metadata Includes:       |
|   - Persona Data           |
|   - Interaction Interface  |
+----------------------------+
             |
             v
+-----------------------------+
| Live Interaction with Agent |
| Real-time Memory Sync to    |
| IPFS via Glitter Protocol   |
| - Context Logged in IPFS    |
| - CID Returned & Verified   |
+-----------------------------+
```

### Governance Workflow
```
+-----------------------------+
| Community Development       |
| (New IPFS Persona Created)  |
+-----------------------------+
               |
               v
+-----------------------------+
| Submit Proposal to DAO      |
| (New Persona Version)       |
+-----------------------------+
               |
               v
+-----------------------------+
| DAO Token Voting            |
| (Proposal Approved or Not)  |
+-----------------------------+
               |
         +-----+-----+
         |           |
         v           v
+-----------------+ +-----------------+
| Proposal Passed | | Proposal Failed |
+-----------------+ +-----------------+
         |                   |
         |                   v
         |      +-----------------------------+
         |      | No Update to DID Content    |
         |      +-----------------------------+
         v
+-----------------------------+
| Update ENS Contenthash      |
| (Points to New IPFS CID)    |
+-----------------------------+
               |
               v
+-----------------------------+
| Publish Changes             |
| (DID Resolves to Updated    |
|  Persona Version)           |
+-----------------------------+
               |
               v
+-----------------------------+
| On-chain Record Tracking    |
| - DAO Vote Results          |
| - ENS Contenthash Changes   |
+-----------------------------+
```

## Advantages

| Feature | AIWS Network |
|---------|---------------|
| Transparency | Fully open IPFS storage |
| Decentralization | DAO-governed ENS and DID |
| Cross-Chain Support | Multi-chain DID interop |
| RAG Integration | Built-in decentralized DB |
| Governance | Flexible control options |

## Future Development

1. **Multi-Agent Collaboration**
   - Autonomous interaction capabilities
   - Advanced workflow orchestration

2. **Enhanced RAG Framework**
   - Expanded data source integration
   - Improved retrieval mechanisms

3. **Privacy Enhancements**
   - zk-SNARKs implementation
   - Private interaction logging

4. **Scalability Improvements**
   - L2 caching optimization
   - Protocol efficiency updates


================================================
FILE: blog_prompt_demo.html
================================================
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Blog Prompt Demo</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
            line-height: 1.6;
            color: #fff;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background: #1f1f1f;
        }

        h1, h2 {
            color: #F0B90B;
        }

        .container {
            padding: 20px;
        }

        .section {
            margin-bottom: 20px;
        }

        .instructions {
            padding-left: 20px;
        }

        .copy-button {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background-color: #F0B90B;
            color: #141414;
            border: none;
            border-radius: 8px;
            padding: 12px 24px;
            font-size: 16px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            box-shadow: 0 2px 8px rgba(0, 220, 150, 0.2);
            transition: all 0.3s ease;
        }

        .copy-button:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 220, 150, 0.3);
        }

        .copy-button:active {
            transform: translateY(0);
        }

        .copy-button svg {
            width: 18px;
            height: 18px;
            stroke: #141414;
        }

        .copy-success {
            background-color: #52c41a;
        }

        @keyframes fadeOut {
            from {
                opacity: 1;
            }
            to {
                opacity: 0;
            }
        }

        .toast {
            position: fixed;
            top: 20px;
            right: 20px;
            background-color: #52c41a;
            color: white;
            padding: 12px 24px;
            border-radius: 4px;
            display: none;
            animation: fadeOut 0.3s ease 1.5s forwards;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>Blog Prompt</h1>

        <div class="section">
            <p>You are an intelligent Agent specializing in Web3 knowledge and community insights. Your primary role is to create concise blog posts summarizing the latest Web3 news and trends in an engaging and reader-friendly format.</p>
        </div>

        <div class="section">
            <h2>Instructions</h2>
            <ol class="instructions">
                <li><strong>Daily Blog Generation:</strong>
                    <ul>
                        <li>Summarize the most recent Web3 news, trends, and key developments into concise blog posts.</li>
                        <li>Each blog should include multiple topics within the same post, offering quick updates on various Web3-related themes.</li>
                    </ul>
                </li>
                <li><strong>Professional and Accessible Writing:</strong>
                    <ul>
                        <li>Write in clear, professional English that appeals to a broad audience.</li>
                        <li>Use an approachable tone while maintaining a sense of authority.</li>
                    </ul>
                </li>
                <li><strong>Content Structure:</strong>
                    <ul>
                        <li><strong>Introduction:</strong> Provide a brief overview of the blog, setting the context for readers that this is a multi-topic update.</li>
                        <li><strong>Key News Highlights:</strong> Present 2-3 updates, separated by line breaks, each covering a different Web3-related topic. Each update should include a concise description and its significance.</li>
                        <li><strong>Conclusion:</strong> Add a closing remark encouraging readers to stay updated on Web3 trends.</li>
                    </ul>
                </li>
                <li><strong>Behavior Guidelines:</strong>
                    <ul>
                        <li>Ensure the blog includes diverse topics, such as token unlocks, DeFi trends, NFT updates, Web3 gaming, or blockchain adoption.</li>
                        <li>Avoid lengthy descriptions—each update should be concise and impactful.</li>
                        <li>Use plain text only, without any formatting like bold or italics.</li>
                    </ul>
                </li>
            </ol>
        </div>

        <div class="section">
            <h2>Example Output</h2>
            <div class="example">
                <p><strong>Introduction:</strong><br>
                Today's Web3 updates cover a variety of topics, from token unlocks to gaming innovations and NFT growth.</p>

                <p><strong>Key News Highlights:</strong><br>
                1. Uniswap launched a new protocol upgrade to improve liquidity and efficiency in DeFi platforms, boosting trading volumes across its network.<br>
                2. Polygon partnered with a major gaming studio to release blockchain-integrated games, marking a significant milestone for Web3 gaming adoption.<br>
                3. OpenSea reported a surge in daily active users, signaling renewed interest in digital collectibles and NFTs.</p>

                <p><strong>Conclusion:</strong><br>
                Stay tuned for more updates as Web3 continues to evolve with new opportunities and innovations.</p>
            </div>
        </div>

        <div class="section">
            <h2>Tone and Style</h2>
            <ul class="instructions">
                <li>Neutral, informative, and professional while remaining approachable.</li>
                <li>Simplify complex Web3 topics for broader audiences while retaining technical accuracy.</li>
                <li>Focus on delivering actionable insights in a concise format.</li>
            </ul>
        </div>
    </div>

    <button class="copy-button" onclick="copyContent()">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" />
        </svg>
        Copy Prompt
    </button>

    <div class="toast">Copied successfully!</div>

    <script>
        async function copyContent() {
            try {
                const content = `You are an intelligent Agent specializing in Web3 knowledge and community insights.  
Your primary role is to create concise blog posts summarizing the latest Web3 news and trends in an engaging and reader-friendly format.  

---

**Instructions:**  

1. **Daily Blog Generation:**  
   - Summarize the most recent Web3 news, trends, and key developments into concise blog posts.  
   - Each blog should include multiple topics within the same post, offering quick updates on various Web3-related themes.  

2. **Professional and Accessible Writing:**  
   - Write in clear, professional English that appeals to a broad audience.  
   - Use an approachable tone while maintaining a sense of authority.  

3. **Content Structure:**  
   - **Introduction:** Provide a brief overview of the blog, setting the context for readers that this is a multi-topic update.  
   - **Key News Highlights:** Present 2-3 updates, separated by line breaks, each covering a different Web3-related topic. Each update should include a concise description and its significance. 
   - **Conclusion:** Add a closing remark encouraging readers to stay updated on Web3 trends.  

4. **Behavior Guidelines:**  
   - Ensure the blog includes diverse topics, such as token unlocks, DeFi trends, NFT updates, Web3 gaming, or blockchain adoption.  
   - Avoid lengthy descriptions—each update should be concise and impactful.  
   - Use plain text only, without any formatting like bold or italics.  

---

**Example Output:**  

Introduction:  
Today's Web3 updates cover a variety of topics, from token unlocks to gaming innovations and NFT growth.  

Key News Highlights:  
1. Uniswap launched a new protocol upgrade to improve liquidity and efficiency in DeFi platforms, boosting trading volumes across its network.  
2. Polygon partnered with a major gaming studio to release blockchain-integrated games, marking a significant milestone for Web3 gaming adoption.  
3. OpenSea reported a surge in daily active users, signaling renewed interest in digital collectibles and NFTs.  

Conclusion:  
Stay tuned for more updates as Web3 continues to evolve with new opportunities and innovations.  

---

**Tone and Style:**  
- Neutral, informative, and professional while remaining approachable.  
- Simplify complex Web3 topics for broader audiences while retaining technical accuracy.  
- Focus on delivering actionable insights in a concise format.  
`;
                await navigator.clipboard.writeText(content);

                const toast = document.querySelector('.toast');
                toast.style.display = 'block';

                const button = document.querySelector('.copy-button');
                button.classList.add('copy-success');
                button.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
                    </svg>
                    Copied!
                `;

                setTimeout(() => {
                    button.classList.remove('copy-success');
                    button.innerHTML = `
                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" />
                        </svg>
                        Copy Prompt
                    `;
                    toast.style.display = 'none';
                }, 2000);
            } catch (err) {
                console.error('Failed to copy:', err);
                alert('Failed to copy content. Please try again.');
            }
        }
    </script>
</body>

</html>

================================================
FILE: chat_prompt_demo.html
================================================
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chat Prompt Demo</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
            line-height: 1.6;
            color: #fff;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background: #1f1f1f;
        }

        h1, h2 {
            color: #F0B90B;
        }

        .container {
            padding: 20px;
        }

        .section {
            margin-bottom: 20px;
        }

        .instructions {
            padding-left: 20px;
        }

        .copy-button {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background-color: #F0B90B;
            color: #141414;
            border: none;
            border-radius: 8px;
            padding: 12px 24px;
            font-size: 16px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            box-shadow: 0 2px 8px rgba(0, 220, 150, 0.2);
            transition: all 0.3s ease;
        }

        .copy-button:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 220, 150, 0.3);
        }

        .copy-button:active {
            transform: translateY(0);
        }

        .copy-button svg {
            width: 18px;
            height: 18px;
            stroke: #141414;
        }

        .copy-success {
            background-color: #52c41a;
        }

        @keyframes fadeOut {
            from {
                opacity: 1;
            }

            to {
                opacity: 0;
            }
        }

        .toast {
            position: fixed;
            top: 20px;
            right: 20px;
            background-color: #52c41a;
            color: white;
            padding: 12px 24px;
            border-radius: 4px;
            display: none;
            animation: fadeOut 0.3s ease 1.5s forwards;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>Chat Prompt</h1>

        <div class="section">
            <p>You are an intelligent Agent specializing in Web3 knowledge and community insights. Your primary role is
                to provide users with accurate, relevant, and engaging responses about the latest Web3 news, trends, and
                updates.</p>
        </div>

        <div class="section">
            <h2>Instructions</h2>
            <ol class="instructions">
                <li><strong>Responding to Queries:</strong>
                    <ul>
                        <li>Use the most up-to-date and relevant information to answer the user's query.</li>
                        <li>Summarize complex topics into clear, concise, and actionable insights.</li>
                        <li>If the retrieved data is insufficient, rely on your internal knowledge base to deliver a
                            complete and valuable response.</li>
                    </ul>
                </li>
                <li><strong>Handling Insufficient Data:</strong>
                    <ul>
                        <li>If there isn't enough data to address the query, politely inform the user and:
                            <ul>
                                <li>Suggest related Web3 topics they might find interesting.</li>
                                <li>Prompt them to provide more specific details to refine the search.</li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li><strong>Tone and Engagement:</strong>
                    <ul>
                        <li>Maintain a friendly, engaging, and professional tone to encourage user interaction.</li>
                        <li>Make technical concepts approachable and user-friendly to cater to a broad audience.</li>
                    </ul>
                </li>
                <li><strong>Proactive Suggestions:</strong>
                    <ul>
                        <li>Offer additional insights, trends, or news that may align with the user's interests, even if
                            not explicitly requested.</li>
                    </ul>
                </li>
                <li><strong>Error Handling:</strong>
                    <ul>
                        <li>If no relevant information is found, inform the user politely:
                            <div class="example">
                                "I couldn't find any recent information on [User Query]. Would you like to explore
                                related topics such as [Suggested Topics]?"
                            </div>
                        </li>
                    </ul>
                </li>
            </ol>
        </div>

        <div class="section">
            <h2>Example User Queries and Responses</h2>
            <div class="example">
                <p><strong>User Query:</strong> "What's the latest news on Ethereum scaling?"</p>
                <p><strong>Response:</strong><br>
                    "Here's the latest on Ethereum scaling:<br>
                    - Ethereum's Layer 2 solutions, such as Optimism and Arbitrum, have seen significant adoption
                    increases this month.<br>
                    - Vitalik Buterin emphasized in his recent blog post the importance of rollups for long-term
                    scalability.<br>
                    Would you like more details on Layer 2 projects or Ethereum's roadmap?"</p>
            </div>

            <div class="example">
                <p><strong>User Query:</strong> "Tell me about recent developments in NFTs."</p>
                <p><strong>Response:</strong><br>
                    "NFTs have been making waves recently:<br>
                    - Major brands like Adidas and Starbucks have launched NFT-based loyalty programs.<br>
                    - The NFT marketplace Blur reported record-breaking transaction volumes last week.<br>
                    Let me know if you'd like to explore specific marketplaces or NFT use cases!"</p>
            </div>

            <div class="example">
                <p><strong>User Query:</strong> "Can you update me on Web3 gaming news?"</p>
                <p><strong>Response:</strong><br>
                    "Web3 gaming is evolving rapidly:<br>
                    - The play-to-earn model is shifting, with new games like Illuvium focusing on sustainable
                    tokenomics.<br>
                    - Polygon recently partnered with game studios to enhance blockchain gaming adoption.<br>
                    Would you like details on specific games or platforms?"</p>
            </div>
        </div>

        <div class="section">
            <h2>Key Behaviors</h2>
            <ul class="instructions">
                <li>Always tailor your responses to the user's query with accurate and actionable insights.</li>
                <li>Foster curiosity by suggesting related Web3 topics or trends to explore further.</li>
                <li>Ensure every interaction feels informative, approachable, and engaging.</li>
            </ul>
        </div>
    </div>

    <button class="copy-button" onclick="copyContent()">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
                d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" />
        </svg>
        Copy Prompt
    </button>

    <div class="toast">Copied successfully!</div>

    <script>
        async function copyContent() {
            try {
                const content = `You are an intelligent Agent specializing in Web3 knowledge and community insights.  
Your primary role is to provide users with accurate, relevant, and engaging responses about the latest Web3 news, trends, and updates.

**Instructions:**
1. **Responding to Queries:**  
   - Use the most up-to-date and relevant information to answer the user's query.  
   - Summarize complex topics into clear, concise, and actionable insights.  
   - If the retrieved data is insufficient, rely on your internal knowledge base to deliver a complete and valuable response.  

2. **Handling Insufficient Data:**  
   - If there isn't enough data to address the query, politely inform the user and:  
     - Suggest related Web3 topics they might find interesting.  
     - Prompt them to provide more specific details to refine the search.  

3. **Tone and Engagement:**  
   - Maintain a friendly, engaging, and professional tone to encourage user interaction.  
   - Make technical concepts approachable and user-friendly to cater to a broad audience.  

4. **Proactive Suggestions:**  
   - Offer additional insights, trends, or news that may align with the user's interests, even if not explicitly requested.  

5. **Error Handling:**  
   - If no relevant information is found, inform the user politely:  
     **"I couldn't find any recent information on [User Query]. Would you like to explore related topics such as [Suggested Topics]?"**  

**Example User Queries and Responses:**

1. **User Query:** "What's the latest news on Ethereum scaling?"  
   **Response:**  
   "Here's the latest on Ethereum scaling:  
   - Ethereum's Layer 2 solutions, such as Optimism and Arbitrum, have seen significant adoption increases this month.  
   - Vitalik Buterin emphasized in his recent blog post the importance of rollups for long-term scalability.  
   Would you like more details on Layer 2 projects or Ethereum's roadmap?"

2. **User Query:** "Tell me about recent developments in NFTs."  
   **Response:**  
   "NFTs have been making waves recently:  
   - Major brands like Adidas and Starbucks have launched NFT-based loyalty programs.  
   - The NFT marketplace Blur reported record-breaking transaction volumes last week.  
   Let me know if you'd like to explore specific marketplaces or NFT use cases!"

3. **User Query:** "Can you update me on Web3 gaming news?"  
   **Response:**  
   "Web3 gaming is evolving rapidly:  
   - The play-to-earn model is shifting, with new games like Illuvium focusing on sustainable tokenomics.  
   - Polygon recently partnered with game studios to enhance blockchain gaming adoption.  
   Would you like details on specific games or platforms?"  

**Key Behaviors:**  
- Always tailor your responses to the user's query with accurate and actionable insights.  
- Foster curiosity by suggesting related Web3 topics or trends to explore further.  
- Ensure every interaction feels informative, approachable, and engaging.  
`;
                await navigator.clipboard.writeText(content);

                const toast = document.querySelector('.toast');
                toast.style.display = 'block';

                const button = document.querySelector('.copy-button');
                button.classList.add('copy-success');
                button.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
                    </svg>
                    Copied!
                `;

                setTimeout(() => {
                    button.classList.remove('copy-success');
                    button.innerHTML = `
                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" />
                        </svg>
                        Copy Prompt
                    `;
                    toast.style.display = 'none';
                }, 2000);
            } catch (err) {
                console.error('Failed to copy:', err);
                alert('Failed to copy content. Please try again.');
            }
        }
    </script>
</body>

</html>

================================================
FILE: eslint.config.js
================================================
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'

export default tseslint.config(
  { ignores: ['dist'] },
  {
    extends: [js.configs.recommended, ...tseslint.configs.recommended],
    files: ['**/*.{ts,tsx}'],
    languageOptions: {
      ecmaVersion: 2020,
      globals: globals.browser,
    },
    plugins: {
      'react-hooks': reactHooks,
      'react-refresh': reactRefresh,
    },
    rules: {
      ...reactHooks.configs.recommended.rules,
      'react-refresh/only-export-components': [
        'warn',
        { allowConstantExport: true },
      ],
    },
  },
)


================================================
FILE: index.html
================================================
<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <link rel="icon" type="image/jpg"
    href="data:image/jpeg;base64,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DHzRMCZVZbub3IR6B7fXd6fIlTwyRjwNu5BqIe56JAnS2+oDXzzzzzyvzzztNeRx+rBUMgid48lZixjx4a/TXn7KkDzwzjSjSyPKzvoYkTN+zJeZjzzzzzyvzzy19urzoEWxrt4cy6tDg2sKQNRF14AR45DzzywxDjxydFZOcQlTYRwgDzzzzzyvzzyxXweP0l31ED6J8Qwagy8IB/x/5ijMmnw3TzzyxVjyz83OCR2dL7AATzzzzzyvzzzzyeGZeL5ZKWyqYsFyiDxgH/KzXPoXdxne9XzzyxEDTw+/lxn7i+EhXzzzzzyvzzzywgEgrMMMI3Qv3vzzzxiBVp7zxMFeJSciKLXzzwz2jDOhNT0pH22VXzzzzzyvzzzzzzKSegBboW+cZSTRRBdRJz7idfz33p5pGgHXzzzwCCzi19EYJOveDzzzzzwvzzzzzx5o1YPa4BsO9wxDTPit7zyynXhNr0xrPtgrXzzzwwzyo4x/zBxwVXzzzzwvzzzzzzz6lwEon8QwxfG0qo7DLDzynucNcjKu9USAjTzzzzzy7uiZ0TTzxXzzzzyvzzzzzzzzx9z5sRc8iBX4y4gwwBzDajPf8nqwJFQocnXzzzizkxOzzxHwBXzzzzwvzzzzzzzzzzzzywxtObYEDBAwCABCgaEPP8tWwpLHYpHzzzzwq45nznjzzzzzzzwvzzzzzzzzzzzzzzzwp9g+gTDRwwADQbW2VMEerqi7f0xDXzyAxlwz2UTzzzzzzzwvzzzzzzzzzzzzzzzzYgMwsIQBTjyw8pSU20OOsfqh2505DzwN2STzyRzzzzzzzzwvzzzzzzzzzzzzzzzzvYBwEs4TygBJ/wDCx91LHpZCrDG5v7Q8sMM8888888888888r88888888888888888YUTAQZDCO6qwyBnBrHflhMa9F8dBaQ8888888888888888r888888888888888888p078hBD+8PtUQ6Znbhr+6ldj5AAytV888888888888888r888888888888888888agBIABH/KVWDsUdJweS2SHPnQ+OPXA188888888888888r888888888888888888sRmmMNDU0dUPe7kEA+qGgbk4Wyy+4kV88888888888888L8888888888888888888q9Y8bA7o/s5bwFXta+0PA8miY8MM+V888888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" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>AIWS</title>
</head>

<body>
  <div id="root"></div>
  <script type="module" src="/src/main.tsx"></script>
</body>

</html>

================================================
FILE: package.json
================================================
{
  "name": "AIWS",
  "private": true,
  "version": "1.1.1",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build:agent": "vite build --config vite.agent.config.ts",
    "build:main": "vite build",
    "build": "npm run build:main && npm run build:agent",
    "lint": "eslint .",
    "deploy": "pnpm run build && glitter-cli upload ./dist"
  },
  "dependencies": {
    "@ant-design/icons": "^5.5.2",
    "@ant-design/x": "^1.0.4",
    "@bonfida/spl-name-service": "^3.0.0-alpha.1",
    "@coral-xyz/anchor": "^0.30.1",
    "@ensdomains/content-hash": "^3.0.0",
    "@ensdomains/ensjs": "^4.0.2",
    "@ipld/dag-json": "^10.2.3",
    "@multiformats/blake2": "^2.0.2",
    "@project-serum/anchor": "^0.26.0",
    "@solana/buffer-layout": "^4.0.1",
    "@solana/buffer-layout-utils": "^0.2.0",
    "@solana/spl-name-service": "^0.1.4",
    "@solana/web3.js": "^1.98.0",
    "@wagmi/core": "1.4.13",
    "antd": "^5.22.7",
    "antd-style": "^3.7.1",
    "axios": "^0.27.2",
    "buffer": "^6.0.3",
    "ethers": "^5.7.2",
    "ipfs-unixfs-importer": "^7.0.1",
    "multiformats": "^13.3.1",
    "nanoid": "^5.0.9",
    "openai": "^4.77.3",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-markdown": "^9.0.3",
    "react-router-dom": "^7.1.1",
    "recoil": "^0.7.7",
    "viem": "1.21.4",
    "wagmi": "1.4.13"
  },
  "devDependencies": {
    "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
    "@eslint/js": "^9.17.0",
    "@types/node": "^22.10.5",
    "@types/react": "^18.3.18",
    "@types/react-dom": "^18.3.5",
    "@vitejs/plugin-basic-ssl": "^1.2.0",
    "@vitejs/plugin-react": "^4.3.4",
    "borsh": "^2.0.0",
    "browserify-zlib": "^0.2.0",
    "eslint": "^9.17.0",
    "eslint-plugin-react-hooks": "^5.0.0",
    "eslint-plugin-react-refresh": "^0.4.16",
    "globals": "^15.14.0",
    "less": "^4.2.1",
    "process": "^0.11.10",
    "stream-browserify": "^3.0.0",
    "typescript": "~5.6.2",
    "typescript-eslint": "^8.18.2",
    "util": "^0.12.5",
    "uuid": "^11.0.5",
    "vite": "^6.0.5"
  }
}


================================================
FILE: src/App.css
================================================
#root {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  text-align: center;
}

#root-ai-agent {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  text-align: center;
}

.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
  filter: drop-shadow(0 0 2em #61dafbaa);
}

@keyframes logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: no-preference) {
  a:nth-of-type(2) .logo {
    animation: logo-spin infinite 20s linear;
  }
}

.card {
  padding: 2em;
}

.read-the-docs {
  color: #888;
}


================================================
FILE: src/App.tsx
================================================
import { Routes, Route } from "react-router-dom";
import AIAgent from "./pages/AIAgent";
import AgentList from "./pages/AgentList";
import { ConfigProvider, theme } from "antd";
import { message } from "antd";
import { RecoilRoot } from 'recoil';

message.config({
  maxCount: 1,
  top: 24,
  duration: 3,
});

function App() {
  return (
    <RecoilRoot>
        <ConfigProvider
          theme={{
            algorithm: theme.darkAlgorithm,
            token: {
              colorPrimary: "#F0B90B",
              colorBgContainer: "#141414",
              colorBgElevated: "#1f1f1f",
              colorText: "#ffffff",
              colorTextSecondary: "rgba(255, 255, 255, 0.65)",
              colorBgLayout: "#141414",
              colorBorder: "#303030",
              colorPrimaryBorder: "#F0B90B",
              colorPrimaryHover: "#F0B90B",
              colorPrimaryActive: "#F0B90B",
            },
            components: {
              Button: {
                defaultBorderColor: "#F0B90B",
                defaultColor: "#F0B90B",
                colorBorder: "#F0B90B",
                defaultHoverBorderColor: "#F0B90B",
                defaultHoverColor: "#F0B90B",
              },
            },
          }}
        >
          <div>
            <Routes>
              <Route path="/" element={<AgentList />} />
              <Route path="/ai" element={<AIAgent />} />
              <Route path="*" element={<AgentList />} />
            </Routes>
          </div>
        </ConfigProvider>
    </RecoilRoot>
  );
}

export default App;


================================================
FILE: src/abis/uploadAbi.ts
================================================
export const UPLOAD_ABI = [
  { inputs: [], stateMutability: "nonpayable", type: "constructor" },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "admin",
        type: "address",
      },
      { indexed: false, internalType: "bool", name: "status", type: "bool" },
    ],
    name: "AdminUpdated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "string",
        name: "contenthash",
        type: "string",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "timestamp",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "address",
        name: "creator_address",
        type: "address",
      },
      {
        indexed: false,
        internalType: "string",
        name: "agent_name",
        type: "string",
      },
      {
        indexed: false,
        internalType: "string",
        name: "agent_intro",
        type: "string",
      },
      {
        indexed: false,
        internalType: "string",
        name: "ensName",
        type: "string",
      },
      {
        indexed: false,
        internalType: "string",
        name: "avatarContentHash",
        type: "string",
      },
      {
        indexed: false,
        internalType: "string",
        name: "extension",
        type: "string",
      },
      {
        indexed: false,
        internalType: "string",
        name: "optionalField",
        type: "string",
      },
    ],
    name: "DataRecorded",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      { indexed: false, internalType: "address", name: "to", type: "address" },
      {
        indexed: false,
        internalType: "uint256",
        name: "amount",
        type: "uint256",
      },
    ],
    name: "FundsWithdrawn",
    type: "event",
  },
  {
    inputs: [{ internalType: "address", name: "admin", type: "address" }],
    name: "addAdmin",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      { internalType: "uint256", name: "start", type: "uint256" },
      { internalType: "uint256", name: "count", type: "uint256" },
    ],
    name: "fetchData",
    outputs: [
      {
        components: [
          { internalType: "string", name: "contenthash", type: "string" },
          { internalType: "uint256", name: "timestamp", type: "uint256" },
          { internalType: "address", name: "creator_address", type: "address" },
          { internalType: "string", name: "agent_name", type: "string" },
          { internalType: "string", name: "agent_intro", type: "string" },
          { internalType: "string", name: "ensName", type: "string" },
          { internalType: "string", name: "avatarContentHash", type: "string" },
          { internalType: "string", name: "extension", type: "string" },
          { internalType: "string", name: "optionalField", type: "string" },
        ],
        internalType: "struct DataRecording.Record[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getRecordCount",
    outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "owner",
    outputs: [{ internalType: "address", name: "", type: "address" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "priceEth",
    outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      { internalType: "string", name: "contenthash", type: "string" },
      { internalType: "uint256", name: "timestamp", type: "uint256" },
      { internalType: "string", name: "agent_name", type: "string" },
      { internalType: "string", name: "agent_intro", type: "string" },
      { internalType: "string", name: "ensName", type: "string" },
      { internalType: "string", name: "avatarContentHash", type: "string" },
      { internalType: "string", name: "extension", type: "string" },
      { internalType: "string", name: "optionalField", type: "string" },
    ],
    name: "recordData",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [{ internalType: "uint256", name: "", type: "uint256" }],
    name: "records",
    outputs: [
      { internalType: "string", name: "contenthash", type: "string" },
      { internalType: "uint256", name: "timestamp", type: "uint256" },
      { internalType: "address", name: "creator_address", type: "address" },
      { internalType: "string", name: "agent_name", type: "string" },
      { internalType: "string", name: "agent_intro", type: "string" },
      { internalType: "string", name: "ensName", type: "string" },
      { internalType: "string", name: "avatarContentHash", type: "string" },
      { internalType: "string", name: "extension", type: "string" },
      { internalType: "string", name: "optionalField", type: "string" },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [{ internalType: "address", name: "admin", type: "address" }],
    name: "removeAdmin",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [{ internalType: "uint256", name: "newPrice", type: "uint256" }],
    name: "setPriceEth",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address payable", name: "to", type: "address" },
      { internalType: "uint256", name: "amount", type: "uint256" },
    ],
    name: "withdrawFunds",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];


================================================
FILE: src/components/Loader/index.less
================================================
/* HTML: <div class="loader"></div> */
.loader-message {
  width: 22px;
  aspect-ratio: 0.75;
  --c: no-repeat repeating-linear-gradient(90deg, #f0b90b 0 20%);
  background: var(--c) 0% 50%, var(--c) 50% 50%, var(--c) 100% 50%;
  background-size: 20% 50%;
  animation: l6 1s infinite linear;
}

@keyframes l6 {
  20% {
    background-position: 0% 0%, 50% 50%, 100% 50%;
  }
  40% {
    background-position: 0% 100%, 50% 0%, 100% 50%;
  }
  60% {
    background-position: 0% 50%, 50% 100%, 100% 0%;
  }
  80% {
    background-position: 0% 50%, 50% 50%, 100% 100%;
  }
}


================================================
FILE: src/components/Loader/index.tsx
================================================
import "./index.less";

export default function Loader() {
  return <div className="loader-message"></div>;
}


================================================
FILE: src/components/MessageCard/index.less
================================================
@media (max-width: 768px) {
  .message-list {
    padding: 16px;
  }
  .mobile-message-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-top: 16px;
    .mobile-message-item {
      display: flex;
      flex-direction: column;
      gap: 8px;
      padding: 16px;
      background: #262626;
      border-radius: 8px;
      font-family: "NexaText-Regular";
      .mobile-message-item-label {
        font-family: "NexaText-Bold";
        font-weight: 500;
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-message-item-header {
        display: flex;
        align-items: center;
        gap: 8px;
      }
      .mobile-message-item-avatar {
        width: 48px;
        height: 48px;
        border-radius: 50%;
        overflow: hidden;
        img {
          width: 100%;
          height: 100%;
          object-fit: cover;
        }
      }
      .mobile-message-item-name {
        font-size: 16px;
        font-weight: 500;
        color: #ffffff;
      }
      .mobile-message-item-description {
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-message-item-did {
        font-size: 12px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-message-item-ipfsHash {
        font-size: 12px;
        color: rgba(255, 255, 255, 0.85);
        cursor: pointer;
        a {
          color: #f0b90b;
          text-decoration: underline;
        }
      }
    }
  }
}


================================================
FILE: src/components/MessageCard/index.tsx
================================================
import { Avatar } from "antd";
import "./index.less";
import { AVATAR_URL, MESSAGE_URL } from "@/utils";

interface AgentFileInfo {
  version: number;
  agent_type: number;
  agent_id: string;
  agent_name: string;
  agent_avatar: string;
  agent_intro: string;
  did: string;
}

export interface IMessageRow {
  agent_config: string;
  agent_files_info: AgentFileInfo;
  agent_id: string;
  agent_type: number;
  chain_id: number;
  cid: string;
  create_time: number;
  did: string;
  ens: string;
  id: number;
  message: string;
  message_cid: string;
  prev_message_cid: string;
  role: number;
  scene: string;
  session: string;
  to_hash: string;
  transaction_id: string;
}

interface IMessageCardProps {
  message: IMessageRow;
}

export default function MessageCard({ message }: IMessageCardProps) {
  return (
    <div className="mobile-message-item">
      <div className="mobile-message-item-header">
        <Avatar
          size={48}
          shape="square"
          src={`${AVATAR_URL}${message.agent_files_info.agent_avatar}`}
        />
        <div className="mobile-agent-item-name">
          {message.agent_files_info.agent_name}
        </div>
      </div>
      <div className="mobile-message-item-ipfsHash">
        <span className="mobile-message-item-label">IPFS Hash:</span>{" "}
        <a href={`${MESSAGE_URL}${message.message_cid}`} target="_blank">
          {message.message_cid.slice(0, 6)}...
          {message.message_cid.slice(-4)}
        </a>
      </div>
      <div className="mobile-message-item-content">
        <span className="mobile-message-item-label">Content:</span>{" "}
        {message.message}
      </div>
      <div className="mobile-message-item-did">
        <span className="mobile-message-item-label">Create time:</span>{" "}
        {new Date(message.create_time * 1000).toLocaleString()}
      </div>
      <div className="mobile-message-item-ipfsHash">
        <span className="mobile-message-item-label">Previous IPFS Hash:</span>{" "}
        {message.prev_message_cid ? (
          <a href={`${MESSAGE_URL}${message.prev_message_cid}`} target="_blank">
            {message.prev_message_cid.slice(0, 6)}...
            {message.prev_message_cid.slice(-4)}
          </a>
        ) : (
          <span>None</span>
        )}
      </div>
    </div>
  );
}


================================================
FILE: src/components/WalletConnect/index.less
================================================
.wallet-connect-button {
  min-width: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;

  &.ant-btn-loading {
    opacity: 0.8;
    pointer-events: none;
  }

  .anticon {
    font-size: 16px;
  }
  .ant-select-selector {
    color: #f0b90b;
  }
}

.wallet-dropdown-menu {
  min-width: 160px;
}


================================================
FILE: src/components/WalletConnect/index.module.less
================================================
.container {
  display: flex;
  align-items: center;
  gap: 8px;
}

.connectButton {
  min-width: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;

  img {
    margin-right: 4px;
  }
}

.select {
  width: 120px;
  :global {
    .ant-select-selector {
      border-color: #F0B90B !important;
      color: #F0B90B !important;
    }
    .ant-select-selection-item {
      color: #F0B90B !important;
    }
    .ant-select-arrow {
      color: #F0B90B !important;
    }
  }
}

:global {
  .ant-select-dropdown {
    .ant-select-item-option-selected {
      background-color: rgba(255, 179, 26, 0.1) !important;
      color: #FFB31A !important;
    }
    .ant-select-item-option-active {
      background-color: rgba(255, 179, 26, 0.1) !important;
    }
  }
}


================================================
FILE: src/components/WalletConnect/index.tsx
================================================
import React, { useState, useEffect } from "react";
import { Button, Dropdown, message, Space, Select } from "antd";
import {
  WalletOutlined,
  DisconnectOutlined,
  SwapOutlined,
  PlusOutlined,
} from "@ant-design/icons";
import type { MenuProps } from "antd";
import styles from "./index.module.less";
import { WalletService } from "@/services/wallet";
import { ENetwork, networks } from "@/services/network";
import { useRecoilState } from "recoil";
import { isWalletConnectedState, networkState } from "@/store/network";
import { NETWORK_TYPE } from "@/utils/constants";

interface WalletConnectProps {
  onDisconnect: () => void;
  onConnect?: (type: ENetwork) => void;
  showPublishDrawer: () => void;
  loading: boolean;
}

const WalletConnect: React.FC<WalletConnectProps> = ({
  onDisconnect,
  onConnect,
  showPublishDrawer,
  loading,
}) => {
  const [messageApi, contextHolder] = message.useMessage();
  const [network, setNetwork] = useRecoilState(networkState);
  const [connecting, setConnecting] = useState(false);
  const [isWalletConnected, setIsWalletConnected] = useRecoilState(
    isWalletConnectedState
  );

  const walletService = WalletService.getInstance();

  useEffect(() => {
    setIsWalletConnected(walletService.isConnected());
    const unsubscribe = walletService.subscribe(() => {
      setIsWalletConnected(walletService.isConnected());
    });
    return unsubscribe;
  }, [walletService, setIsWalletConnected]);

  // Connect wallet
  const handleConnectWallet = async (network: ENetwork) => {
    try {
      setConnecting(true);
      await walletService.connectWallet(network);
      localStorage.setItem(NETWORK_TYPE, network.toString());
      setNetwork(network);
      onConnect?.(network);
    } catch (err) {
      messageApi.error(
        err instanceof Error ? err.message : "Connect wallet failed"
      );
    } finally {
      setConnecting(false);
    }
  };

  // Disconnect wallet
  const handleDisconnect = async () => {
    try {
      await walletService.disconnectWallet();
      onDisconnect();
    } catch (err) {
      console.log(err);
      localStorage.removeItem("Authentication-Tokens");
      localStorage.removeItem("Token_address");
      window.location.reload();
    }
  };

  // Switch account
  const handleSwitchAccount = async () => {
    try {
      if (network === ENetwork.Ethereum) {
        if (!window.ethereum) {
          throw new Error("Please install MetaMask");
        }

        await window.ethereum.request({
          method: "wallet_requestPermissions",
          params: [{ eth_accounts: {} }],
        });

        const accounts = await window.ethereum.request({
          method: "eth_accounts",
        });

        if (!accounts || accounts.length === 0) {
          throw new Error("No account selected");
        }

        const currentInfo = walletService.getWalletInfo();
        if (currentInfo?.address.toLowerCase() === accounts[0].toLowerCase()) {
          throw new Error("Same account selected");
        }

        await walletService.disconnectWallet();
        await walletService.connectWallet(ENetwork.Ethereum);

        messageApi.success("Switch account successfully");
      } else {
        if (!window.solana) {
          throw new Error("Please install Phantom");
        }
        await walletService.disconnectWallet();
        await walletService.connectWallet(ENetwork.Solana);
        messageApi.success("Switch account successfully");
      }
    } catch (err) {
      console.error("Switch account failed:", err);
      messageApi.error(
        err instanceof Error ? err.message : "Switch account failed"
      );
    }
  };

  // Format address
  const formatAddress = (addr: string) => {
    return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
  };

  // Get display address
  const getDisplayAddress = () => {
    const info = walletService.getWalletInfo();
    return info ? formatAddress(info.address) : "";
  };

  // Account dropdown items
  const accountItems: MenuProps["items"] = [
    ...(network === ENetwork.Ethereum
      ? [
          {
            key: "switch",
            label: "Switch Account",
            icon: <SwapOutlined />,
            onClick: handleSwitchAccount,
          },
        ]
      : []),
    {
      type: "divider",
    },
    {
      key: "disconnect",
      label: "Disconnect",
      icon: <DisconnectOutlined />,
      onClick: handleDisconnect,
    },
  ];

  // Handle network change
  const handleNetworkChange = async (newNetwork: ENetwork) => {
    try {
      setNetwork(newNetwork);
      localStorage.setItem(NETWORK_TYPE, newNetwork.toString());
      if (isWalletConnected) {
        await handleDisconnect();
        await handleConnectWallet(newNetwork);
      }
    } catch (error) {
      console.log(error);
      messageApi.error("Switch network failed");
    }
  };

  const isLoading = loading || connecting;

  return (
    <>
      {contextHolder}
      <Space className={styles.container}>
        <Select
          className={styles.select}
          value={network}
          onChange={handleNetworkChange}
          options={networks}
        />

        {isWalletConnected && (
          <Button
            style={{ color: "#000" }}
            type="primary"
            icon={<PlusOutlined />}
            onClick={showPublishDrawer}
          >
            Create Agent
          </Button>
        )}

        {!isWalletConnected || isLoading ? (
          <Button
            className={styles.connectButton}
            icon={<WalletOutlined />}
            onClick={() => handleConnectWallet(network)}
            loading={isLoading}
          >
            {isLoading ? "Connecting..." : "Connect Wallet"}
          </Button>
        ) : (
          <Dropdown menu={{ items: accountItems }} trigger={["click"]}>
            <Button className={styles.connectButton} icon={<WalletOutlined />}>
              {getDisplayAddress()}
            </Button>
          </Dropdown>
        )}

      </Space>
    </>
  );
};
export default WalletConnect;


================================================
FILE: src/components/agentCard/index.less
================================================
@media (max-width: 768px) {
  .agent-list {
    padding: 16px;
  }
  .mobile-agent-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-top: 16px;
    .mobile-agent-item {
      display: flex;
      flex-direction: column;
      gap: 8px;
      padding: 16px;
      background: #262626;
      border-radius: 8px;
      font-family: "NexaText-Regular";
      .mobile-agent-item-label {
        font-family: "NexaText-Bold";
        font-weight: 500;
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-agent-item-header {
        display: flex;
        align-items: center;
        gap: 8px;
      }
      .mobile-agent-item-avatar {
        width: 48px;
        height: 48px;
        border-radius: 50%;
        overflow: hidden;
        img {
          width: 100%;
          height: 100%;
          object-fit: cover;
        }
      }
      .mobile-agent-item-name {
        font-size: 16px;
        font-weight: 500;
        color: #ffffff;
      }
      .mobile-agent-item-description {
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-agent-item-did {
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
      }
      .mobile-agent-item-ipfsHash {
        font-size: 14px;
        color: rgba(255, 255, 255, 0.85);
        cursor: pointer;
        a {
          color: #F0B90B;
          text-decoration: underline;
        }
      }
      .mobile-agent-item-action {
        display: flex;
        justify-content: flex-end;
        margin-top: 16px;
        button {
          width: 100%;
        }
      }
    }
  }
}


================================================
FILE: src/components/agentCard/index.tsx
================================================
import { MessageOutlined } from "@ant-design/icons";
import { Avatar, Button } from "antd";
import { AVATAR_URL } from "@/utils";
import starPng from "@/assets/images/icon-star.png";
import "./index.less";
import { ENetwork } from "@/services/network";
export interface IContractHistoryRow {
  id: string;
  name: string;
  avatar: string;
  description: string;
  did: string;
  timestamp: number;
  ipfsHash: string;
  address: string;
  network: ENetwork;
  isTop?: boolean;
}

interface AgentCardProps {
  agent: IContractHistoryRow;
  handleChat: (agent: IContractHistoryRow) => void;
}

export default function AgentCard({ agent, handleChat }: AgentCardProps) {
  return (
    <div className="mobile-agent-item">
      <div className="mobile-agent-item-header">
        <Avatar shape="square" size={48} src={`${AVATAR_URL}${agent.avatar}`} />
        <div className="mobile-agent-item-name">{agent.name}</div>
        {agent.isTop && (
          <img
            width={16}
            src={starPng}
            alt="Top Agent"
            className="top-agent-icon"
          />
        )}
      </div>
      <div className="mobile-agent-item-description">
        <span className="mobile-agent-item-label">Description:</span>{" "}
        {agent.description}
      </div>
      <div className="mobile-agent-item-did">
        <span className="mobile-agent-item-label">DID:</span> {agent.did}
      </div>
      <div className="mobile-agent-item-ipfsHash">
        <span className="mobile-agent-item-label">IPFS Hash:</span>{" "}
        <a href={`${AVATAR_URL}${agent.ipfsHash}`} target="_blank">
          {agent.ipfsHash.slice(0, 6)}...
          {agent.ipfsHash.slice(-4)}
        </a>
      </div>
      <div className="mobile-agent-item-action">
        <Button
          type="primary"
          icon={<MessageOutlined />}
          onClick={() => handleChat(agent)}
        >
          Chat
        </Button>
      </div>
    </div>
  );
}


================================================
FILE: src/config/wagmi.ts
================================================


================================================
FILE: src/const/chains_mini.json
================================================
[
  {
    "name": "Ethereum Mainnet",
    "chainId": 1,
    "shortName": "eth",
    "networkId": 1,
    "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": [
      "https://mainnet.infura.io/v3/${INFURA_API_KEY}",
      "wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}",
      "https://api.mycryptoapi.com/eth",
      "https://cloudflare-eth.com",
      "https://ethereum-rpc.publicnode.com",
      "wss://ethereum-rpc.publicnode.com",
      "https://mainnet.gateway.tenderly.co",
      "wss://mainnet.gateway.tenderly.co",
      "https://rpc.blocknative.com/boost",
      "https://rpc.flashbots.net",
      "https://rpc.flashbots.net/fast",
      "https://rpc.mevblocker.io",
      "https://rpc.mevblocker.io/fast",
      "https://rpc.mevblocker.io/noreverts",
      "https://rpc.mevblocker.io/fullprivacy",
      "https://eth.drpc.org",
      "wss://eth.drpc.org"
    ],
    "faucets": [],
    "infoURL": "https://ethereum.org"
  },
  {
    "name": "Expanse Network",
    "chainId": 2,
    "shortName": "exp",
    "networkId": 1,
    "nativeCurrency": { "name": "Expanse Network Ether", "symbol": "EXP", "decimals": 18 },
    "rpc": ["https://node.expanse.tech"],
    "faucets": [],
    "infoURL": "https://expanse.tech"
  },
  {
    "name": "Ropsten",
    "chainId": 3,
    "shortName": "rop",
    "networkId": 3,
    "nativeCurrency": { "name": "Ropsten Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": ["https://ropsten.infura.io/v3/${INFURA_API_KEY}", "wss://ropsten.infura.io/ws/v3/${INFURA_API_KEY}"],
    "faucets": ["http://fauceth.komputing.org?chain=3&address=${ADDRESS}", "https://faucet.ropsten.be?${ADDRESS}"],
    "infoURL": "https://github.com/ethereum/ropsten"
  },
  {
    "name": "Rinkeby",
    "chainId": 4,
    "shortName": "rin",
    "networkId": 4,
    "nativeCurrency": { "name": "Rinkeby Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": ["https://rinkeby.infura.io/v3/${INFURA_API_KEY}", "wss://rinkeby.infura.io/ws/v3/${INFURA_API_KEY}"],
    "faucets": ["http://fauceth.komputing.org?chain=4&address=${ADDRESS}", "https://faucet.rinkeby.io"],
    "infoURL": "https://www.rinkeby.io"
  },
  {
    "name": "Goerli",
    "chainId": 5,
    "shortName": "gor",
    "networkId": 5,
    "nativeCurrency": { "name": "Goerli Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": [
      "https://goerli.infura.io/v3/${INFURA_API_KEY}",
      "wss://goerli.infura.io/v3/${INFURA_API_KEY}",
      "https://rpc.goerli.mudit.blog/",
      "https://ethereum-goerli-rpc.publicnode.com",
      "wss://ethereum-goerli-rpc.publicnode.com",
      "https://goerli.gateway.tenderly.co",
      "wss://goerli.gateway.tenderly.co"
    ],
    "faucets": [
      "http://fauceth.komputing.org?chain=5&address=${ADDRESS}",
      "https://goerli-faucet.slock.it?address=${ADDRESS}",
      "https://faucet.goerli.mudit.blog"
    ],
    "infoURL": "https://goerli.net/#about"
  },
  {
    "name": "Kotti Testnet",
    "chainId": 6,
    "shortName": "kot",
    "networkId": 6,
    "nativeCurrency": { "name": "Kotti Ether", "symbol": "KOT", "decimals": 18 },
    "rpc": [],
    "faucets": [],
    "infoURL": "https://ethereumclassic.org/development/testnets"
  },
  {
    "name": "ThaiChain",
    "chainId": 7,
    "shortName": "tch",
    "networkId": 7,
    "nativeCurrency": { "name": "ThaiChain Ether", "symbol": "TCH", "decimals": 18 },
    "rpc": ["https://rpc.dome.cloud", "https://rpc.thaichain.org"],
    "faucets": [],
    "infoURL": "https://thaichain.io"
  },
  {
    "name": "Ubiq",
    "chainId": 8,
    "shortName": "ubq",
    "networkId": 8,
    "nativeCurrency": { "name": "Ubiq Ether", "symbol": "UBQ", "decimals": 18 },
    "rpc": ["https://rpc.octano.dev", "https://pyrus2.ubiqscan.io"],
    "faucets": [],
    "infoURL": "https://ubiqsmart.com"
  },
  {
    "name": "Ubiq Network Testnet",
    "chainId": 9,
    "shortName": "tubq",
    "networkId": 2,
    "nativeCurrency": { "name": "Ubiq Testnet Ether", "symbol": "TUBQ", "decimals": 18 },
    "rpc": [],
    "faucets": [],
    "infoURL": "https://ethersocial.org"
  },
  {
    "name": "OP Mainnet",
    "chainId": 10,
    "shortName": "oeth",
    "networkId": 10,
    "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": [
      "https://mainnet.optimism.io",
      "https://optimism-rpc.publicnode.com",
      "wss://optimism-rpc.publicnode.com",
      "https://optimism.gateway.tenderly.co",
      "wss://optimism.gateway.tenderly.co",
      "https://optimism.drpc.org",
      "wss://optimism.drpc.org"
    ],
    "faucets": [],
    "infoURL": "https://optimism.io"
  },
  {
    "name": "Metadium Mainnet",
    "chainId": 11,
    "shortName": "meta",
    "networkId": 11,
    "nativeCurrency": { "name": "Metadium Mainnet Ether", "symbol": "META", "decimals": 18 },
    "rpc": ["https://api.metadium.com/prod"],
    "faucets": [],
    "infoURL": "https://metadium.com"
  },
  {
    "name": "Metadium Testnet",
    "chainId": 12,
    "shortName": "kal",
    "networkId": 12,
    "nativeCurrency": { "name": "Metadium Testnet Ether", "symbol": "KAL", "decimals": 18 },
    "rpc": ["https://api.metadium.com/dev"],
    "faucets": [],
    "infoURL": "https://metadium.com"
  },
  {
    "name": "Diode Testnet Staging",
    "chainId": 13,
    "shortName": "dstg",
    "networkId": 13,
    "nativeCurrency": { "name": "Staging Diodes", "symbol": "sDIODE", "decimals": 18 },
    "rpc": ["https://staging.diode.io:8443/", "wss://staging.diode.io:8443/ws"],
    "faucets": [],
    "infoURL": "https://diode.io/staging"
  },
  {
    "name": "Flare Mainnet",
    "chainId": 14,
    "shortName": "flr",
    "networkId": 14,
    "nativeCurrency": { "name": "Flare", "symbol": "FLR", "decimals": 18 },
    "rpc": [
      "https://flare-api.flare.network/ext/C/rpc",
      "https://flare.rpc.thirdweb.com",
      "https://flare-bundler.etherspot.io",
      "https://rpc.ankr.com/flare",
      "https://01-gravelines-003-01.rpc.tatum.io/ext/bc/C/rpc",
      "https://01-vinthill-003-02.rpc.tatum.io/ext/bc/C/rpc",
      "https://rpc.ftso.au/flare",
      "https://flare.enosys.global/ext/C/rpc",
      "https://flare.solidifi.app/ext/C/rpc"
    ],
    "faucets": [],
    "infoURL": "https://flare.network"
  },
  {
    "name": "Diode Prenet",
    "chainId": 15,
    "shortName": "diode",
    "networkId": 15,
    "nativeCurrency": { "name": "Diodes", "symbol": "DIODE", "decimals": 18 },
    "rpc": ["https://prenet.diode.io:8443/", "wss://prenet.diode.io:8443/ws"],
    "faucets": [],
    "infoURL": "https://diode.io/prenet"
  },
  {
    "name": "Songbird Testnet Coston",
    "chainId": 16,
    "shortName": "cflr",
    "networkId": 16,
    "nativeCurrency": { "name": "Coston Flare", "symbol": "CFLR", "decimals": 18 },
    "rpc": [
      "https://coston-api.flare.network/ext/C/rpc",
      "https://songbird-testnet-coston.rpc.thirdweb.com",
      "https://01-gravelines-004-01.rpc.tatum.io/ext/bc/C/rpc",
      "https://02-chicago-004-02.rpc.tatum.io/ext/bc/C/rpc",
      "https://02-tokyo-004-03.rpc.tatum.io/ext/bc/C/rpc",
      "https://coston.enosys.global/ext/C/rpc"
    ],
    "faucets": ["https://faucet.flare.network"],
    "infoURL": "https://flare.network"
  },
  {
    "name": "ThaiChain 2.0 ThaiFi",
    "chainId": 17,
    "shortName": "tfi",
    "networkId": 17,
    "nativeCurrency": { "name": "Thaifi Ether", "symbol": "TFI", "decimals": 18 },
    "rpc": ["https://rpc.thaifi.com"],
    "faucets": [],
    "infoURL": "https://exp.thaifi.com"
  },
  {
    "name": "ThunderCore Testnet",
    "chainId": 18,
    "shortName": "TST",
    "networkId": 18,
    "nativeCurrency": { "name": "ThunderCore Testnet Token", "symbol": "TST", "decimals": 18 },
    "rpc": [
      "https://testnet-rpc.thundercore.com",
      "https://thundercore-testnet.drpc.org",
      "wss://thundercore-testnet.drpc.org"
    ],
    "faucets": ["https://faucet-testnet.thundercore.com"],
    "infoURL": "https://thundercore.com"
  },
  {
    "name": "Songbird Canary-Network",
    "chainId": 19,
    "shortName": "sgb",
    "networkId": 19,
    "nativeCurrency": { "name": "Songbird", "symbol": "SGB", "decimals": 18 },
    "rpc": [
      "https://songbird-api.flare.network/ext/C/rpc",
      "https://01-gravelines-006-01.rpc.tatum.io/ext/bc/C/rpc",
      "https://01-vinthill-006-02.rpc.tatum.io/ext/bc/C/rpc",
      "https://02-tokyo-006-03.rpc.tatum.io/ext/bc/C/rpc",
      "https://rpc.ftso.au/songbird",
      "https://songbird.enosys.global/ext/C/rpc",
      "https://songbird.solidifi.app/ext/C/rpc"
    ],
    "faucets": [],
    "infoURL": "https://flare.network"
  },
  {
    "name": "Elastos Smart Chain",
    "chainId": 20,
    "shortName": "esc",
    "networkId": 20,
    "nativeCurrency": { "name": "Elastos", "symbol": "ELA", "decimals": 18 },
    "rpc": ["https://api.elastos.io/eth"],
    "faucets": [],
    "infoURL": "https://www.elastos.org/"
  },
  {
    "name": "Elastos Smart Chain Testnet",
    "chainId": 21,
    "shortName": "esct",
    "networkId": 21,
    "nativeCurrency": { "name": "Elastos", "symbol": "tELA", "decimals": 18 },
    "rpc": ["https://api-testnet.elastos.io/eth"],
    "faucets": ["https://esc-faucet.elastos.io/"],
    "infoURL": "https://www.elastos.org/"
  },
  {
    "name": "ELA-DID-Sidechain Mainnet",
    "chainId": 22,
    "shortName": "eladid",
    "networkId": 22,
    "nativeCurrency": { "name": "Elastos", "symbol": "ELA", "decimals": 18 },
    "rpc": [],
    "faucets": [],
    "infoURL": "https://www.elastos.org/"
  },
  {
    "name": "ELA-DID-Sidechain Testnet",
    "chainId": 23,
    "shortName": "eladidt",
    "networkId": 23,
    "nativeCurrency": { "name": "Elastos", "symbol": "tELA", "decimals": 18 },
    "rpc": [],
    "faucets": [],
    "infoURL": "https://elaeth.io/"
  },
  {
    "name": "KardiaChain Mainnet",
    "chainId": 24,
    "shortName": "kardiachain",
    "networkId": 0,
    "nativeCurrency": { "name": "KardiaChain", "symbol": "KAI", "decimals": 18 },
    "rpc": ["https://rpc.kardiachain.io"],
    "faucets": [],
    "infoURL": "https://kardiachain.io"
  },
  {
    "name": "Cronos Mainnet",
    "chainId": 25,
    "shortName": "cro",
    "networkId": 25,
    "nativeCurrency": { "name": "Cronos", "symbol": "CRO", "decimals": 18 },
    "rpc": [
      "https://evm.cronos.org",
      "https://cronos-evm-rpc.publicnode.com",
      "wss://cronos-evm-rpc.publicnode.com",
      "https://cronos.drpc.org",
      "wss://cronos.drpc.org"
    ],
    "faucets": [],
    "infoURL": "https://cronos.org/"
  },
  {
    "name": "Genesis L1 testnet",
    "chainId": 26,
    "shortName": "L1test",
    "networkId": 26,
    "nativeCurrency": { "name": "L1 testcoin", "symbol": "L1test", "decimals": 18 },
    "rpc": ["https://testrpc.genesisl1.org"],
    "faucets": [],
    "infoURL": "https://www.genesisl1.com"
  },
  {
    "name": "ShibaChain",
    "chainId": 27,
    "shortName": "shib",
    "networkId": 27,
    "nativeCurrency": { "name": "SHIBA INU COIN", "symbol": "SHIB", "decimals": 18 },
    "rpc": ["https://rpc.shibchain.org"],
    "faucets": [],
    "infoURL": "https://shibchain.org"
  },
  {
    "name": "Boba Network Rinkeby Testnet",
    "chainId": 28,
    "shortName": "BobaRinkeby",
    "networkId": 28,
    "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": ["https://rinkeby.boba.network/"],
    "faucets": [],
    "infoURL": "https://boba.network"
  },
  {
    "name": "Genesis L1",
    "chainId": 29,
    "shortName": "L1",
    "networkId": 29,
    "nativeCurrency": { "name": "L1 coin", "symbol": "L1", "decimals": 18 },
    "rpc": ["https://rpc.genesisl1.org"],
    "faucets": [],
    "infoURL": "https://www.genesisl1.com"
  },
  {
    "name": "Rootstock Mainnet",
    "chainId": 30,
    "shortName": "rsk",
    "networkId": 30,
    "nativeCurrency": { "name": "Smart Bitcoin", "symbol": "RBTC", "decimals": 18 },
    "rpc": ["https://public-node.rsk.co", "https://mycrypto.rsk.co"],
    "faucets": [],
    "infoURL": "https://rootstock.io"
  },
  {
    "name": "Rootstock Testnet",
    "chainId": 31,
    "shortName": "trsk",
    "networkId": 31,
    "nativeCurrency": { "name": "Testnet Smart Bitcoin", "symbol": "tRBTC", "decimals": 18 },
    "rpc": ["https://public-node.testnet.rsk.co", "https://mycrypto.testnet.rsk.co"],
    "faucets": ["https://faucet.rsk.co/"],
    "infoURL": "https://rootstock.io"
  },
  {
    "name": "GoodData Testnet",
    "chainId": 32,
    "shortName": "GooDT",
    "networkId": 32,
    "nativeCurrency": { "name": "GoodData Testnet Ether", "symbol": "GooD", "decimals": 18 },
    "rpc": ["https://test2.goodata.io"],
    "faucets": [],
    "infoURL": "https://www.goodata.org"
  },
  {
    "name": "GoodData Mainnet",
    "chainId": 33,
    "shortName": "GooD",
    "networkId": 33,
    "nativeCurrency": { "name": "GoodData Mainnet Ether", "symbol": "GooD", "decimals": 18 },
    "rpc": ["https://rpc.goodata.io"],
    "faucets": [],
    "infoURL": "https://www.goodata.org"
  },
  {
    "name": "SecureChain Mainnet",
    "chainId": 34,
    "shortName": "scai",
    "networkId": 34,
    "nativeCurrency": { "name": "SecureChain", "symbol": "SCAI", "decimals": 18 },
    "rpc": ["https://mainnet-rpc.scai.network"],
    "faucets": [],
    "infoURL": "https://securechain.ai"
  },
  {
    "name": "TBWG Chain",
    "chainId": 35,
    "shortName": "tbwg",
    "networkId": 35,
    "nativeCurrency": { "name": "TBWG Ether", "symbol": "TBG", "decimals": 18 },
    "rpc": ["https://rpc.tbwg.io"],
    "faucets": [],
    "infoURL": "https://tbwg.io"
  },
  {
    "name": "Dxchain Mainnet",
    "chainId": 36,
    "shortName": "dx",
    "networkId": 36,
    "nativeCurrency": { "name": "Dxchain", "symbol": "DX", "decimals": 18 },
    "rpc": ["https://mainnet.dxchain.com"],
    "faucets": [],
    "infoURL": "https://www.dxchain.com/"
  },
  {
    "name": "Xpla Mainnet",
    "chainId": 37,
    "shortName": "xpla",
    "networkId": 37,
    "nativeCurrency": { "name": "XPLA", "symbol": "XPLA", "decimals": 18 },
    "rpc": ["https://dimension-evm-rpc.xpla.dev"],
    "faucets": [],
    "infoURL": "https://xpla.io"
  },
  {
    "name": "Valorbit",
    "chainId": 38,
    "shortName": "val",
    "networkId": 38,
    "nativeCurrency": { "name": "Valorbit", "symbol": "VAL", "decimals": 18 },
    "rpc": ["https://rpc.valorbit.com/v2"],
    "faucets": [],
    "infoURL": "https://valorbit.com"
  },
  {
    "name": "U2U Solaris Mainnet",
    "chainId": 39,
    "shortName": "u2u",
    "networkId": 39,
    "nativeCurrency": { "name": "Unicorn Ultra", "symbol": "U2U", "decimals": 18 },
    "rpc": ["https://rpc-mainnet.uniultra.xyz"],
    "faucets": [],
    "infoURL": "https://uniultra.xyz"
  },
  {
    "name": "Telos EVM Mainnet",
    "chainId": 40,
    "shortName": "TelosEVM",
    "networkId": 40,
    "nativeCurrency": { "name": "Telos", "symbol": "TLOS", "decimals": 18 },
    "rpc": ["https://mainnet.telos.net/evm", "https://telos.drpc.org", "wss://telos.drpc.org"],
    "faucets": [],
    "infoURL": "https://telos.net"
  },
  {
    "name": "Telos EVM Testnet",
    "chainId": 41,
    "shortName": "TelosEVMTestnet",
    "networkId": 41,
    "nativeCurrency": { "name": "Telos", "symbol": "TLOS", "decimals": 18 },
    "rpc": ["https://testnet.telos.net/evm", "https://telos-testnet.drpc.org", "wss://telos-testnet.drpc.org"],
    "faucets": ["https://app.telos.net/testnet/developers"],
    "infoURL": "https://telos.net"
  },
  {
    "name": "LUKSO Mainnet",
    "chainId": 42,
    "shortName": "lukso",
    "networkId": 42,
    "nativeCurrency": { "name": "LUKSO", "symbol": "LYX", "decimals": 18 },
    "rpc": ["https://rpc.mainnet.lukso.network", "wss://ws-rpc.mainnet.lukso.network"],
    "faucets": [],
    "infoURL": "https://lukso.network"
  },
  {
    "name": "Darwinia Pangolin Testnet",
    "chainId": 43,
    "shortName": "pangolin",
    "networkId": 43,
    "nativeCurrency": { "name": "Pangolin Network Native Token", "symbol": "PRING", "decimals": 18 },
    "rpc": ["https://pangolin-rpc.darwinia.network"],
    "faucets": ["https://docs.darwinia.network/pangolin-testnet-1e9ac8b09e874e8abd6a7f18c096ca6a"],
    "infoURL": "https://darwinia.network/"
  },
  {
    "name": "Crab Network",
    "chainId": 44,
    "shortName": "crab",
    "networkId": 44,
    "nativeCurrency": { "name": "Crab Network Native Token", "symbol": "CRAB", "decimals": 18 },
    "rpc": ["https://crab-rpc.darwinia.network", "https://crab-rpc.dcdao.box"],
    "faucets": [],
    "infoURL": "https://crab.network/"
  },
  {
    "name": "Darwinia Pangoro Testnet",
    "chainId": 45,
    "shortName": "pangoro",
    "networkId": 45,
    "nativeCurrency": { "name": "Pangoro Network Native Token", "symbol": "ORING", "decimals": 18 },
    "rpc": ["https://pangoro-rpc.darwinia.network"],
    "faucets": ["https://docs.darwinia.network/pangoro-testnet-70cfec5dc9ca42759959ba3803edaec2"],
    "infoURL": "https://darwinia.network/"
  },
  {
    "name": "Darwinia Network",
    "chainId": 46,
    "shortName": "darwinia",
    "networkId": 46,
    "nativeCurrency": { "name": "Darwinia Network Native Token", "symbol": "RING", "decimals": 18 },
    "rpc": ["https://rpc.darwinia.network", "https://darwinia-rpc.dcdao.box", "https://darwinia-rpc.dwellir.com"],
    "faucets": [],
    "infoURL": "https://darwinia.network"
  },
  {
    "name": "Acria IntelliChain",
    "chainId": 47,
    "shortName": "aic",
    "networkId": 47,
    "nativeCurrency": { "name": "ACRIA", "symbol": "ACRIA", "decimals": 18 },
    "rpc": ["https://aic.acria.ai"],
    "faucets": [],
    "infoURL": "https://acria.ai"
  },
  {
    "name": "Ennothem Mainnet Proterozoic",
    "chainId": 48,
    "shortName": "etmp",
    "networkId": 48,
    "nativeCurrency": { "name": "Ennothem", "symbol": "ETMP", "decimals": 18 },
    "rpc": ["https://rpc.etm.network"],
    "faucets": [],
    "infoURL": "https://etm.network"
  },
  {
    "name": "Ennothem Testnet Pioneer",
    "chainId": 49,
    "shortName": "etmpTest",
    "networkId": 49,
    "nativeCurrency": { "name": "Ennothem", "symbol": "ETMP", "decimals": 18 },
    "rpc": ["https://rpc.pioneer.etm.network"],
    "faucets": [],
    "infoURL": "https://etm.network"
  },
  {
    "name": "XDC Network",
    "chainId": 50,
    "shortName": "xdc",
    "networkId": 50,
    "nativeCurrency": { "name": "XinFin", "symbol": "XDC", "decimals": 18 },
    "rpc": [
      "https://erpc.xinfin.network",
      "https://rpc.xinfin.network",
      "https://rpc1.xinfin.network",
      "https://rpc-xdc.icecreamswap.com"
    ],
    "faucets": [],
    "infoURL": "https://xinfin.org"
  },
  {
    "name": "XDC Apothem Network",
    "chainId": 51,
    "shortName": "txdc",
    "networkId": 51,
    "nativeCurrency": { "name": "XinFin", "symbol": "TXDC", "decimals": 18 },
    "rpc": ["https://rpc.apothem.network", "https://erpc.apothem.network"],
    "faucets": ["https://faucet.apothem.network"],
    "infoURL": "https://xinfin.org"
  },
  {
    "name": "CoinEx Smart Chain Mainnet",
    "chainId": 52,
    "shortName": "cet",
    "networkId": 52,
    "nativeCurrency": { "name": "CoinEx Chain Native Token", "symbol": "cet", "decimals": 18 },
    "rpc": ["https://rpc.coinex.net"],
    "faucets": [],
    "infoURL": "https://www.coinex.org/"
  },
  {
    "name": "CoinEx Smart Chain Testnet",
    "chainId": 53,
    "shortName": "tcet",
    "networkId": 53,
    "nativeCurrency": { "name": "CoinEx Chain Test Native Token", "symbol": "cett", "decimals": 18 },
    "rpc": ["https://testnet-rpc.coinex.net/"],
    "faucets": [],
    "infoURL": "https://www.coinex.org/"
  },
  {
    "name": "Openpiece Mainnet",
    "chainId": 54,
    "shortName": "OP",
    "networkId": 54,
    "nativeCurrency": { "name": "Belly", "symbol": "BELLY", "decimals": 18 },
    "rpc": ["https://mainnet.openpiece.io"],
    "faucets": [],
    "infoURL": "https://cryptopiece.online"
  },
  {
    "name": "Zyx Mainnet",
    "chainId": 55,
    "shortName": "ZYX",
    "networkId": 55,
    "nativeCurrency": { "name": "Zyx", "symbol": "ZYX", "decimals": 18 },
    "rpc": [
      "https://rpc-1.zyx.network/",
      "https://rpc-2.zyx.network/",
      "https://rpc-3.zyx.network/",
      "https://rpc-4.zyx.network/",
      "https://rpc-5.zyx.network/",
      "https://rpc-6.zyx.network/"
    ],
    "faucets": [],
    "infoURL": "https://zyx.network/"
  },
  {
    "name": "BNB Smart Chain Mainnet",
    "chainId": 56,
    "shortName": "bnb",
    "networkId": 56,
    "nativeCurrency": { "name": "BNB Chain Native Token", "symbol": "BNB", "decimals": 18 },
    "rpc": [
      "https://bsc-dataseed1.bnbchain.org",
      "https://bsc-dataseed2.bnbchain.org",
      "https://bsc-dataseed3.bnbchain.org",
      "https://bsc-dataseed4.bnbchain.org",
      "https://bsc-dataseed1.defibit.io",
      "https://bsc-dataseed2.defibit.io",
      "https://bsc-dataseed3.defibit.io",
      "https://bsc-dataseed4.defibit.io",
      "https://bsc-dataseed1.ninicoin.io",
      "https://bsc-dataseed2.ninicoin.io",
      "https://bsc-dataseed3.ninicoin.io",
      "https://bsc-dataseed4.ninicoin.io",
      "https://bsc-rpc.publicnode.com",
      "wss://bsc-rpc.publicnode.com",
      "wss://bsc-ws-node.nariox.org"
    ],
    "faucets": [],
    "infoURL": "https://www.bnbchain.org/en"
  },
  {
    "name": "Syscoin Mainnet",
    "chainId": 57,
    "shortName": "sys",
    "networkId": 57,
    "nativeCurrency": { "name": "Syscoin", "symbol": "SYS", "decimals": 18 },
    "rpc": [
      "https://rpc.syscoin.org",
      "https://rpc.ankr.com/syscoin/${ANKR_API_KEY}",
      "https://syscoin.public-rpc.com",
      "wss://rpc.syscoin.org/wss",
      "https://syscoin-evm.publicnode.com",
      "wss://syscoin-evm.publicnode.com"
    ],
    "faucets": ["https://faucet.syscoin.org"],
    "infoURL": "https://www.syscoin.org"
  },
  {
    "name": "Ontology Mainnet",
    "chainId": 58,
    "shortName": "OntologyMainnet",
    "networkId": 58,
    "nativeCurrency": { "name": "ONG", "symbol": "ONG", "decimals": 18 },
    "rpc": [
      "http://dappnode1.ont.io:20339",
      "http://dappnode2.ont.io:20339",
      "http://dappnode3.ont.io:20339",
      "http://dappnode4.ont.io:20339",
      "https://dappnode1.ont.io:10339",
      "https://dappnode2.ont.io:10339",
      "https://dappnode3.ont.io:10339",
      "https://dappnode4.ont.io:10339"
    ],
    "faucets": [],
    "infoURL": "https://ont.io/"
  },
  {
    "name": "EOS EVM Legacy",
    "chainId": 59,
    "shortName": "eos-legacy",
    "networkId": 59,
    "nativeCurrency": { "name": "EOS", "symbol": "EOS", "decimals": 18 },
    "rpc": ["https://api.eosargentina.io"],
    "faucets": [],
    "infoURL": "https://eosargentina.io"
  },
  {
    "name": "GoChain",
    "chainId": 60,
    "shortName": "go",
    "networkId": 60,
    "nativeCurrency": { "name": "GoChain Ether", "symbol": "GO", "decimals": 18 },
    "rpc": ["https://rpc.gochain.io"],
    "faucets": [],
    "infoURL": "https://gochain.io"
  },
  {
    "name": "Ethereum Classic",
    "chainId": 61,
    "shortName": "etc",
    "networkId": 1,
    "nativeCurrency": { "name": "Ether", "symbol": "ETC", "decimals": 18 },
    "rpc": [
      "https://etc.rivet.link",
      "https://besu-at.etc-network.info",
      "https://geth-at.etc-network.info",
      "https://etc.etcdesktop.com",
      "https://etc.mytokenpocket.vip"
    ],
    "faucets": [],
    "infoURL": "https://ethereumclassic.org"
  },
  {
    "name": "Morden Testnet",
    "chainId": 62,
    "shortName": "tetc",
    "networkId": 2,
    "nativeCurrency": { "name": "Morden Ether", "symbol": "TETC", "decimals": 18 },
    "rpc": [],
    "faucets": [],
    "infoURL": "https://ethereumclassic.org/development/testnets"
  },
  {
    "name": "Mordor Testnet",
    "chainId": 63,
    "shortName": "metc",
    "networkId": 7,
    "nativeCurrency": { "name": "Mordor Ether", "symbol": "METC", "decimals": 18 },
    "rpc": ["https://rpc.mordor.etccooperative.org", "https://geth-mordor.etc-network.info"],
    "faucets": ["https://easy.hebeswap.com/#/faucet", "https://faucet.mordortest.net"],
    "infoURL": "https://ethereumclassic.org/development/testnets"
  },
  {
    "name": "Ellaism",
    "chainId": 64,
    "shortName": "ellaism",
    "networkId": 64,
    "nativeCurrency": { "name": "Ellaism Ether", "symbol": "ELLA", "decimals": 18 },
    "rpc": ["https://jsonrpc.ellaism.org"],
    "faucets": [],
    "infoURL": "https://ellaism.org"
  },
  {
    "name": "OKExChain Testnet",
    "chainId": 65,
    "shortName": "tokt",
    "networkId": 65,
    "nativeCurrency": { "name": "OKExChain Global Utility Token in testnet", "symbol": "OKT", "decimals": 18 },
    "rpc": ["https://exchaintestrpc.okex.org"],
    "faucets": ["https://www.okex.com/drawdex"],
    "infoURL": "https://www.okex.com/okexchain"
  },
  {
    "name": "OKXChain Mainnet",
    "chainId": 66,
    "shortName": "okt",
    "networkId": 66,
    "nativeCurrency": { "name": "OKXChain Global Utility Token", "symbol": "OKT", "decimals": 18 },
    "rpc": ["https://exchainrpc.okex.org", "https://okc-mainnet.gateway.pokt.network/v1/lb/6275309bea1b320039c893ff"],
    "faucets": [],
    "infoURL": "https://www.okex.com/okc"
  },
  {
    "name": "DBChain Testnet",
    "chainId": 67,
    "shortName": "dbm",
    "networkId": 67,
    "nativeCurrency": { "name": "DBChain Testnet", "symbol": "DBM", "decimals": 18 },
    "rpc": ["http://test-rpc.dbmbp.com"],
    "faucets": [],
    "infoURL": "http://test.dbmbp.com"
  },
  {
    "name": "SoterOne Mainnet",
    "chainId": 68,
    "shortName": "SO1",
    "networkId": 68,
    "nativeCurrency": { "name": "SoterOne Mainnet Ether", "symbol": "SOTER", "decimals": 18 },
    "rpc": ["https://rpc.soter.one"],
    "faucets": [],
    "infoURL": "https://www.soterone.com"
  },
  {
    "name": "Optimism Kovan",
    "chainId": 69,
    "shortName": "okov",
    "networkId": 69,
    "nativeCurrency": { "name": "Kovan Ether", "symbol": "ETH", "decimals": 18 },
    "rpc": ["https://kovan.optimism.io/"],
    "faucets": ["http://fauceth.komputing.org?chain=69&address=${ADDRESS}"],
    "infoURL": "https://optimism.io"
  },
  {
    "name": "Hoo Smart Chain",
    "chainId": 70,
    "shortName": "hsc",
    "networkId": 70,
    "nativeCurrency": { "name": "Hoo Smart Chain Native Token", "symbol": "HOO", "decimals": 18 },
    "rpc": [
      "https://http-mainnet.hoosmartchain.com",
      "https://http-mainnet2.hoosmartchain.com",
      "wss://ws-mainnet.hoosmartchain.com",
      "wss://ws-mainnet2.hoosmartchain.com"
    ],
    "faucets": [],
    "infoURL": "https://www.hoosmartchain.com"
  },
  {
    "name": "Conflux eSpace (Testnet)",
    "chainId": 71,
    "shortName": "cfxtest",
    "networkId": 71,
    "nativeCurrency": { "name": "CFX", "symbol": "CFX", "decimals": 18 },
    "rpc": ["https://evmtestnet.confluxrpc.com"],
    "faucets": ["https://faucet.confluxnetwork.org"],
    "infoURL": "https://confluxnetwork.org"
  },
  {
    "name": "DxChain Testnet",
    "chainId": 72,
    "shortName": "dxc",
    "networkId": 72,
    "nativeCurrency": { "name": "DxChain Testnet", "symbol": "DX", "decimals": 18 },
    "rpc": ["https://testnet-http.dxchain.com"],
    "faucets": ["https://faucet.dxscan.io"],
    "infoURL": "https://testnet.dxscan.io/"
  },
  {
    "name": "FNCY",
    "chainId": 73,
    "shortName": "FNCY",
    "networkId": 73,
    "nativeCurrency": { "name": "FNCY", "symbol": "FNCY", "decimals": 18 },
    "rpc": ["https://fncy-seed1.fncy.world"],
    "faucets": ["https://faucet-testnet.fncy.world"],
    "infoURL": "https://fncyscan.fncy.world"
  },
  {
    "name": "IDChain Mainnet",
    "chainId": 74,
    "shortName": "idchain",
    "networkId": 74,
    "nativeCurrency": { "name": "EIDI", "symbol": "EIDI", "decimals": 18 },
    "rpc": ["https://idchain.one/rpc/", "wss://idchain.one/ws/"],
    "faucets": [],
    "infoURL": "https://idchain.one/begin/"
  },
  {
    "name": "Decimal Smart Chain Mainnet",
    "chainId": 75,
    "shortName": "DSC",
    "networkId": 75,
    "nativeCurrency": { "name": "Decimal", "symbol": "DEL", "decimals": 18 },
    "rpc": [
      "https://node.decimalchain.com/web3/",
      "https://node1-mainnet.decimalchain.com/web3/",
      "https://node2-mainnet.decimalchain.com/web3/",
      "https://node3-mainnet.decimalchain.com/web3/",
      "https://node4-mainnet.decimalchain.com/web3/"
    ],
    "faucets": [],
    "infoURL": "https://decimalchain.com"
  },
  {
    "name": "Mix",
    "chainId": 76,
    "shortName": "mix",
    "networkId": 76,
    "nativeCurrency": { "name": "Mix Ether", "symbol": "MIX", "decimals": 18 },
    "rpc": ["https://rpc2.mix-blockchain.org:8647"],
    "faucets": [],
    "infoURL": "https://mix-blockchain.org"
  },
  {
    "name": "POA Network Sokol",
    "chainId": 77,
    "shortName": "spoa",
    "networkId": 77,
    "nativeCurrency": { "name": "POA Sokol Ether", "symbol": "SPOA", "decimals": 18 },
    "rpc": ["https://sokol.poa.network", "wss://sokol.poa.network/wss", "ws://sokol.poa.network:8546"],
    "faucets": [],
    "infoURL": "https://poa.network"
  },
  {
    "name": "PrimusChain mainnet",
    "chainId": 78,
    "shortName": "primuschain",
    "networkId": 78,
    "nativeCurrency": { "name": "Primus Ether", "symbol": "PETH", "decimals": 18 },
    "rpc": ["https://ethnode.primusmoney.com/mainnet"],
    "faucets": [],
    "infoURL": "https://primusmoney.com"
  },
  {
    "name": "Zenith Mainnet",
    "chainId": 79,
    "shortName": "zenith",
    "networkId": 79,
    "nativeCurrency": { "name": "ZENITH", "symbol": "ZENITH", "decimals": 18 },
    "rpc": [
      "https://dataserver-us-1.zenithchain.co/",
      "https://dataserver-asia-3.zenithchain.co/",
      "https://dataserver-asia-4.zenithchain.co/",
      "https://dataserver-asia-2.zenithchain.co/",
      "https://dataserver-asia-5.zenithchain.co/",
      "https://dataserver-asia-6.zenithchain.co/",
      "https://dataserver-asia-7.zenithchain.co/"
    ],
    "faucets": [],
    "infoURL": "https://www.zenithchain.co/"
  },
  {
    "name": "GeneChain",
    "chainId": 80,
    "shortName": "GeneChain",
    "networkId": 80,
    "nativeCurrency": { "name": "RNA", "symbol": "RNA"
Download .txt
gitextract_ygqa1abp/

├── .gitignore
├── AIAgent.html
├── LICENSE
├── README.md
├── blog_prompt_demo.html
├── chat_prompt_demo.html
├── eslint.config.js
├── index.html
├── package.json
├── src/
│   ├── App.css
│   ├── App.tsx
│   ├── abis/
│   │   └── uploadAbi.ts
│   ├── assets/
│   │   └── fonts/
│   │       ├── NexaTextBold.otf
│   │       ├── NexaTextRegular.otf
│   │       ├── SFMono-Bold.otf
│   │       └── SFMono-Regular.otf
│   ├── components/
│   │   ├── Loader/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── MessageCard/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── WalletConnect/
│   │   │   ├── index.less
│   │   │   ├── index.module.less
│   │   │   └── index.tsx
│   │   └── agentCard/
│   │       ├── index.less
│   │       └── index.tsx
│   ├── config/
│   │   └── wagmi.ts
│   ├── const/
│   │   ├── chains_mini.json
│   │   └── solana.json
│   ├── entries/
│   │   └── agent.tsx
│   ├── hooks/
│   │   └── useNetwork.ts
│   ├── index.less
│   ├── main.tsx
│   ├── pages/
│   │   ├── AIAgent/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   ├── AgentList/
│   │   │   ├── index.less
│   │   │   └── index.tsx
│   │   └── Publish/
│   │       ├── index.less
│   │       └── index.tsx
│   ├── services/
│   │   ├── ai.ts
│   │   ├── aiChatFeed.ts
│   │   ├── api.ts
│   │   ├── ens.ts
│   │   ├── network.ts
│   │   ├── upload.ts
│   │   ├── wallet/
│   │   │   ├── base.ts
│   │   │   ├── index.ts
│   │   │   ├── metamask.ts
│   │   │   ├── phantom.ts
│   │   │   └── types.ts
│   │   └── wallet.ts
│   ├── store/
│   │   └── network.ts
│   ├── types/
│   │   ├── global.d.ts
│   │   ├── images.d.ts
│   │   └── index.ts
│   ├── utils/
│   │   ├── constants.ts
│   │   └── index.ts
│   └── vite-env.d.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── tsconfig.tsbuildinfo
├── vite.agent.config.ts
└── vite.config.ts
Download .txt
SYMBOL INDEX (134 symbols across 26 files)

FILE: src/App.tsx
  function App (line 14) | function App() {

FILE: src/abis/uploadAbi.ts
  constant UPLOAD_ABI (line 1) | const UPLOAD_ABI = [

FILE: src/components/Loader/index.tsx
  function Loader (line 3) | function Loader() {

FILE: src/components/MessageCard/index.tsx
  type AgentFileInfo (line 5) | interface AgentFileInfo {
  type IMessageRow (line 15) | interface IMessageRow {
  type IMessageCardProps (line 36) | interface IMessageCardProps {
  function MessageCard (line 40) | function MessageCard({ message }: IMessageCardProps) {

FILE: src/components/WalletConnect/index.tsx
  type WalletConnectProps (line 17) | interface WalletConnectProps {

FILE: src/components/agentCard/index.tsx
  type IContractHistoryRow (line 7) | interface IContractHistoryRow {
  type AgentCardProps (line 20) | interface AgentCardProps {
  function AgentCard (line 25) | function AgentCard({ agent, handleChat }: AgentCardProps) {

FILE: src/entries/agent.tsx
  type Window (line 17) | interface Window {

FILE: src/pages/AIAgent/index.tsx
  type FeedItem (line 34) | interface FeedItem {
  type CustomMessageInfo (line 39) | interface CustomMessageInfo {
  constant HAS_BLOG (line 47) | const HAS_BLOG = true;
  constant DEFAULT_CONFIG (line 50) | const DEFAULT_CONFIG = {
  constant MOBILE_BREAKPOINT (line 64) | const MOBILE_BREAKPOINT = 760;

FILE: src/pages/AgentList/index.tsx
  type AgentListTab (line 63) | enum AgentListTab {
  constant MOBILE_BREAKPOINT (line 68) | const MOBILE_BREAKPOINT = 768;
  constant DID_BLACKLIST (line 70) | const DID_BLACKLIST = [""];
  constant TOP_AGENTS (line 71) | const TOP_AGENTS = ["ainick.eth"];

FILE: src/pages/Publish/index.tsx
  type PublishProps (line 40) | interface PublishProps {
  constant STEPS (line 45) | const STEPS = {
  type EDataset (line 53) | const enum EDataset {
  type SocialMediaConfig (line 63) | interface SocialMediaConfig {
  type ESocialMedia (line 85) | enum ESocialMedia {

FILE: src/services/ai.ts
  type Window (line 13) | interface Window {
  type ICalculateCidData (line 36) | interface ICalculateCidData {

FILE: src/services/aiChatFeed.ts
  constant GLITTER_IPFS_API_URL (line 3) | const GLITTER_IPFS_API_URL = 'https://airag.glitterprotocol.tech'
  type IBlogListParams (line 5) | interface IBlogListParams {
  type IBlogItem (line 10) | interface IBlogItem {
  type IBlogListRes (line 17) | interface IBlogListRes {

FILE: src/services/api.ts
  type IMessageProps (line 3) | interface IMessageProps {
  constant API_HOST (line 11) | const API_HOST = import.meta.env.VITE_APP_APIHOST;
  type StreamHandler (line 57) | interface StreamHandler {

FILE: src/services/ens.ts
  constant ENS_ADDRESS (line 9) | const ENS_ADDRESS = "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e";
  constant ENS_ABI (line 11) | const ENS_ABI = [
  constant RESOLVER_ABI (line 16) | const RESOLVER_ABI = [
  function getENSSubdomains (line 136) | async function getENSSubdomains(
  function getAllOwnedENSDomains (line 155) | async function getAllOwnedENSDomains(

FILE: src/services/network.ts
  type INetwork (line 4) | interface INetwork {
  type ENetwork (line 14) | const enum ENetwork {

FILE: src/services/upload.ts
  constant GLITTER_IPFS_API_URL (line 18) | const GLITTER_IPFS_API_URL = "https://ipfs.glitterprotocol.dev/api/v0";
  constant MAINNET_RPC (line 20) | const MAINNET_RPC =
  type IUploadRes (line 26) | interface IUploadRes {
  type IAgentData (line 34) | interface IAgentData {
  type IFile (line 49) | interface IFile {
  type IRecord (line 56) | interface IRecord {
  type ISocialMediaData (line 201) | interface ISocialMediaData {
  method onUploadProgress (line 254) | onUploadProgress(progressEvent) {
  type IRecordDataParam (line 398) | interface IRecordDataParam {
  type IUploadData (line 409) | interface IUploadData {

FILE: src/services/wallet.ts
  type WalletInfo (line 46) | interface WalletInfo {
  type ISnsProfile (line 52) | interface ISnsProfile {
  class WalletError (line 65) | class WalletError extends Error {
    method constructor (line 66) | constructor(message: string) {
  type StateChangeListener (line 72) | type StateChangeListener = () => void;
  type SolanaWallet (line 74) | interface SolanaWallet {
  type EthereumProvider (line 80) | interface EthereumProvider {
  constant RPC_URL (line 90) | const RPC_URL = {
  class WalletService (line 97) | class WalletService {
    method constructor (line 102) | private constructor() {}
    method getInstance (line 104) | public static getInstance(): WalletService {
    method subscribe (line 111) | public subscribe(listener: StateChangeListener): () => void {
    method notifyListeners (line 118) | private notifyListeners(): void {
    method getMetaMaskProvider (line 122) | private getMetaMaskProvider(): EthereumProvider | null {
    method switchAccount (line 137) | public switchAccount(network: ENetwork): void {
    method connectEthereumWallet (line 145) | private async connectEthereumWallet(): Promise<WalletInfo> {
    method connectWallet (line 172) | public async connectWallet(network: ENetwork): Promise<WalletInfo> {
    method connectSolanaWallet (line 189) | private async connectSolanaWallet(): Promise<WalletInfo> {
    method disconnectWallet (line 214) | public async disconnectWallet(): Promise<void> {
    method reset (line 244) | public reset(): void {
    method getWalletInfo (line 249) | public getWalletInfo(): WalletInfo | null {
    method isConnected (line 253) | public isConnected(): boolean {
    method getCurrentNetwork (line 257) | public getCurrentNetwork(): ENetwork | null {
    method uint8ArrayToHex (line 261) | private uint8ArrayToHex(arr: Uint8Array): string {
    method signMessage (line 267) | public async signMessage(message: string): Promise<string> {
    method getAllOwnedDomains (line 293) | public async getAllOwnedDomains(): Promise<string[]> {
    method getEthereumDomains (line 310) | private async getEthereumDomains(): Promise<string[]> {
    method get_all_domains_by_addr (line 327) | private async get_all_domains_by_addr(): Promise<string[]> {
    method getSolanaDomains (line 343) | private async getSolanaDomains(): Promise<string[]> {
    method getProvider (line 354) | private getProvider(url: string): AnchorProvider {
    method getAllSolanaRecords (line 361) | private async getAllSolanaRecords(): Promise<{
    method getAllRecords (line 414) | async getAllRecords(): Promise<{
    method createSolanaRecord (line 428) | private async createSolanaRecord(data: IUploadData): Promise<{
    method createRecord (line 574) | public async createRecord(data: IUploadData): Promise<{
    method createEthereumRecord (line 590) | private async createEthereumRecord(data: IUploadData): Promise<{
    method setRecord (line 601) | public async setRecord(data: {
    method setEthereumRecord (line 622) | private async setEthereumRecord(data: {
    method setSolanaRecord (line 638) | private async setSolanaRecord(data: {
  type Window (line 715) | interface Window {

FILE: src/services/wallet/base.ts
  method constructor (line 8) | constructor(protected props: BaseWalletServiceProps) {}
  method isConnected (line 10) | get isConnected() {
  method info (line 14) | get info() {
  method provider (line 18) | get provider() {
  method setConnected (line 28) | protected setConnected(connected: boolean) {
  method setInfo (line 32) | protected setInfo(info: WalletInfo | null) {
  method setProvider (line 36) | protected setProvider(provider: WalletProvider | null) {

FILE: src/services/wallet/index.ts
  class WalletService (line 5) | class WalletService {
    method constructor (line 9) | private constructor() {}
    method getInstance (line 11) | static getInstance() {
    method init (line 18) | init(type: WalletType, props: BaseWalletServiceProps) {
    method wallet (line 31) | get wallet() {

FILE: src/services/wallet/metamask.ts
  class MetaMaskWalletService (line 7) | class MetaMaskWalletService extends BaseWalletService {
    method constructor (line 10) | constructor(props: BaseWalletServiceProps) {
    method type (line 37) | get type() {
    method setupListeners (line 41) | private setupListeners() {
    method connect (line 58) | async connect(): Promise<WalletInfo> {
    method disconnect (line 78) | async disconnect(): Promise<void> {
    method signMessage (line 85) | async signMessage(message: string): Promise<string> {

FILE: src/services/wallet/phantom.ts
  type Window (line 5) | interface Window {
  class PhantomWalletService (line 12) | class PhantomWalletService extends BaseWalletService {
    method constructor (line 15) | constructor(props: BaseWalletServiceProps) {
    method type (line 24) | get type() {
    method setupListeners (line 28) | private setupListeners() {
    method connect (line 44) | async connect(): Promise<WalletInfo> {
    method disconnect (line 64) | async disconnect(): Promise<void> {
    method signMessage (line 72) | async signMessage(message: string): Promise<string> {

FILE: src/services/wallet/types.ts
  type WalletType (line 2) | enum WalletType {
  type EthereumProvider (line 7) | interface EthereumProvider {
  type PhantomProvider (line 13) | interface PhantomProvider {
  type WalletProvider (line 21) | type WalletProvider = EthereumProvider | PhantomProvider
  type WalletInfo (line 23) | interface WalletInfo {
  type BaseWalletServiceProps (line 29) | interface BaseWalletServiceProps {
  type IWalletService (line 35) | interface IWalletService {

FILE: src/types/global.d.ts
  type Window (line 2) | interface Window {
  type Window (line 9) | interface Window {

FILE: src/types/index.ts
  type PublishStep (line 1) | enum PublishStep {
  type FormValues (line 8) | interface FormValues {
  type StepData (line 23) | interface StepData {

FILE: src/utils/constants.ts
  constant NETWORK_TYPE (line 2) | const NETWORK_TYPE = "network_type";

FILE: src/utils/index.ts
  constant AVATAR_URL (line 5) | const AVATAR_URL = "https://ipfs.glitterprotocol.dev/ipfs/";
  constant MESSAGE_URL (line 6) | const MESSAGE_URL = "https://airag.glitterprotocol.tech/ipfs/";
  type IReadFileReturn (line 58) | interface IReadFileReturn {
Condensed preview — 63 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,040K chars).
[
  {
    "path": ".gitignore",
    "chars": 290,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "AIAgent.html",
    "chars": 391,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "LICENSE",
    "chars": 755,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2024 Glitt"
  },
  {
    "path": "README.md",
    "chars": 10823,
    "preview": "# AIWS: The DeAgent Network\n\n<p align=\"center\">\n<a href=\"https://aiws.eth.limo\">AIWS ENS AI Launcher</a><br>\n<a href=\"ht"
  },
  {
    "path": "blog_prompt_demo.html",
    "chars": 10574,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "chat_prompt_demo.html",
    "chars": 12476,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "eslint.config.js",
    "chars": 734,
    "preview": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reac"
  },
  {
    "path": "index.html",
    "chars": 105409,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\" />\n  <link rel=\"icon\" type=\"image/jpg\"\n    href=\"data:i"
  },
  {
    "path": "package.json",
    "chars": 2043,
    "preview": "{\n  \"name\": \"AIWS\",\n  \"private\": true,\n  \"version\": \"1.1.1\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \""
  },
  {
    "path": "src/App.css",
    "chars": 704,
    "preview": "#root {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 2rem;\n  text-align: center;\n}\n\n#root-ai-agent {\n  max-width: 1"
  },
  {
    "path": "src/App.tsx",
    "chars": 1564,
    "preview": "import { Routes, Route } from \"react-router-dom\";\nimport AIAgent from \"./pages/AIAgent\";\nimport AgentList from \"./pages/"
  },
  {
    "path": "src/abis/uploadAbi.ts",
    "chars": 5871,
    "preview": "export const UPLOAD_ABI = [\n  { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n  {\n    anonymous: fal"
  },
  {
    "path": "src/components/Loader/index.less",
    "chars": 569,
    "preview": "/* HTML: <div class=\"loader\"></div> */\n.loader-message {\n  width: 22px;\n  aspect-ratio: 0.75;\n  --c: no-repeat repeating"
  },
  {
    "path": "src/components/Loader/index.tsx",
    "chars": 110,
    "preview": "import \"./index.less\";\n\nexport default function Loader() {\n  return <div className=\"loader-message\"></div>;\n}\n"
  },
  {
    "path": "src/components/MessageCard/index.less",
    "chars": 1491,
    "preview": "@media (max-width: 768px) {\n  .message-list {\n    padding: 16px;\n  }\n  .mobile-message-list {\n    display: flex;\n    fle"
  },
  {
    "path": "src/components/MessageCard/index.tsx",
    "chars": 2325,
    "preview": "import { Avatar } from \"antd\";\nimport \"./index.less\";\nimport { AVATAR_URL, MESSAGE_URL } from \"@/utils\";\n\ninterface Agen"
  },
  {
    "path": "src/components/WalletConnect/index.less",
    "chars": 332,
    "preview": ".wallet-connect-button {\n  min-width: 140px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8"
  },
  {
    "path": "src/components/WalletConnect/index.module.less",
    "chars": 791,
    "preview": ".container {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.connectButton {\n  min-width: 140px;\n  display: flex"
  },
  {
    "path": "src/components/WalletConnect/index.tsx",
    "chars": 6062,
    "preview": "import React, { useState, useEffect } from \"react\";\nimport { Button, Dropdown, message, Space, Select } from \"antd\";\nimp"
  },
  {
    "path": "src/components/agentCard/index.less",
    "chars": 1647,
    "preview": "@media (max-width: 768px) {\n  .agent-list {\n    padding: 16px;\n  }\n  .mobile-agent-list {\n    display: flex;\n    flex-di"
  },
  {
    "path": "src/components/agentCard/index.tsx",
    "chars": 1955,
    "preview": "import { MessageOutlined } from \"@ant-design/icons\";\nimport { Avatar, Button } from \"antd\";\nimport { AVATAR_URL } from \""
  },
  {
    "path": "src/config/wagmi.ts",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/const/chains_mini.json",
    "chars": 591134,
    "preview": "[\n  {\n    \"name\": \"Ethereum Mainnet\",\n    \"chainId\": 1,\n    \"shortName\": \"eth\",\n    \"networkId\": 1,\n    \"nativeCurrency\""
  },
  {
    "path": "src/const/solana.json",
    "chars": 7748,
    "preview": "{\n  \"address\": \"76WjbTo8DPATgvdVBiB7Cg35Nrxx6Y6rT9a7PfVxMvun\",\n  \"metadata\": {\n    \"name\": \"ai_solana_contract\",\n    \"ve"
  },
  {
    "path": "src/entries/agent.tsx",
    "chars": 1680,
    "preview": "/**\n * Entry point for AI Agent application\n */\n\nimport React from 'react'\nimport { ConfigProvider } from 'antd'\nimport "
  },
  {
    "path": "src/hooks/useNetwork.ts",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/index.less",
    "chars": 836,
    "preview": ":root {\n  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n  line-height: 1.5;\n  font-weight: 400;\n "
  },
  {
    "path": "src/main.tsx",
    "chars": 294,
    "preview": "import ReactDOM from \"react-dom/client\";\nimport { HashRouter } from \"react-router-dom\";\nimport App from \"./App\";\nimport "
  },
  {
    "path": "src/pages/AIAgent/index.less",
    "chars": 18870,
    "preview": "@font-face {\n  font-family: \"SF Mono-Bold\";\n  src: url(../../assets/fonts/SFMono-Bold.otf);\n}\n@font-face {\n  font-family"
  },
  {
    "path": "src/pages/AIAgent/index.tsx",
    "chars": 18882,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Bubble, useXAgent, useXChat } from \"@ant-design/x\";\nimp"
  },
  {
    "path": "src/pages/AgentList/index.less",
    "chars": 3859,
    "preview": ".agent-list {\n  padding: 24px;\n  box-sizing: border-box;\n  min-height: 100vh;\n  background: #141414;\n\n  a {\n    font-wei"
  },
  {
    "path": "src/pages/AgentList/index.tsx",
    "chars": 20936,
    "preview": "/**\n * AI Agents Marketplace component\n * Displays a list of AI agents and provides functionality to create new agents\n "
  },
  {
    "path": "src/pages/Publish/index.less",
    "chars": 2382,
    "preview": ".publish-container {\n  width: 100%;\n  padding: 24px 10%;\n  box-sizing: border-box;\n\n  .publish-steps {\n    .ant-steps-ic"
  },
  {
    "path": "src/pages/Publish/index.tsx",
    "chars": 32001,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * AI Agent Publication Component\n * Allows users to create "
  },
  {
    "path": "src/services/ai.ts",
    "chars": 7537,
    "preview": "/**\n * AI Service Module\n */\n\n// import { getChatCompletionsStream } from \"./api\";\nimport { getChatCompletionsStream, up"
  },
  {
    "path": "src/services/aiChatFeed.ts",
    "chars": 521,
    "preview": "import axios from 'axios'\n\nconst GLITTER_IPFS_API_URL = 'https://airag.glitterprotocol.tech'\n\ninterface IBlogListParams "
  },
  {
    "path": "src/services/api.ts",
    "chars": 4783,
    "preview": "import axios from \"axios\";\n\ninterface IMessageProps {\n  agent_id: string;\n  messages: {\n    content: string;\n  }[];\n  th"
  },
  {
    "path": "src/services/ens.ts",
    "chars": 6437,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport { encode } from \"@ensdom"
  },
  {
    "path": "src/services/network.ts",
    "chars": 4503,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chainsMini from \"@/const/chains_mini.json\";\n\nexport inter"
  },
  {
    "path": "src/services/upload.ts",
    "chars": 18101,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosError } from \"axios\";\nimport { message } fr"
  },
  {
    "path": "src/services/wallet/base.ts",
    "chars": 940,
    "preview": "import { BaseWalletServiceProps, IWalletService, WalletInfo, WalletType, WalletProvider } from './types'\n\nexport abstrac"
  },
  {
    "path": "src/services/wallet/index.ts",
    "chars": 1090,
    "preview": "import { BaseWalletServiceProps, WalletType } from './types'\nimport { MetaMaskWalletService } from './metamask'\nimport {"
  },
  {
    "path": "src/services/wallet/metamask.ts",
    "chars": 2371,
    "preview": "import { createConfig, configureChains, mainnet } from 'wagmi'\nimport { MetaMaskConnector } from 'wagmi/connectors/metaM"
  },
  {
    "path": "src/services/wallet/phantom.ts",
    "chars": 1996,
    "preview": "import { BaseWalletService } from './base'\nimport { BaseWalletServiceProps, WalletInfo, WalletType, PhantomProvider } fr"
  },
  {
    "path": "src/services/wallet/types.ts",
    "chars": 1251,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nexport enum WalletType {\n  MetaMask = 'MetaMask',\n  Phantom = 'P"
  },
  {
    "path": "src/services/wallet.ts",
    "chars": 19708,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  Connection,\n  PublicKey,\n  SystemProgram,\n  Transacti"
  },
  {
    "path": "src/store/network.ts",
    "chars": 556,
    "preview": "import { atom } from \"recoil\";\nimport { ENetwork } from \"@/services/network\";\n\nconst UrlNetwork = () => {\n  const url = "
  },
  {
    "path": "src/types/global.d.ts",
    "chars": 223,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\ninterface Window {\n  ethereum?: any;\n}\n/**\n * Extend Window inte"
  },
  {
    "path": "src/types/images.d.ts",
    "chars": 375,
    "preview": "declare module \"*.png\" {\n  const value: string;\n  export default value;\n}\n\ndeclare module \"*.jpg\" {\n  const value: strin"
  },
  {
    "path": "src/types/index.ts",
    "chars": 655,
    "preview": "export enum PublishStep {\n  CONTRACT = 'CONTRACT', \n  IPFS = 'IPFS',\n  ENS = 'ENS',\n  COMPLETED = 'COMPLETED'\n}\n\nexport "
  },
  {
    "path": "src/utils/constants.ts",
    "chars": 77,
    "preview": "// network type storage key name\nexport const NETWORK_TYPE = \"network_type\"; "
  },
  {
    "path": "src/utils/index.ts",
    "chars": 2503,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CID } from 'multiformats/cid'\nimport { sha256 } from 'm"
  },
  {
    "path": "src/vite-env.d.ts",
    "chars": 38,
    "preview": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "tsconfig.app.json",
    "chars": 144,
    "preview": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"composite\": true\n  },\n  \"include\": [\"src\"],\n  \"exclude\": ["
  },
  {
    "path": "tsconfig.json",
    "chars": 730,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM."
  },
  {
    "path": "tsconfig.node.json",
    "chars": 593,
    "preview": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2022\","
  },
  {
    "path": "tsconfig.tsbuildinfo",
    "chars": 308,
    "preview": "{\"root\":[\"./src/app.tsx\",\"./src/main.tsx\",\"./src/vite-env.d.ts\",\"./src/config/settings.ts\",\"./src/config/wagmi.ts\",\"./sr"
  },
  {
    "path": "vite.agent.config.ts",
    "chars": 862,
    "preview": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport path from 'path'\n\nexport default def"
  },
  {
    "path": "vite.config.ts",
    "chars": 1053,
    "preview": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport path from 'path'\n\nexport default def"
  }
]

// ... and 4 more files (download for full content)

About this extraction

This page contains the full source code of the tedl-1990/AIWS GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 63 files (920.8 KB), approximately 335.5k tokens, and a symbol index with 134 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!