Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(plugin): added plugin section #1

Merged
merged 24 commits into from
Feb 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4ff717c
Added framer motion
minhanhld Feb 5, 2025
e820b92
Fixed footer logo being dark inverted
minhanhld Feb 5, 2025
02dbd2c
moved plugins.ts to data folder
minhanhld Feb 6, 2025
7ba119e
added several plugins for showcase
minhanhld Feb 6, 2025
1980d91
normed using npx prettier --write
minhanhld Feb 6, 2025
234d295
pnpm-lock.yaml
minhanhld Feb 6, 2025
3753d75
changed artpeace to correct logo
minhanhld Feb 6, 2025
73d9f6d
Merge branch 'main' of https://github.com/KasarLabs/starkagent
minhanhld Feb 6, 2025
82ff012
fixed ESLint errors
minhanhld Feb 6, 2025
fc06c05
ran npx prettier
minhanhld Feb 6, 2025
01397ed
Changed StarkNet to Starknet
minhanhld Feb 7, 2025
9be75d3
Logo correctly redirects to home page
minhanhld Feb 7, 2025
dcd5f26
Fixed the header to the top and added transparency
minhanhld Feb 7, 2025
f91468d
fixed plugin not being centered
minhanhld Feb 7, 2025
c6a128a
fixed sandwich button not working and search bar shows up correctly o…
minhanhld Feb 7, 2025
cfdc9a3
ran npx prettier --write
minhanhld Feb 7, 2025
a638fae
added docs on how to add plugins
minhanhld Feb 7, 2025
f8edc3d
removed package.json, added link in doc to test
minhanhld Feb 7, 2025
7ae264c
changed link
minhanhld Feb 7, 2025
4b4894e
updated add-plugin
minhanhld Feb 7, 2025
38fb7ac
separated interfaces
minhanhld Feb 7, 2025
1cc8f13
Added back ppackage.json, ran pnpm lint
minhanhld Feb 7, 2025
81d5a9f
changed readme links to relative@
minhanhld Feb 7, 2025
24be226
added backticks so it looks nicer
minhanhld Feb 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
273 changes: 273 additions & 0 deletions data/plugins.ts
minhanhld marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,273 @@
import { Plugin } from "../src/app/plugins/utils/types";

const vesuPlugin: Plugin = {
id: "9d3e05ef-c85a-43cc-8e57-486e94fcf40f",
name: "Vesu",
description:
"Deposit and withdraw tokens to earn yield in the Vesu DeFi protocol",
image: "/logos/vesu.png",

actions: [
{
name: "Deposit Earn",
description: "Deposit tokens into Vesu protocol to earn yield",
parameters: [
{
name: "depositTokenSymbol",
type: "string",
description: "Symbol of the token to deposit (e.g., ETH, USDC)",
required: true,
},
{
name: "depositAmount",
type: "string",
description: "Amount of tokens to deposit",
required: true,
},
],
},
{
name: "Withdraw Earn",
description: "Withdraw tokens and earned yield from Vesu protocol",
parameters: [
{
name: "withdrawTokenSymbol",
type: "string",
description: "Symbol of the token to withdraw",
required: true,
},
],
},
],
};

const unruggablePlugin: Plugin = {
id: "8d3e05ef-c85a-43cc-8e57-486e94fcf39e",
name: "Unruggable",
description:
"Create secure, transparent memecoins with built-in protections against common exploits and rug pulls",
image: "/logos/unruggable.png",

actions: [
{
name: "Create Memecoin",
description:
"Deploy a new memecoin contract with built-in security features and customizable parameters",
parameters: [
{
name: "owner",
type: "string",
description: "Owner address of the memecoin",
required: true,
},
{
name: "name",
type: "string",
description: "Name of the memecoin",
required: true,
},
{
name: "symbol",
type: "string",
description: "Symbol of the memecoin",
required: true,
},
{
name: "initialSupply",
type: "string",
description:
"Initial supply of tokens (will be scaled by 18 decimals)",
required: true,
},
],
},
{
name: "Verify Memecoin",
description:
"Check if a contract is a legitimate memecoin created by the Unruggable Factory",
parameters: [
{
name: "contractAddress",
type: "string",
description: "Address of the contract to verify",
required: true,
},
],
},
{
name: "Launch on Ekubo",
description:
"Launch memecoin on Ekubo DEX with concentrated liquidity and trading restrictions",
parameters: [
{
name: "memecoinAddress",
type: "string",
description: "Address of the memecoin to launch",
required: true,
},
{
name: "transferRestrictionDelay",
type: "number",
description: "Delay in seconds before transfers are allowed",
required: true,
},
{
name: "maxPercentageBuyLaunch",
type: "number",
description:
"Maximum percentage of tokens that can be bought at launch",
required: true,
},
{
name: "startingPrice",
type: "string",
description: "Initial trading price of the token",
required: true,
},
],
},
{
name: "Check Locked Liquidity",
description:
"Verify if a memecoin has locked liquidity and get detailed information about the liquidity lock",
parameters: [
{
name: "contractAddress",
type: "string",
description: "Address of the memecoin contract to check",
required: true,
},
],
},
],
};

