create-message-kit 1.1.7-beta.32 → 1.1.7-beta.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -22,6 +22,8 @@ program
22
22
  // Add Yarn 4 check at the start of the action
23
23
  const pkgManager = await detectPackageManager();
24
24
 
25
+ log.info(pc.cyan(`pkgManager detected: ${pkgManager}`));
26
+
25
27
  log.info(pc.cyan(`Welcome to MessageKit CLI v${version}!`));
26
28
  const coolLogo = `
27
29
  ███╗ ███╗███████╗███████╗███████╗ █████╗ ██████╗ ███████╗██╗ ██╗██╗████████╗
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-message-kit",
3
- "version": "1.1.7-beta.32",
3
+ "version": "1.1.7-beta.33",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -64,5 +64,6 @@ export async function agent_prompt(userInfo: UserInfo) {
64
64
  userInfo,
65
65
  "@ens",
66
66
  );
67
+ // console.log(systemPrompt);
67
68
  return systemPrompt;
68
69
  }
@@ -1 +1 @@
1
- KEY= # the private key of the bot wallet
1
+ KEY= # the private key of the agent wallet
@@ -1,20 +1,5 @@
1
1
  import { run, HandlerContext } from "@xmtp/message-kit";
2
- run(async (context: HandlerContext) => {
3
- // To reply, just call `reply` on the HandlerContext
4
- await context.send(`gm`);
5
2
 
6
- // Set the awaited handler to process the user's response
7
- context.setAwaitedHandler(async (responseContext: HandlerContext) => {
8
- console.log("awaited handler");
9
- const userResponse = responseContext?.message?.content?.text?.toLowerCase();
10
- if (userResponse === "yes") {
11
- await responseContext.send("Action confirmed.");
12
- } else if (userResponse === "no") {
13
- await responseContext.send("Action canceled.");
14
- } else {
15
- await responseContext.send("Please respond with 'yes' or 'no'.");
16
- // Re-set the handler to await the correct response again
17
- context.setAwaitedHandler(responseContext?.awaitedHandler!);
18
- }
19
- });
3
+ run(async (context: HandlerContext) => {
4
+ context.send("gm");
20
5
  });
@@ -1,2 +1,2 @@
1
- KEY= # the private key of the bot wallet
1
+ KEY= # the private key of the agent wallet
2
2
  OPEN_AI_API_KEY= # openai api key
@@ -0,0 +1,28 @@
1
+ import { getUserInfo, HandlerContext } from "@xmtp/message-kit";
2
+
3
+ export async function handler(context: HandlerContext) {
4
+ const {
5
+ message: {
6
+ content: { skill, params },
7
+ },
8
+ } = context;
9
+ const baseUrl = "https://txpay.vercel.app";
10
+
11
+ if (skill === "pay") {
12
+ const { amount: amountSend, token: tokenSend, username } = params; // [!code hl] // [!code focus]
13
+ let senderInfo = await getUserInfo(username);
14
+ if (!amountSend || !tokenSend || !senderInfo) {
15
+ context.reply(
16
+ "Missing required parameters. Please provide amount, token, and username.",
17
+ );
18
+ return {
19
+ code: 400,
20
+ message:
21
+ "Missing required parameters. Please provide amount, token, and username.",
22
+ };
23
+ }
24
+
25
+ let sendUrl = `${baseUrl}/?transaction_type=send&amount=${amountSend}&token=${tokenSend}&receiver=${senderInfo.address}`;
26
+ await context.send(`${sendUrl}`);
27
+ }
28
+ }
@@ -5,14 +5,10 @@ import {
5
5
  } from "@xmtp/message-kit";
6
6
  import { getUserInfo } from "@xmtp/message-kit";
7
7
 
8
- export async function handler(context: HandlerContext): Promise<SkillResponse> {
8
+ export async function handler(context: HandlerContext) {
9
9
  const {
10
- members,
11
10
  message: {
12
11
  content: {
13
- reference,
14
- reply,
15
- text,
16
12
  skill,
17
13
  params: { amount, username },
18
14
  },
@@ -28,10 +24,6 @@ export async function handler(context: HandlerContext): Promise<SkillResponse> {
28
24
  }
29
25
  if (!sender || receivers.length === 0 || amount === 0) {
30
26
  context.reply("Sender or receiver or amount not found.");
31
- return {
32
- code: 400,
33
- message: "Sender or receiver or amount not found.",
34
- };
35
27
  }
36
28
  const receiverAddresses = receivers.map((receiver) => receiver.address);
37
29
 
@@ -45,8 +37,4 @@ export async function handler(context: HandlerContext): Promise<SkillResponse> {
45
37
  `You sent ${amount * receiverAddresses.length} tokens in total.`,
46
38
  [sender.address],
47
39
  );
48
- return {
49
- code: 200,
50
- message: "Success",
51
- };
52
40
  }
@@ -9,7 +9,6 @@ run(async (context: HandlerContext) => {
9
9
  content: { text, params },
10
10
  sender,
11
11
  },
12
- group,
13
12
  } = context;
14
13
 
15
14
  try {
@@ -13,6 +13,15 @@ export async function agent_prompt(userInfo: UserInfo) {
13
13
  PROMPT_USER_CONTENT(userInfo) +
14
14
  PROMPT_SKILLS_AND_EXAMPLES(skills, "@bot");
15
15
 
16
+ let fineTunedPrompt = `
17
+ ## Example response
18
+ 1. If user wants to play a game, use the skill 'game' and specify the game type.
19
+ Hey! Sure let's do that.\n/game wordle
20
+ 1. If user wants to pay, use the skill 'pay' and if not specified default to 1 USDC.
21
+ Hey! Sure let's do that.\n/pay 1 USDC vitalik.eth
22
+ `;
23
+
24
+ systemPrompt += fineTunedPrompt;
16
25
  // Replace the variables in the system prompt
17
26
  systemPrompt = PROMPT_REPLACE_VARIABLES(
18
27
  systemPrompt,
@@ -1,5 +1,5 @@
1
1
  import { handler as tipping } from "./handler/tipping.js";
2
- import { handler as transaction } from "./handler/transaction.js";
2
+ import { handler as payment } from "./handler/payment.js";
3
3
  import { handler as games } from "./handler/game.js";
4
4
  import { handler as help } from "./handler/helpers.js";
5
5
  import type { SkillGroup } from "@xmtp/message-kit";
@@ -8,7 +8,7 @@ export const skills: SkillGroup[] = [
8
8
  {
9
9
  name: "Group bot",
10
10
  tag: "@bot",
11
- description: "Group bot for tipping and transactions.",
11
+ description: "Group agent for tipping and transactions.",
12
12
  skills: [
13
13
  {
14
14
  skill: "/tip [usernames] [amount] [token]",
@@ -29,12 +29,12 @@ export const skills: SkillGroup[] = [
29
29
  },
30
30
  },
31
31
  {
32
- skill: "/send [amount] [token] [username]",
33
- triggers: ["/send"],
34
- examples: ["/send 10 usdc @vitalik"],
32
+ skill: "/pay [amount] [token] [username]",
33
+ triggers: ["/pay"],
34
+ examples: ["/pay 10 vitalik.eth"],
35
35
  description:
36
36
  "Send a specified amount of a cryptocurrency to a destination address.",
37
- handler: transaction,
37
+ handler: payment,
38
38
  params: {
39
39
  amount: {
40
40
  default: 10,
@@ -51,37 +51,6 @@ export const skills: SkillGroup[] = [
51
51
  },
52
52
  },
53
53
  },
54
- {
55
- skill: "/swap [amount] [token_from] [token_to]",
56
- triggers: ["/swap"],
57
- examples: ["/swap 10 usdc eth"],
58
- description: "Exchange one type of cryptocurrency for another.",
59
- handler: transaction,
60
- params: {
61
- amount: {
62
- default: 10,
63
- type: "number",
64
- },
65
- token_from: {
66
- default: "usdc",
67
- type: "string",
68
- values: ["eth", "dai", "usdc", "degen"], // Accepted tokens
69
- },
70
- token_to: {
71
- default: "eth",
72
- type: "string",
73
- values: ["eth", "dai", "usdc", "degen"], // Accepted tokenss
74
- },
75
- },
76
- },
77
- {
78
- skill: "/show",
79
- triggers: ["/show"],
80
- examples: ["/show"],
81
- handler: transaction,
82
- description: "Show the whole frame.",
83
- params: {},
84
- },
85
54
  {
86
55
  skill: "/game [game]",
87
56
  triggers: ["/game", "🔎", "🔍"],
@@ -1,31 +0,0 @@
1
- import { run, HandlerContext } from "@xmtp/message-kit";
2
- import { textGeneration, processMultilineResponse } from "@xmtp/message-kit";
3
- import { agent_prompt } from "../prompt.js";
4
- import { getUserInfo } from "@xmtp/message-kit";
5
-
6
- run(async (context: HandlerContext) => {
7
- const {
8
- message: {
9
- content: { text, params },
10
- sender,
11
- },
12
- } = context;
13
-
14
- try {
15
- let userPrompt = params?.prompt ?? text;
16
- const userInfo = await getUserInfo(sender.address);
17
- if (!userInfo) {
18
- console.log("User info not found");
19
- return;
20
- }
21
- const { reply } = await textGeneration(
22
- sender.address,
23
- userPrompt,
24
- await agent_prompt(userInfo),
25
- );
26
- await processMultilineResponse(sender.address, reply, context);
27
- } catch (error) {
28
- console.error("Error during OpenAI call:", error);
29
- await context.send("An error occurred while processing your request.");
30
- }
31
- });
@@ -1,69 +0,0 @@
1
- import { getUserInfo, HandlerContext, SkillResponse } from "@xmtp/message-kit";
2
-
3
- // Main handler function for processing
4
- export async function handler(context: HandlerContext): Promise<SkillResponse> {
5
- const {
6
- message: {
7
- content: { skill, params },
8
- },
9
- } = context;
10
- const baseUrl = "https://base-tx-frame.vercel.app/transaction";
11
-
12
- switch (skill) {
13
- case "send":
14
- // Destructure and validate parameters for the send
15
- const { amount: amountSend, token: tokenSend, username } = params; // [!code hl] // [!code focus]
16
- let senderInfo = await getUserInfo(username);
17
- if (!amountSend || !tokenSend || !senderInfo) {
18
- context.reply(
19
- "Missing required parameters. Please provide amount, token, and username.",
20
- );
21
- return {
22
- code: 400,
23
- message:
24
- "Missing required parameters. Please provide amount, token, and username.",
25
- };
26
- }
27
-
28
- let sendUrl = `${baseUrl}/?transaction_type=send&amount=${amountSend}&token=${tokenSend}&receiver=${senderInfo.address}`;
29
- context.send(`${sendUrl}`);
30
- return {
31
- code: 200,
32
- message: `${sendUrl}`,
33
- };
34
- case "swap":
35
- // Destructure and validate parameters for the swap
36
- const { amount, token_from, token_to } = params; // [!code hl] // [!code focus]
37
-
38
- if (!amount || !token_from || !token_to) {
39
- context.reply(
40
- "Missing required parameters. Please provide amount, token_from, and token_to.",
41
- );
42
- return {
43
- code: 400,
44
- message:
45
- "Missing required parameters. Please provide amount, token_from, and token_to.",
46
- };
47
- }
48
-
49
- let swapUrl = `${baseUrl}/?transaction_type=swap&token_from=${token_from}&token_to=${token_to}&amount=${amount}`;
50
- context.send(`${swapUrl}`);
51
- return {
52
- code: 200,
53
- message: `${swapUrl}`,
54
- };
55
- case "show": // [!code hl] // [!code focus]
56
- // Show the base URL without the transaction path
57
- context.reply(`${baseUrl.replace("/transaction", "")}`);
58
- return {
59
- code: 200,
60
- message: `${baseUrl.replace("/transaction", "")}`,
61
- };
62
- default:
63
- context.reply("Unknown skill. Use help to see all available skills.");
64
- return {
65
- code: 400,
66
- message: "Unknown skill. Use help to see all available skills.",
67
- };
68
- }
69
- }