create-message-kit 1.2.21 → 1.2.23
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -5
- package/index.js +7 -3
- package/package.json +2 -2
- package/templates/coinbase-agent/src/index.ts +5 -7
- package/templates/ens/src/index.ts +4 -24
- package/templates/ens/src/skills/info.ts +6 -3
- package/templates/faucet/src/index.ts +5 -16
- package/templates/gated-group/src/index.ts +2 -2
- package/templates/gm/src/index.ts +15 -7
- package/templates/hackathon-store/.env.example +6 -0
- package/templates/{thegeneralstore → hackathon-store}/package.json +1 -5
- package/templates/hackathon-store/src/index.ts +47 -0
- package/templates/{thegeneralstore → hackathon-store}/src/plugins/notion.ts +0 -29
- package/templates/hackathon-store/src/prompt.md +27 -0
- package/templates/playground/src/index.ts +9 -8
- package/templates/playground/src/vibes/chill.ts +9 -0
- package/templates/playground/src/vibes/friendly.ts +9 -0
- package/templates/playground/src/vibes/inquisitive.ts +10 -0
- package/templates/playground/src/vibes/playful.ts +10 -0
- package/templates/playground/src/vibes/professional.ts +9 -0
- package/templates/simple/src/index.ts +10 -9
- package/templates/toss/.env.example +1 -0
- package/templates/toss/src/index.ts +7 -10
- package/templates/toss/src/skills/toss.ts +0 -114
- package/templates/toss/src/skills/waas.ts +116 -0
- package/templates.json +58 -0
- package/templates/thegeneralstore/.env.example +0 -9
- package/templates/thegeneralstore/src/data/db.json +0 -812
- package/templates/thegeneralstore/src/index.ts +0 -37
- package/templates/thegeneralstore/src/plugins/learnweb3.ts +0 -96
- package/templates/thegeneralstore/src/plugins/lowdb.ts +0 -11
- package/templates/thegeneralstore/src/plugins/redis.ts +0 -15
- package/templates/thegeneralstore/src/prompt.md +0 -51
- package/templates/thegeneralstore/src/prompt.ts +0 -3
- package/templates/thegeneralstore/src/skills/faucet.ts +0 -114
- package/templates/thegeneralstore/src/skills/notion.ts +0 -17
- package/templates/thegeneralstore/src/skills/poap.ts +0 -48
- package/templates/thegeneralstore/src/skills.ts +0 -37
- /package/templates/{thegeneralstore → hackathon-store}/.cursorrules +0 -0
- /package/templates/{thegeneralstore → hackathon-store}/.yarnrc.yml +0 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
import { Skill, XMTPContext, getUserInfo } from "@xmtp/message-kit";
|
2
|
+
import { DM_HELP_MESSAGE } from "../plugins/helpers.js";
|
3
|
+
|
4
|
+
export const waas: Skill[] = [
|
5
|
+
{
|
6
|
+
skill: "create",
|
7
|
+
description: "Create an agent wallet.",
|
8
|
+
handler: handleDM,
|
9
|
+
examples: ["/create"],
|
10
|
+
},
|
11
|
+
{
|
12
|
+
skill: "fund",
|
13
|
+
description: "Fund your account.",
|
14
|
+
handler: handleDM,
|
15
|
+
examples: ["/fund 10"],
|
16
|
+
params: {
|
17
|
+
amount: {
|
18
|
+
type: "number",
|
19
|
+
},
|
20
|
+
},
|
21
|
+
},
|
22
|
+
{
|
23
|
+
skill: "withdraw",
|
24
|
+
description: "Withdraw funds from your account.",
|
25
|
+
handler: handleDM,
|
26
|
+
examples: ["/withdraw 10"],
|
27
|
+
params: {
|
28
|
+
amount: {
|
29
|
+
type: "number",
|
30
|
+
},
|
31
|
+
},
|
32
|
+
},
|
33
|
+
{
|
34
|
+
skill: "help",
|
35
|
+
description: "Get help with tossing.",
|
36
|
+
handler: handleDM,
|
37
|
+
examples: ["/help"],
|
38
|
+
},
|
39
|
+
{
|
40
|
+
skill: "balance",
|
41
|
+
description: "Check your balance.",
|
42
|
+
handler: handleDM,
|
43
|
+
examples: ["/balance"],
|
44
|
+
},
|
45
|
+
];
|
46
|
+
|
47
|
+
export async function handleDM(context: XMTPContext) {
|
48
|
+
const {
|
49
|
+
message: {
|
50
|
+
content: {
|
51
|
+
skill,
|
52
|
+
params: { amount },
|
53
|
+
},
|
54
|
+
sender,
|
55
|
+
},
|
56
|
+
group,
|
57
|
+
walletService,
|
58
|
+
} = context;
|
59
|
+
if (group && skill == "help") {
|
60
|
+
await context.reply("Check your DM's");
|
61
|
+
await context.sendTo(DM_HELP_MESSAGE, [sender.address]);
|
62
|
+
return;
|
63
|
+
} else if (skill === "help") {
|
64
|
+
await context.send(DM_HELP_MESSAGE);
|
65
|
+
} else if (skill === "create") {
|
66
|
+
const walletExist = await walletService.getWallet(sender.address);
|
67
|
+
if (walletExist) {
|
68
|
+
await context.reply("You already have an agent wallet.");
|
69
|
+
return;
|
70
|
+
}
|
71
|
+
await walletService.createWallet(sender.address);
|
72
|
+
} else if (skill === "balance") {
|
73
|
+
context.sendTo(
|
74
|
+
`Your agent wallet for address is ${sender.address}\nBalance: $${await walletService.checkBalance(sender.address)}`,
|
75
|
+
[sender.address],
|
76
|
+
);
|
77
|
+
} else if (skill === "fund") {
|
78
|
+
const balance = await walletService.checkBalance(sender.address);
|
79
|
+
if (balance === 10) {
|
80
|
+
await context.reply("You have maxed out your funds.");
|
81
|
+
return;
|
82
|
+
} else if (amount) {
|
83
|
+
if (amount + balance <= 10) {
|
84
|
+
return walletService.requestFunds(Number(amount));
|
85
|
+
} else {
|
86
|
+
await context.send("Wrong amount. Max 10 USDC.");
|
87
|
+
return;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
await context.reply(
|
91
|
+
`You have $${balance} in your account. You can fund up to $${10 - balance} more.`,
|
92
|
+
);
|
93
|
+
const options = Array.from({ length: Math.floor(10 - balance) }, (_, i) =>
|
94
|
+
(i + 1).toString(),
|
95
|
+
);
|
96
|
+
const response = await context.awaitResponse(
|
97
|
+
`Please specify the amount of USDC to prefund (1 to ${10 - balance}):`,
|
98
|
+
options,
|
99
|
+
);
|
100
|
+
return walletService.requestFunds(Number(response));
|
101
|
+
} else if (skill === "withdraw") {
|
102
|
+
const balance = await walletService.checkBalance(sender.address);
|
103
|
+
if (balance === 0) {
|
104
|
+
await context.reply("You have no funds to withdraw.");
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
const options = Array.from({ length: Math.floor(balance) }, (_, i) =>
|
108
|
+
(i + 1).toString(),
|
109
|
+
);
|
110
|
+
const response = await context.awaitResponse(
|
111
|
+
`Please specify the amount of USDC to withdraw (1 to ${balance}):`,
|
112
|
+
options,
|
113
|
+
);
|
114
|
+
await walletService.withdrawFunds(Number(response));
|
115
|
+
}
|
116
|
+
}
|
package/templates.json
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"href": "/templates/ens",
|
4
|
+
"title": "ENS Agent",
|
5
|
+
"description": "A template for working with ENS domains.",
|
6
|
+
"icon": "🔗",
|
7
|
+
"author": "humanagent"
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"href": "/templates/simple",
|
11
|
+
"title": "Simple Template",
|
12
|
+
"description": "A simple template without skills.",
|
13
|
+
"icon": "🤖",
|
14
|
+
"author": "humanagent"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"href": "/templates/coinbase-agent",
|
18
|
+
"title": "Coinbase Agent",
|
19
|
+
"description": "A template for a Coinbase features.",
|
20
|
+
"icon": "💰",
|
21
|
+
"author": "humanagent"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"href": "/templates/hackathon-store",
|
25
|
+
"title": "Hackathon Store",
|
26
|
+
"description": "All the goodies needed in a hackathon.",
|
27
|
+
"icon": "🏪",
|
28
|
+
"author": "humanagent"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"href": "/templates/faucet",
|
32
|
+
"title": "Faucet Agent",
|
33
|
+
"description": "A template for requesting testnet funds.",
|
34
|
+
"icon": "💧",
|
35
|
+
"author": "humanagent"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"href": "/templates/gated-group",
|
39
|
+
"title": "Gated Group",
|
40
|
+
"description": "A template for a gated group.",
|
41
|
+
"icon": "🔒",
|
42
|
+
"author": "humanagent"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"href": "/templates/gm",
|
46
|
+
"title": "GM Bot",
|
47
|
+
"description": "A template for a GM bot.",
|
48
|
+
"icon": "👑",
|
49
|
+
"author": "humanagent"
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"href": "/templates/toss",
|
53
|
+
"title": "Toss",
|
54
|
+
"description": "A friendly game for groups.",
|
55
|
+
"icon": "🪙",
|
56
|
+
"author": "humanagent"
|
57
|
+
}
|
58
|
+
]
|
@@ -1,9 +0,0 @@
|
|
1
|
-
KEY= # the private key of the agent wallet
|
2
|
-
TEST_ENCRYPTION_KEY= # a different private key for encryption
|
3
|
-
NOTION_API_KEY= # your Notion API key
|
4
|
-
NOTION_PAGE_ID= # the ID of the Notion page
|
5
|
-
NOTION_POAP_DB= # the ID of the Notion database
|
6
|
-
OPEN_AI_API_KEY= # your OpenAI API key
|
7
|
-
REDIS_CONNECTION_STRING= # your Redis connection string
|
8
|
-
LEARN_WEB3_API_KEY= # your Learn Web3 API key
|
9
|
-
FRAME_BASE_URL= # the URL of the Frame API
|