const avnuPlugin: Plugin = {
id: "7d3e05ef-c85a-43cc-8e57-486e94fcf38e",
name: "AVNU",
description:
"Decentralized exchange aggregator for swapping tokens on Starknet with the best rates",
image: "/logos/avnu.png",

actions: [
{
name: "Swap Tokens",
description: "Swap tokens using the best available routes and rates",
parameters: [
{
name: "sellTokenSymbol",
type: "string",
description: "Symbol of the token to sell (e.g., ETH, USDC)",
required: true,
},
{
name: "buyTokenSymbol",
type: "string",
description: "Symbol of the token to buy (e.g., ETH, USDC)",
required: true,
},
{
name: "sellAmount",
type: "string",
description: "Amount of tokens to sell",
required: true,
},
],
},
{
name: "Fetch Route",
description:
"Get the best route and quote for a token swap without executing it",
parameters: [
{
name: "sellTokenSymbol",
type: "string",
description: "Symbol of the token to sell (e.g., ETH, USDC)",
required: true,
},
{
name: "buyTokenSymbol",
type: "string",
description: "Symbol of the token to buy (e.g., ETH, USDC)",
required: true,
},
{
name: "sellAmount",
type: "number",
description: "Amount of tokens to sell",
required: true,
},
],
},
],
};

const coingeckoPlugin: Plugin = {
id: "6d3e05ef-c85a-43cc-8e57-486e94fcf37e",
name: "CoinGecko",
description:
"Get real-time cryptocurrency prices, market data, and trends using CoinGecko API",
image: "/logos/coingecko.png",

actions: [
{
name: "Check Server Status",
description: "Check if the CoinGecko API server is operational",
},
{
name: "Check Token Price",
description: "Get current price for specified tokens in USD",
parameters: [
{
name: "tokenNames",
type: "string",
description:
'Comma-separated list of token names (e.g., "bitcoin,ethereum")',
required: true,
},
],
},
{
name: "List Supported Tokens",
description: "Get a list of all supported tokens/currencies on CoinGecko",
},
{
name: "Trending Search List",
description: "Get list of trending cryptocurrency searches",
},
],
};

const dexscreenerPlugin: Plugin = {
id: "5d3e05ef-c85a-43cc-8e57-486e94fcf36e",
name: "Dexscreener",
description: "",
image: "/logos/dexscreener.png",
actions: [],
};

const artpeacePlugin: Plugin = {
id: "4d3e05ef-c85a-43cc-8e57-486e94fcf35e",
name: "Artpeace",
description: "",
image: "/logos/artpeace.png",
actions: [],
};

const twitterPlugin: Plugin = {
id: "3d3e05ef-c85a-43cc-8e57-486e94fcf34e",
name: "Twitter",
description: "",
image: "/logos/twitter.png",
actions: [],
};

export const allPlugins: Array<Plugin> = [
unruggablePlugin,
vesuPlugin,
avnuPlugin,
coingeckoPlugin,
dexscreenerPlugin,
artpeacePlugin,
twitterPlugin,
];
35 changes: 35 additions & 0 deletions docs/add-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Steps to submit a new plugin:

- Build your plugin configuration in [`data/plugins.ts`](../data/plugins.ts).
The format is the following :

```typescript
const yourPluginName: Plugin {
id: string; // Unique identifier for your plugin (UUID)
name: string; // Display name of your plugin
description: string; // Brief description of what your plugin does
image: string; // Path to your plugin's logo
actions: Action[]; // List of actions your plugin supports
}
```

```typescript
interface Action {
name: string; // Name of the action
description: string; // Description of what the action does
parameters?: ActionParameter[]; // Optional list of parameters (if your action needs inputs)
}
```

```typescript
interface ActionParameter {
name: string; // Name of the parameter
type: string; // Data type (e.g., "string", "number", "boolean")
description: string; // Description of what the parameter is for
required: boolean; // Whether this parameter is mandatory
}
```

- Ensure you assign a unique UUID for your plugin. You can generate one here [`v4 UUID Generator`](https://www.uuidgenerator.net/version4)
- Upload your plugin's logo to [`public/logos/`](../public/logos/) with the format being "plugin_name.png".
- Submit a Pull Request titled "feat(plugin): Introducing PluginName" and verify it passes all CI checks.
4 changes: 4 additions & 0 deletions docs/update-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Modify an existing plugin

Follow the same process as adding a new plugin. Modify your plugin's details in data/plugins.ts and
submit a dedicated Pull Request with the title: "Updating PluginName"
Loading