agenza-line-bot-mcp 0.0.1-local
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/README.ja.md +199 -0
- package/README.md +215 -0
- package/dist/common/response.d.ts +14 -0
- package/dist/common/response.d.ts.map +1 -0
- package/dist/common/response.js +22 -0
- package/dist/common/response.js.map +1 -0
- package/dist/common/schema/actionSchema.d.ts +139 -0
- package/dist/common/schema/actionSchema.d.ts.map +1 -0
- package/dist/common/schema/actionSchema.js +85 -0
- package/dist/common/schema/actionSchema.js.map +1 -0
- package/dist/common/schema/constants.d.ts +2 -0
- package/dist/common/schema/constants.d.ts.map +1 -0
- package/dist/common/schema/constants.js +2 -0
- package/dist/common/schema/constants.js.map +1 -0
- package/dist/common/schema/flexMessage.d.ts +1654 -0
- package/dist/common/schema/flexMessage.d.ts.map +1 -0
- package/dist/common/schema/flexMessage.js +337 -0
- package/dist/common/schema/flexMessage.js.map +1 -0
- package/dist/common/schema/textMessage.d.ts +12 -0
- package/dist/common/schema/textMessage.d.ts.map +1 -0
- package/dist/common/schema/textMessage.js +9 -0
- package/dist/common/schema/textMessage.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/AbstractTool.d.ts +9 -0
- package/dist/tools/AbstractTool.d.ts.map +1 -0
- package/dist/tools/AbstractTool.js +3 -0
- package/dist/tools/AbstractTool.js.map +1 -0
- package/dist/tools/broadcastFlexMessage.d.ts +9 -0
- package/dist/tools/broadcastFlexMessage.d.ts.map +1 -0
- package/dist/tools/broadcastFlexMessage.js +28 -0
- package/dist/tools/broadcastFlexMessage.js.map +1 -0
- package/dist/tools/broadcastTextMessage.d.ts +9 -0
- package/dist/tools/broadcastTextMessage.d.ts.map +1 -0
- package/dist/tools/broadcastTextMessage.js +27 -0
- package/dist/tools/broadcastTextMessage.js.map +1 -0
- package/dist/tools/cancelRichMenuDefault.d.ts +9 -0
- package/dist/tools/cancelRichMenuDefault.d.ts.map +1 -0
- package/dist/tools/cancelRichMenuDefault.js +16 -0
- package/dist/tools/cancelRichMenuDefault.js.map +1 -0
- package/dist/tools/createRichMenu.d.ts +10 -0
- package/dist/tools/createRichMenu.d.ts.map +1 -0
- package/dist/tools/createRichMenu.js +278 -0
- package/dist/tools/createRichMenu.js.map +1 -0
- package/dist/tools/deleteRichMenu.d.ts +9 -0
- package/dist/tools/deleteRichMenu.d.ts.map +1 -0
- package/dist/tools/deleteRichMenu.js +27 -0
- package/dist/tools/deleteRichMenu.js.map +1 -0
- package/dist/tools/getMessageQuota.d.ts +9 -0
- package/dist/tools/getMessageQuota.d.ts.map +1 -0
- package/dist/tools/getMessageQuota.js +21 -0
- package/dist/tools/getMessageQuota.js.map +1 -0
- package/dist/tools/getProfile.d.ts +10 -0
- package/dist/tools/getProfile.d.ts.map +1 -0
- package/dist/tools/getProfile.js +34 -0
- package/dist/tools/getProfile.js.map +1 -0
- package/dist/tools/getRichMenuList.d.ts +9 -0
- package/dist/tools/getRichMenuList.d.ts.map +1 -0
- package/dist/tools/getRichMenuList.js +21 -0
- package/dist/tools/getRichMenuList.js.map +1 -0
- package/dist/tools/pushFlexMessage.d.ts +10 -0
- package/dist/tools/pushFlexMessage.d.ts.map +1 -0
- package/dist/tools/pushFlexMessage.js +40 -0
- package/dist/tools/pushFlexMessage.js.map +1 -0
- package/dist/tools/pushTextMessage.d.ts +10 -0
- package/dist/tools/pushTextMessage.d.ts.map +1 -0
- package/dist/tools/pushTextMessage.js +39 -0
- package/dist/tools/pushTextMessage.js.map +1 -0
- package/dist/tools/setRichMenuDefault.d.ts +9 -0
- package/dist/tools/setRichMenuDefault.d.ts.map +1 -0
- package/dist/tools/setRichMenuDefault.js +22 -0
- package/dist/tools/setRichMenuDefault.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +54 -0
- package/richmenu-template/template-01.md +46 -0
- package/richmenu-template/template-02.md +49 -0
- package/richmenu-template/template-03.md +74 -0
- package/richmenu-template/template-04.md +60 -0
- package/richmenu-template/template-05.md +67 -0
- package/richmenu-template/template-06.md +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelRichMenuDefault.js","sourceRoot":"","sources":["../../src/tools/cancelRichMenuDefault.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IACrD,MAAM,CAAkC;IAEhD,YAAY,MAAuC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,+BAA+B,EAC/B,EAAE,EACF,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC3D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class CreateRichMenu extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
private lineBlobClient;
|
|
7
|
+
constructor(client: messagingApi.MessagingApiClient, lineBlobClient: messagingApi.MessagingApiBlobClient);
|
|
8
|
+
register(server: McpServer): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=createRichMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRichMenu.d.ts","sourceRoot":"","sources":["../../src/tools/createRichMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAcjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IACtD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAsC;gBAG1D,MAAM,EAAE,YAAY,CAAC,kBAAkB,EACvC,cAAc,EAAE,YAAY,CAAC,sBAAsB;IAOrD,QAAQ,CAAC,MAAM,EAAE,SAAS;CAyF3B"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
2
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { Marp } from "@marp-team/marp-core";
|
|
5
|
+
import puppeteer from "puppeteer";
|
|
6
|
+
import fs from "fs";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import os from "os";
|
|
9
|
+
import { fileURLToPath } from "url";
|
|
10
|
+
import { actionSchema } from "../common/schema/actionSchema.js";
|
|
11
|
+
import { promises as fsp } from "fs";
|
|
12
|
+
const RICHMENU_HEIGHT = 910;
|
|
13
|
+
const RICHMENU_WIDTH = 1600;
|
|
14
|
+
export default class CreateRichMenu extends AbstractTool {
|
|
15
|
+
client;
|
|
16
|
+
lineBlobClient;
|
|
17
|
+
constructor(client, lineBlobClient) {
|
|
18
|
+
super();
|
|
19
|
+
this.client = client;
|
|
20
|
+
this.lineBlobClient = lineBlobClient;
|
|
21
|
+
}
|
|
22
|
+
register(server) {
|
|
23
|
+
server.tool("create_rich_menu", "Create a rich menu based on the given actions. Generate and upload a rich menu image based on the given action. This rich menu will be registered as the default.", {
|
|
24
|
+
chatBarText: z
|
|
25
|
+
.string()
|
|
26
|
+
.describe("Text displayed in the chat bar and this is also used as name of the rich menu to create"),
|
|
27
|
+
actions: z
|
|
28
|
+
.array(actionSchema)
|
|
29
|
+
.min(1)
|
|
30
|
+
.max(6)
|
|
31
|
+
.describe("The actions of the rich menu."),
|
|
32
|
+
}, async ({ chatBarText, actions }) => {
|
|
33
|
+
// Flow:
|
|
34
|
+
// 1. Validate the rich menu image
|
|
35
|
+
// 2. Create a rich menu
|
|
36
|
+
// 3. Generate a rich menu image
|
|
37
|
+
// 4. Upload the rich menu image
|
|
38
|
+
// 5. Set the rich menu as the default rich menu
|
|
39
|
+
let createRichMenuResponse = null;
|
|
40
|
+
let setImageResponse = null;
|
|
41
|
+
let setDefaultResponse = null;
|
|
42
|
+
const lineActions = actions;
|
|
43
|
+
try {
|
|
44
|
+
// 1. Validate the rich menu image
|
|
45
|
+
if (lineActions.length < 1 || lineActions.length > 6) {
|
|
46
|
+
return createErrorResponse("Invalid actions length");
|
|
47
|
+
}
|
|
48
|
+
// 2. Create a rich menu
|
|
49
|
+
const areas = richmenuAreas(lineActions);
|
|
50
|
+
const createRichMenuParams = {
|
|
51
|
+
name: chatBarText,
|
|
52
|
+
chatBarText,
|
|
53
|
+
selected: true,
|
|
54
|
+
size: {
|
|
55
|
+
width: RICHMENU_WIDTH,
|
|
56
|
+
height: RICHMENU_HEIGHT,
|
|
57
|
+
},
|
|
58
|
+
areas,
|
|
59
|
+
};
|
|
60
|
+
createRichMenuResponse =
|
|
61
|
+
await this.client.createRichMenu(createRichMenuParams);
|
|
62
|
+
const richMenuId = createRichMenuResponse.richMenuId;
|
|
63
|
+
// 3. Generate a rich menu image
|
|
64
|
+
const richMenuImagePath = await generateRichMenuImage(lineActions);
|
|
65
|
+
// 4. Upload the rich menu image
|
|
66
|
+
const imageBuffer = fs.readFileSync(richMenuImagePath);
|
|
67
|
+
const imageType = "image/png";
|
|
68
|
+
const imageBlob = new Blob([imageBuffer], { type: imageType });
|
|
69
|
+
setImageResponse = await this.lineBlobClient.setRichMenuImage(richMenuId, imageBlob);
|
|
70
|
+
// 5. Set the rich menu as the default rich menu
|
|
71
|
+
setDefaultResponse = await this.client.setDefaultRichMenu(richMenuId);
|
|
72
|
+
return createSuccessResponse({
|
|
73
|
+
message: "Rich menu created successfully and set as default.",
|
|
74
|
+
richMenuId,
|
|
75
|
+
createRichMenuParams,
|
|
76
|
+
createRichMenuResponse,
|
|
77
|
+
setImageResponse,
|
|
78
|
+
setDefaultResponse,
|
|
79
|
+
richMenuImagePath,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error("Rich menu creation error:", error);
|
|
84
|
+
return createErrorResponse(JSON.stringify({
|
|
85
|
+
error: error instanceof Error ? error.message : String(error),
|
|
86
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
87
|
+
createRichMenuResponse,
|
|
88
|
+
setImageResponse,
|
|
89
|
+
setDefaultResponse,
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
96
|
+
const __dirname = path.dirname(__filename);
|
|
97
|
+
// Function to generate a rich menu image from a Markdown template
|
|
98
|
+
async function generateRichMenuImage(actions) {
|
|
99
|
+
const templateNo = actions.length;
|
|
100
|
+
// Flow:
|
|
101
|
+
// 1. Read the Markdown template
|
|
102
|
+
// 2. Convert Markdown to HTML using Marp
|
|
103
|
+
// 3. Save the HTML as a temporary file
|
|
104
|
+
// 4. Use puppeteer to convert HTML to PNG
|
|
105
|
+
// 5. Delete the temporary HTML file
|
|
106
|
+
const richMenuImagePath = path.join(os.tmpdir(), `template-0${templateNo}-${Date.now()}.png`);
|
|
107
|
+
const serverPath = process.env.SERVER_PATH || path.resolve(__dirname, "..", "..");
|
|
108
|
+
// 1. Read the Markdown template
|
|
109
|
+
const srcPath = path.join(serverPath, `richmenu-template/template-0${templateNo}.md`);
|
|
110
|
+
let content = await fsp.readFile(srcPath, "utf8");
|
|
111
|
+
for (let index = 0; index < actions.length; index++) {
|
|
112
|
+
const pattern = new RegExp(`<h3>item0${index + 1}</h3>`, "g");
|
|
113
|
+
content = content.replace(pattern, `<h3>${actions[index].label}</h3>`);
|
|
114
|
+
}
|
|
115
|
+
// 2. Convert Markdown to HTML using Marp
|
|
116
|
+
const marp = new Marp();
|
|
117
|
+
const { html, css } = marp.render(content);
|
|
118
|
+
// 3. Save the HTML as a temporary file with Japanese font support
|
|
119
|
+
const htmlContent = `
|
|
120
|
+
<!doctype html>
|
|
121
|
+
<html lang="ja">
|
|
122
|
+
<head>
|
|
123
|
+
<meta charset="UTF-8">
|
|
124
|
+
<style>
|
|
125
|
+
${css}
|
|
126
|
+
* {
|
|
127
|
+
font-family: 'Noto Sans JP', 'IPAexGothic', 'IPAexMincho', 'Noto Sans CJK JP', sans-serif !important;
|
|
128
|
+
box-sizing: border-box;
|
|
129
|
+
}
|
|
130
|
+
html, body {
|
|
131
|
+
margin: 0;
|
|
132
|
+
padding: 0;
|
|
133
|
+
height: ${RICHMENU_HEIGHT}px;
|
|
134
|
+
overflow: hidden;
|
|
135
|
+
}
|
|
136
|
+
h3 {
|
|
137
|
+
font-weight: 500;
|
|
138
|
+
line-height: 1.4;
|
|
139
|
+
margin: 0;
|
|
140
|
+
padding: 0.4em 0;
|
|
141
|
+
}
|
|
142
|
+
</style>
|
|
143
|
+
</head>
|
|
144
|
+
<body>${html}</body>
|
|
145
|
+
</html>
|
|
146
|
+
`;
|
|
147
|
+
const tempHtmlPath = path.join(os.tmpdir(), `temp_marp_slide_${Date.now()}.html`);
|
|
148
|
+
await fsp.writeFile(tempHtmlPath, htmlContent, "utf8");
|
|
149
|
+
// 4. Use puppeteer to convert HTML to PNG with Docker-compatible settings
|
|
150
|
+
const browser = await puppeteer.launch({
|
|
151
|
+
headless: true,
|
|
152
|
+
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined,
|
|
153
|
+
args: [
|
|
154
|
+
"--no-sandbox",
|
|
155
|
+
"--disable-setuid-sandbox",
|
|
156
|
+
"--disable-dev-shm-usage",
|
|
157
|
+
"--disable-gpu",
|
|
158
|
+
"--disable-web-security",
|
|
159
|
+
"--disable-features=VizDisplayCompositor",
|
|
160
|
+
"--no-first-run",
|
|
161
|
+
"--no-default-browser-check",
|
|
162
|
+
"--disable-default-apps",
|
|
163
|
+
"--disable-extensions",
|
|
164
|
+
],
|
|
165
|
+
});
|
|
166
|
+
const page = await browser.newPage();
|
|
167
|
+
await page.setViewport({ width: RICHMENU_WIDTH, height: RICHMENU_HEIGHT });
|
|
168
|
+
await page.goto(`file://${tempHtmlPath}`, {
|
|
169
|
+
waitUntil: "networkidle0",
|
|
170
|
+
});
|
|
171
|
+
// Wait for fonts to load
|
|
172
|
+
await page.evaluate(() => document.fonts.ready);
|
|
173
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
174
|
+
await page.screenshot({
|
|
175
|
+
path: richMenuImagePath,
|
|
176
|
+
clip: { x: 0, y: 0, width: RICHMENU_WIDTH, height: RICHMENU_HEIGHT },
|
|
177
|
+
});
|
|
178
|
+
await browser.close();
|
|
179
|
+
// Save image to output directory
|
|
180
|
+
const outputPath = path.join("/tmp", path.basename(richMenuImagePath));
|
|
181
|
+
try {
|
|
182
|
+
await fsp.copyFile(richMenuImagePath, outputPath);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.warn(`Failed to save image to output directory: ${error}`);
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
// 5. Delete the temporary HTML file
|
|
189
|
+
await fsp.unlink(tempHtmlPath);
|
|
190
|
+
}
|
|
191
|
+
return richMenuImagePath;
|
|
192
|
+
}
|
|
193
|
+
const richmenuAreas = (actions) => {
|
|
194
|
+
const bounds = richmenuBounds(actions.length);
|
|
195
|
+
return actions.map((action, index) => {
|
|
196
|
+
return {
|
|
197
|
+
bounds: bounds[index],
|
|
198
|
+
action: action,
|
|
199
|
+
};
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
const richmenuBounds = (actionCount) => {
|
|
203
|
+
const boundsMap = [
|
|
204
|
+
[],
|
|
205
|
+
// template-01
|
|
206
|
+
[
|
|
207
|
+
{
|
|
208
|
+
x: 0,
|
|
209
|
+
y: 0,
|
|
210
|
+
width: RICHMENU_WIDTH,
|
|
211
|
+
height: RICHMENU_HEIGHT,
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
// template-02
|
|
215
|
+
[0, 1].map(i => ({
|
|
216
|
+
x: (RICHMENU_WIDTH / 2) * i,
|
|
217
|
+
y: 0,
|
|
218
|
+
width: RICHMENU_WIDTH / 2,
|
|
219
|
+
height: RICHMENU_HEIGHT,
|
|
220
|
+
})),
|
|
221
|
+
// template-03
|
|
222
|
+
[
|
|
223
|
+
{
|
|
224
|
+
x: 0,
|
|
225
|
+
y: 0,
|
|
226
|
+
width: (RICHMENU_WIDTH / 3) * 2,
|
|
227
|
+
height: RICHMENU_HEIGHT,
|
|
228
|
+
},
|
|
229
|
+
...[0, 1].map(i => ({
|
|
230
|
+
x: (RICHMENU_WIDTH / 3) * 2,
|
|
231
|
+
y: (RICHMENU_HEIGHT / 3) * i,
|
|
232
|
+
width: RICHMENU_WIDTH / 3,
|
|
233
|
+
height: RICHMENU_HEIGHT / 2,
|
|
234
|
+
})),
|
|
235
|
+
],
|
|
236
|
+
// template-04
|
|
237
|
+
[0, 1]
|
|
238
|
+
.map(i => [0, 1].map(j => ({
|
|
239
|
+
x: (RICHMENU_WIDTH / 2) * i,
|
|
240
|
+
y: (RICHMENU_HEIGHT / 2) * j,
|
|
241
|
+
width: RICHMENU_WIDTH / 2,
|
|
242
|
+
height: RICHMENU_HEIGHT / 2,
|
|
243
|
+
})))
|
|
244
|
+
.flat(),
|
|
245
|
+
// template-05
|
|
246
|
+
[
|
|
247
|
+
{
|
|
248
|
+
x: 0,
|
|
249
|
+
y: 0,
|
|
250
|
+
width: (RICHMENU_WIDTH / 3) * 2,
|
|
251
|
+
height: RICHMENU_HEIGHT / 2,
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
x: (RICHMENU_WIDTH / 3) * 2,
|
|
255
|
+
y: 0,
|
|
256
|
+
width: RICHMENU_WIDTH / 3,
|
|
257
|
+
height: RICHMENU_HEIGHT / 2,
|
|
258
|
+
},
|
|
259
|
+
...[0, 1, 2].map(i => ({
|
|
260
|
+
x: (RICHMENU_WIDTH / 3) * i,
|
|
261
|
+
y: RICHMENU_HEIGHT / 2,
|
|
262
|
+
width: RICHMENU_WIDTH / 3,
|
|
263
|
+
height: RICHMENU_HEIGHT / 2,
|
|
264
|
+
})),
|
|
265
|
+
],
|
|
266
|
+
// template-06
|
|
267
|
+
[0, 1]
|
|
268
|
+
.map(i => [0, 1, 2].map(j => ({
|
|
269
|
+
x: (RICHMENU_WIDTH / 3) * j,
|
|
270
|
+
y: (RICHMENU_HEIGHT / 2) * i,
|
|
271
|
+
width: RICHMENU_WIDTH / 3,
|
|
272
|
+
height: RICHMENU_HEIGHT / 2,
|
|
273
|
+
})))
|
|
274
|
+
.flat(),
|
|
275
|
+
];
|
|
276
|
+
return boundsMap[actionCount];
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=createRichMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRichMenu.js","sourceRoot":"","sources":["../../src/tools/createRichMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class DeleteRichMenu extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(client: messagingApi.MessagingApiClient);
|
|
7
|
+
register(server: McpServer): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=deleteRichMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteRichMenu.d.ts","sourceRoot":"","sources":["../../src/tools/deleteRichMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IACtD,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,YAAY,CAAC,kBAAkB;IAKnD,QAAQ,CAAC,MAAM,EAAE,SAAS;CAyB3B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
2
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
export default class DeleteRichMenu extends AbstractTool {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
super();
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
register(server) {
|
|
11
|
+
const richMenuIdSchema = z
|
|
12
|
+
.string()
|
|
13
|
+
.describe("The ID of the rich menu to delete.");
|
|
14
|
+
server.tool("delete_rich_menu", "Delete a rich menu from your LINE Official Account.", {
|
|
15
|
+
richMenuId: richMenuIdSchema.describe("The ID of the rich menu to delete."),
|
|
16
|
+
}, async ({ richMenuId }) => {
|
|
17
|
+
try {
|
|
18
|
+
const response = await this.client.deleteRichMenu(richMenuId);
|
|
19
|
+
return createSuccessResponse(response);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return createErrorResponse(`Failed to delete rich menu: ${error.message}`);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=deleteRichMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteRichMenu.js","sourceRoot":"","sources":["../../src/tools/deleteRichMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IAC9C,MAAM,CAAkC;IAEhD,YAAY,MAAuC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,gBAAgB,GAAG,CAAC;aACvB,MAAM,EAAE;aACR,QAAQ,CAAC,oCAAoC,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,qDAAqD,EACrD;YACE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CACnC,oCAAoC,CACrC;SACF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC9D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CACxB,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class GetMessageQuota extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(client: messagingApi.MessagingApiClient);
|
|
7
|
+
register(server: McpServer): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=getMessageQuota.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMessageQuota.d.ts","sourceRoot":"","sources":["../../src/tools/getMessageQuota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,YAAY,CAAC,kBAAkB;IAKnD,QAAQ,CAAC,MAAM,EAAE,SAAS;CAiB3B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createSuccessResponse } from "../common/response.js";
|
|
2
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
3
|
+
export default class GetMessageQuota extends AbstractTool {
|
|
4
|
+
client;
|
|
5
|
+
constructor(client) {
|
|
6
|
+
super();
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
register(server) {
|
|
10
|
+
server.tool("get_message_quota", "Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.", {}, async () => {
|
|
11
|
+
const messageQuotaResponse = await this.client.getMessageQuota();
|
|
12
|
+
const messageQuotaConsumptionResponse = await this.client.getMessageQuotaConsumption();
|
|
13
|
+
const response = {
|
|
14
|
+
limited: messageQuotaResponse.value,
|
|
15
|
+
totalUsage: messageQuotaConsumptionResponse.totalUsage,
|
|
16
|
+
};
|
|
17
|
+
return createSuccessResponse(response);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=getMessageQuota.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMessageQuota.js","sourceRoot":"","sources":["../../src/tools/getMessageQuota.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IAC/C,MAAM,CAAkC;IAEhD,YAAY,MAAuC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6HAA6H,EAC7H,EAAE,EACF,KAAK,IAAI,EAAE;YACT,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjE,MAAM,+BAA+B,GACnC,MAAM,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,oBAAoB,CAAC,KAAK;gBACnC,UAAU,EAAE,+BAA+B,CAAC,UAAU;aACvD,CAAC;YACF,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class GetProfile extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
private destinationId;
|
|
7
|
+
constructor(client: messagingApi.MessagingApiClient, destinationId: string);
|
|
8
|
+
register(server: McpServer): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=getProfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProfile.d.ts","sourceRoot":"","sources":["../../src/tools/getProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAM7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM;IAM1E,QAAQ,CAAC,MAAM,EAAE,SAAS;CA4B3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
import { NO_USER_ID_ERROR } from "../common/schema/constants.js";
|
|
5
|
+
export default class GetProfile extends AbstractTool {
|
|
6
|
+
client;
|
|
7
|
+
destinationId;
|
|
8
|
+
constructor(client, destinationId) {
|
|
9
|
+
super();
|
|
10
|
+
this.client = client;
|
|
11
|
+
this.destinationId = destinationId;
|
|
12
|
+
}
|
|
13
|
+
register(server) {
|
|
14
|
+
const userIdSchema = z
|
|
15
|
+
.string()
|
|
16
|
+
.default(this.destinationId)
|
|
17
|
+
.describe("The user ID to get a profile. Defaults to DESTINATION_USER_ID.");
|
|
18
|
+
server.tool("get_profile", "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", {
|
|
19
|
+
userId: userIdSchema,
|
|
20
|
+
}, async ({ userId }) => {
|
|
21
|
+
if (!userId) {
|
|
22
|
+
return createErrorResponse(NO_USER_ID_ERROR);
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const response = await this.client.getProfile(userId);
|
|
26
|
+
return createSuccessResponse(response);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return createErrorResponse(`Failed to get profile: ${error.message}`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=getProfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProfile.js","sourceRoot":"","sources":["../../src/tools/getProfile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAkC;IACxC,aAAa,CAAS;IAE9B,YAAY,MAAuC,EAAE,aAAqB;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,YAAY,GAAG,CAAC;aACnB,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3B,QAAQ,CACP,gEAAgE,CACjE,CAAC;QAEJ,MAAM,CAAC,IAAI,CACT,aAAa,EACb,2HAA2H,EAC3H;YACE,MAAM,EAAE,YAAY;SACrB,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACtD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class GetRichMenuList extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(client: messagingApi.MessagingApiClient);
|
|
7
|
+
register(server: McpServer): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=getRichMenuList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRichMenuList.d.ts","sourceRoot":"","sources":["../../src/tools/getRichMenuList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,YAAY,CAAC,kBAAkB;IAKnD,QAAQ,CAAC,MAAM,EAAE,SAAS;CAiB3B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
2
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
3
|
+
export default class GetRichMenuList extends AbstractTool {
|
|
4
|
+
client;
|
|
5
|
+
constructor(client) {
|
|
6
|
+
super();
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
register(server) {
|
|
10
|
+
server.tool("get_rich_menu_list", "Get the list of rich menus associated with your LINE Official Account.", {}, async () => {
|
|
11
|
+
try {
|
|
12
|
+
const response = await this.client.getRichMenuList();
|
|
13
|
+
return createSuccessResponse(response);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return createErrorResponse(`Failed to broadcast message: ${error.message}`);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=getRichMenuList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRichMenuList.js","sourceRoot":"","sources":["../../src/tools/getRichMenuList.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IAC/C,MAAM,CAAkC;IAEhD,YAAY,MAAuC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,wEAAwE,EACxE,EAAE,EACF,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACrD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CACxB,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAChD,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class PushFlexMessage extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
private destinationId;
|
|
7
|
+
constructor(client: messagingApi.MessagingApiClient, destinationId: string);
|
|
8
|
+
register(server: McpServer): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=pushFlexMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushFlexMessage.d.ts","sourceRoot":"","sources":["../../src/tools/pushFlexMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAM7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM;IAM1E,QAAQ,CAAC,MAAM,EAAE,SAAS;CAmC3B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
import { NO_USER_ID_ERROR } from "../common/schema/constants.js";
|
|
5
|
+
import { flexMessageSchema } from "../common/schema/flexMessage.js";
|
|
6
|
+
export default class PushFlexMessage extends AbstractTool {
|
|
7
|
+
client;
|
|
8
|
+
destinationId;
|
|
9
|
+
constructor(client, destinationId) {
|
|
10
|
+
super();
|
|
11
|
+
this.client = client;
|
|
12
|
+
this.destinationId = destinationId;
|
|
13
|
+
}
|
|
14
|
+
register(server) {
|
|
15
|
+
const userIdSchema = z
|
|
16
|
+
.string()
|
|
17
|
+
.default(this.destinationId)
|
|
18
|
+
.describe("The user ID to receive a message. Defaults to DESTINATION_USER_ID.");
|
|
19
|
+
server.tool("push_flex_message", "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " +
|
|
20
|
+
"(multiple swipeable bubbles) layouts.", {
|
|
21
|
+
userId: userIdSchema,
|
|
22
|
+
message: flexMessageSchema,
|
|
23
|
+
}, async ({ userId, message }) => {
|
|
24
|
+
if (!userId) {
|
|
25
|
+
return createErrorResponse(NO_USER_ID_ERROR);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const response = await this.client.pushMessage({
|
|
29
|
+
to: userId,
|
|
30
|
+
messages: [message],
|
|
31
|
+
});
|
|
32
|
+
return createSuccessResponse(response);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return createErrorResponse(`Failed to push flex message: ${error.message}`);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=pushFlexMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushFlexMessage.js","sourceRoot":"","sources":["../../src/tools/pushFlexMessage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IAC/C,MAAM,CAAkC;IACxC,aAAa,CAAS;IAE9B,YAAY,MAAuC,EAAE,aAAqB;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,YAAY,GAAG,CAAC;aACnB,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3B,QAAQ,CACP,oEAAoE,CACrE,CAAC;QAEJ,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,mHAAmH;YACjH,uCAAuC,EACzC;YACE,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,iBAAiB;SAC3B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC7C,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,CAAC,OAA0C,CAAC;iBACvD,CAAC,CAAC;gBACH,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CACxB,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAChD,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class PushTextMessage extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
private destinationId;
|
|
7
|
+
constructor(client: messagingApi.MessagingApiClient, destinationId: string);
|
|
8
|
+
register(server: McpServer): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=pushTextMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushTextMessage.d.ts","sourceRoot":"","sources":["../../src/tools/pushTextMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAM7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM;IAM1E,QAAQ,CAAC,MAAM,EAAE,SAAS;CAkC3B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createErrorResponse, createSuccessResponse, } from "../common/response.js";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
import { NO_USER_ID_ERROR } from "../common/schema/constants.js";
|
|
5
|
+
import { textMessageSchema } from "../common/schema/textMessage.js";
|
|
6
|
+
export default class PushTextMessage extends AbstractTool {
|
|
7
|
+
client;
|
|
8
|
+
destinationId;
|
|
9
|
+
constructor(client, destinationId) {
|
|
10
|
+
super();
|
|
11
|
+
this.client = client;
|
|
12
|
+
this.destinationId = destinationId;
|
|
13
|
+
}
|
|
14
|
+
register(server) {
|
|
15
|
+
const userIdSchema = z
|
|
16
|
+
.string()
|
|
17
|
+
.default(this.destinationId)
|
|
18
|
+
.describe("The user ID to receive a message. Defaults to DESTINATION_USER_ID.");
|
|
19
|
+
server.tool("push_text_message", "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", {
|
|
20
|
+
userId: userIdSchema,
|
|
21
|
+
message: textMessageSchema,
|
|
22
|
+
}, async ({ userId, message }) => {
|
|
23
|
+
if (!userId) {
|
|
24
|
+
return createErrorResponse(NO_USER_ID_ERROR);
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const response = await this.client.pushMessage({
|
|
28
|
+
to: userId,
|
|
29
|
+
messages: [message],
|
|
30
|
+
});
|
|
31
|
+
return createSuccessResponse(response);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return createErrorResponse(`Failed to push message: ${error.message}`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=pushTextMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushTextMessage.js","sourceRoot":"","sources":["../../src/tools/pushTextMessage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY;IAC/C,MAAM,CAAkC;IACxC,aAAa,CAAS;IAE9B,YAAY,MAAuC,EAAE,aAAqB;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,MAAiB;QACxB,MAAM,YAAY,GAAG,CAAC;aACnB,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3B,QAAQ,CACP,oEAAoE,CACrE,CAAC;QAEJ,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6GAA6G,EAC7G;YACE,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,iBAAiB;SAC3B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC7C,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,CAAC,OAA0C,CAAC;iBACvD,CAAC,CAAC;gBACH,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,mBAAmB,CACxB,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAC3C,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { messagingApi } from "@line/bot-sdk";
|
|
3
|
+
import { AbstractTool } from "./AbstractTool.js";
|
|
4
|
+
export default class SetRichMenuDefault extends AbstractTool {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(client: messagingApi.MessagingApiClient);
|
|
7
|
+
register(server: McpServer): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=setRichMenuDefault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setRichMenuDefault.d.ts","sourceRoot":"","sources":["../../src/tools/setRichMenuDefault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,YAAY;IAC1D,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,YAAY,CAAC,kBAAkB;IAKnD,QAAQ,CAAC,MAAM,EAAE,SAAS;CAmB3B"}
|